Deploy
Deploy the CRMcy stack to a single VPS or a small cluster.
Last updated 2026-05-05
CRMcy ships as a Docker Compose stack designed for single-VPS hosting (4 vCPU / 16 GB RAM minimum for production traffic, 2 / 8 for staging). The stack at infra/docker-compose.yml brings up Postgres, PgBouncer, Redis, MinIO, ClamAV, the api / worker / cron-scheduler / pipe / web / marketing / docs / status apps, and an nginx edge with Let's Encrypt-provided TLS. CI pushes per-app images to the configured registry; deploy by pulling the new tag and running docker compose up -d on the target host.
For larger workloads, the same compose layout maps cleanly to a Docker Swarm or Kubernetes equivalent — keep the data plane (postgres, redis, minio) external and run the app plane horizontally.
First-time setup
- Clone the repo to
/srv/crmcy. - Copy
.env.exampleto.envand fill secrets. - Run
infra/scripts/bootstrap.shto create initial volumes, run migrations, and issue the first wildcard cert. - Run
docker compose -f infra/docker-compose.yml up -d.
Rolling updates
git pull
docker compose -f infra/docker-compose.yml pull
docker compose -f infra/docker-compose.yml up -dThe api service handles graceful drains (10s SIGTERM window) so in-flight requests complete before the container exits.
See the source at infra/scripts/deploy.sh.