How to Install Plane Project Management Tool on Ubuntu 22.04
Plane is a simple, extensible, open-source project and product management tool. It allows users to start with a basic task-tracking tool and gradually adopt various project management frameworks like Agile, Waterfall, and many more.
Prerequisite
Root access to your Ubuntu 22.04 server.
Update the System
Before start, update the apt packages,
apt update -y
apt upgrade -y
Install Docker CE and Docker Compose
Install packages to allow apt to use a repository over HTTPS,
apt-get install ca-certificates curl gnupg
Add Docker's official GPG key,
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
Use the following command to set up the repository,
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Update the apt package index,
apt-get update
Install Docker Engine
Install Docker Engine and Docker Compose,
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Output:
root@vps:~# sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
docker-ce-rootless-extras pigz slirp4netns
Suggested packages:
aufs-tools cgroupfs-mount | cgroup-lite
Install Plane with Docker Compose
Once the Docker CE and Docker Compose are installed follow the below steps to install the plane using Docker Compose,
For this, Clone the Repository and change the directory,
git clone --depth 1 -b master https://github.com/makeplane/plane.git && cd plane
Output:
root@vps:~# git clone --depth 1 -b master https://github.com/makeplane/plane.git && cd plane
Cloning into 'plane'...
remote: Enumerating objects: 1327, done.
remote: Counting objects: 100% (1327/1327), done.
remote: Compressing objects: 100% (1132/1132), done.
remote: Total 1327 (delta 270), reused 663 (delta 146), pack-reused 0
Receiving objects: 100% (1327/1327), 6.45 MiB | 11.27 MiB/s, done.
Resolving deltas: 100% (270/270), done.
root@vps:~/plane#
Run setup.sh
This script sets up the environment with the IP address or the Domain name,
./setup.sh http://plane.domainhere.info
Note: Replace the
plane.domainhere.info
with your actual domain name or IP address
Now you will have .env
in the environment variables file,
vi .env
The file has several variables, modify the required ones for your setup,
root@vps:~/plane# cat .env
# Frontend
# Extra image domains that need to be added for Next Image
NEXT_PUBLIC_EXTRA_IMAGE_DOMAINS=
# Google Client ID for Google OAuth
NEXT_PUBLIC_GOOGLE_CLIENTID=""
# Github ID for Github OAuth
NEXT_PUBLIC_GITHUB_ID=""
# Github App Name for GitHub Integration
NEXT_PUBLIC_GITHUB_APP_NAME=""
# Sentry DSN for error monitoring
NEXT_PUBLIC_SENTRY_DSN=""
# Enable/Disable OAUTH - default 0 for selfhosted instance
NEXT_PUBLIC_ENABLE_OAUTH=0
# Enable/Disable sentry
NEXT_PUBLIC_ENABLE_SENTRY=0
# Enable/Disable session recording
NEXT_PUBLIC_ENABLE_SESSION_RECORDER=0
# Enable/Disable event tracking
NEXT_PUBLIC_TRACK_EVENTS=0
# Slack for Slack Integration
NEXT_PUBLIC_SLACK_CLIENT_ID=""
# For Telemetry, set it to "app.plane.so"
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=""
# public boards deploy url
NEXT_PUBLIC_DEPLOY_URL=""
# Backend
# Debug value for api server use it as 0 for production use
DEBUG=0
# Error logs
SENTRY_DSN=""
# Database Settings
PGUSER="plane"
PGPASSWORD="plane"
PGHOST="plane-db"
PGDATABASE="plane"
DATABASE_URL=postgresql://${PGUSER}:${PGPASSWORD}@${PGHOST}/${PGDATABASE}
# Redis Settings
REDIS_HOST="plane-redis"
REDIS_PORT="6379"
REDIS_URL="redis://${REDIS_HOST}:6379/"
# Email Settings
EMAIL_HOST=""
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
EMAIL_PORT=587
EMAIL_FROM="Team Plane <team@mailer.plane.so>"
EMAIL_USE_TLS="1"
EMAIL_USE_SSL="0"
# AWS Settings
AWS_REGION=""
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
AWS_S3_ENDPOINT_URL="http://plane-minio:9000"
# Changing this requires change in the nginx.conf for uploads if using minio setup
AWS_S3_BUCKET_NAME="uploads"
# Maximum file upload limit
FILE_SIZE_LIMIT=5242880
# GPT settings
OPENAI_API_BASE="https://api.openai.com/v1" # change if using a custom endpoint
OPENAI_API_KEY="sk-" # add your openai key here
GPT_ENGINE="gpt-3.5-turbo" # use "gpt-4" if you have access
# Github
GITHUB_CLIENT_SECRET="" # For fetching release notes
# Settings related to Docker
DOCKERIZED=1
# set to 1 If using the pre-configured minio setup
USE_MINIO=1
# Nginx Configuration
NGINX_PORT=80
# Default Creds
DEFAULT_EMAIL="captain@plane.so"
DEFAULT_PASSWORD="password123"
# SignUps
ENABLE_SIGNUP="1"
# Auto generated and Required that will be generated from setup.sh
NEXT_PUBLIC_API_BASE_URL=http://plane.domainhere.info
SECRET_KEY="hmicgxkn4hodt267cgodo1uri4basn9mihhvt1d1tambidryzr"
WEB_URL=http://plane.domainhere.info
Secure Plane Project Management Tool with SSL
Secure the Plane Frontend using SSL, to do that, we need to generate certificates for your domain name using Let's Encrypt
,
Install certbot
using the below command,
apt install certbot
Once installation is completed, generate certs using below command,
certbot certonly --standalone
Output:
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel): plane.domainhere.info
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for plane.domainhere.info
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/plane.domainhere.info/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/plane.domainhere.info/privkey.pem
Your cert will expire on 2023-11-30. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
root@vps:~#
Replace the plane.domainhere.info with the actual domain name
Create a dedicated directory for the SSL certs,
mkdir -p /etc/plane/ssl
chmod -R 775 /etc/plane/ssl
Copy the certs to the dedicated directory,
cp /etc/letsencrypt/live/plane.domainhere.info/fullchain.pem /etc/plane/ssl
cp /etc/letsencrypt/live/plane.domainhere.info/privkey.pem /etc/plane/ssl
Now install and configure a Nginx Web Server for reverse proxy. Here, we will use Nginx,
apt install nginx -y
Next, We will create a vHost file for the domain,
vi /etc/nginx/conf.d/plane.domainhere.info.conf
In the file, add the below lines,
server {
listen 443 ssl;
server_name plane.domainhere.info;
# SSL certificates
ssl_certificate /etc/plane/ssl/fullchain.pem;
ssl_certificate_key /etc/plane/ssl/privkey.pem;
# Additional SSL settings if needed
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ...
location / {
proxy_pass http://localhost:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
}
}
Once the vHost file is created, you need to disable the Nginx default config using the below command,
rm /etc/nginx/sites-enabled/default
Now restart the nginx using the below command,
systemctl restart nginx
Enable the firewall on your server and allow HTTPS through it,
ufw enable
ufw allow 443/tcp
ufw reload
Output:
root@vps:~/plane# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
root@vps:~/plane# ufw allow 443/tcp
Rules updated
Rules updated (v6)
root@vps:~/plane# ufw reload
Firewall reloaded
root@vps:~/plane#
Now, Start the Plane with Docker Compose using the below command,
docker compose -f docker-compose-hub.yml up
Use the below command to work the plane in the backend,
docker compose -f docker-compose-hub.yml up -d
Now access the services using HTTPS
.
Access Plane Project Management Tool
Open your browser and navigate to https://plane.domainhere.info
to login onto your Plane instance,
Replace plane.domainhere.info with your actual domain name
Login using the creds set in the variables file, If unchanged, the default values are username “captain@plane.so” password “password123“. You can also sign up with a new account since the feature was enabled in the variables file.
Once authenticated, you will be required to set up the profile,
Fill the details to create a workspace,
You can invite workers for collaboration,
This is the Plane Project Management Tool Welcome Page,
This is the Plane Project Management Tool dashboard,
Done.
CrownCloud - Get a SSD powered KVM VPS at $4.5/month!
Use the code WELCOME
for 10% off!
1 GB RAM / 25 GB SSD / 1 CPU Core / 1 TB Bandwidth per month
Available Locations: LAX | MIA | ATL | FRA | AMS