Frona stores all its data on disk. Backing up is a matter of copying the right directories.
What to back up
| Directory | Contents | Priority |
|---|---|---|
data/config.yaml | Server configuration written by setup and the administration interface | Critical |
data/db/ | SurrealDB database (users, agents, chats, messages, tasks, policies, and platform records) | Critical |
data/users/ | Per-user state — uploads, agent and MCP workspaces, channel sessions, personal skills, vault contents, and tokens | Critical |
data/browser_profiles/ | Browserless profiles (the volume mounted into the browserless container — path depends on your browser.profiles_path) | Optional |
data/skills/ | Installed shared skills | Important if customized |
data/system/ | Downloaded registries, package data, model metadata, and other caches | Usually rebuildable |
.env | Configuration and secrets | Critical |
The database and data/users/ complement each other: the database holds platform records, while user workspaces and some integration state live on disk. Back up the complete data/ tree rather than only data/db/.
If FRONA_SERVER_DATA_DIR, FRONA_DATABASE_PATH, or another storage path points outside data/, include that location separately. The commands below assume the default Compose layout.
Backup procedure
1. Stop the engine
For a consistent backup, stop the engine first:
bash
docker compose stop fronaThis ensures the database files are in a clean state (no active write-ahead logs).
2. Copy the data directory
bash
tar czf frona-backup-$(date +%Y%m%d).tar.gz data/ .env3. Restart the engine
bash
docker compose start fronaAutomated backups
Set up a cron job for regular backups:
cron
0 2 * * * cd /path/to/frona && docker compose stop frona && tar czf /backups/frona-$(date +\%Y\%m\%d).tar.gz data/ .env && docker compose start fronaThis runs at 2 AM daily. Adjust the schedule and backup location to your needs.
Restoring from backup
- Stop the engine:
docker compose stop frona - Remove or rename the current data directory:
mv data/ data.old/ - Extract the backup:
tar xzf frona-backup-20260227.tar.gz - Start the engine:
docker compose start frona
Considerations
- Downtime: stopping the engine for backup causes a brief outage. For most deployments, a few seconds of downtime during off-hours is acceptable.
- Backup size: the database grows over time, especially with many conversations. Monitor backup sizes and implement retention policies.
- Off-site storage: keep copies of backups in a different location (cloud storage, different server) for disaster recovery.
- Test restores: periodically test that you can actually restore from a backup. An untested backup is not a backup.