From 1e99d46afe04d6856e402cc5c96ab3e14ea4845a Mon Sep 17 00:00:00 2001 From: Juan Vargas <108702207+JuansesDev@users.noreply.github.com> Date: Tue, 7 Jul 2026 16:42:47 -0500 Subject: [PATCH] feat: add SendDock template (#821) * feat(senddock): add SendDock template SendDock is an open-source, self-hosted email marketing platform with BYO SMTP. The template ships postgres + redis + the canonical ghcr.io/arkhe-systems/senddock image, with healthchecks, named volumes and the env vars required for a working install. The senddock service runs migrations on startup via goose and serves the Vue dashboard on port 8080. PUBLIC_URL is wired to the Dokploy domain helper so unsubscribe links and broadcasts work out of the box. License key is left empty by default, which gives users the free Core experience; setting SENDDOCK_LICENSE_KEY unlocks the Pro features. Running dedupe-and-sort-meta.js per CONTRIBUTING removed an unrelated duplicate strapi entry that already existed in the index (same version, same logo, listed twice). The senddock entry is the intended addition. * fix(senddock): apply review fixes and bump to 0.6.4.1 - Add required `version: "3.8"` declaration to docker-compose.yml per AGENTS.md - Convert template.toml env from sub-table to array-of-strings syntax - Bump image and meta.json version to 0.6.4.1 (latest stable, fixes Redis rate-limiter restart loop affecting 0.4.x-0.6.4) * fix(senddock): correct website and docs URLs to senddock.dev * fix(senddock): bump to 0.6.5.1 --------- Co-authored-by: Sebastian Vargas Co-authored-by: Mauricio Siu --- blueprints/senddock/docker-compose.yml | 57 ++++++++++++++++++++++++++ blueprints/senddock/senddock.svg | 16 ++++++++ blueprints/senddock/template.toml | 17 ++++++++ meta.json | 18 ++++++++ 4 files changed, 108 insertions(+) create mode 100644 blueprints/senddock/docker-compose.yml create mode 100644 blueprints/senddock/senddock.svg create mode 100644 blueprints/senddock/template.toml diff --git a/blueprints/senddock/docker-compose.yml b/blueprints/senddock/docker-compose.yml new file mode 100644 index 00000000..c4ff03d0 --- /dev/null +++ b/blueprints/senddock/docker-compose.yml @@ -0,0 +1,57 @@ +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: diff --git a/blueprints/senddock/senddock.svg b/blueprints/senddock/senddock.svg new file mode 100644 index 00000000..9dc916eb --- /dev/null +++ b/blueprints/senddock/senddock.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/blueprints/senddock/template.toml b/blueprints/senddock/template.toml new file mode 100644 index 00000000..4a8c456e --- /dev/null +++ b/blueprints/senddock/template.toml @@ -0,0 +1,17 @@ +[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}" diff --git a/meta.json b/meta.json index e94efea2..3f70aea8 100644 --- a/meta.json +++ b/meta.json @@ -6175,6 +6175,24 @@ "file-system" ] }, + { + "id": "senddock", + "name": "SendDock", + "version": "0.6.5.1", + "description": "Open-source, self-hosted email marketing platform with BYO SMTP. Manage subscribers, templates, broadcasts, and scheduled campaigns from one place.", + "logo": "senddock.svg", + "links": { + "github": "https://github.com/Arkhe-Systems/senddock", + "website": "https://senddock.dev", + "docs": "https://docs.senddock.dev" + }, + "tags": [ + "email", + "newsletter", + "mailing-list", + "marketing" + ] + }, { "id": "sftpgo", "name": "SFTPGo",