Operations And Upgrades
Check health, back up the complete installation, upgrade deliberately, and resolve setup problems
Run these commands from the same installation directory and with the same received Compose file and environment file used at installation. Substitute your received filenames if they differ from the examples. If you use external S3, include -f compose.external-s3.yml after the base Compose file in every command.
Health And Logs
docker compose --env-file .env.self-host -f compose.self-host.yml ps -a
docker compose --env-file .env.self-host -f compose.self-host.yml logs --tail 100 web worker migrateThe application readiness endpoint is /api/health/ready. It checks PostgreSQL, Valkey, and access to the configured storage backend. Web and worker wait for migrations to succeed and for the queue and storage services to become healthy.
The migrate container exits with code 0 when its work succeeds. An exited migration container is normal. If it exits with an error, inspect its logs before restarting the application.
Named volumes retain data across normal container replacement. Do not use docker compose down -v on an installation you intend to keep: it removes the Compose volumes.
Back Up The Whole Installation
For a consistent backup of the default single-host stack, stop web and worker, then stop storage and Valkey. Keep PostgreSQL running for the database export:
docker compose --env-file .env.self-host -f compose.self-host.yml stop web worker
docker compose --env-file .env.self-host -f compose.self-host.yml stop storage valkey
docker compose --env-file .env.self-host -f compose.self-host.yml exec -T postgres \
pg_dump -U archflow -d archflow -Fc > archflow.dumpFor external S3, stop only valkey in the second command; there is no bundled storage container to stop. Capture the bucket backup while web and worker remain stopped.
Store the database export securely together with:
| Backup item | Why it is required |
|---|---|
SeaweedFS /data from the stopped storage service | Both storage metadata and object volumes are needed. For external S3, use a consistent bucket backup instead. |
Valkey /data from the stopped queue service | Retains pending jobs alongside the matching database state. |
.env.self-host | Preserves the encryption key and other installation secrets. |
| Exact application and dependency images, release version, and Compose files | Allows recovery with the same versions without depending on external downloads. |
Docker Compose cp works with stopped containers and can copy their /data directories into your backup location. Copy the directories before restarting their services.
Restart the installation after the backup:
docker compose --env-file .env.self-host -f compose.self-host.yml startRestore-test into a separate empty stack using the matching version. Restore the database, storage, queue state, and environment before starting web and worker. Verify sign-in, images, source documents, and background jobs. Restoring only PostgreSQL is incomplete.
Project export is an interchange format, not a complete installation backup. It does not include every file or all operational state.
Upgrade Deliberately
- Read the target version's release and migration notes.
- Make a complete backup and record the current application version.
- Stop web and worker before applying schema changes.
- Put the new release's received Compose files in the existing installation directory and review any configuration changes. Preserve
.env.self-host, its secrets, the Compose project name, and the existing data volumes. - Pull the images referenced by the new Compose file, or load the supplied image archives as described in setup.
- Start the supplied version:
docker compose --env-file .env.self-host -f compose.self-host.yml up -d --no-build --pull neverThe migration service applies pending migrations before the new web and worker services start. Check logs and readiness, then verify sign-in and representative project operations.
There is no automatic updater in the application. Use the image references and upgrade instructions supplied with each release. Keep local copies or an internal registry mirror of versions you may need to restore. No source checkout or local image build is needed.
Schema migrations can make an image-only rollback unsafe. Restore the matching database, files, and queue backup when a schema change requires a full rollback.
Troubleshooting
| Symptom | What to check |
|---|---|
| Invalid request origin during setup | Match the browser's scheme, hostname, and port to ARCHFLOW_URL. Recreate web and worker after environment changes; see setup. |
| Invalid setup key | Use this installation's ARCHFLOW_SETUP_TOKEN from its environment file. Do not use a registry credential or administrator password. |
| Setup is already complete | Sign in with an existing account. Organization creation closes after the first successful setup. |
| Single-org setup requires a clean database | Existing hosted users were detected. Start with an empty application database or plan an explicit conversion; do not delete existing data to dismiss the error. |
| Web or worker waits for dependencies | Inspect migration logs, PostgreSQL and Valkey health, and storage connectivity/permissions. |
| Environment edits have no effect | Recreate containers with up -d; restart alone keeps the old environment. |
| Password recovery or notifications are unavailable | Configure SMTP or have an administrator reset the password under Settings → Organization. |
| AI is unavailable | Check the shared organization provider, its credentials, endpoint reachability from containers, automation settings, and usage limits. |
| Images or source documents are missing after restore | Restore the corresponding object storage as well as the database, with the same configuration and encryption key. |
SeaweedFS mini is a single-node service. Persistent volumes survive container replacement, but they do not provide redundancy or replace tested backups.