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.All environment variables are required for the container to function correctly.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.
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 (http
orhttps
, 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