Commit Graph

1077 Commits

Author SHA1 Message Date
Mauricio Siu
31f95474d6 Merge pull request #1018 from Dokploy/feat/dify
feat: add Dify template
2026-07-14 13:59:47 -06:00
Mauricio Siu
fabecbe728 Merge pull request #1017 from Dokploy/feat/synapse
feat: add Synapse (Matrix homeserver) template
2026-07-14 13:59:37 -06:00
Mauricio Siu
4159d3a9f0 Merge pull request #1016 from Dokploy/feat/weblate
feat: add Weblate template
2026-07-14 13:59:29 -06:00
Mauricio Siu
abe36ad330 Merge pull request #1015 from Dokploy/docs/template-instructions
docs: per-template setup instructions for Supabase and Trigger.dev
2026-07-14 13:59:20 -06:00
Mauricio Siu
89505f0b54 Merge pull request #1014 from Dokploy/feat/mailcatcher-ng
feat: add MailCatcher NG template
2026-07-14 13:59:11 -06:00
Mauricio Siu
981811f55f Merge pull request #1013 from Dokploy/fix/nextcloud-naming
fix(nextcloud-aio): drop AIO branding, pin nextcloud 33.0.6
2026-07-14 13:59:03 -06:00
Mauricio Siu
ffeaca14af Merge pull request #1012 from Dokploy/fix/minio-source-only
fix(minio): migrate to pgsty/minio community fork (upstream is source-only and archived)
2026-07-14 13:58:55 -06:00
Mauricio Siu
77145ad581 Merge pull request #1011 from Dokploy/fix/wordpress-loopback
fix(wordpress): route loopback requests through Traefik to fix cURL error 28 timeouts
2026-07-14 13:58:48 -06:00
Mauricio Siu
c60bfa8c72 Merge pull request #1010 from Dokploy/fix/openpanel
fix(openpanel): pin verified 2.2.1 images to prevent broken-release breakage
2026-07-14 13:58:40 -06:00
Mauricio Siu
dd986039a7 Merge pull request #1009 from Dokploy/fix/phpmyadmin
fix(phpmyadmin): raise PHP upload limit so SQL imports over 2MB work
2026-07-14 13:58:32 -06:00
Mauricio Siu
0633b987d5 Merge pull request #1008 from Dokploy/fix/rybbit-update
fix(rybbit): update to current version (v2.7.0)
2026-07-14 13:58:05 -06:00
Mauricio Siu
5d6afe20a6 Merge pull request #1007 from Dokploy/fix/evolutionapi
fix(evolutionapi): enable integration env flags (n8n/openai/evoai) and update
2026-07-14 13:57:56 -06:00
Mauricio Siu
618cda2366 Merge pull request #1006 from Dokploy/fix/databasus-rename
fix: add Databasus template (Postgresus was renamed upstream)
2026-07-14 13:57:48 -06:00
Mauricio Siu
74cec8f74f Merge pull request #1004 from Dokploy/fix/signoz-clickhouse
fix(signoz): fix ClickHouse hostname resolution and IPv6 binding
2026-07-14 13:57:40 -06:00
Mauricio Siu
64fb0f6573 Merge pull request #1003 from Dokploy/fix/automatisch
fix(automatisch): switch to official image and wire up DOMAIN to fix Bad Gateway
2026-07-14 13:57:31 -06:00
Mauricio Siu
9e02e96e3a Merge pull request #1002 from Dokploy/fix/immich-update
fix(immich): update to v3.0.2
2026-07-14 13:57:22 -06:00
Mauricio Siu
33c3fcdadb Merge pull request #998 from Dokploy/fix/homarr-volumes
fix(homarr): use named volume for /appdata and 64-char hex encryption key
2026-07-14 13:57:07 -06:00
Mauricio Siu
493e824f70 Merge pull request #996 from Dokploy/fix/cockpit-volumes
fix(cockpit): persist config and storage volumes per upstream docs
2026-07-14 13:56:58 -06:00
Mauricio Siu
6f27a9427c Merge pull request #995 from Dokploy/fix/affinepro-update
fix(affinepro): update to current AFFiNE images
2026-07-14 13:56:48 -06:00
Mauricio Siu
f76c31ef89 Merge pull request #1024 from Dokploy/feat/markup
feat: add Markup template
2026-07-14 13:56:16 -06:00
Mauricio Siu
478c5197b2 Merge pull request #1021 from Dokploy/feat/silex
feat: add Silex template
2026-07-14 13:53:56 -06:00
Mauricio Siu
a837539398 Merge pull request #999 from Dokploy/fix/logto-update
fix(logto): fix postgres role error and update to current version
2026-07-14 13:53:28 -06:00
Mauricio Siu
c33f72b32a Merge pull request #997 from Dokploy/fix/kener-issues
fix(kener): define REDIS_URL and drop unused databases
2026-07-14 13:53:19 -06:00
Mauricio Siu
1c2921417d Merge pull request #1001 from Dokploy/fix/zitadel-domain
fix(zitadel): wire EXTERNALDOMAIN to the generated domain
2026-07-14 13:53:00 -06:00
Mauricio Siu
6f1b083c57 Merge pull request #1005 from Dokploy/fix/infisical-update
fix(infisical): update to v0.162.6
2026-07-14 13:52:47 -06:00
Mauricio Siu
bd457e0310 Merge pull request #1022 from Dokploy/feat/spacetimedb
feat: add SpacetimeDB template
2026-07-14 13:52:36 -06:00
Mauricio Siu
311faa1ea9 Merge pull request #1000 from Dokploy/fix/gitlab-ce
fix(gitlab-ce): serve on the generated domain (external_url/nginx config)
2026-07-14 13:51:56 -06:00
Mauricio Siu
ee35ed1a42 feat: add Markup template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:47:42 -06:00
Mauricio Siu
3ddbdde081 feat: add SpacetimeDB template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:30:17 -06:00
Mauricio Siu
0bfb50d62f feat: add Silex template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 13:19:16 -06:00
Mauricio Siu
1c2dea39c3 feat: add Dify template
Dify 1.15.0 (open-source LLM app development platform): api + worker +
worker_beat + web + pgvector PostgreSQL (also used as the vector store) +
redis + sandbox + ssrf_proxy (squid) + plugin_daemon, fronted by an
internal nginx gateway that mirrors the upstream path routing.

Closes #88

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:29:15 -06:00
Mauricio Siu
b23ddd0b98 feat: add Synapse (Matrix homeserver) template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:12:24 -06:00
Mauricio Siu
7683947842 feat: add Weblate template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:07:41 -06:00
Mauricio Siu
03a60bb417 docs: add per-template setup instructions (supabase, trigger.dev)
Adds instructions.md files for the Supabase and Trigger.dev templates and
renders them in the template browser as a new Instructions tab in the
template dialog (fetched from blueprints/<id>/instructions.md, rendered
with a small dependency-free markdown component).

Also removes the placeholder blueprints/ackee/instructions.md so it does
not surface as an empty Instructions tab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:04:30 -06:00
Mauricio Siu
b7c2d6c35d feat: add MailCatcher NG template
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 12:03:04 -06:00
Mauricio Siu
f036ddae92 fix(nextcloud-aio): drop AIO branding, keep template id, pin nextcloud 33.0.6
The template ships plain nextcloud + mariadb + redis + cron, not the
nextcloud/all-in-one mastercontainer. Display name and description no
longer claim AIO; folder id is kept as nextcloud-aio to avoid breaking
existing installs. Image pinned to the current stable tag (33.0.6).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:58:34 -06:00
Mauricio Siu
030d9d1089 fix(minio): migrate to pgsty/minio community fork (upstream is source-only and archived)
MinIO Inc. stopped publishing Docker images and pre-built binaries in
October 2025 and archived the minio/minio repository in February 2026.
The official minio/minio image is frozen at RELEASE.2025-09-07T16-13-09Z
and no longer receives security fixes (the fix for CVE-2025-62506 was
never published as an image).

- Switch image to pgsty/minio:RELEASE.2026-06-18T00-00-00Z, the actively
  maintained community fork (drop-in replacement, AGPLv3, same env vars,
  same /data on-disk format, restores the full web console)
- Route the S3 API (port 9000) through its own generated domain instead
  of publishing host port 9000, per repo conventions
- Update meta.json links/description to point at the maintained fork

Closes #469

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:55:53 -06:00
Mauricio Siu
af16250561 fix(wordpress): route loopback requests through Traefik to fix cURL error 28
WordPress resolves its own public domain to the server's public IP from
inside the container, so REST API / WP-Cron / Site Health loopback
requests depend on hairpin NAT, which times out (cURL error 28) on many
hosts. Pin the site domain to the dokploy-traefik container IP in
/etc/hosts at startup (with retries, since Traefik joins the compose
network shortly after the container starts) so loopback traffic stays
inside the Docker network for both HTTP and HTTPS. No-op fallback when
dokploy-traefik is not resolvable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:55:19 -06:00
Mauricio Siu
f946051a6c fix(openpanel): pin verified 2.2.1 images and fix ClickHouse interserver host
- Pin lindesvard/openpanel-api|dashboard|worker to 2.2.1 (verified working
  end-to-end on a Dokploy instance) instead of the mutable :2 tag, so a
  future broken 2.x release cannot silently break the template again —
  which is how #615 originated when 2.0.0 shipped.
- Fix interserver_http_host to match the actual service name (op-ch),
  aligning with upstream self-hosting config.
- Set meta.json version to the pinned 2.2.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:53:37 -06:00
Mauricio Siu
9bdbe266e5 fix(phpmyadmin): raise PHP upload limit so SQL imports over 2MB work
Without UPLOAD_LIMIT the phpMyAdmin image keeps PHP's default 2M
post_max_size/upload_max_filesize, so importing any SQL file larger
than 2MB fails with 'POST Content-Length exceeds the limit of
2097152 bytes' followed by a session_start error page.

- Add UPLOAD_LIMIT (512M) and MAX_EXECUTION_TIME (600) env vars,
  configurable from the template env
- Wire the previously unused MYSQL_DATABASE env var into the compose
  file, replacing the hardcoded 'tu_base_de_datos' placeholder, and
  default it to 'phpmyadmin' instead of the system 'mysql' schema

Closes #236

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:47:20 -06:00
Mauricio Siu
25563213f2 fix(rybbit): update to v2.7.0
The template shipped rybbit v1.5.1, which is no longer supported and is
vulnerable to known React2Shell exploits (see #659). Update to the
latest stable release v2.7.0 and align the stack with the upstream
docker-compose:

- Pin ghcr.io/rybbit-io/rybbit-backend and rybbit-client to v2.7.0
- Add the redis service now required by the backend (session tracking
  and BullMQ queues), with password auth, AOF persistence and
  noeviction policy per upstream
- Drop the DOMAIN_NAME env var (only used by the upstream Caddy
  webserver, which Dokploy replaces with Traefik)
- Add DISABLE_TELEMETRY env and generate BETTER_AUTH_SECRET as base64

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:39:58 -06:00
Mauricio Siu
fb64197738 fix(evolutionapi): enable integration flags and update version
Adds the integration enable env flags introduced in Evolution API v2.3.x
(N8N_ENABLED, OPENAI_ENABLED, EVOAI_ENABLED, DIFY_ENABLED, TYPEBOT_ENABLED,
CHATWOOT_ENABLED) so integrations no longer fail with 'N8n is disabled',
and pins the image to v2.3.7 instead of latest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:38:27 -06:00
Mauricio Siu
cd16441901 fix: add databasus (postgresus renamed upstream)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:36:03 -06:00
Mauricio Siu
29a7970397 fix(infisical): update to v0.162.6
- Bump image from v0.135.0-postgres to v0.162.6 (upstream dropped the
  -postgres tag suffix after v0.146.0; plain tags are the postgres build)
- Remove the db-migration service: the standalone image runs database
  migrations automatically on boot (auto-start-migrations), matching the
  official docker-compose.prod.yml which no longer ships that service
- Generate ENCRYPTION_KEY (${hash:32}) and AUTH_SECRET (${base64:32})
  per deployment instead of shipping hardcoded example secrets
- Fix SITE_URL to http://${main_domain} (no :8080; the domain is proxied)
- Refresh SMTP env names (SMTP_FROM_ADDRESS/SMTP_FROM_NAME; SMTP_SECURE
  was removed upstream) and drop unused CLIENT_* env placeholders that
  were never passed to the container

Closes #215

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:30:46 -06:00
Mauricio Siu
1e486813b4 fix(signoz): fix ClickHouse hostname resolution and IPv6 binding
- Override the ClickHouse image's config.d/docker_related_config.xml,
  which listens on the IPv6 wildcard address ([::]) first and fails to
  bind on hosts without IPv6 support; listen on 0.0.0.0 (IPv4) only and
  disable the internal DNS cache so transient startup DNS failures for
  zookeeper-1/clickhouse are not cached (issue #534).
- Set hostname: clickhouse (instead of container_name) so the server
  identifies itself as the cluster host declared in cluster.xml.
- Remove the explicit signoz-net network: Dokploy attaches its own
  networks automatically and the repo validator rejects explicit
  networks; a fixed-name shared network also breaks service DNS across
  deployments.
- Fix mount mismatch: template.toml created files/signoz/prometheus.xml
  while the compose mounts ../files/signoz/prometheus.yml, so Docker
  silently mounted a directory as the signoz prometheus config.
- Give the otel-collector domain its own generated host: both domains
  previously shared the same host and path "/", creating two conflicting
  Traefik routers where one service randomly won.

Closes #534

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:30:07 -06:00
Mauricio Siu
3c416eaba3 fix(automatisch): switch to official image and wire up DOMAIN to fix Bad Gateway
- Replace unofficial dockeriddonuts/automatisch:2.0 mirror (stale since Nov 2024)
  with the official automatischio/automatisch:0.15.0 image
- Define DOMAIN in template.toml [config.env]: the compose referenced ${DOMAIN}
  but it was never provided, so HOST resolved empty and the app generated
  localhost URLs for the web app and webhooks
- Set API_URL/WEB_APP_URL so generated URLs don't carry the internal :3000 port
  behind Traefik
- Add postgres healthcheck and gate the app on service_healthy to avoid the
  boot-time migration race; worker now starts after main (official compose order)
- Drop unnecessary published port and no-op REDIS_* env on the redis service
- Bump meta.json version to 0.15.0

Closes #97

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:28:22 -06:00
Mauricio Siu
31158e2340 fix(immich): update to v3.0.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:19:38 -06:00
Mauricio Siu
6786237720 fix(zitadel): wire EXTERNALDOMAIN/PORT/SECURE to the generated domain
Zitadel resolves its instance from the external domain/port/scheme, so the
template's ZITADEL_EXTERNALPORT=8080 made every generated URL (OIDC issuer,
login redirects) point at http://<domain>:8080 instead of the domain served
by Traefik, ending in {"code":5,"message":"Not Found"} (#516).

- Expose ZITADEL_EXTERNALDOMAIN / ZITADEL_EXTERNALPORT / ZITADEL_EXTERNALSECURE
  as template env vars, defaulting to the generated domain over HTTP
  (port 80, secure=false) so the routed domain and Zitadel's external config
  always match; HTTPS users flip them to 443/true in the Env tab.
- Pin image to v4.16.0 (was latest) and keep the built-in login v1 via
  ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED=false so no separate
  login-v2 container is needed.
- Add the official readiness healthcheck, drop the unused /app/data volume,
  bogus SMTP env keys, published port and obsolete compose version key.

Closes #516

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:12:30 -06:00
Mauricio Siu
8f84a52855 fix(gitlab-ce): serve on the generated domain (remove removed unicorn config, pin omnibus)
The template set unicorn['worker_processes'] / unicorn['worker_timeout'] in
GITLAB_OMNIBUS_CONFIG. Unicorn was removed in GitLab 14.0, so on current
gitlab-ce images `gitlab-ctl reconfigure` aborts with "Removed configurations
found in gitlab.rb" and GitLab never starts serving — the generated domain
returned 502 Bad Gateway (issue #380).

Rewrite the template as the official all-in-one Omnibus setup:
- pin gitlab/gitlab-ce:19.1.2-ce.0 instead of :latest
- external_url http://<domain> with nginx listen_port 80 / listen_https false
  (TLS terminates at Traefik)
- set gitlab_rails['initial_root_password'] from a generated template password
- puma single mode + prometheus monitoring off to keep memory reasonable
- drop the external postgres/redis containers (Omnibus bundles and manages
  its own) and the broken ports entries ("2224" published a random host port
  while sshd listens on 22)

Verified on a live Dokploy instance: domain serves the GitLab sign-in page
and root login with the generated password works.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:11:25 -06:00
Mauricio Siu
7ed8450cf8 fix(logto): fix postgres role error and update to 1.41.0
The postgres healthcheck ran pg_isready without -U while POSTGRES_USER
was set to logto, so every probe attempted to connect as role
"postgres" and spammed FATAL: role "postgres" does not exist.
Pass -U logto -d logto explicitly and set POSTGRES_DB.

Also fix LOGTO_ENDPOINT pointing at the admin domain instead of the
main domain, update Logto 1.27.0 -> 1.41.0, use ${password:32} for the
generated password, drop the ephemeral host port publishing and add
restart policies.

Closes #130

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 11:04:17 -06:00