Deploy Plane with Docker
This guide shows you how to deploy a self-hosted instance of Plane using Docker.
To upgrade from Community to Commercial edition, see Upgrade to Commercial Edition.
Install Plane
Plane Pro and Plane Business are enabled on this edition, so the Free plan is ideal for trialing paid features.
Prerequisites
- A virtual or on-prem machine with at least 2 vCPUs and 4 GB RAM (8 GB recommended)
x64
(AMD 64) orAArch 64
(ARM 64) CPUs- Supported operating systems:
- Ubuntu
- Debian
- CentOS
- Amazon Linux 2 or Linux 2023
Use the latest version of Docker Compose. Check with
docker-compose --version
and update if needed.
Procedure
ssh
into your machine as the root user (or user with sudo access) per the norms of your hosting provider.- Run the command below:
curl -fsSL https://prime.plane.so/install/ | sh -
- Follow the instructions on the terminal. Hit
Enter
orReturn
to continue. - Enter the domain name where you will access the Plane app in the format
domain.tld
orsubdomain.domain.tld
. If you are using a paid plan, the domain linked to the license can’t be changed later. - Choose one of the following:
- Express: Installs Plane with default configurations.
- Advanced: Lets you customize the database, Redis, storage, and other settings.
warning
When self-hosting Plane for production use, it is strongly recommended to configure external database and storage. This ensures that your data remains secure and accessible even if the local machine crashes or encounters hardware issues. Relying solely on local storage for these components increases the risk of data loss and service disruption.
- The installation will take a few minutes to complete and you will see the message Plane has successfully installed. You can access the Plane application on the domain you provided during the installation.
If you want to upgrade to a paid plan, see Plan upgrades.
Install Community Edition
The Commercial edition comes with a free plan and the flexibility to upgrade to a paid plan at any point. If you still want to install the Community edition, follow the steps below:
Prerequisites
- Docker installed and running. Choose one of the following options:
- Option 1
Create an EC2 machine on AWS. It must of minimum t3.medium/t3a.medium.
Run the below command to install docker engine.
curl -fsSL https://get.docker.com | sh -
- Option 2 Install Docker Desktop.
- Option 1
Create an EC2 machine on AWS. It must of minimum t3.medium/t3a.medium.
Run the below command to install docker engine.
- OS with bash scripting enabled (Ubuntu, Linux AMI, macos). Windows systems need to have gitbash.
- User context used must have access to docker services. In most cases, use
sudo su
to switch as root user. - Use the terminal (or gitbash) window to run all the future steps.
Installation
-
Create a folder named
plane-selfhost
on your machine for deployment and data storage.mkdir plane-selfhost
-
Navigate to this folder using the cd command.
cd plane-selfhost
-
Download the latest stable release.
curl -fsSL -o setup.sh https://github.com/makeplane/plane/releases/latest/download/setup.sh
-
Make the file executable.
chmod +x setup.sh
-
Run the following command:
./setup.sh
This will prompt you with the below options.
Select a Action you want to perform:
1) Install (arm64)
2) Start
3) Stop
4) Restart
5) Upgrade
6) View Logs
7) Backup Data
8) Exit
Action [2]: 1 -
Enter
1
as input. This will create a folderplane-app
and will download thedocker-compose.yaml
andplane.env
files. -
Enter
8
to exit. -
Set up the environment variables. You can use any text editor to edit this file. Below are the most importants keys you must refer to:
LISTEN_HTTP_PORT
: This is set to80
by default. Make sure the port you choose to use is not preoccupied. For example,LISTEN_HTTP_PORT=8080
LISTEN_HTTPS_PORT
: This is set to443
by default. Make sure the port you choose to use is not preoccupied. For example,LISTEN_HTTPS_PORT=4430
WEB_URL
: This is set tohttp://localhost
by default. Change this to the FQDN you plan to use along with LISTEN_HTTP_PORT. For example,https://plane.example.com:8080
orhttp://[IP-ADDRESS]:8080
.CORS_ALLOWED_ORIGINS
: This is set tohttp://localhost
by default. Change this to the FQDN you plan to use along with LISTEN_HTTP_PORT. For example,https://plane.example.com:8080
orhttp://[IP-ADDRESS]:8080
.
-
Run the following command to continue with the setup.
./setup.sh
-
Enter
2
as input to start the services. You will something like this:Be patient as it might take some time based on your download speed and system configuration. If all goes well, you must see something like this:
This is the confirmation that all images were downloaded and the services are up and running.
You have successfully self-hosted the Plane instance. Access the application
by going to IP or domain you have configured it on. For example,
https://plane.example.com:8080
or http://[IP-ADDRESS]:8080
.
Stop server
In case you want to make changes to the environment variables in the
plane.env
file, we recommend that you stop the services before doing that.
Run the ./setup.sh
command. Enter 3
to stop the services.
If all goes well, you will see something like this:
Restart server
In case you want to make changes to plane.env
variables without stopping the
server or noticed some abnormalities in services, you can restart the
services.
Run the ./setup.sh
command. Enter 4
to restart the services.
If all goes well, you will see something like this: