Opengram

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/DirectoryDefault locationDescription
opengram.db~/.opengram/data/opengram.dbSQLite database (chats, messages, events, etc.)
opengram.db-wal~/.opengram/data/opengram.db-walSQLite write-ahead log (must be included)
opengram.db-shm~/.opengram/data/opengram.db-shmSQLite shared-memory file (include for consistency)
uploads/~/.opengram/data/uploads/Uploaded files and media attachments
opengram.config.json~/.opengram/opengram.config.jsonInstance 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 start

Media 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 opengram

Restore

To restore from a backup:

  1. Stop the server.
  2. Copy the backed-up files to their original locations.
  3. 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 start

Docker 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

On this page