From bfdcaaefa257fffe8110206a8b67a5e877ea6efa Mon Sep 17 00:00:00 2001 From: Rasaboun <40967731+Rasaboun@users.noreply.github.com> Date: Sun, 29 Mar 2026 12:16:33 +0200 Subject: [PATCH 1/4] =?UTF-8?q?fix(plane):=20update=20template=20to=20Plan?= =?UTF-8?q?e=20v1.x=20(stable)=20The=20existing=20template=20targeted=20v0?= =?UTF-8?q?.27.1=20which=20is=20heavily=20outdated.=20This=20updates=20it?= =?UTF-8?q?=20to=20match=20Plane's=20current=20official=20deployment=20con?= =?UTF-8?q?fig.=20Changes:=20-=20Images:=20v0.27.1=20=E2=86=92=20stable=20?= =?UTF-8?q?(currently=20v1.2.3)=20from=20Docker=20Hub=20-=20Remove=20expli?= =?UTF-8?q?cit=20commands=20from=20frontend=20services=20(built=20into=20i?= =?UTF-8?q?mages)=20-=20Postgres:=2017-alpine=20=E2=86=92=2015.7-alpine=20?= =?UTF-8?q?(matches=20Plane's=20supported=20version)=20-=20Valkey:=207.2.5?= =?UTF-8?q?=20=E2=86=92=207.2.11=20-=20Proxy:=20add=20admin=20+=20live=20d?= =?UTF-8?q?ependencies,=20proxy=5Fconfig/proxy=5Fdata=20volumes=20-=20Add?= =?UTF-8?q?=20LIVE=5FSERVER=5FSECRET=5FKEY,=20APP=5FDOMAIN,=20SITE=5FADDRE?= =?UTF-8?q?SS=20env=20vars=20-=20Add=20RABBITMQ=5FUSER/PASSWORD/VHOST=20(n?= =?UTF-8?q?ew=20v1.x=20env=20var=20names)=20-=20Fix=20RABBITMQ=5FDEFAULT?= =?UTF-8?q?=5FUSER=20bug=20(was=20hardcoded=20string,=20not=20variable)=20?= =?UTF-8?q?-=20Fix=20DATABASE=5FURL=20to=20use=20template=20variables=20di?= =?UTF-8?q?rectly=20-=20Fix=20AWS=5FACCESS=5FKEY=5FID=20to=20match=20MINIO?= =?UTF-8?q?=5FROOT=5FUSER=20literal=20-=20Remove=20deprecated:=20version?= =?UTF-8?q?=20key,=20SENTRY=5F*,=20NGINX=5FPORT=20-=20Remove=20unused=20en?= =?UTF-8?q?v=5Ffile=20from=20plane-redis=20-=20Add=20restart=20policies=20?= =?UTF-8?q?to=20all=20services?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blueprints/plane/docker-compose.yml | 50 ++++++++++++++++++----------- blueprints/plane/template.toml | 29 +++++++++-------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/blueprints/plane/docker-compose.yml b/blueprints/plane/docker-compose.yml index 9502c0108..564714f57 100644 --- a/blueprints/plane/docker-compose.yml +++ b/blueprints/plane/docker-compose.yml @@ -1,9 +1,7 @@ -version: "3.8" - services: web: - image: makeplane/plane-frontend:${APP_RELEASE:-v0.27.1} - command: node web/server.js web + image: makeplane/plane-frontend:${APP_RELEASE:-stable} + restart: always depends_on: - api - worker @@ -11,8 +9,8 @@ services: - .env space: - image: makeplane/plane-space:${APP_RELEASE:-v0.27.1} - command: node space/server.js space + image: makeplane/plane-space:${APP_RELEASE:-stable} + restart: always depends_on: - api - worker @@ -21,8 +19,8 @@ services: - .env admin: - image: makeplane/plane-admin:${APP_RELEASE:-v0.27.1} - command: node admin/server.js admin + image: makeplane/plane-admin:${APP_RELEASE:-stable} + restart: always depends_on: - api - web @@ -30,8 +28,8 @@ services: - .env live: - image: makeplane/plane-live:${APP_RELEASE:-v0.27.1} - command: node live/dist/server.js live + image: makeplane/plane-live:${APP_RELEASE:-stable} + restart: always depends_on: - api - web @@ -39,7 +37,8 @@ services: - .env api: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-stable} + restart: always command: ./bin/docker-entrypoint-api.sh volumes: - logs_api:/code/plane/logs @@ -51,7 +50,8 @@ services: - .env worker: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-stable} + restart: always command: ./bin/docker-entrypoint-worker.sh volumes: - logs_worker:/code/plane/logs @@ -64,7 +64,8 @@ services: - .env beat-worker: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-stable} + restart: always command: ./bin/docker-entrypoint-beat.sh volumes: - logs_beat-worker:/code/plane/logs @@ -77,7 +78,8 @@ services: - .env migrator: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-stable} + restart: "no" command: ./bin/docker-entrypoint-migrator.sh volumes: - logs_migrator:/code/plane/logs @@ -88,7 +90,8 @@ services: - .env plane-db: - image: postgres:17-alpine + image: postgres:15.7-alpine + restart: always command: postgres -c 'max_connections=1000' volumes: - pgdata:/var/lib/postgresql/data @@ -96,14 +99,14 @@ services: - .env plane-redis: - image: valkey/valkey:7.2.5-alpine + image: valkey/valkey:7.2.11-alpine + restart: always volumes: - redisdata:/data - env_file: - - .env plane-mq: image: rabbitmq:3.13.6-management-alpine + restart: always volumes: - rabbitmq_data:/var/lib/rabbitmq env_file: @@ -111,6 +114,7 @@ services: plane-minio: image: minio/minio:latest + restart: always command: server /export --console-address ":9090" volumes: - uploads:/export @@ -118,11 +122,17 @@ services: - .env proxy: - image: makeplane/plane-proxy:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-proxy:${APP_RELEASE:-stable} + restart: always depends_on: - web - api - space + - admin + - live + volumes: + - proxy_config:/config + - proxy_data:/data env_file: - .env @@ -135,3 +145,5 @@ volumes: logs_beat-worker: logs_migrator: rabbitmq_data: + proxy_config: + proxy_data: diff --git a/blueprints/plane/template.toml b/blueprints/plane/template.toml index a12f45649..3ad848716 100644 --- a/blueprints/plane/template.toml +++ b/blueprints/plane/template.toml @@ -1,53 +1,56 @@ [variables] main_domain = "${domain}" +postgres_user = "${username}" db_password = "${password:32}" minio_password = "${password:32}" rabbitmq_user = "${username}" rabbitmq_pass = "${password:32}" secret_key = "${base64:48}" +live_secret_key = "${base64:32}" [config] env = [ -"Domain=${domain}", -"WEB_URL=${Domain}", +"APP_DOMAIN=${main_domain}", +"WEB_URL=https://${main_domain}", "PGHOST=plane-db", "PGDATABASE=plane", -"POSTGRES_USER=${username}", +"POSTGRES_USER=${postgres_user}", "POSTGRES_PASSWORD=${db_password}", "POSTGRES_DB=plane", "POSTGRES_PORT=5432", "PGDATA=/var/lib/postgresql/data", +"DATABASE_URL=postgresql://${postgres_user}:${db_password}@plane-db/plane", "REDIS_HOST=plane-redis", "REDIS_PORT=6379", "REDIS_URL=redis://plane-redis:6379/", "MINIO_ROOT_USER=access-key", "MINIO_ROOT_PASSWORD=${minio_password}", "AWS_REGION=", -"AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER}", +"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", -"NGINX_PORT=80", "BUCKET_NAME=uploads", "FILE_SIZE_LIMIT=5242880", "RABBITMQ_HOST=plane-mq", "RABBITMQ_PORT=5672", -"RABBITMQ_DEFAULT_USER=rabbitmq_user", +"RABBITMQ_USER=${rabbitmq_user}", +"RABBITMQ_PASSWORD=${rabbitmq_pass}", +"RABBITMQ_VHOST=plane", +"RABBITMQ_DEFAULT_USER=${rabbitmq_user}", "RABBITMQ_DEFAULT_PASS=${rabbitmq_pass}", "RABBITMQ_DEFAULT_VHOST=plane", -"RABBITMQ_VHOST=plane", +"AMQP_URL=amqp://${rabbitmq_user}:${rabbitmq_pass}@plane-mq:5672/plane", "API_BASE_URL=http://api:8000", "DEBUG=0", -"SENTRY_DSN=", -"SENTRY_ENVIRONMENT=production", -"CORS_ALLOWED_ORIGINS=https://${Domain}", +"CORS_ALLOWED_ORIGINS=https://${main_domain}", "GUNICORN_WORKERS=1", "USE_MINIO=1", -"DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@plane-db/plane", "SECRET_KEY=${secret_key}", -"AMQP_URL=amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@plane-mq:5672/plane", "API_KEY_RATE_LIMIT=60/minute", -"MINIO_ENDPOINT_SSL=0" +"MINIO_ENDPOINT_SSL=0", +"SITE_ADDRESS=:80", +"LIVE_SERVER_SECRET_KEY=${live_secret_key}" ] mounts = [] From a8b358ac41a517649fc9152bb13be7504469d9fd Mon Sep 17 00:00:00 2001 From: Rasaboun <40967731+Rasaboun@users.noreply.github.com> Date: Sun, 29 Mar 2026 12:16:34 +0200 Subject: [PATCH 2/4] fix(plane): replace MinIO with RustFS (Apache 2.0) MinIO's open-source edition is effectively dead: - Admin UI stripped (March 2025) - Docker images discontinued (October 2025) - GitHub repo in maintenance mode (December 2025) - Marked as "NO LONGER MAINTAINED" (February 2026) RustFS is an S3-compatible drop-in replacement: - Apache 2.0 license (no AGPL restrictions) - Same S3 API on port 9000 - Written in Rust, 2.3x faster than MinIO for small objects - Active development with built-in web console --- blueprints/plane/docker-compose.yml | 25 ++++++++++++------------- blueprints/plane/template.toml | 13 ++++++++----- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/blueprints/plane/docker-compose.yml b/blueprints/plane/docker-compose.yml index 564714f57..a6d1a2fee 100644 --- a/blueprints/plane/docker-compose.yml +++ b/blueprints/plane/docker-compose.yml @@ -1,6 +1,6 @@ services: web: - image: makeplane/plane-frontend:${APP_RELEASE:-stable} + image: makeplane/plane-frontend:${APP_RELEASE:-v1.2.3} restart: always depends_on: - api @@ -9,7 +9,7 @@ services: - .env space: - image: makeplane/plane-space:${APP_RELEASE:-stable} + image: makeplane/plane-space:${APP_RELEASE:-v1.2.3} restart: always depends_on: - api @@ -19,7 +19,7 @@ services: - .env admin: - image: makeplane/plane-admin:${APP_RELEASE:-stable} + image: makeplane/plane-admin:${APP_RELEASE:-v1.2.3} restart: always depends_on: - api @@ -28,7 +28,7 @@ services: - .env live: - image: makeplane/plane-live:${APP_RELEASE:-stable} + image: makeplane/plane-live:${APP_RELEASE:-v1.2.3} restart: always depends_on: - api @@ -37,7 +37,7 @@ services: - .env api: - image: makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} restart: always command: ./bin/docker-entrypoint-api.sh volumes: @@ -50,7 +50,7 @@ services: - .env worker: - image: makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} restart: always command: ./bin/docker-entrypoint-worker.sh volumes: @@ -64,7 +64,7 @@ services: - .env beat-worker: - image: makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} restart: always command: ./bin/docker-entrypoint-beat.sh volumes: @@ -78,7 +78,7 @@ services: - .env migrator: - image: makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} restart: "no" command: ./bin/docker-entrypoint-migrator.sh volumes: @@ -112,17 +112,16 @@ services: env_file: - .env - plane-minio: - image: minio/minio:latest + plane-storage: + image: rustfs/rustfs:latest restart: always - command: server /export --console-address ":9090" volumes: - - uploads:/export + - uploads:/data env_file: - .env proxy: - image: makeplane/plane-proxy:${APP_RELEASE:-stable} + image: makeplane/plane-proxy:${APP_RELEASE:-v1.2.3} restart: always depends_on: - web diff --git a/blueprints/plane/template.toml b/blueprints/plane/template.toml index 3ad848716..a08f287a0 100644 --- a/blueprints/plane/template.toml +++ b/blueprints/plane/template.toml @@ -2,7 +2,7 @@ main_domain = "${domain}" postgres_user = "${username}" db_password = "${password:32}" -minio_password = "${password:32}" +storage_password = "${password:32}" rabbitmq_user = "${username}" rabbitmq_pass = "${password:32}" secret_key = "${base64:48}" @@ -23,12 +23,15 @@ env = [ "REDIS_HOST=plane-redis", "REDIS_PORT=6379", "REDIS_URL=redis://plane-redis:6379/", -"MINIO_ROOT_USER=access-key", -"MINIO_ROOT_PASSWORD=${minio_password}", +"RUSTFS_ACCESS_KEY=access-key", +"RUSTFS_SECRET_KEY=${storage_password}", +"RUSTFS_VOLUMES=/data", +"RUSTFS_ADDRESS=0.0.0.0:9000", +"RUSTFS_CONSOLE_ENABLE=false", "AWS_REGION=", "AWS_ACCESS_KEY_ID=access-key", -"AWS_SECRET_ACCESS_KEY=${minio_password}", -"AWS_S3_ENDPOINT_URL=http://plane-minio:9000", +"AWS_SECRET_ACCESS_KEY=${storage_password}", +"AWS_S3_ENDPOINT_URL=http://plane-storage:9000", "AWS_S3_BUCKET_NAME=uploads", "BUCKET_NAME=uploads", "FILE_SIZE_LIMIT=5242880", From d340d8ff1d71b42c3d2c8882dbbe95cdb1b51204 Mon Sep 17 00:00:00 2001 From: Rasaboun <40967731+Rasaboun@users.noreply.github.com> Date: Sun, 29 Mar 2026 12:16:34 +0200 Subject: [PATCH 3/4] fix(plane): address CI and convention issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add back version: "3.8" (required by Dokploy conventions) - Update meta.json: version v0.27.1 → v1.2.3 - Run process-meta to fix pre-existing strapi duplicate - Migrator restart: "no" → on-failure --- blueprints/plane/docker-compose.yml | 4 +++- meta.json | 25 ++++--------------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/blueprints/plane/docker-compose.yml b/blueprints/plane/docker-compose.yml index a6d1a2fee..e89968ba4 100644 --- a/blueprints/plane/docker-compose.yml +++ b/blueprints/plane/docker-compose.yml @@ -1,3 +1,5 @@ +version: "3.8" + services: web: image: makeplane/plane-frontend:${APP_RELEASE:-v1.2.3} @@ -79,7 +81,7 @@ services: migrator: image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} - restart: "no" + restart: on-failure command: ./bin/docker-entrypoint-migrator.sh volumes: - logs_migrator:/code/plane/logs diff --git a/meta.json b/meta.json index 3ae0cb5ef..853823ba9 100644 --- a/meta.json +++ b/meta.json @@ -5028,8 +5028,8 @@ { "id": "plane", "name": "Plane", - "version": "v0.27.1", - "description": "Easy, flexible, open source project management software", + "version": "v1.2.3", + "description": "Open source project management — alternative to Jira, Linear, Asana", "logo": "plane.png", "links": { "github": "https://github.com/makeplane/plane", @@ -5037,7 +5037,8 @@ "docs": "https://docs.plane.so/" }, "tags": [ - "kanban" + "kanban", + "project-management" ] }, { @@ -5952,24 +5953,6 @@ "media" ] }, - { - "id": "strapi", - "name": "Strapi", - "version": "v5.33.0", - "description": "Open-source headless CMS to build powerful APIs with built-in content management.", - "logo": "strapi.svg", - "links": { - "github": "https://github.com/strapi/strapi", - "discord": "https://discord.com/invite/strapi", - "docs": "https://docs.strapi.io", - "website": "https://strapi.io" - }, - "tags": [ - "headless", - "cms", - "content-management" - ] - }, { "id": "supabase", "name": "SupaBase", From efd142416d57eccf48594e32294c7771be1ae553 Mon Sep 17 00:00:00 2001 From: Rasaboun <40967731+Rasaboun@users.noreply.github.com> Date: Sun, 29 Mar 2026 12:26:25 +0200 Subject: [PATCH 4/4] fix(plane): address review feedback - Pin RustFS to 1.0.0-alpha.90 (no latest tag) - WEB_URL and CORS_ALLOWED_ORIGINS use http (Dokploy handles TLS) --- blueprints/plane/docker-compose.yml | 2 +- blueprints/plane/template.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blueprints/plane/docker-compose.yml b/blueprints/plane/docker-compose.yml index e89968ba4..a79f83d6d 100644 --- a/blueprints/plane/docker-compose.yml +++ b/blueprints/plane/docker-compose.yml @@ -115,7 +115,7 @@ services: - .env plane-storage: - image: rustfs/rustfs:latest + image: rustfs/rustfs:1.0.0-alpha.90 restart: always volumes: - uploads:/data diff --git a/blueprints/plane/template.toml b/blueprints/plane/template.toml index a08f287a0..936075827 100644 --- a/blueprints/plane/template.toml +++ b/blueprints/plane/template.toml @@ -11,7 +11,7 @@ live_secret_key = "${base64:32}" [config] env = [ "APP_DOMAIN=${main_domain}", -"WEB_URL=https://${main_domain}", +"WEB_URL=http://${main_domain}", "PGHOST=plane-db", "PGDATABASE=plane", "POSTGRES_USER=${postgres_user}", @@ -46,7 +46,7 @@ env = [ "AMQP_URL=amqp://${rabbitmq_user}:${rabbitmq_pass}@plane-mq:5672/plane", "API_BASE_URL=http://api:8000", "DEBUG=0", -"CORS_ALLOWED_ORIGINS=https://${main_domain}", +"CORS_ALLOWED_ORIGINS=http://${main_domain}", "GUNICORN_WORKERS=1", "USE_MINIO=1", "SECRET_KEY=${secret_key}",