CRMcy Docs

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

  1. Clone the repo to /srv/crmcy.
  2. Copy .env.example to .env and fill secrets.
  3. Run infra/scripts/bootstrap.sh to create initial volumes, run migrations, and issue the first wildcard cert.
  4. 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 -d

The 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.