| title | Docker AIO (All-in-One) • Commercial Edition |
|---|---|
| sidebarTitle | Docker AIO |
The Plane Commercial All-in-One (AIO) Docker image packages all Plane services into a single container, making it the fastest way to get Plane running.
Your single AIO container includes all these services running together:
- Web App (Port 3001) - The main Plane web interface you'll use
- Space (Port 3002) - Public project spaces for external collaboration
- Admin (Port 3003) - Administrative interface
- API Server (Port 3004) - Backend API
- Live Server (Port 3005) - Real-time collaboration features
- Silo (Port 3006) - Integration services
- Monitor (Port 3007) - Feature flags and payments
- Email Server (Ports 10025, 10465, 10587) - SMTP server for notifications
- Proxy (Port 80, 20025, 20465, 20587) - Caddy reverse proxy
- Worker and Beat Worker - Background task processing
- Docker
- Set up these external services:
- PostgreSQL
For data storage - Redis
For caching and session management - RabbitMQ For message queuing
- S3-compatible storage
For file uploads (AWS S3 or MinIO)
- PostgreSQL
-
[Download the image]
-
Run the following command to deploy the Plane AIO container. Make sure to replace all placeholder values (e.g.,
All environment variables are required for the container to function correctly.your-domain.com,user:pass) with your actual configuration.docker run --name plane-aio --rm -it \ -p 80:80 \ -p 20025:20025 \ -p 20465:20465 \ -p 20587:20587 \ -e DOMAIN_NAME=your-domain.com \ -e DATABASE_URL=postgresql://user:pass@host:port/database \ -e REDIS_URL=redis://host:port \ -e AMQP_URL=amqp://user:pass@host:port/vhost \ -e AWS_REGION=us-east-1 \ -e AWS_ACCESS_KEY_ID=your-access-key \ -e AWS_SECRET_ACCESS_KEY=your-secret-key \ -e AWS_S3_BUCKET_NAME=your-bucket \ plane-aio-commercial:latestIf you're running everything locally, use this example:
MYIP=192.168.68.169 docker run --name myaio --rm -it \ -p 80:80 \ -p 20025:20025 \ -p 20465:20465 \ -p 20587:20587 \ -e DOMAIN_NAME=${MYIP} \ -e DATABASE_URL=postgresql://plane:plane@${MYIP}:15432/plane \ -e REDIS_URL=redis://${MYIP}:16379 \ -e AMQP_URL=amqp://plane:plane@${MYIP}:15673/plane \ -e AWS_REGION=us-east-1 \ -e AWS_ACCESS_KEY_ID=5MV45J9NF5TEFZWYCRAX \ -e AWS_SECRET_ACCESS_KEY=7xMqAiAHsf2UUjMH+EwICXlyJL9TO30m8leEaDsL \ -e AWS_S3_BUCKET_NAME=plane-app \ -e AWS_S3_ENDPOINT_URL=http://${MYIP}:19000 \ -e FILE_SIZE_LIMIT=10485760 \ plane-aio-commercial:latest
-
Once it's running, you can access the Plane application on the domain you provided during the deployment.
-v /path/to/logs:/app/logs \
-v /path/to/data:/app/data -v /path/to/monitordb:/app/monitorFor HTTPS support, mount certificates:
-v /path/to/certs:/app/email/tlsSITE_ADDRESS: Server bind address (default::80)APP_PROTOCOL: Protocol to use (httporhttps, default:http)
INTAKE_EMAIL_DOMAIN: Domain for intake emails (default:intake.<DOMAIN_NAME>)LISTEN_SMTP_PORT_25: SMTP port 25 mapping (default:20025)LISTEN_SMTP_PORT_465: SMTP port 465 mapping (default:20465)LISTEN_SMTP_PORT_587: SMTP port 587 mapping (default:20587)SMTP_DOMAIN: SMTP server domain (default:0.0.0.0)TLS_CERT_PATH: Path to TLS certificate file (optional)TLS_PRIV_KEY_PATH: Path to TLS private key file (optional)
MACHINE_SIGNATURE: Unique machine identifier (auto-generated if not provided)SECRET_KEY: Django secret key (default provided)SILO_HMAC_SECRET_KEY: Silo HMAC secret (default provided)AES_SECRET_KEY: AES encryption key (default provided)LIVE_SERVER_SECRET_KEY: Live server secret (default provided)
FILE_SIZE_LIMIT: Maximum file upload size in bytes (default:5242880= 5MB)
INTEGRATION_CALLBACK_BASE_URL: Base URL for OAuth callbacks
API_KEY_RATE_LIMIT: API key rate limit (default:60/minute)
GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET: GitHub integrationGITHUB_APP_NAME,GITHUB_APP_ID,GITHUB_PRIVATE_KEY: GitHub App integrationSLACK_CLIENT_ID,SLACK_CLIENT_SECRET: Slack integrationGITLAB_CLIENT_ID,GITLAB_CLIENT_SECRET: GitLab integration
To build the AIO image yourself:
cd deploy/aio/commercial
./build.sh --release=v1.11.1 Available build options:
--release: Plane version to build (required)--image-name: Custom image name (default:plane-aio-commercial)
The container will validate required environment variables on startup and display helpful error messages if any are missing.
All service logs are available in /app/logs/:
- Access logs:
/app/logs/access/ - Error logs:
/app/logs/error/
The container runs multiple services managed by Supervisor. Check service status:
docker exec -it <container-name> supervisorctl status- Use proper SSL certificates for HTTPS
- Configure proper backup strategies for data
- Monitor resource usage and scale accordingly
- Use external load balancer for high availability
- Regularly update to latest versions
- Secure your environment variables and secrets