Upgrade & backup
Two things you should do regularly. Both take minutes.
What to back up
Section titled “What to back up”Three things matter:
| Item | Where | Why |
|---|---|---|
| The server database | /data/mumble-server.sqlite (in the volume) | Channels, users, ACLs, chat history. |
| The file storage | /data/file-server-storage/ (in the volume) | Avatars, emotes, attachments. |
Your .env file | on the host | Server settings, secrets. |
The whole /data volume covers items 1 and 2. Back up the host-side
config separately.
Back up
Section titled “Back up”The simplest approach is to stop the server, copy the volume, and restart:
-
Stop the server:
Terminal window docker compose stop mumble-server -
Copy the volume:
Terminal window docker run --rm \-v mumble-data:/source:ro \-v "$(pwd)":/dest \alpine \tar -czf /dest/mumble-backup-$(date +%F).tar.gz -C /source . -
Restart the server:
Terminal window docker compose start mumble-server -
Also back up your
.env:Terminal window cp .env "/secure/place/.env-mumble-$(date +%F)"
You can also back up without stopping if you accept the small risk of an inconsistent SQLite snapshot. For production it is safer to stop briefly.
Schedule it
Section titled “Schedule it”A cron job that runs the steps above weekly is enough for most servers. Adjust the retention to your taste:
#!/bin/bashset -ecd /srv/mumbledocker compose stop mumble-serverdocker run --rm \ -v mumble-data:/source:ro \ -v /backups/mumble:/dest \ alpine \ tar -czf /dest/mumble-$(date +%F).tar.gz -C /source .docker compose start mumble-serverfind /backups/mumble -mtime +60 -deleteMake it executable and you are done.
Restore from a backup
Section titled “Restore from a backup”-
Stop the server:
Terminal window docker compose stop mumble-server -
Remove the existing volume:
Terminal window docker volume rm mumble-datadocker volume create mumble-data -
Restore:
Terminal window docker run --rm \-v mumble-data:/dest \-v "$(pwd)":/source \alpine \tar -xzf /source/mumble-backup-2026-05-01.tar.gz -C /dest -
Start the server:
Terminal window docker compose start mumble-server -
Reset the SuperUser password if needed:
Terminal window docker exec mumble-server mumble-server \--ini /data/mumble_server_config.ini \--set-su-pw "new-password"
Upgrade
Section titled “Upgrade”The official image is published to ghcr.io/fancy-mumble/mumble-server:latest.
-
Take a backup (see above).
-
Pull the new image:
Terminal window docker compose pull mumble-server -
Recreate the container:
Terminal window docker compose up -d mumble-server -
Watch the logs for migration messages:
Terminal window docker compose logs -f mumble-server -
Connect with a client and sanity-check that channels, chat history, and avatars are all there.
Rollback
Section titled “Rollback”If an upgrade goes wrong:
- Stop the server.
- Restore the previous backup (see “Restore” above).
- Set the image back to the previous tag.
- Start the server.
The database schema is only ever added to in minor versions, never removed, so rolling back the binary is safe as long as you also restore the database.
Migrating to a new host
Section titled “Migrating to a new host”- On the old host: stop the server, take a backup.
- Copy the backup file and
.envto the new host. - On the new host: install Docker, copy your
docker-compose.yml, restore from the backup, start the server. - Update DNS to point at the new host.
- Once you have confirmed it works, retire the old server.
If you also change the public IP, update webrtcsfupublicip in your
config or screen sharing will be broken until you do.
Database growth
Section titled “Database growth”The two big spenders are persistent chat and link previews:
- Lower
pchatdefaultretentiondaysto clear out old messages. - Lower
plugin.file-server.retentionDaysto clear out old files.
Then run VACUUM once to reclaim space:
docker exec mumble-server sqlite3 /data/mumble-server.sqlite "VACUUM;"What if the database is corrupted?
Section titled “What if the database is corrupted?”Restore from the most recent backup. Mumble’s SQLite database is normally robust, but a disk failure or a sudden power-cut can truncate it. Backups are your friend.
Next step
Section titled “Next step”You are done with the server section. Continue with the admin pages to learn how to manage users, channels, and permissions: