Files
templates/blueprints/plane/template.toml
Rayane 16693e6f74 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)
2026-07-07 17:36:19 -06:00

64 lines
1.7 KiB
TOML

[variables]
main_domain = "${domain}"
postgres_user = "${username}"
db_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 = [
"APP_DOMAIN=${main_domain}",
"WEB_URL=http://${main_domain}",
"PGHOST=plane-db",
"PGDATABASE=plane",
"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/",
"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=${storage_password}",
"AWS_S3_ENDPOINT_URL=http://plane-storage:9000",
"AWS_S3_BUCKET_NAME=uploads",
"BUCKET_NAME=uploads",
"FILE_SIZE_LIMIT=5242880",
"RABBITMQ_HOST=plane-mq",
"RABBITMQ_PORT=5672",
"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",
"AMQP_URL=amqp://${rabbitmq_user}:${rabbitmq_pass}@plane-mq:5672/plane",
"API_BASE_URL=http://api:8000",
"DEBUG=0",
"CORS_ALLOWED_ORIGINS=http://${main_domain}",
"GUNICORN_WORKERS=1",
"USE_MINIO=1",
"SECRET_KEY=${secret_key}",
"API_KEY_RATE_LIMIT=60/minute",
"MINIO_ENDPOINT_SSL=0",
"SITE_ADDRESS=:80",
"LIVE_SERVER_SECRET_KEY=${live_secret_key}"
]
mounts = []
[[config.domains]]
serviceName = "proxy"
port = 80
host = "${main_domain}"