Docker Compose
Run the full Syntho stack on a single machine using Docker Compose.
What Docker Compose deploys
The Compose bundle runs the full stack on one host:
Frontend (UI)
Backend
Core API
Ray
PostgreSQL (metadata)
Redis
Some bundles let you point to external PostgreSQL/Redis instead.
Offline deployment
Offline deployments require the steps below. You need to stage artifacts on a connected machine first.
Stage the compose bundle
You cannot fetch templates from GitHub on the offline host.
Download or clone the
deployment-toolsrepo.Copy the
docker-compose/folder (includingpostgres/) to the offline host.
Stage container images
The offline host cannot pull images from the Syntho registry. There are two alternatives:
Recommended: mirror images into an internal registry reachable by the offline host. Then update image references in
docker-compose.yamlto the internal registry hostname.Alternative:
docker save/docker loadimages as tarballs.
Practical flow for tarballs:
Log in to the Syntho registry.
Pull the images for the
APPLICATION_VERSIONyou will deploy.Export them:
docker save -o syntho-images.tar \
<image-1>:<tag> <image-2>:<tag> <image-n>:<tag>Transfer
syntho-images.tarto the offline host.Import them on the offline host:
docker load -i syntho-images.tarRegistry authentication step changes
If you load images locally, skip registry login on the offline host.
If you use an internal registry, log in to that registry instead.
Upgrades are the same procedure. Repeat the staging step for the new APPLICATION_VERSION.
Deploy
Prerequisites
Make sure you meet the prerequisites before deploying.
Get the Docker Compose templates
Use the templates from the deployment-tools repository:
Key files in that folder:
Keep .env and docker-compose.yaml in the same directory.
Also keep the postgres/ folder next to them. It contains the init script that creates the required databases.
Configure .env
.envEdit .env in the same directory as docker-compose.yaml.
Set at least:
APPLICATION_VERSION: Syntho version to deploy.LICENSE_KEY: your Syntho license key.SECRET_KEY: secret used by Syntho security mechanisms.USER_EMAIL: email for the initial admin user.USER_PASSWORD: password for the initial admin user.DB_PASSWORD: password for the bundled PostgreSQL (required bydocker-compose.yaml).
The default Compose bundle assumes DB_USER=syntho. Set DB_PASSWORD yourself.
Generate a SECRET_KEY (if needed, Syntho will provide one as well):
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"Rotate secret keys carefully.
Syntho uses secret keys for sessions and encryption.
Changing keys can break sessions.
It can also make previously stored encrypted values unreadable.
Plan key rotation:
Back up PostgreSQL metadata databases.
Stop traffic and running jobs.
Rotate keys.
Restart services.
Verify login and basic workflows.
If you are unsure what do do, ask Syntho Support.
Verify deployment
Check containers status with:
docker compose psOpen the UI:
<FRONTEND_PROTOCOL>://<FRONTEND_DOMAIN>:<FRONTEND_PORT>
Use the admin credentials you configured in .env.
The FRONTEND_DOMAIN / FRONTEND_PORT can be found in the .env
If this does not work, see Troubleshooting.
Back up PostgreSQL
Back up PostgreSQL Syntho application databases before first use to validate the process.
Next steps
Day-to-day commands: Operations
Upgrade procedure: Upgrade
Common issues: Troubleshooting
Last updated
Was this helpful?

