DEV Community

Cover image for Deploying Plane - An Open-Source Jira Alternative on Ubuntu
Sanskriti Harmukh for Vultr

Posted on with Aashish Chaurasiya • Originally published at docs.vultr.com

Deploying Plane - An Open-Source Jira Alternative on Ubuntu

Plane is an open-source project management platform that supports Agile, Kanban, waterfall, and timeline workflows — a self-hosted alternative to Jira. This guide deploys Plane on Ubuntu using the official installer with an external PostgreSQL backend and S3-compatible object storage, then fronts it with Nginx Proxy Manager and a Let's Encrypt certificate. By the end, you'll have Plane serving project management workflows securely at your domain.

Prerequisite: Ubuntu host with Docker and Docker Compose installed (a one-click Docker server works), an external PostgreSQL endpoint with superuser access, an S3-compatible bucket with access/secret keys, and a domain A record pointing at the server.


Create the Plane Database

1. Connect to PostgreSQL as a superuser:

$ psql "postgres://DB_ADMIN:DB_PASSWORD@DB_HOST:DB_PORT/defaultdb"
Enter fullscreen mode Exit fullscreen mode

2. Create the Plane database and confirm:

CREATE DATABASE planedb;
\c planedb;
CREATE TABLE setup_check (id SERIAL PRIMARY KEY, note TEXT);
INSERT INTO setup_check (note) VALUES ('ready');
SELECT * FROM setup_check;
\q
Enter fullscreen mode Exit fullscreen mode

Plane needs a superuser account (e.g. vultradmin) because it performs root-level operations during install.


Add Your User to the Docker Group

$ sudo usermod -aG docker $USER
$ newgrp docker
Enter fullscreen mode Exit fullscreen mode

Install Plane

1. Create the project directory:

$ mkdir -p ~/plane && cd ~/plane
Enter fullscreen mode Exit fullscreen mode

2. Download the installer:

$ curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh
$ chmod +x setup.sh
Enter fullscreen mode Exit fullscreen mode

3. Run the installer and select option 1 to install:

$ ./setup.sh
Enter fullscreen mode Exit fullscreen mode

4. Edit the generated .env and set:

NGINX_PORT=8080
WEB_URL=https://plane.example.com
NEXT_PUBLIC_DEPLOY_URL=https://plane.example.com/spaces
CORS_ALLOWED_ORIGINS=https://plane.example.com

# External Postgres
PGUSER=DB_ADMIN
PGPASSWORD=DB_PASSWORD
PGHOST=DB_HOST
PGPORT=DB_PORT
PGDATABASE=planedb

# S3-compatible storage
AWS_REGION=YOUR_REGION
AWS_ACCESS_KEY_ID=YOUR_KEY
AWS_SECRET_ACCESS_KEY=YOUR_SECRET
AWS_S3_BUCKET_NAME=YOUR_BUCKET
AWS_S3_ENDPOINT_URL=https://YOUR_S3_ENDPOINT
Enter fullscreen mode Exit fullscreen mode

5. Run the installer again and pick option 2 to start Plane.


Open the Firewall

$ sudo ufw allow 22/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload
Enter fullscreen mode Exit fullscreen mode

Front Plane with Nginx Proxy Manager

1. Create a directory for the proxy:

$ mkdir -p ~/npm && cd ~/npm
Enter fullscreen mode Exit fullscreen mode

2. Create the Compose file:

$ nano docker-compose.yaml
Enter fullscreen mode Exit fullscreen mode
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
Enter fullscreen mode Exit fullscreen mode

3. Start the proxy:

$ docker compose up -d
Enter fullscreen mode Exit fullscreen mode

4. Connect the proxy to Plane's Docker network:

$ docker network connect plane-app_default nginx-proxy-manager
Enter fullscreen mode Exit fullscreen mode

Configure the Proxy Host and TLS

  1. Open http://SERVER_IP:81 and sign in with admin@example.com / changeme.
  2. Change the admin email and password when prompted.
  3. Proxy Hosts → Add Proxy Host:
    • Domain Names: plane.example.com
    • Scheme: http
    • Forward Hostname/IP: plane-app-proxy-1
    • Forward Port: 80
    • Toggle Websockets Support
  4. SSL tab → Request a new SSL certificate with Let's Encrypt, enter your email, accept the terms, toggle Force SSL, and save.

Open https://plane.example.com to confirm Plane responds over HTTPS.


Initialize the Plane Workspace

  1. Navigate to https://plane.example.com/god-mode.
  2. Create the administrator account (email + password).
  3. From God Mode, set the instance name and configure SMTP for email notifications.
  4. Exit God Mode, create your first workspace, and invite team members.
  5. Complete the product tour and create your first project.

Next Steps

Plane is running with an external Postgres backend, S3 object storage, and HTTPS at your domain. From here you can:

  • Create cycles, modules, and views for Agile workflows
  • Integrate with GitHub or GitLab for issue sync
  • Configure SMTP for invitations, mentions, and notifications

For the full guide with additional tips, visit the original article on Vultr Docs.

Top comments (0)