Upgrading & backups
Upgrade Veqsio by re-running the installer, and keep it safe with daily backups and a restore check.
Upgrading
Run the installer again. It is idempotent: it dumps the database to /opt/veqsio/backups first, fetches the new sources, rebuilds the images, applies new database migrations and restarts the stack. Existing secrets in .env are never overwritten, so users stay signed in where possible and stored secrets (SSO, SMTP, webhooks) keep working.
sudo /opt/veqsio/install.sh --update-source
To move to a specific release, add --ref v1.2.0. If you changed the port or domain at install time, pass the same options again.
What to back up
| What | How |
|---|---|
| PostgreSQL (issues, users, settings, audit log) | scripts/backup.sh daily; WAL archiving if you cannot lose a day of tickets. |
| Attachments | Versioning and replication on your object-storage bucket, or BACKUP_UPLOADS_DIR for local storage. |
SECRETS_ENCRYPTION_KEY in .env | Keep it in a password manager, apart from the dump. Without it, stored SSO, SMTP and webhook secrets cannot be read after a restore. |
| Licence key | Keep the key from your purchase e-mail with your other credentials. |
| Redis | Not needed: it only holds sessions and caches. |
Daily backup and restore check
# 03:00 backup, 03:30 restore check (cron on the host)
0 3 * * * cd /opt/veqsio && docker compose -f docker-compose.prod.yml --profile backup run --rm backup
30 3 * * * cd /opt/veqsio && docker compose -f docker-compose.prod.yml --profile backup run --rm backup-verify
backup.sh writes a compressed dump, checks that it can be read back, adds a checksum, applies retention and records the result. restore-verify.sh restores the newest dump into a scratch database, checks it and drops it, so you know the backup works. Administration → Configuration health shows a Last verified backup card.
What to promise
| Setup | Data you can lose |
|---|---|
| Daily backup | up to 24 hours |
| Hourly backup | up to 1 hour |
| Backup plus WAL archiving | seconds to minutes |
Practise a restore once; the time is dominated by the size of your database and your disk speed.