What’s included
Your single AIO container includes all these services running together:- Web App - The main Plane web interface you’ll use
- Space - Public project spaces for external collaboration
- Admin - Administrative interface
- API Server - Backend API
- Live Server - Real-time collaboration features
- Silo - Integration services
- Monitor - Feature flags and payments
- Email Server - SMTP server for notifications
- Proxy (Port 80, 20025, 20465, 20587) - Caddy reverse proxy
- Worker and Beat Worker - Background task processing
Port Mapping
The following ports are exposed:80: Main web interface (HTTP)443: HTTPS (if SSL configured)20025: SMTP port 2520465: SMTP port 465 (SSL/TLS)20587: SMTP port 587 (STARTTLS)
Prerequisites
- 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
Install Plane
-
Download the image with:
-
Run the following command to deploy the Plane AIO container. Make sure to replace all placeholder values (e.g.,
your-domain.com,user:pass) with your actual configuration.If you’re running on an IP address, use this example: - Once it’s running, you can access the Plane application on the domain you provided during the deployment.
- If you’ve purchased a paid plan, activate your license key to unlock premium features.
Volume mounts
Recommended persistent volumes
Workspace license DB
SSL certificate support
For HTTPS support, mount certificates:Environment variables (optional)
Network and Protocol
SITE_ADDRESS: Server bind address (default::80)APP_PROTOCOL: Protocol to use (httporhttps, default:http)
Email configuration
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)
Security and secrets
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 handling
FILE_SIZE_LIMIT: Maximum file upload size in bytes (default:5242880= 5MB)
Integration callbacks
INTEGRATION_CALLBACK_BASE_URL: Base URL for OAuth callbacks
API configuration
API_KEY_RATE_LIMIT: API key rate limit (default:60/minute)
Third-party integrations
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
Build the image
To build the AIO image yourself:--release: Plane version to build (required)--image-name: Custom image name (default:plane-aio-commercial)
Troubleshoot
The container will validate required environment variables on startup and display helpful error messages if any are missing.Logs
All service logs are available in/app/logs/:
- Access logs:
/app/logs/access/ - Error logs:
/app/logs/error/
Health checks
The container runs multiple services managed by Supervisor. Check service status:Production considerations
- 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

