Updating
How to update your Corvos Docker deployment
Manual Update
cd corvos # or Corvos/docker if you cloned manually
docker compose pull && docker compose up -dDatabase migrations are applied automatically on every startup. GPU overlays and image variants set in .env are preserved.
Automatic Updates with Watchtower
Auto-updates every 24 hours. If you used the install script and enabled updates, Watchtower is already running - no extra setup needed.
For manual Docker Compose installs, start Watchtower separately:
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower \
--label-enable \
--interval 86400Corvos containers are labeled for Watchtower, so --label-enable limits updates to the Corvos services.
For a one-time update instead of a daemon:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
nickfedor/watchtower --run-once \
--label-filter "com.docker.compose.project=corvos"Use nickfedor/watchtower. The original containrrr/watchtower is no longer maintained and may fail with newer Docker versions.
Migrating from the All-in-One Container
If you previously ran the legacy all-in-one image (ghcr.io/hafizmmoaz/corvos:latest via docker-compose.quickstart.yml), your data lives in a single corvos-data volume and PostgreSQL has since been upgraded from version 14 to 17 - so a simple volume swap won't work. A one-time dump and restore is required, and the install script does it for you.
Just run the normal install command:
curl -fsSL https://raw.githubusercontent.com/HafizMMoaz/Corvos/main/docker/scripts/install.sh | bashIt detects the legacy corvos-data volume, stops the old container, dumps your database with a temporary PostgreSQL 14 container, recovers your SECRET_KEY, restores everything into PostgreSQL 17, and starts the new stack. Your original volume is never deleted - the dump is also saved to ./corvos_migration_backup.sql as a checkpoint, so if anything fails mid-way you can simply re-run the script.
After it completes:
- Open Corvos and confirm your data is intact.
- Remove the old volume (irreversible):
docker volume rm corvos-data - Delete the dump file once you no longer need it:
rm ./corvos_migration_backup.sql
If your old container used custom database credentials (POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB), run the migration script manually first with your credentials, then run the installer:
curl -fsSL https://raw.githubusercontent.com/HafizMMoaz/Corvos/main/docker/scripts/migrate-database.sh -o migrate-database.sh
bash migrate-database.sh --db-user myuser --db-password mypass --db-name mydb
curl -fsSL https://raw.githubusercontent.com/HafizMMoaz/Corvos/main/docker/scripts/install.sh | bash