Self hosting Plane PM tool
Guide to self hosting Planem project management tool using Caddy for reverse proxy
Introduction
Plane is a modern project management platform. It is open source and offers a generous free plan and also a community edition.
We are using the community edition of Plane. You can know about Plane’s editions here.
In this tutorial I will guide you through the steps to install and configure Plane on Debian 12, setup Plane and use Caddy to automatically reverse proxy and generate an SSL certificate.
Steps
Step 1: Pre-requisites
You need docker installed on the vps as we will use the docker to install Plane. You can follow the instuctions on the docker’s official website.
You also need caddy installed in your system and can follow the instructions on Caddy’s website.
Check and update all other applications using the following.
sudo apt updatesudo apt upgradeStep 2: Installing Plane
Now we have Docker and Caddy installed on our system we use the following command to to create a directory to install plane in.
mkdir planeMove into the directory using.
cd planeDownload the latest stable release.
curl -fsSL -o setup.sh https://github.com/makeplane/plane/releases/latest/download/setup.shMake the file executable
chmod +x setup.shRun the setup file using
./setup.shYou will be prompted with options to run, select 1 to install, it will create a folder plane-app and will download the docker-compose.yaml and `plane.env’ files.
Press 8 to exit.
Navigate into the plane-app directory using
cd plane-appOpen and edit the plane.env file using
sudo nano plane.envEdit the following
- LISTEN_HTTP_PORT=80 to 8080
- LISTEN_HTTPS_PORT=443 to 4430
- WEB_URL=https://plane.domain.com (replace with your domain)
- CORS_ALLOWED_ORIGINS=https://plane.domain.com (replace with your domain)
Port 80 and 443 are being used by Caddy, you need to add different ports in plane.env. Ports such as 8080 and 4430.
This is your finished plane.env, you have no need to edit the docker-compose.yaml file.
APP_DOMAIN=localhostAPP_RELEASE=v1.0.0
WEB_REPLICAS=1SPACE_REPLICAS=1ADMIN_REPLICAS=1API_REPLICAS=1WORKER_REPLICAS=1BEAT_WORKER_REPLICAS=1LIVE_REPLICAS=1
LISTEN_HTTP_PORT=8080LISTEN_HTTPS_PORT=4430
WEB_URL=https://plane.domain.comDEBUG=0CORS_ALLOWED_ORIGINS=https://plane.domain.comAPI_BASE_URL=http://api:8000
#DB SETTINGSPGHOST=plane-dbPGDATABASE=planePOSTGRES_USER=planePOSTGRES_PASSWORD=planePOSTGRES_DB=planePOSTGRES_PORT=5432PGDATA=/var/lib/postgresql/dataDATABASE_URL=
# REDIS SETTINGSREDIS_HOST=plane-redisREDIS_PORT=6379REDIS_URL=
# RabbitMQ SettingsRABBITMQ_HOST=plane-mqRABBITMQ_PORT=5672RABBITMQ_USER=planeRABBITMQ_PASSWORD=planeRABBITMQ_VHOST=planeAMQP_URL=
# If SSL Cert to be generated, set CERT_EMAIl="email <EMAIL_ADDRESS>"CERT_ACME_CA=https://acme-v02.api.letsencrypt.org/directoryTRUSTED_PROXIES=0.0.0.0/0SITE_ADDRESS=:80CERT_EMAIL=
# For DNS Challenge based certificate generation, set the CERT_ACME_DNS, CERT_EMAIL# CERT_ACME_DNS="acme_dns <CERT_DNS_PROVIDER> <CERT_DNS_PROVIDER_API_KEY>"CERT_ACME_DNS=
# Secret KeySECRET_KEY=60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5
# DATA STORE SETTINGSUSE_MINIO=1AWS_REGION=AWS_ACCESS_KEY_ID=access-keyAWS_SECRET_ACCESS_KEY=secret-keyAWS_S3_ENDPOINT_URL=http://plane-minio:9000AWS_S3_BUCKET_NAME=uploadsFILE_SIZE_LIMIT=5242880
# Gunicorn WorkersGUNICORN_WORKERS=1
# UNCOMMENT `DOCKER_PLATFORM` IF YOU ARE ON `ARM64` AND DOCKER IMAGE IS NOT AVAILABLE FOR RESPECTIVE `APP_RELEASE`# DOCKER_PLATFORM=linux/amd64
# Force HTTPS for handling SSL TerminationMINIO_ENDPOINT_SSL=0
# API key rate limitAPI_KEY_RATE_LIMIT=60/minuteDOCKERHUB_USER=artifacts.plane.so/makeplanePULL_POLICY=if_not_presentCUSTOM_BUILD=falseSave and close the file.
Step 3: Configuring Caddy
After setting up Plane, we must configure Caddy.
Use the following command to open the CaddyFile
sudo nano /etc/caddy/CaddyfileClear out the default contents and paste the following in the file. Replace plane.domain.com with your actual domain.
plane.domain.com { reverse_proxy localhost:8080}Save and restart Caddy service using the following command.
sudo systemctl restart caddyStep 4: Start Plane
After configuring Caddy, move into your plane-app directory. Start Plane using the following command.
Run the setup file using
./setup.shSelect 2, this will pull the necessary images, start the containers in the background, and set Plane up and running at port 8080.
You can check if everything is running properly using
sudo docker ps -aThis will list all running Plane containers, services listed and marked as Up.
You can now access Plane through your domain specified in CaddyFile.
plane.domain.comYou will be introduced to God mode in your first visit, following the instructions you can setup your plane instance and admin user.
Update
Run the setup file using
./setup.shSelect 5 to upgrade and then select 4 to restart, this will upgrade and then restart Plane.
Conclusion
With this, your Plane instance is now fully deployed and secured behind a reverse proxy, you have control over your project management.
From here, you can start adding projects, views, and creating new users.
If you run any issues or need further help, fell free to reach out via email or open a discussion