From efbbc3cac5ef3a1dec3a345f3bea2a1a38655517 Mon Sep 17 00:00:00 2001 From: jack Date: Sun, 22 Mar 2026 02:14:34 +0700 Subject: [PATCH] fix: add plane-admin, plane-space and configure instance URLs 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 --- roles/services/defaults/main.yml | 2 + roles/services/tasks/main.yml | 2 + .../services/templates/docker-compose.yml.j2 | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/roles/services/defaults/main.yml b/roles/services/defaults/main.yml index d4381b5..e2a4e9c 100644 --- a/roles/services/defaults/main.yml +++ b/roles/services/defaults/main.yml @@ -9,6 +9,8 @@ vaultwarden_image: "vaultwarden/server:1.32.7" # https://hub.d forgejo_image: "codeberg.org/forgejo/forgejo:9" forgejo_db_image: "postgres:16-alpine" 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_db_image: "postgres:16-alpine" plane_redis_image: "redis:7-alpine" diff --git a/roles/services/tasks/main.yml b/roles/services/tasks/main.yml index 0d4b023..afff3c0 100644 --- a/roles/services/tasks/main.yml +++ b/roles/services/tasks/main.yml @@ -10,6 +10,8 @@ - "{{ forgejo_image }}" - "{{ forgejo_db_image }}" - "{{ plane_frontend_image }}" + - "{{ plane_admin_image }}" + - "{{ plane_space_image }}" - "{{ plane_backend_image }}" - "{{ plane_db_image }}" - "{{ plane_redis_image }}" diff --git a/roles/services/templates/docker-compose.yml.j2 b/roles/services/templates/docker-compose.yml.j2 index 0fdbbd7..7a4f4d1 100644 --- a/roles/services/templates/docker-compose.yml.j2 +++ b/roles/services/templates/docker-compose.yml.j2 @@ -163,6 +163,43 @@ services: - "traefik.http.routers.plane.entrypoints=websecure" - "traefik.http.routers.plane.tls.certresolver=letsencrypt" - "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: image: {{ plane_backend_image }} @@ -200,6 +237,9 @@ services: - MINIO_ROOT_USER=plane-minio - MINIO_ROOT_PASSWORD=${PLANE_MINIO_PASSWORD} - 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: - "traefik.enable=true" - "traefik.http.routers.plane-api.rule=Host(`{{ domain_plane }}`) && (PathPrefix(`/api/`) || PathPrefix(`/auth/`))"