Coolify
Deploy the complete Keenpix stack with generated secrets, domains, health checks, and independent services.
Use docker-compose.coolify.yml for a normal self-hosted Coolify deployment. It references published images and uses Coolify magic variables for generated credentials.
Create the resource
- Create a Docker Compose resource from the Keenpix repository.
- Select
docker-compose.coolify.yml. - Assign a domain to
SERVICE_URL_APPand a docs domain toSERVICE_URL_DOCS. - Set
KEENPIX_SUPER_ADMIN_EMAIL. - Deploy.
Coolify generates:
SERVICE_USER_POSTGRESandSERVICE_PASSWORD_64_POSTGRESSERVICE_HEX_64_KEENPIXfor Better AuthSERVICE_HEX_64_KEENPIX_WORKERfor internal worker authenticationSERVICE_USER_WORKBENCHandSERVICE_PASSWORD_64_WORKBENCHfor Workbench basic authSERVICE_USER_MAXIOandSERVICE_PASSWORD_64_MAXIOfor the fallback object cacheSERVICE_PASSWORD_64_ADMINfor the initial super-admin password
You may override Workbench with KEENPIX_WORKBENCH_USERNAME and KEENPIX_WORKBENCH_PASSWORD, but both must be set together.
Service routing
Only app:3000 and docs:3003 need public domains. Keep transform:3002,
worker:3001, Postgres, Dragonfly, and MaxIO private. If you expose Workbench
through a private operator domain, keep its basic auth enabled and add Coolify
access controls in front of it.
Health checks
Coolify should show these containers as healthy:
- app:
GET /api/health - transform:
GET /health/ready(database plus configured cache tiers) - worker:
GET /health/ready(queue connectivity) - docs:
GET /health - Postgres:
pg_isready
Cloud deployment
docker-compose.production.yml is the maintained source-build stack for keenpix.com. It adds ClickHouse, MaxIO, Mailpit, usage reporting, and Postgres backups. Self-hosters should start with docker-compose.coolify.yml and add those capabilities only when their scale requires them.