Skip to content

Commit 76f3d29

Browse files
committed
Added the Docker page
1 parent 1be1d49 commit 76f3d29

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
---
2+
title: Docker AIO (All-in-One) • Commercial Edition
3+
sidebarTitle: Docker AIO
4+
---
5+
6+
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.
7+
8+
## What's included
9+
10+
Your single AIO container includes all these services running together:
11+
12+
- **Web App** (Port 3001) - The main Plane web interface you'll use
13+
- **Space** (Port 3002) - Public project spaces for external collaboration
14+
- **Admin** (Port 3003) - Administrative interface
15+
- **API Server** (Port 3004) - Backend API
16+
- **Live Server** (Port 3005) - Real-time collaboration features
17+
- **Silo** (Port 3006) - Integration services
18+
- **Monitor** (Port 3007) - Feature flags and payments
19+
- **Email Server** (Ports 10025, 10465, 10587) - SMTP server for notifications
20+
- **Proxy** (Port 80, 20025, 20465, 20587) - Caddy reverse proxy
21+
- **Worker and Beat Worker** - Background task processing
22+
23+
## Prerequisites
24+
25+
- [Docker](https://docs.docker.com/engine/)
26+
- Set up these external services:
27+
- *PostgreSQL*
28+
For data storage
29+
- *Redis*
30+
For caching and session management
31+
- *RabbitMQ*
32+
For message queuing
33+
- *S3-compatible storage*
34+
For file uploads (AWS S3 or MinIO)
35+
36+
## Install Plane
37+
38+
1. [Download the image]
39+
40+
2. 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.
41+
42+
<Warning>
43+
All environment variables are required for the container to function correctly.
44+
</Warning>
45+
46+
```bash
47+
docker run --name plane-aio --rm -it \
48+
-p 80:80 \
49+
-p 20025:20025 \
50+
-p 20465:20465 \
51+
-p 20587:20587 \
52+
-e DOMAIN_NAME=your-domain.com \
53+
-e DATABASE_URL=postgresql://user:pass@host:port/database \
54+
-e REDIS_URL=redis://host:port \
55+
-e AMQP_URL=amqp://user:pass@host:port/vhost \
56+
-e AWS_REGION=us-east-1 \
57+
-e AWS_ACCESS_KEY_ID=your-access-key \
58+
-e AWS_SECRET_ACCESS_KEY=your-secret-key \
59+
-e AWS_S3_BUCKET_NAME=your-bucket \
60+
plane-aio-commercial:latest
61+
```
62+
63+
If you're running everything locally, use this example:
64+
65+
```bash
66+
MYIP=192.168.68.169
67+
docker run --name myaio --rm -it \
68+
-p 80:80 \
69+
-p 20025:20025 \
70+
-p 20465:20465 \
71+
-p 20587:20587 \
72+
-e DOMAIN_NAME=${MYIP} \
73+
-e DATABASE_URL=postgresql://plane:plane@${MYIP}:15432/plane \
74+
-e REDIS_URL=redis://${MYIP}:16379 \
75+
-e AMQP_URL=amqp://plane:plane@${MYIP}:15673/plane \
76+
-e AWS_REGION=us-east-1 \
77+
-e AWS_ACCESS_KEY_ID=5MV45J9NF5TEFZWYCRAX \
78+
-e AWS_SECRET_ACCESS_KEY=7xMqAiAHsf2UUjMH+EwICXlyJL9TO30m8leEaDsL \
79+
-e AWS_S3_BUCKET_NAME=plane-app \
80+
-e AWS_S3_ENDPOINT_URL=http://${MYIP}:19000 \
81+
-e FILE_SIZE_LIMIT=10485760 \
82+
plane-aio-commercial:latest
83+
```
84+
85+
2. Once it's running, you can access the Plane application on the domain you provided during the deployment.
86+
87+
## Volume mounts
88+
89+
### Recommended persistent volumes
90+
```bash
91+
-v /path/to/logs:/app/logs \
92+
-v /path/to/data:/app/data
93+
```
94+
95+
### Workspace license DB
96+
```bash
97+
-v /path/to/monitordb:/app/monitor
98+
```
99+
100+
### SSL certificate support
101+
For HTTPS support, mount certificates:
102+
```bash
103+
-v /path/to/certs:/app/email/tls
104+
```
105+
106+
## Environment variables (optional)
107+
108+
### Network and Protocol
109+
- `SITE_ADDRESS`: Server bind address (default: `:80`)
110+
- `APP_PROTOCOL`: Protocol to use (`http` or `https`, default: `http`)
111+
112+
### Email configuration
113+
- `INTAKE_EMAIL_DOMAIN`: Domain for intake emails (default: `intake.<DOMAIN_NAME>`)
114+
- `LISTEN_SMTP_PORT_25`: SMTP port 25 mapping (default: `20025`)
115+
- `LISTEN_SMTP_PORT_465`: SMTP port 465 mapping (default: `20465`)
116+
- `LISTEN_SMTP_PORT_587`: SMTP port 587 mapping (default: `20587`)
117+
- `SMTP_DOMAIN`: SMTP server domain (default: `0.0.0.0`)
118+
- `TLS_CERT_PATH`: Path to TLS certificate file (optional)
119+
- `TLS_PRIV_KEY_PATH`: Path to TLS private key file (optional)
120+
121+
### Security and secrets
122+
- `MACHINE_SIGNATURE`: Unique machine identifier (auto-generated if not provided)
123+
- `SECRET_KEY`: Django secret key (default provided)
124+
- `SILO_HMAC_SECRET_KEY`: Silo HMAC secret (default provided)
125+
- `AES_SECRET_KEY`: AES encryption key (default provided)
126+
- `LIVE_SERVER_SECRET_KEY`: Live server secret (default provided)
127+
128+
### File handling
129+
- `FILE_SIZE_LIMIT`: Maximum file upload size in bytes (default: `5242880` = 5MB)
130+
131+
### Integration callbacks
132+
- `INTEGRATION_CALLBACK_BASE_URL`: Base URL for OAuth callbacks
133+
134+
### API configuration
135+
- `API_KEY_RATE_LIMIT`: API key rate limit (default: `60/minute`)
136+
137+
### Third-party integrations
138+
- `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`: GitHub integration
139+
- `GITHUB_APP_NAME`, `GITHUB_APP_ID`, `GITHUB_PRIVATE_KEY`: GitHub App integration
140+
- `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`: Slack integration
141+
- `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET`: GitLab integration
142+
143+
## Build the image
144+
145+
To build the AIO image yourself:
146+
147+
```bash
148+
cd deploy/aio/commercial
149+
./build.sh --release=v1.11.1
150+
```
151+
152+
Available build options:
153+
- `--release`: Plane version to build (required)
154+
- `--image-name`: Custom image name (default: `plane-aio-commercial`)
155+
156+
## Troubleshoot
157+
The container will validate required environment variables on startup and display helpful error messages if any are missing.
158+
159+
### Logs
160+
All service logs are available in `/app/logs/`:
161+
- Access logs: `/app/logs/access/`
162+
- Error logs: `/app/logs/error/`
163+
164+
### Health checks
165+
The container runs multiple services managed by Supervisor. Check service status:
166+
```bash
167+
docker exec -it <container-name> supervisorctl status
168+
```
169+
170+
## Production considerations
171+
172+
- Use proper SSL certificates for HTTPS
173+
- Configure proper backup strategies for data
174+
- Monitor resource usage and scale accordingly
175+
- Use external load balancer for high availability
176+
- Regularly update to latest versions
177+
- Secure your environment variables and secrets

0 commit comments

Comments
 (0)