Skip to main content

Managing containers

Always use docker compose down (without -v) to stop containers. Adding -v deletes all data volumes including your database.

Backups

Database backup

Full data backup

Back up the entire docker-data/ directory to capture uploads, configuration, and database files:

Scheduled backups

Add to your crontab for nightly automatic backups:

Troubleshooting

Check for port conflicts — another process may already be using port 8080 or 3306:
Review container logs for the specific error:
The db container may still be initialising. Check its status:
If the database shows starting, wait 30–60 seconds and try again. On the very first boot, MariaDB needs time to apply the schema and migrations.Also verify that the DB_HOST, DB_NAME, DB_USER, and DB_PASS values in your .env match the environment section in docker-compose.yml.
Check that the uploads directory is owned by www-data:
The entrypoint script sets ownership automatically, but if you manually created directories on the host they may have incorrect permissions. Fix with:
If using a reverse proxy, also check that client_max_body_size is set to at least 50M in your Nginx configuration.
Ensure the following variables are set in your .env:
  • WEB_PUSH_ENABLED=true
  • VAPID_PUBLIC_KEY
  • VAPID_PRIVATE_KEY
  • VAPID_SUBJECT
HTTPS is required for push notifications — they will not work over plain HTTP.
Test your SMTP configuration from inside the container:
Verify that APP_URL is set to your public HTTPS URL. Email links are built from this value.
If you have lost your docker-data/config/.env file and the PII_ENCRYPTION_KEY or PII_HMAC_KEY values, encrypted data in the database (names, emails, phone numbers) and encrypted job files (documents, photos, videos, GDPR reports) cannot be decrypted. There is no recovery method.Always back up docker-data/config/.env to a secure location.