Chatwoot
Open-source customer engagement platform that provides a shared inbox for teams, live chat, and omnichannel support.
Configuration
version: "3.8"
x-chatwoot-base: &chatwoot-base
image: chatwoot/chatwoot:v4.12.1
restart: unless-stopped
volumes:
- chatwoot-storage:/app/storage
environment:
- FRONTEND_URL=${FRONTEND_URL}
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- FORCE_SSL=${FORCE_SSL}
- DEFAULT_LOCALE=${DEFAULT_LOCALE}
- ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE}
- ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP}
- RAILS_ENV=${RAILS_ENV}
- NODE_ENV=${NODE_ENV}
- INSTALLATION_ENV=${INSTALLATION_ENV}
- RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT}
- LOG_LEVEL=${LOG_LEVEL}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_DATABASE=${POSTGRES_DATABASE}
- POSTGRES_USERNAME=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_URL=${REDIS_URL}
- REDIS_PASSWORD=${REDIS_PASSWORD}
services:
chatwoot:
<<: *chatwoot-base
depends_on:
- postgres
- redis
entrypoint: docker/entrypoints/rails.sh
command:
- sh
- -c
- bundle exec rails db:chatwoot_prepare && bundle exec rails s -p 3000 -b 0.0.0.0
expose:
- "3000"
chatwoot-worker:
<<: *chatwoot-base
depends_on:
- postgres
- redis
command:
- bundle
- exec
- sidekiq
- -C
- config/sidekiq.yml
postgres:
image: pgvector/pgvector:pg16
restart: unless-stopped
volumes:
- chatwoot-postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${POSTGRES_DATABASE}
- POSTGRES_USER=${POSTGRES_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
redis:
image: redis:alpine
restart: unless-stopped
command:
- sh
- -c
- redis-server --requirepass "$$REDIS_PASSWORD"
environment:
- REDIS_PASSWORD=${REDIS_PASSWORD}
volumes:
- chatwoot-redis-data:/data
volumes:
chatwoot-storage:
chatwoot-postgres-data:
chatwoot-redis-data:[variables]
main_domain = "${domain}"
secret_key_base = "${hash:64}"
postgres_password = "${password}"
redis_password = "${password}"
[config]
env = [
"FRONTEND_URL=http://${main_domain}",
"SECRET_KEY_BASE=${secret_key_base}",
"FORCE_SSL=false",
"RAILS_ENV=production",
"NODE_ENV=production",
"INSTALLATION_ENV=docker",
"RAILS_LOG_TO_STDOUT=true",
"LOG_LEVEL=info",
"DEFAULT_LOCALE=en",
"POSTGRES_HOST=postgres",
"POSTGRES_PORT=5432",
"POSTGRES_DATABASE=chatwoot",
"POSTGRES_USERNAME=postgres",
"POSTGRES_PASSWORD=${postgres_password}",
"REDIS_URL=redis://:${redis_password}@redis:6379",
"REDIS_PASSWORD=${redis_password}",
"ENABLE_ACCOUNT_SIGNUP=false",
"ACTIVE_STORAGE_SERVICE=local",
]
mounts = []
[[config.domains]]
serviceName = "chatwoot"
port = 3_000
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxueC1jaGF0d29vdC1iYXNlOiAmY2hhdHdvb3QtYmFzZVxuICBpbWFnZTogY2hhdHdvb3QvY2hhdHdvb3Q6djQuMTIuMVxuICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICB2b2x1bWVzOlxuICAgIC0gY2hhdHdvb3Qtc3RvcmFnZTovYXBwL3N0b3JhZ2VcbiAgZW52aXJvbm1lbnQ6XG4gICAgLSBGUk9OVEVORF9VUkw9JHtGUk9OVEVORF9VUkx9XG4gICAgLSBTRUNSRVRfS0VZX0JBU0U9JHtTRUNSRVRfS0VZX0JBU0V9XG4gICAgLSBGT1JDRV9TU0w9JHtGT1JDRV9TU0x9XG4gICAgLSBERUZBVUxUX0xPQ0FMRT0ke0RFRkFVTFRfTE9DQUxFfVxuICAgIC0gQUNUSVZFX1NUT1JBR0VfU0VSVklDRT0ke0FDVElWRV9TVE9SQUdFX1NFUlZJQ0V9XG4gICAgLSBFTkFCTEVfQUNDT1VOVF9TSUdOVVA9JHtFTkFCTEVfQUNDT1VOVF9TSUdOVVB9XG4gICAgLSBSQUlMU19FTlY9JHtSQUlMU19FTlZ9XG4gICAgLSBOT0RFX0VOVj0ke05PREVfRU5WfVxuICAgIC0gSU5TVEFMTEFUSU9OX0VOVj0ke0lOU1RBTExBVElPTl9FTlZ9XG4gICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPSR7UkFJTFNfTE9HX1RPX1NURE9VVH1cbiAgICAtIExPR19MRVZFTD0ke0xPR19MRVZFTH1cbiAgICAtIFBPU1RHUkVTX0hPU1Q9JHtQT1NUR1JFU19IT1NUfVxuICAgIC0gUE9TVEdSRVNfUE9SVD0ke1BPU1RHUkVTX1BPUlR9XG4gICAgLSBQT1NUR1JFU19EQVRBQkFTRT0ke1BPU1RHUkVTX0RBVEFCQVNFfVxuICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9JHtQT1NUR1JFU19VU0VSTkFNRX1cbiAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgLSBSRURJU19VUkw9JHtSRURJU19VUkx9XG4gICAgLSBSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfVxuXG5zZXJ2aWNlczpcbiAgY2hhdHdvb3Q6XG4gICAgPDw6ICpjaGF0d29vdC1iYXNlXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcG9zdGdyZXNcbiAgICAgIC0gcmVkaXNcbiAgICBlbnRyeXBvaW50OiBkb2NrZXIvZW50cnlwb2ludHMvcmFpbHMuc2hcbiAgICBjb21tYW5kOlxuICAgICAgLSBzaFxuICAgICAgLSAtY1xuICAgICAgLSBidW5kbGUgZXhlYyByYWlscyBkYjpjaGF0d29vdF9wcmVwYXJlICYmIGJ1bmRsZSBleGVjIHJhaWxzIHMgLXAgMzAwMCAtYiAwLjAuMC4wXG4gICAgZXhwb3NlOlxuICAgICAgLSBcIjMwMDBcIlxuXG4gIGNoYXR3b290LXdvcmtlcjpcbiAgICA8PDogKmNoYXR3b290LWJhc2VcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBwb3N0Z3Jlc1xuICAgICAgLSByZWRpc1xuICAgIGNvbW1hbmQ6XG4gICAgICAtIGJ1bmRsZVxuICAgICAgLSBleGVjXG4gICAgICAtIHNpZGVraXFcbiAgICAgIC0gLUNcbiAgICAgIC0gY29uZmlnL3NpZGVraXEueW1sXG5cbiAgcG9zdGdyZXM6XG4gICAgaW1hZ2U6IHBndmVjdG9yL3BndmVjdG9yOnBnMTZcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIGNoYXR3b290LXBvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFBPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREFUQUJBU0V9XG4gICAgICAtIFBPU1RHUkVTX1VTRVI9JHtQT1NUR1JFU19VU0VSTkFNRX1cbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cblxuICByZWRpczpcbiAgICBpbWFnZTogcmVkaXM6YWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBjb21tYW5kOlxuICAgICAgLSBzaFxuICAgICAgLSAtY1xuICAgICAgLSByZWRpcy1zZXJ2ZXIgLS1yZXF1aXJlcGFzcyBcIiQkUkVESVNfUEFTU1dPUkRcIlxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGNoYXR3b290LXJlZGlzLWRhdGE6L2RhdGFcblxudm9sdW1lczpcbiAgY2hhdHdvb3Qtc3RvcmFnZTpcbiAgY2hhdHdvb3QtcG9zdGdyZXMtZGF0YTpcbiAgY2hhdHdvb3QtcmVkaXMtZGF0YToiLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuc2VjcmV0X2tleV9iYXNlID0gXCIke2hhc2g6NjR9XCJcbnBvc3RncmVzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkfVwiXG5yZWRpc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZH1cIlxuXG5bY29uZmlnXVxuZW52ID0gW1xuICBcIkZST05URU5EX1VSTD1odHRwOi8vJHttYWluX2RvbWFpbn1cIixcbiAgXCJTRUNSRVRfS0VZX0JBU0U9JHtzZWNyZXRfa2V5X2Jhc2V9XCIsXG4gIFwiRk9SQ0VfU1NMPWZhbHNlXCIsXG4gIFwiUkFJTFNfRU5WPXByb2R1Y3Rpb25cIixcbiAgXCJOT0RFX0VOVj1wcm9kdWN0aW9uXCIsXG4gIFwiSU5TVEFMTEFUSU9OX0VOVj1kb2NrZXJcIixcbiAgXCJSQUlMU19MT0dfVE9fU1RET1VUPXRydWVcIixcbiAgXCJMT0dfTEVWRUw9aW5mb1wiLFxuICBcIkRFRkFVTFRfTE9DQUxFPWVuXCIsXG4gIFwiUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1wiLFxuICBcIlBPU1RHUkVTX1BPUlQ9NTQzMlwiLFxuICBcIlBPU1RHUkVTX0RBVEFCQVNFPWNoYXR3b290XCIsXG4gIFwiUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcIixcbiAgXCJQT1NUR1JFU19QQVNTV09SRD0ke3Bvc3RncmVzX3Bhc3N3b3JkfVwiLFxuICBcIlJFRElTX1VSTD1yZWRpczovLzoke3JlZGlzX3Bhc3N3b3JkfUByZWRpczo2Mzc5XCIsXG4gIFwiUkVESVNfUEFTU1dPUkQ9JHtyZWRpc19wYXNzd29yZH1cIixcbiAgXCJFTkFCTEVfQUNDT1VOVF9TSUdOVVA9ZmFsc2VcIixcbiAgXCJBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFPWxvY2FsXCIsXG5dXG5tb3VudHMgPSBbXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJjaGF0d29vdFwiXG5wb3J0ID0gM18wMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbiIKfQ==Links
Tags
support, chat, customer-service
Version: v4.12.1
Chatto (single binary)
A fully-featured real-time chat application for teams and communities. This template deploys the single Chatto binary with embedded NATS. Note: email/password registration requires SMTP to be configured after deployment; voice/video calls are not included in the single-binary setup.
Checkcle
Checkcle is a security and compliance tool by Operacle, providing insights into system configuration and runtime checks.