fix: add plane-admin, plane-space and configure instance URLs
Some checks failed
CI/CD / syntax-check (push) Successful in 2m31s
CI/CD / deploy (push) Has been cancelled

New Plane stable requires 3 frontend services:
- plane-admin (nginx:80) for /god-mode/ routes
- plane-space (node:3000) for /spaces/ routes
- plane-web (nginx:80) for all other routes

Also add APP/ADMIN/SPACE_BASE_URL env vars to plane-api so the
setup wizard knows where to redirect.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jack 2026-03-22 02:14:34 +07:00
parent 66c03ffc04
commit efbbc3cac5
3 changed files with 44 additions and 0 deletions

View file

@ -9,6 +9,8 @@ vaultwarden_image: "vaultwarden/server:1.32.7" # https://hub.d
forgejo_image: "codeberg.org/forgejo/forgejo:9" forgejo_image: "codeberg.org/forgejo/forgejo:9"
forgejo_db_image: "postgres:16-alpine" forgejo_db_image: "postgres:16-alpine"
plane_frontend_image: "makeplane/plane-frontend:stable" # https://hub.docker.com/r/makeplane/plane-frontend/tags plane_frontend_image: "makeplane/plane-frontend:stable" # https://hub.docker.com/r/makeplane/plane-frontend/tags
plane_admin_image: "makeplane/plane-admin:stable" # https://hub.docker.com/r/makeplane/plane-admin/tags
plane_space_image: "makeplane/plane-space:stable" # https://hub.docker.com/r/makeplane/plane-space/tags
plane_backend_image: "makeplane/plane-backend:stable" # https://hub.docker.com/r/makeplane/plane-backend/tags plane_backend_image: "makeplane/plane-backend:stable" # https://hub.docker.com/r/makeplane/plane-backend/tags
plane_db_image: "postgres:16-alpine" plane_db_image: "postgres:16-alpine"
plane_redis_image: "redis:7-alpine" plane_redis_image: "redis:7-alpine"

View file

@ -10,6 +10,8 @@
- "{{ forgejo_image }}" - "{{ forgejo_image }}"
- "{{ forgejo_db_image }}" - "{{ forgejo_db_image }}"
- "{{ plane_frontend_image }}" - "{{ plane_frontend_image }}"
- "{{ plane_admin_image }}"
- "{{ plane_space_image }}"
- "{{ plane_backend_image }}" - "{{ plane_backend_image }}"
- "{{ plane_db_image }}" - "{{ plane_db_image }}"
- "{{ plane_redis_image }}" - "{{ plane_redis_image }}"

View file

@ -163,6 +163,43 @@ services:
- "traefik.http.routers.plane.entrypoints=websecure" - "traefik.http.routers.plane.entrypoints=websecure"
- "traefik.http.routers.plane.tls.certresolver=letsencrypt" - "traefik.http.routers.plane.tls.certresolver=letsencrypt"
- "traefik.http.services.plane.loadbalancer.server.port=80" - "traefik.http.services.plane.loadbalancer.server.port=80"
- "traefik.http.routers.plane.priority=1"
plane-admin:
image: {{ plane_admin_image }}
container_name: plane-admin
restart: unless-stopped
depends_on:
- plane-api
- plane-web
networks:
- backend
- plane-internal
labels:
- "traefik.enable=true"
- "traefik.http.routers.plane-admin.rule=Host(`{{ domain_plane }}`) && PathPrefix(`/god-mode/`)"
- "traefik.http.routers.plane-admin.entrypoints=websecure"
- "traefik.http.routers.plane-admin.tls.certresolver=letsencrypt"
- "traefik.http.services.plane-admin.loadbalancer.server.port=80"
- "traefik.http.routers.plane-admin.priority=10"
plane-space:
image: {{ plane_space_image }}
container_name: plane-space
restart: unless-stopped
depends_on:
- plane-api
- plane-web
networks:
- backend
- plane-internal
labels:
- "traefik.enable=true"
- "traefik.http.routers.plane-space.rule=Host(`{{ domain_plane }}`) && PathPrefix(`/spaces/`)"
- "traefik.http.routers.plane-space.entrypoints=websecure"
- "traefik.http.routers.plane-space.tls.certresolver=letsencrypt"
- "traefik.http.services.plane-space.loadbalancer.server.port=3000"
- "traefik.http.routers.plane-space.priority=10"
plane-api: plane-api:
image: {{ plane_backend_image }} image: {{ plane_backend_image }}
@ -200,6 +237,9 @@ services:
- MINIO_ROOT_USER=plane-minio - MINIO_ROOT_USER=plane-minio
- MINIO_ROOT_PASSWORD=${PLANE_MINIO_PASSWORD} - MINIO_ROOT_PASSWORD=${PLANE_MINIO_PASSWORD}
- GUNICORN_WORKERS=2 - GUNICORN_WORKERS=2
- APP_BASE_URL=https://{{ domain_plane }}
- ADMIN_BASE_URL=https://{{ domain_plane }}/god-mode
- SPACE_BASE_URL=https://{{ domain_plane }}/spaces
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.plane-api.rule=Host(`{{ domain_plane }}`) && (PathPrefix(`/api/`) || PathPrefix(`/auth/`))" - "traefik.http.routers.plane-api.rule=Host(`{{ domain_plane }}`) && (PathPrefix(`/api/`) || PathPrefix(`/auth/`))"