Skip to content

Commit e29d774

Browse files
Docker AIO and GitLab self-managed #154
2 parents 70ece45 + d3a57bb commit e29d774

File tree

4 files changed

+278
-11
lines changed

4 files changed

+278
-11
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
},

self-hosting/govern/integrations/github.mdx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ To configure GitHub integration, you'll need to create a GitHub App within your
7474

7575
1. Go to **Settings \> Developer Settings \> GitHub Apps** in your GitHub organization.
7676

77-
2. Click **New GitHub App**.
77+
2. Click **New GitHub App**.
7878
![Create GitHub App](/images/integrations/github/create-github-app.webp)
7979

80-
3. In the **Register new GitHub App** page, provide a **GitHub App name** and **Homepage URL**.
80+
3. In the **Register new GitHub App** page, provide a **GitHub App name** and **Homepage URL**.
8181
![App name and homepage URL](/images/integrations/github/app-name-homepage-url.webp)
8282

83-
4. In the **Identifying and authorizing users** section, add the following **Callback URLS**.
83+
4. In the **Identifying and authorizing users** section, add the following **Callback URLS**.
8484

8585
**For Plane cloud instance**
8686

@@ -99,7 +99,7 @@ To configure GitHub integration, you'll need to create a GitHub App within your
9999
These URLs allow Plane to verify and enable workspace connection with the Github App.
100100
![Add Callback URL](/images/integrations/github/add-callback-url.webp)
101101

102-
5. In the **Post installation** section, add the below **Setup URL**.
102+
5. In the **Post installation** section, add the below **Setup URL**.
103103

104104
**For Plane cloud instance**
105105
```bash
@@ -114,9 +114,9 @@ To configure GitHub integration, you'll need to create a GitHub App within your
114114
Redirects users to this URL after GitHub app installation.
115115
![Add setup URL](/images/integrations/github/add-setup-url.webp)
116116

117-
6. Turn on **Redirect on update**.
117+
6. Turn on **Redirect on update**.
118118

119-
7. In the **Webhook** section, add the below **Webhook URL**.
119+
7. In the **Webhook** section, add the below **Webhook URL**.
120120

121121
**For Plane cloud instance**
122122
```bash

self-hosting/govern/integrations/gitlab.mdx

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,29 @@ sidebarTitle: GitLab
55

66
This guide walks you through setting up a GitLab application to enable GitLab integration for your Plane workspace on a self-hosted instance. Since self-hosted environments don’t come pre-configured for GitLab, you’ll need to create an application, configure authentication, and set the necessary permissions to ensure seamless integration.
77

8+
This guide covers configuration for both:
9+
10+
- **[GitLab.com](/self-hosting/govern/integrations/gitlab?edition=gitlab-cloud#create-gitlab-application)**
11+
The standard cloud-hosted GitLab service
12+
13+
- **[GitLab Self-managed](/self-hosting/govern/integrations/gitlab?edition=gitlab-self-managed#create-gitlab-application)**
14+
Self-hosted GitLab instances for organizations with specific compliance or security requirements
15+
816
In this guide, you’ll:
917

10-
1. [Create and configure a GitLab Application](/self-hosting/govern/integrations/gitlab#create-a-gitlab-application)
18+
1. [Create and configure a GitLab Application](/self-hosting/govern/integrations/gitlab#create-gitlab-application)
1119
2. [Configure your Plane instance](/self-hosting/govern/integrations/gitlab#configure-plane-instance)
1220

21+
<Warning>
22+
**Activate GitLab integration**
23+
24+
After creating and configuring the GitLab application and configuring the instance as detailed on this page, you'll need to [setup the GitLab integration](https://docs.plane.so/integrations/gitlab) within Plane.
25+
</Warning>
26+
1327
## Create GitLab Application
1428

29+
<Tabs>
30+
<Tab title="GitLab Cloud">
1531
1. On the left sidebar in GitLab, select your avatar.
1632

1733
2. Select **Preferences** tab.
@@ -27,7 +43,7 @@ In this guide, you’ll:
2743
```bash
2844
https://[YOUR_DOMAIN]/silo/api/gitlab/auth/callback
2945
```
30-
7. You can choose to check or leave the **Confidential** box unchecked—both options work for Plane.
46+
7. Check the **Confidential** box.
3147

3248
![Add app details](/images/integrations/gitlab/add-app-details.webp)
3349

@@ -39,14 +55,65 @@ In this guide, you’ll:
3955
|`read_api`|Allows read-only access to all groups, projects, container registry, and package registry.|
4056
|`read_user`|Grants read-only access to user profiles via the /user API endpoint, including username, public email, and full name. Also provides access to /users endpoints.|
4157
|`read_repository`|Enables read-only access to repositories in private projects via Git-over-HTTP or the Repository Files API.|
42-
|`write_repository`|Allows read/write access to repositories on private projects via Git-over-HTTP (not through the API).|
4358
|`profile`|Grants read-only access to the user's profile data using OpenID Connect.|
4459
|`email`|Provides read-only access to the user's primary email address using OpenID Connect.|
4560

4661
9. Click **Save Application** to finalize the setup.
62+
</Tab>
63+
64+
<Tab title="GitLab Self-managed">
65+
1. Log in to your GitLab instance.
66+
2. Click on your profile icon in the top-right corner.
67+
3. From the dropdown menu that appears, select **Edit profile**.
68+
4. Look for and select the **Applications** option within this menu.
69+
70+
![GitLab Applications](https://media.docs.plane.so/integrations/gitlab/gitlab-applications.webp#center)
71+
72+
5. On the Applications page, click **Add new application** to begin configuring your OAuth application.
73+
74+
Fill in the application details with the following configuration:
75+
76+
- **Name**
77+
Enter a descriptive name for your application (e.g., `Plane Local Dev` or `Plane Integration`).
78+
79+
- **Redirect URI**
80+
The redirect URI depends on your Plane deployment:
81+
82+
**For Plane Cloud:**
83+
```
84+
https://silo.plane.so/api/oauth/gitlab-enterprise/auth/callback
85+
```
86+
87+
**For Plane Self-Hosted:**
88+
```
89+
https://<your-domain>/silo/api/oauth/gitlab-enterprise/auth/callback
90+
```
91+
92+
Replace `<your-domain>` with your actual Plane instance domain.
93+
94+
- **Confidential**
95+
Keep the **Confidential** checkbox enabled. This ensures the application uses a client secret for secure authentication.
96+
97+
- **Scopes**
98+
Select the following scopes to grant Plane the necessary permissions:
99+
100+
- **api** - Grants complete read/write access to the API, including all groups and projects
101+
- **read_api** - Grants read access to the API, including all groups and projects
102+
- **read_user** - Grants read-only access to your profile information
103+
- **read_repository** - Grants read-only access to repositories on private projects
104+
- **profile** - Grants read-only access to the user's profile data using OpenID Connect
105+
- **email** - Grants read-only access to the user's primary email address using OpenID Connect
106+
107+
6. Click **Save application** to create the OAuth application.
108+
</Tab>
109+
</Tabs>
110+
47111

48112
## Configure Plane instance
49113

114+
<Tabs>
115+
<Tab title="GitLab Cloud">
116+
50117
1. Copy the **Application ID** and **Secret** from the newly created application.
51118
![Copy credentials](/images/integrations/gitlab/copy-credentials.webp)
52119

@@ -58,4 +125,15 @@ In this guide, you’ll:
58125
```
59126
3. Save the file and restart the instance.
60127

61-
4. Once you've completed the instance configuration, [activate the GitLab integration in Plane](https://docs.plane.so/integrations/gitlab).
128+
4. Once you've completed the instance configuration, [activate the GitLab integration in Plane](https://docs.plane.so/integrations/gitlab?edition=gitlab-cloud).
129+
130+
</Tab>
131+
132+
<Tab title="GitLab Self-managed">
133+
134+
1. Copy the **Application ID** and **Secret** from the newly created application.
135+
![Copy credentials](/images/integrations/gitlab/copy-credentials.webp)
136+
137+
2. Once you've created the application, [activate the GitLab Self-managed integration in Plane](https://docs.plane.so/integrations/gitlab?edition=gitlab-self-managed).
138+
</Tab>
139+
</Tabs>
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)