4.9 KiB
Backups
Holesail Browser can create tar.gz snapshots of all persistent state and certificates. Backups can be created manually from the dashboard or restored at any time.
What is backed up
Each backup archive contains:
| Path in archive | Source |
|---|---|
storage/state.json |
All virtual hosts, server tunnels (with labels), service tunnels, SSH connections (with passwordB64), RDP connections (with passwordB64), and settings |
certs/ca.key.pem |
Root CA private key |
certs/ca.cert.pem |
Root CA certificate |
certs/wildcard.hole.sail/ |
Wildcard cert for the default .hole.sail TLD |
certs/wildcard.<parent>/ |
One directory per custom TLD parent (e.g. wildcard.my.internal/, wildcard.haha.wooo/) |
The entire holesail-browser-certs/ directory is archived — all wildcard cert directories are included, not just the default one. Backups do not include the binary itself, the log file, or other backup archives.
The default backup retention is 5 backups (configurable in Settings via backupRetention).
Storage location
Backups are stored at:
~/.holesail-browser/holesail-browser-storage/backups/
Each backup is a tar.gz file named with a timestamp:
holesail-browser-backup-2026-02-28T12-00-00.tar.gz
Usage
Creating a backup
- Open the dashboard → Backups
- Click Create Backup
- The backup is created immediately and appears in the list
Restoring a backup
- Open the dashboard → Backups
- Find the backup you want to restore
- Click Restore
- The native host extracts the archive, overwrites the current state and certs, and reloads state from disk
After restoring a backup that contains different certificates, you may need to reinstall the root CA (dashboard → Proxy & CA → Install Root CA) and restart Chrome.
Deleting a backup
- Open the dashboard → Backups
- Click Delete next to the backup you want to remove
Retention
Backups are automatically pruned after each new backup is created. The default retention is 5 backups. To change it:
- Open the dashboard → Settings
- Set Backup Retention to the desired number
- Click Save
Native host commands
createBackup
Create a new backup.
Request payload: {}
Response payload:
{
"ok": true,
"filename": "holesail-browser-backup-2026-02-28T12-00-00.tar.gz",
"path": "/Users/you/.holesail-browser/holesail-browser-storage/backups/holesail-browser-backup-2026-02-28T12-00-00.tar.gz"
}
listBackups
List all available backups.
Response payload:
{
"ok": true,
"backups": [
{
"filename": "holesail-browser-backup-2026-02-28T12-00-00.tar.gz",
"size": 12345,
"createdAt": "2026-02-28T12:00:00.000Z"
}
]
}
restoreBackup
Restore a backup by filename.
Request payload:
{ "filename": "holesail-browser-backup-2026-02-28T12-00-00.tar.gz" }
Response payload:
{ "ok": true }
deleteBackup
Delete a backup by filename.
Request payload:
{ "filename": "holesail-browser-backup-2026-02-28T12-00-00.tar.gz" }
Response payload:
{ "ok": true }
Implementation details
Creating a backup
- A staging directory is created in the backups folder
state.jsonis copied tostaging/storage/state.json- All cert files are copied to
staging/certs/ tar czf <output.tar.gz> -C staging .creates the archive- The staging directory is removed
- Old backups exceeding the retention count are deleted (oldest first)
Restoring a backup
- The archive is extracted to a staging directory
- If
storage/state.jsonexists in the archive, it overwrites the currentstate.json - If
certs/exists in the archive, cert files are copied to the certs directory - The staging directory is removed
- The native host reloads state from disk
Legacy archive support
Backups created by older versions of Holesail Browser used a flat layout (files at the root of the archive rather than under storage/ and certs/ prefixes). These are still supported for restore.
Troubleshooting
Backup creation fails
- Check that
~/.holesail-browser/holesail-browser-storage/backups/is writable - Check
~/.holesail-browser/holesail-browser.logfor error details - Ensure
taris available on the system
Restore doesn't take effect
After restoring, the native host reloads state from disk. If tunnels don't reconnect, open the dashboard — the Overview page will show the current state. You may need to manually reconnect tunnels if the restored state references different hs:// keys.
CA mismatch after restore
If the restored backup contains different CA certificates than what is currently installed in the OS keychain, *.hole.sail sites will show certificate errors. Go to dashboard → Proxy & CA → click Install Root CA to reinstall the correct CA, then restart Chrome.