mirror of
https://github.com/Dokploy/templates.git
synced 2026-07-08 15:35:24 +02:00
fix(plane): update to v1.2.3 and replace MinIO with RustFS (#760)
* 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)
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user