Skip to content

Frona stores all its data on disk. Backing up is a matter of copying the right directories.

What to back up

DirectoryContentsPriority
data/config.yamlServer configuration written by setup and the administration interfaceCritical
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 tokensCritical
data/browser_profiles/Browserless profiles (the volume mounted into the browserless container — path depends on your browser.profiles_path)Optional
data/skills/Installed shared skillsImportant if customized
data/system/Downloaded registries, package data, model metadata, and other cachesUsually rebuildable
.envConfiguration and secretsCritical

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 frona

This 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/ .env

3. Restart the engine

bash
docker compose start frona

Automated 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 frona

This runs at 2 AM daily. Adjust the schedule and backup location to your needs.

Restoring from backup

  1. Stop the engine: docker compose stop frona
  2. Remove or rename the current data directory: mv data/ data.old/
  3. Extract the backup: tar xzf frona-backup-20260227.tar.gz
  4. 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.