Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the proxy config for uploads if using minio setup
# Changing this requires change in the proxy config for uploads if using the bundled storage
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
Expand All @@ -36,7 +36,7 @@ GPT_ENGINE="gpt-3.5-turbo" # deprecated
# Settings related to Docker
DOCKERIZED=1 # deprecated

# set to 1 If using the pre-configured minio setup
# set to 1 if using the pre-configured S3-compatible storage (RustFS)
USE_MINIO=1

# If SSL Cert to be generated, set CERT_EMAIl="email <EMAIL_ADDRESS>"
Expand Down
6 changes: 3 additions & 3 deletions apps/api/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://localhost:9000"
# Changing this requires change in the proxy config for uploads if using minio setup
# Changing this requires change in the proxy config for uploads if using the bundled storage
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
Expand All @@ -39,12 +39,12 @@ SIGNED_URL_EXPIRATION=3600
# Settings related to Docker
DOCKERIZED=1 # deprecated

# set to 1 If using the pre-configured minio setup
# set to 1 if using the pre-configured S3-compatible storage (RustFS)
USE_MINIO=0



# Email redirections and minio domain settings
# Email redirections and storage domain settings
WEB_URL="http://localhost:8000"

# Gunicorn Workers
Expand Down
31 changes: 20 additions & 11 deletions deployments/cli/community/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ x-redis-env: &redis-env
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_URL: ${REDIS_URL:-redis://plane-redis:6379/}

x-minio-env: &minio-env
MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID:-access-key}
MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY:-secret-key}
x-storage-env: &storage-env
RUSTFS_ACCESS_KEY: ${AWS_ACCESS_KEY_ID:-access-key}
RUSTFS_SECRET_KEY: ${AWS_SECRET_ACCESS_KEY:-secret-key}
RUSTFS_VOLUMES: /data
RUSTFS_ADDRESS: 0.0.0.0:9000

x-aws-s3-env: &aws-s3-env
AWS_REGION: ${AWS_REGION:-}
Expand Down Expand Up @@ -113,7 +115,7 @@ services:
volumes:
- logs_api:/code/plane/logs
environment:
<<: [*app-env, *db-env, *redis-env, *minio-env, *aws-s3-env, *proxy-env]
<<: [*app-env, *db-env, *redis-env, *aws-s3-env, *proxy-env]
depends_on:
- plane-db
- plane-redis
Expand All @@ -129,7 +131,7 @@ services:
volumes:
- logs_worker:/code/plane/logs
environment:
<<: [*app-env, *db-env, *redis-env, *minio-env, *aws-s3-env, *proxy-env]
<<: [*app-env, *db-env, *redis-env, *aws-s3-env, *proxy-env]
depends_on:
- api
- plane-db
Expand All @@ -146,7 +148,7 @@ services:
volumes:
- logs_beat-worker:/code/plane/logs
environment:
<<: [*app-env, *db-env, *redis-env, *minio-env, *aws-s3-env, *proxy-env]
<<: [*app-env, *db-env, *redis-env, *aws-s3-env, *proxy-env]
depends_on:
- api
- plane-db
Expand All @@ -163,7 +165,7 @@ services:
volumes:
- logs_migrator:/code/plane/logs
environment:
<<: [*app-env, *db-env, *redis-env, *minio-env, *aws-s3-env, *proxy-env]
<<: [*app-env, *db-env, *redis-env, *aws-s3-env, *proxy-env]
depends_on:
- plane-db
- plane-redis
Expand Down Expand Up @@ -202,17 +204,24 @@ services:
- rabbitmq_data:/var/lib/rabbitmq

# Comment this if you using any external s3 compatible storage
# NOTE: RustFS uses a different on-disk format than MinIO.
# Existing MinIO deployments must migrate data before switching.
# Admin console is available on port 9001 (was 9090 with MinIO).
plane-minio:
image: minio/minio:latest
command: server /export --console-address ":9090"
image: rustfs/rustfs:1.0.0-alpha.90
Copy link

Copilot AI Mar 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The storage service now uses an alpha/pre-release image tag (rustfs/rustfs:1.0.0-alpha.90). For deployment reproducibility and risk reduction, prefer a stable release, or at least pin the image by digest so upgrades are explicit and supply-chain risk is reduced.

Suggested change
image: rustfs/rustfs:1.0.0-alpha.90
image: rustfs/rustfs:1.0.0

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Same alpha version concern applies here.

As noted in the main docker-compose.yml, using rustfs/rustfs:1.0.0-alpha.90 in a production deployment configuration carries stability risks. Ensure both compose files are updated together when a stable release becomes available.

🧰 Tools
🪛 Checkov (3.2.510)

[medium] 207-208: Basic Auth Credentials

(CKV_SECRET_4)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@deployments/cli/community/docker-compose.yml` at line 208, The docker-compose
service currently pins the container image to the unstable tag
"rustfs/rustfs:1.0.0-alpha.90"; update the image reference used in this compose
file (the line specifying image: rustfs/rustfs:1.0.0-alpha.90) to the stable
release tag once available (e.g., replace with the stable semver tag or :latest
per your release policy) and ensure you apply the same change to the main
docker-compose.yml so both deployments use the identical, non-alpha image tag.

deploy:
replicas: 1
restart_policy:
condition: any
environment:
<<: *minio-env
<<: *storage-env
volumes:
- uploads:/export
- uploads:/data
Comment on lines 216 to +219
Copy link

Copilot AI Mar 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RustFS volume mount was changed from /export to /data, but the community installer/backup script still backs up plane-minio from /export (deployments/cli/community/install.sh:600). This breaks backups and contradicts the stated backward-compatibility intent—either keep the mount at /export (and set RUSTFS_VOLUMES accordingly) or update the backup script to use /data in the same PR.

Copilot uses AI. Check for mistakes.
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/health"]
interval: 30s
timeout: 5s
retries: 3

# Comment this if you already have a reverse proxy running
proxy:
Expand Down
2 changes: 1 addition & 1 deletion deployments/cli/community/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -597,7 +597,7 @@ function backupData() {
fi

backup_container_dir "$BACKUP_FOLDER" "plane-db" "/var/lib/postgresql/data" "pgdata" || exit 1
backup_container_dir "$BACKUP_FOLDER" "plane-minio" "/export" "uploads" || exit 1
backup_container_dir "$BACKUP_FOLDER" "plane-minio" "/data" "uploads" || exit 1
backup_container_dir "$BACKUP_FOLDER" "plane-mq" "/var/lib/rabbitmq" "rabbitmq_data" || exit 1
backup_container_dir "$BACKUP_FOLDER" "plane-redis" "/data" "redisdata" || exit 1

Expand Down
19 changes: 14 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,16 +140,25 @@ services:
volumes:
- rabbitmq_data:/var/lib/rabbitmq

# NOTE: RustFS uses a different on-disk format than MinIO.
# Existing MinIO deployments must migrate data before switching.
# Admin console is available on port 9001 (was 9090 with MinIO).
plane-minio:
container_name: plane-minio
image: minio/minio
image: rustfs/rustfs:1.0.0-alpha.90
Copy link

Copilot AI Mar 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The storage service now uses an alpha/pre-release image tag (rustfs/rustfs:1.0.0-alpha.90). For deployment reproducibility and risk reduction, prefer a stable release, or at least pin the image by digest so upgrades are explicit and supply-chain risk is reduced.

Suggested change
image: rustfs/rustfs:1.0.0-alpha.90
image: rustfs/rustfs:1.0.0-alpha.90@sha256:1111111111111111111111111111111111111111111111111111111111111111

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

What is the latest stable version of RustFS and is 1.0.0-alpha.90 production-ready?

💡 Result:

The latest stable version of RustFS does not exist; all releases are pre-releases labeled as 1.0.0-alpha.xx. The most recent release is 1.0.0-alpha.90, released on March 24, 2026. 1.0.0-alpha.90 is not production-ready. It is explicitly marked as a pre-release on GitHub, the official download pages, and distribution sites. Official documentation provides production deployment guides and hardware checklists, but the alpha status, ongoing focus on stability/bug fixes per the roadmap (no new features until GA), and absence of a stable 1.0 release indicate it remains in development. The project emphasizes rigorous multi-node stress testing before GA, with no timeline provided as of early 2026.

Citations:


Alpha release in production configuration requires explicit approval.

rustfs/rustfs:1.0.0-alpha.90 is the only available RustFS release and is explicitly not production-ready. The project offers production deployment guides but the software remains in alpha development with no stable 1.0 release or GA timeline as of March 2026.

Using non-production-ready software in a production/staging configuration (per coding guidelines) introduces stability and compatibility risks. Before deploying:

  • Document the alpha status and known limitations for the deployment
  • Establish monitoring and rollback procedures
  • Plan a migration path when stable releases become available
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docker-compose.yml` at line 145, The docker-compose uses an alpha RustFS
image ("image: rustfs/rustfs:1.0.0-alpha.90"), which is not production-ready;
update the deployment to either point to an approved stable image or gate this
alpha image behind an explicit approval/config flag and documentation;
specifically change the image reference or add a conditional/environment flag
and ensure you add deployment notes documenting the alpha status, limitations,
monitoring/rollback procedures, and a migration plan for when a stable rustfs
release is available so operators must explicitly opt-in before using
rustfs/rustfs:1.0.0-alpha.90.

restart: always
command: server /export --console-address ":9090"
volumes:
- uploads:/export
- uploads:/data
environment:
MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID}
MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY}
RUSTFS_ACCESS_KEY: ${AWS_ACCESS_KEY_ID}
RUSTFS_SECRET_KEY: ${AWS_SECRET_ACCESS_KEY}
RUSTFS_VOLUMES: /data
RUSTFS_ADDRESS: 0.0.0.0:9000
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/health"]
interval: 30s
timeout: 5s
retries: 3

# Comment this if you already have a reverse proxy running
proxy:
Expand Down