mirror of
https://github.com/Dokploy/templates.git
synced 2026-07-10 16:35:27 +02:00
The plane-proxy image has hardcoded `reverse_proxy web:3000`/`api:8000`
in its Caddyfile with generic service names. In multi-stack Dokploy
deployments, those names collide with other stacks' containers (Next.js
apps frequently have a `web` service) on the shared dokploy-network —
the Plane domain ends up serving content from unrelated stacks.
Two-step fix:
1. Rename internal services with `plane-*` prefix (unique cluster-wide):
web/space/admin/live/api/worker/beat-worker/migrator → plane-*
2. Add `links:` block to the `proxy` service mapping the new names back
to the generic ones the Caddyfile expects (`plane-web:web` etc.).
Docker injects these into /etc/hosts, which has absolute priority
over DNS — Caddy resolves `web`/`api`/etc. directly to our renamed
containers, ignoring any collision on dokploy-network.
Also updates `API_BASE_URL` in template.toml and the `x-live-env` anchor
from `http://api:8000` → `http://plane-api:8000`.
No `networks:` declarations added (repo validator rejects them; Dokploy
manages networking automatically).
57 lines
1.5 KiB
TOML
57 lines
1.5 KiB
TOML
[variables]
|
|
app_release = "v1.3.1"
|
|
main_domain = "${domain}"
|
|
postgres_password = "${password:32}"
|
|
minio_password = "${password:32}"
|
|
rabbitmq_password = "${password:32}"
|
|
secret_key = "${base64:48}"
|
|
live_secret_key = "${base64:48}"
|
|
|
|
[config]
|
|
[[config.domains]]
|
|
serviceName = "proxy"
|
|
port = 80
|
|
host = "${main_domain}"
|
|
|
|
env = [
|
|
"APP_RELEASE=${app_release}",
|
|
"APP_DOMAIN=${main_domain}",
|
|
"WEB_URL=https://${main_domain}",
|
|
"CORS_ALLOWED_ORIGINS=https://${main_domain}",
|
|
"API_BASE_URL=http://plane-api:8000",
|
|
"SECRET_KEY=${secret_key}",
|
|
"LIVE_SERVER_SECRET_KEY=${live_secret_key}",
|
|
"POSTGRES_USER=plane",
|
|
"POSTGRES_PASSWORD=${postgres_password}",
|
|
"POSTGRES_DB=plane",
|
|
"POSTGRES_PORT=5432",
|
|
"PGHOST=plane-db",
|
|
"PGDATABASE=plane",
|
|
"PGDATA=/var/lib/postgresql/data",
|
|
"DATABASE_URL=postgresql://plane:${postgres_password}@plane-db:5432/plane",
|
|
"REDIS_HOST=plane-redis",
|
|
"REDIS_PORT=6379",
|
|
"REDIS_URL=redis://plane-redis:6379/",
|
|
"RABBITMQ_HOST=plane-mq",
|
|
"RABBITMQ_PORT=5672",
|
|
"RABBITMQ_USER=plane",
|
|
"RABBITMQ_PASSWORD=${rabbitmq_password}",
|
|
"RABBITMQ_VHOST=plane",
|
|
"AMQP_URL=amqp://plane:${rabbitmq_password}@plane-mq:5672/plane",
|
|
"USE_MINIO=1",
|
|
"AWS_REGION=",
|
|
"AWS_ACCESS_KEY_ID=access-key",
|
|
"AWS_SECRET_ACCESS_KEY=${minio_password}",
|
|
"AWS_S3_ENDPOINT_URL=http://plane-minio:9000",
|
|
"AWS_S3_BUCKET_NAME=uploads",
|
|
"FILE_SIZE_LIMIT=5242880",
|
|
"MINIO_ENDPOINT_SSL=0",
|
|
"DEBUG=0",
|
|
"GUNICORN_WORKERS=1",
|
|
"API_KEY_RATE_LIMIT=60/minute",
|
|
"WEBHOOK_ALLOWED_IPS=",
|
|
"WEBHOOK_ALLOWED_HOSTS=",
|
|
]
|
|
|
|
mounts = []
|