Backups and migration
A full backup of Umpteenth has three parts: the database, the stored files and the encryption key in config.yml.
Parts of a backup
Section titled “Parts of a backup”| Part | Location |
|---|---|
| Database | data/umpteenth.db on a single node, or your Postgres database |
| Stored files | Artifacts, long tool outputs and image build logs: data/blobs with the default filesystem backend, the bucket with s3, the database itself with database |
| Encryption key | app.encryption_key in config.yml, or wherever you set APP_ENCRYPTION_KEY |
Without the encryption key, Umpteenth can’t decrypt the secrets, model API keys and MCP logins it stored, and everyone has to sign in again, so keep the key with every backup.
Back up a single node
Section titled “Back up a single node”With the default setup, config.yml and the data/ directory next to docker-compose.yml hold everything.
Stop the container, copy both, and start it again:
docker compose stop umpteenthsudo tar -czf umpteenth-backup.tar.gz config.yml datadocker compose start umpteenthThe container writes data/ as root, hence sudo.
A run in flight doesn’t survive the stop, so pick a moment when nothing runs.
Back up Postgres
Section titled “Back up Postgres”Dump the database with pg_dump:
pg_dump -Fc "postgres://umpteenth:<password>@<host>/umpteenth" > umpteenth.dumpCopy the stored files as well, unless file_storage.backend is database, which keeps them in the dump.
Restore
Section titled “Restore”-
Stop every Umpteenth container.
-
Put back
config.ymlwith the encryption key that was in use when you took the backup. -
Put back the database. For a single node, replace
data/with the one from the backup. For Postgres, load the dump withpg_restore:Terminal window pg_restore -d "postgres://umpteenth:<password>@<host>/umpteenth" --clean --if-exists umpteenth.dump -
Put back the stored files:
data/blobs, or the bucket. -
Start Umpteenth.
To restore onto a new host, put docker-compose.yml, config.yml and data/ into one directory there and run docker compose up -d.
Compose pulls the app image, and Umpteenth pulls the sandbox image when it starts.
At the first run of a job with its own Dockerfile, Umpteenth builds the job’s image again, unless your registry holds it.