From 16693e6f749501fbd46272c9bb1d737ef8eac4d3 Mon Sep 17 00:00:00 2001 From: Rayane <40967731+Rasaboun@users.noreply.github.com> Date: Wed, 8 Jul 2026 01:36:19 +0200 Subject: [PATCH] fix(plane): update to v1.2.3 and replace MinIO with RustFS (#760) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(plane): update template to Plane v1.x (stable) The existing template targeted v0.27.1 which is heavily outdated. This updates it to match Plane's current official deployment config. Changes: - Images: v0.27.1 → stable (currently v1.2.3) from Docker Hub - Remove explicit commands from frontend services (built into images) - Postgres: 17-alpine → 15.7-alpine (matches Plane's supported version) - Valkey: 7.2.5 → 7.2.11 - Proxy: add admin + live dependencies, proxy_config/proxy_data volumes - Add LIVE_SERVER_SECRET_KEY, APP_DOMAIN, SITE_ADDRESS env vars - Add RABBITMQ_USER/PASSWORD/VHOST (new v1.x env var names) - Fix RABBITMQ_DEFAULT_USER bug (was hardcoded string, not variable) - Fix DATABASE_URL to use template variables directly - Fix AWS_ACCESS_KEY_ID to match MINIO_ROOT_USER literal - Remove deprecated: version key, SENTRY_*, NGINX_PORT - Remove unused env_file from plane-redis - Add restart policies to all services * 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 * fix(plane): address CI and convention issues - 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 * 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 | 55 ++++++++++++++++++----------- blueprints/plane/template.toml | 42 ++++++++++++---------- meta.json | 7 ++-- 3 files changed, 62 insertions(+), 42 deletions(-) diff --git a/blueprints/plane/docker-compose.yml b/blueprints/plane/docker-compose.yml index 9502c010..a79f83d6 100644 --- a/blueprints/plane/docker-compose.yml +++ b/blueprints/plane/docker-compose.yml @@ -2,8 +2,8 @@ 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:-v1.2.3} + restart: always depends_on: - api - worker @@ -11,8 +11,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:-v1.2.3} + restart: always depends_on: - api - worker @@ -21,8 +21,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:-v1.2.3} + restart: always depends_on: - api - web @@ -30,8 +30,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:-v1.2.3} + restart: always depends_on: - api - web @@ -39,7 +39,8 @@ services: - .env api: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} + restart: always command: ./bin/docker-entrypoint-api.sh volumes: - logs_api:/code/plane/logs @@ -51,7 +52,8 @@ services: - .env worker: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} + restart: always command: ./bin/docker-entrypoint-worker.sh volumes: - logs_worker:/code/plane/logs @@ -64,7 +66,8 @@ services: - .env beat-worker: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} + restart: always command: ./bin/docker-entrypoint-beat.sh volumes: - logs_beat-worker:/code/plane/logs @@ -77,7 +80,8 @@ services: - .env migrator: - image: makeplane/plane-backend:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3} + restart: on-failure command: ./bin/docker-entrypoint-migrator.sh volumes: - logs_migrator:/code/plane/logs @@ -88,7 +92,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,33 +101,39 @@ 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: - .env - plane-minio: - image: minio/minio:latest - command: server /export --console-address ":9090" + plane-storage: + image: rustfs/rustfs:1.0.0-alpha.90 + restart: always volumes: - - uploads:/export + - uploads:/data env_file: - .env proxy: - image: makeplane/plane-proxy:${APP_RELEASE:-v0.27.1} + image: makeplane/plane-proxy:${APP_RELEASE:-v1.2.3} + restart: always depends_on: - web - api - space + - admin + - live + volumes: + - proxy_config:/config + - proxy_data:/data env_file: - .env @@ -135,3 +146,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 a12f4564..93607582 100644 --- a/blueprints/plane/template.toml +++ b/blueprints/plane/template.toml @@ -1,53 +1,59 @@ [variables] 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}" +live_secret_key = "${base64:32}" [config] env = [ -"Domain=${domain}", -"WEB_URL=${Domain}", +"APP_DOMAIN=${main_domain}", +"WEB_URL=http://${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}", +"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=${MINIO_ROOT_USER}", -"AWS_SECRET_ACCESS_KEY=${minio_password}", -"AWS_S3_ENDPOINT_URL=http://plane-minio:9000", +"AWS_ACCESS_KEY_ID=access-key", +"AWS_SECRET_ACCESS_KEY=${storage_password}", +"AWS_S3_ENDPOINT_URL=http://plane-storage: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=http://${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 = [] diff --git a/meta.json b/meta.json index 208e9ee5..208c5212 100644 --- a/meta.json +++ b/meta.json @@ -5671,8 +5671,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", @@ -5680,7 +5680,8 @@ "docs": "https://docs.plane.so/" }, "tags": [ - "kanban" + "kanban", + "project-management" ] }, {