Backup & Restore
How to back up and restore your Opengram data, configuration, and media files.
Opengram stores all data in a SQLite database file and an uploads directory. Backing up is a matter of copying these files.
Paths below assume the default ~/.opengram directory. Adjust if using a custom OPENGRAM_HOME or Docker.
What to back up
| File/Directory | Default location | Description |
|---|---|---|
opengram.db | ~/.opengram/data/opengram.db | SQLite database (chats, messages, events, etc.) |
opengram.db-wal | ~/.opengram/data/opengram.db-wal | SQLite write-ahead log (must be included) |
opengram.db-shm | ~/.opengram/data/opengram.db-shm | SQLite shared-memory file (include for consistency) |
uploads/ | ~/.opengram/data/uploads/ | Uploaded files and media attachments |
opengram.config.json | ~/.opengram/opengram.config.json | Instance configuration |
SQLite backup
The recommended approach is SQLite's built-in .backup command, which creates a consistent snapshot without stopping the server:
sqlite3 ~/.opengram/data/opengram.db ".backup /backup/opengram.db"Alternatively, stop the service and copy the files directly:
opengram stop
cp ~/.opengram/data/opengram.db /backup/opengram.db
cp ~/.opengram/data/opengram.db-wal /backup/opengram.db-wal
cp ~/.opengram/data/opengram.db-shm /backup/opengram.db-shm
opengram service startMedia backup
Copy the entire uploads directory:
cp -r ~/.opengram/data/uploads/ /backup/uploads/Docker volume backup
If using Docker with a named volume:
docker stop opengram
docker run --rm \
-v opengram_data:/data \
-v "$(pwd)/backup:/backup" \
alpine tar czf /backup/opengram-data.tar.gz -C /data .
docker start opengramRestore
To restore from a backup:
- Stop the server.
- Copy the backed-up files to their original locations.
- Start the server.
opengram stop
cp /backup/opengram.db ~/.opengram/data/opengram.db
cp /backup/opengram.db-wal ~/.opengram/data/opengram.db-wal
cp /backup/opengram.db-shm ~/.opengram/data/opengram.db-shm
cp -r /backup/uploads/ ~/.opengram/data/uploads/
cp /backup/opengram.config.json ~/.opengram/opengram.config.json
opengram service startDocker restore
docker stop opengram
docker run --rm \
-v opengram_data:/data \
-v "$(pwd)/backup:/backup" \
alpine sh -c "cd /data && rm -rf * && tar xzf /backup/opengram-data.tar.gz"
docker start opengram