Skip to content

Commit 2d0ba93

Browse files
authored
Merge pull request #137 from makeplane/docker-aio
Docker AIO - Commercial Edition
2 parents cf59ae3 + b5cadd1 commit 2d0ba93

File tree

2 files changed

+190
-1
lines changed

2 files changed

+190
-1
lines changed

mint.json

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

0 commit comments

Comments
 (0)