This fork packages the complete ChatbotX stack for an isolated Coolify Docker Compose deployment:
- ChatbotX builder, worker, and realtime services
- PostgreSQL with the extensions expected by ChatbotX
- Redis
- RustFS object storage and its one-shot bucket initializer
- Private Adminer and MailHog utilities
The upstream project and product documentation remain at ChatbotXIO/ChatbotX and chatbotx.io/docs.
Create a Public Repository application with these values:
| Setting | Value |
|---|---|
| Repository | https://github.com/ulpi-io/chatbotx-docker-compose |
| Branch | main |
| Build Pack | Docker Compose |
| Base Directory | / |
| Compose Location | /docker-compose.yml |
Copy the variables from .env.example into Coolify and replace every replace-me value before deploying.
Generate production secrets locally or on the server:
openssl rand -base64 32 # BETTER_AUTH_SECRET
openssl rand -hex 32 # ENCRYPTION_KEY
openssl rand -hex 32 # REALTIME_BROADCAST_SECRET
openssl rand -hex 32 # POSTGRES_PASSWORD
openssl rand -hex 32 # REDIS_PASSWORD
openssl rand -hex 32 # S3_SECRET_ACCESS_KEYKeep the generated values in a password manager. Do not commit a populated .env file.
Alternatively, generate the complete Coolify-ready environment block in one command:
./generate-env.sh cip@opengrowthgroup.coOn macOS, copy it directly to the clipboard:
./generate-env.sh cip@opengrowthgroup.co | pbcopyCreate DNS A records pointing to the Coolify server, then configure only these service domains:
| Service | Coolify domain value | Public URL |
|---|---|---|
builder |
https://chat.con.fyi:3000 |
https://chat.con.fyi |
realtime |
https://realtime.con.fyi:1999 |
https://realtime.con.fyi |
filesystem |
https://storage.con.fyi:9000 |
https://storage.con.fyi |
The port suffix tells Coolify which internal container port receives traffic. It is not part of the public URL.
builder is the only human-facing UI. The realtime and storage origins are supporting browser endpoints required for WebSockets and signed uploads/assets; they do not expose an administrative interface. RustFS's console on port 9001 remains private.
Leave domains empty for PostgreSQL, Redis, Adminer, MailHog, the RustFS console, filesystem-init, and the worker.
The Compose file intentionally contains no ports: mappings and no custom network. Coolify creates an isolated network for the application and routes the three public domains through its proxy on ports 80 and 443.
Internal connections use Docker service names:
- PostgreSQL:
postgres:5432 - Redis:
redis:6379 - RustFS:
filesystem:9000 - Builder:
builder:3000
This allows other Coolify applications to reuse the same container ports without host-port conflicts and prevents databases or development utilities from being exposed publicly.
- Set all required variables in Coolify.
- Set
RUN_DB_SEED=trueonly if the first installation requires upstream seed data. - Deploy and wait for PostgreSQL, Redis, and RustFS to become healthy.
- Confirm
filesystem-initexits successfully; it is a one-shot task and must not restart. - After the initial deployment, set
RUN_DB_SEED=falseand redeploy. - Verify the builder health endpoint and all three public HTTPS domains.
Named volumes preserve PostgreSQL, Redis, and RustFS data across ordinary container recreation. Configure off-server backups separately before treating the deployment as production.
The application images track the upstream main tags. Redeploy the Coolify application to pull current images. Review upstream release notes and take backups before upgrades that may include database migrations.
ChatbotX Community Edition is released under the license published by the upstream project. This deployment fork retains its existing repository license.