SendDock
Open-source, self-hosted email marketing platform with BYO SMTP. Manage subscribers, templates, broadcasts, and scheduled campaigns from one place.
Configuration
version: "3.8"
services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=senddock
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=senddock
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U senddock"]
interval: 10s
timeout: 5s
retries: 6
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redisdata:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 5
senddock:
image: ghcr.io/arkhe-systems/senddock:0.6.5.1
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
environment:
- DATABASE_URL=postgres://senddock:${POSTGRES_PASSWORD}@postgres:5432/senddock?sslmode=disable
- REDIS_URL=redis://redis:6379
- JWT_SECRET=${JWT_SECRET}
- PUBLIC_URL=${PUBLIC_URL}
- FRONTEND_URL=${PUBLIC_URL}
- DEPLOYMENT_MODE=self-hosted
- SENDDOCK_LICENSE_KEY=${SENDDOCK_LICENSE_KEY}
- PORT=8080
expose:
- 8080
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
volumes:
pgdata:
redisdata:[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
jwt_secret = "${password:64}"
[config]
env = [
"POSTGRES_PASSWORD=${postgres_password}",
"JWT_SECRET=${jwt_secret}",
"PUBLIC_URL=https://${main_domain}",
"SENDDOCK_LICENSE_KEY="
]
[[config.domains]]
serviceName = "senddock"
port = 8080
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcbnNlcnZpY2VzOlxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTctYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfVVNFUj1zZW5kZG9ja1xuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgLSBQT1NUR1JFU19EQj1zZW5kZG9ja1xuICAgIHZvbHVtZXM6XG4gICAgICAtIHBnZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgc2VuZGRvY2tcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA2XG5cbiAgcmVkaXM6XG4gICAgaW1hZ2U6IHJlZGlzOjctYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpc2RhdGE6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcInJlZGlzLWNsaVwiLCBcInBpbmdcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDNzXG4gICAgICByZXRyaWVzOiA1XG5cbiAgc2VuZGRvY2s6XG4gICAgaW1hZ2U6IGdoY3IuaW8vYXJraGUtc3lzdGVtcy9zZW5kZG9jazowLjYuNS4xXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgcG9zdGdyZXM6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICByZWRpczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vc2VuZGRvY2s6JHtQT1NUR1JFU19QQVNTV09SRH1AcG9zdGdyZXM6NTQzMi9zZW5kZG9jaz9zc2xtb2RlPWRpc2FibGVcbiAgICAgIC0gUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OVxuICAgICAgLSBKV1RfU0VDUkVUPSR7SldUX1NFQ1JFVH1cbiAgICAgIC0gUFVCTElDX1VSTD0ke1BVQkxJQ19VUkx9XG4gICAgICAtIEZST05URU5EX1VSTD0ke1BVQkxJQ19VUkx9XG4gICAgICAtIERFUExPWU1FTlRfTU9ERT1zZWxmLWhvc3RlZFxuICAgICAgLSBTRU5ERE9DS19MSUNFTlNFX0tFWT0ke1NFTkRET0NLX0xJQ0VOU0VfS0VZfVxuICAgICAgLSBQT1JUPTgwODBcbiAgICBleHBvc2U6XG4gICAgICAtIDgwODBcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcIndnZXRcIiwgXCItcU8tXCIsIFwiaHR0cDovLzEyNy4wLjAuMTo4MDgwL2hlYWx0aFwiXVxuICAgICAgaW50ZXJ2YWw6IDMwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTVzXG5cbnZvbHVtZXM6XG4gIHBnZGF0YTpcbiAgcmVkaXNkYXRhOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnBvc3RncmVzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5qd3Rfc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjY0fVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtwb3N0Z3Jlc19wYXNzd29yZH1cIixcbiAgXCJKV1RfU0VDUkVUPSR7and0X3NlY3JldH1cIixcbiAgXCJQVUJMSUNfVVJMPWh0dHBzOi8vJHttYWluX2RvbWFpbn1cIixcbiAgXCJTRU5ERE9DS19MSUNFTlNFX0tFWT1cIlxuXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJzZW5kZG9ja1wiXG5wb3J0ID0gODA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuIgp9Links
Tags
email, newsletter, mailing-list, marketing
Version: 0.6.5.1