Self-hosting

Backups & restore

Back up the database and uploads, and restore them when you need to.

An Inkspace backup has two parts, and you need both:

  • the PostgreSQL database — members, stories, comments, ratings and settings;
  • the uploads folder — avatars, covers and images referenced by those stories.

The commands below assume you’re in the folder with your docker-compose.yml and use the default inkspace user and database names.

Back up

Database

docker compose exec -T db \
  pg_dump -U inkspace -d inkspace > inkspace-backup.sql

Uploads

tar czf inkspace-uploads.tar.gz -C uploads .

Automate it

A nightly cron entry that keeps dated copies:

0 3 * * * cd /srv/inkspace && \
  docker compose exec -T db pg_dump -U inkspace -d inkspace > backups/db-$(date +\%F).sql && \
  tar czf backups/uploads-$(date +\%F).tar.gz -C uploads .

Store copies somewhere other than the server itself.

Restore

Restores overwrite data. Practice on a test install before you rely on them.

Database

docker compose exec -T db \
  psql -U inkspace -d inkspace < inkspace-backup.sql

Uploads

rm -rf uploads/*
tar xzf inkspace-uploads.tar.gz -C uploads
sudo chown -R 1000:1000 uploads

Restart the app afterwards with docker compose restart app.

Member-level exports

Backups protect the whole instance. Members can also download their own data at any time from Settings → Danger zone → Export data — see Your data & account.