
Plane is a highly extensible open-source project management tool that supports several types of frameworks such as Agile, Kanban, waterfall, and timelines. It’s an alternative to platforms such as Jira, Asana, and Linear that lets you self-host all application resources in a containerized environment using tools such as Docker or Kubernetes.
This guide explains how to deploy Plane on a Vultr cloud server and set up an issue-tracking environment with trusted SSL certificates, email notifications, and authentication methods to secure your application.
Deploy a One-Click Docker Server using the Vultr marketplace application with at least 4 GB RAM.
Deploy a Vultr Managed Database for PostgreSQL to use with Plane.
Deploy Vultr Object Storage to use as the default Plane storage.
Create a non-root user with sudo privileges.
Add the user to the Docker group. For example, linuxuser.
Switch to the non-root user account.
The default Plane PostgreSQL database installed within the application's Docker environment does not offer the best performance in production environments. Offload the Plane database privileges to a Vultr Managed Database for PostgreSQL to improve the application's availability and performance in addition to offsite data storage. Follow the steps below to create a new Plane database using your Vultr Managed Database for PostgreSQL.
Log in to your Vultr Managed Database for PostgreSQL using a connection string. Replace abcd.vultrdb.com with your actual database host URL.
When prompted, enter your Vultr Managed Database for PostgreSQL user password to access the cluster.
Create a new database to use with Plane. For example, planedb.
Switch to the database.
Create a new sample table to verify that your PostgreSQL user has CREATE permissions on the database.
Exit the PostgreSQL console.
Plane requires a super user PostgreSQL account such as vultradmin to successfully migrate data and create all necessary resources in the database. Non-super user accounts are not compatible with Plane when using external databases due to required root-level permissions.
Create a new Plane project directory.
Switch to the directory.
Download the latest Plane installation script using Curl.
Grant execute privileges on the script.
Run the Plane installation script.
Output:
Enter 1 as the action value and press Enter to install the initial Plane configuration on your server.
Verify that the process is successful similar to the output below:
Enter 7 as the action value and press Enter to exit the installation script.
List the project directory files and verify that a new plane-app directory is available.
Switch to the directory.
List all directory files to verify that new docker-compose.yaml and .env files are available.
Output:
Open the .env environment variables file to modify the Plane installation values.
Find the NGINX_PORT field and replace the default port 80 with another port such as 8080.
Save the file.
Find WEB_URL and replace http://localhost with your domain URL. For example, https://plane.example.com.
Save the file.
Find the NEXT_PUBLIC_DEPLOY_URL field and change http://localhost/spaces to your domain URL while maintaining the /spaces path.
Save the file.
Scroll to the CORS_ALLOWED_ORIGINS field and change http://localhost to your domain URL.
Save the file.
Find the DB Settings section and replace all default variable values with your Vultr Managed Database for PostgreSQL details. In particular, replace the DATABASE_URL variable value with your full Vultr Managed Database for PostgreSQL connection string similar to the configuration below.
Save and close the file.
Replace the above Vultr Managed Database for PostgreSQL connection details with your matching values depending on the variable field:
Scroll to the DATA STORE SETTINGS section to set up the Plane connection to Vultr Object Storage.
Modify the default variable values with your Vultr Object Storage details to use with Plane.
Save and close the file.
Replace the above Vultr Object Storage example connection details with your actual values. Below is what each variable represents:
0 disables the default MinIO object storage and enables external access variables.ewr with your object storage location ID depending on the deployment region.example-access-key with your actual object storage access key string.example-secret with your actual secret key.ewr1.vultrobjects.com with your actual object storage URL.plane value with your desired bucket name.Switch back to your main Plane project directory.
Run the Plane installation script again.
Enter the action value 2 (start) and press Enter to start the Plane installation.
During installation, all database objects migrate to your Vultr Managed Database for PostgreSQL, and Vultr Object Storage is enabled as the default storage medium. When the installation is successful, your output should look like the one below:
Enter the action value 7 and press Enter to close the Plane installation script and verify the installation.
View the list of running Docker containers and verify all active Plane instances.
Output:
Send an HTTP request to the Plane host port 8080 and test access to the application interface.
Your output should look like the one below:
Based on your Plane configuration, the application runs on the host port 8080 defined by your NGINX_PORT value in the .env file. When the connection is successful, the request outputs HTML raw data that represents a successful connection to the Plane application.
Plane is a project tracking platform normally used with specific teams, departments, or organizations. Secure Plane with production environment practices including secure firewall rules and trusted SSL certificates to expose the application using your domain name. Follow the sections below to generate valid SSL certificates using the Let’s Encrypt Certificate authority (CA) and allow connection-only ports through the default server firewall application.
By default, Uncomplicated Firewall (UFW) is available and active as the default firewall package on Vultr Debian servers. Configure UFW to allow connection-only ports through the firewall to enable secure access to the Plane application resources.
Confirm the firewall status.
Output:
If disabled, allow the SSH port 22 and enable the firewall using the following commands.
Allow the HTTP connection port 80 through the firewall.
Allow the HTTPS connection port 443 to enable secure TLS/SSL connections.
Reload the firewall table to apply the new port changes.
View the firewall table to verify all available ports.
Output:
Nginx Proxy Manager is a reverse proxy application that securely exposes Docker applications for external access on a server. In the following steps, install the Nginx Proxy Manager and attach it to the internal Plane Docker network. In addition, enable access to Plane using the domain name URL plane.example.com you defined in your .env configuration.
Print your working directory and verify that you are actively using the Plane project directory.
Output:
Create a new data directory to store your Docker files. For example, nginx-proxy-man.
Switch to the new data directory.
Create a new Docker Compose file.
Open the file using a text editor of your choice such as Nano.
Add the following contents to the file.
Save and close the file.
The above Docker configuration creates a new Nginx Proxy Manager container and exposes the application for access on the following host ports:
Test access to the HTTP and HTTPS host ports to verify that no existing conflicts are active on your server.
If no application actively uses the ports, your output appears empty similar to the one below:
If any application is using the ports, stop the application using the Kill command to avoid port conflicts with the Nginx Proxy Manager. For example, stop the process ID 1234.
Install the Nginx Proxy Manager using your Docker Compose file.
Monitor the installation and verify that it’s successful similar to the output below:
View all running Docker containers and verify that the Nginx Proxy Manager container is active.
Output:
Verify the available Docker networks and keep note of the Plane network name.
Output:
Attach Nginx Proxy Manager to the Plane network to enable internal access to the application.
Access your server IP address on port 81 to open the Nginx Proxy Manager control panel using a web browser such as Firefox. Replace 172.16.0.2 with your actual server IP address.
Enter the following default administrator information to log in to the application:
admin@example.comchangemeChange the administrative user details or close the Edit User dialog to access the application control panel.
Click Hosts on the application navigation menu and select Proxy Hosts to create a new host configuration.
Click Add Proxy Host to open the host configuration page.
Enter your domain name in the Domain Names field and click the Add overlay to save your host domain.
Click the Scheme field and keep http as the connection type to access the internal Plane network.
Enter your main Plane container name plane-app-proxy-1 in the Forward Hostname/IP field.
Enter the internal Plane proxy container port 80 in the Forward Port field.
Keep Publicly Accessible as the access list value and click Save to apply the new host changes.
Open a new web browser tab and visit your domain to verify access to the Plane application interface.
Nginx Proxy Manager uses Let’s Encrypt as the default SSL certificate authority. In the following steps, modify the Plane host configuration and generate trusted SSL certificates to use with your domain name.
Login to the Nginx Proxy Manager control panel.
Click Hosts to access your host configurations.
Click the options : symbol next to Status and select Edit from the list to modify the host configuration.
Click the SSL tab in the Edit Host pop-up dialog.
Click the SSL Certificate field and select Request a new SSL certificate with Let's Encrypt from the list.
Toggle Force SSL to enable automatic redirections from HTTP to HTTPS.
Enter your email address to associate with the Let’s Encrypt certificate request.
Toggle I Agree to the Let’s Encrypt Terms of Service option to agree to the SSL certificate authority terms.
Click Save to apply the host configuration changes.
Open a new web browser tab and visit your domain over HTTPS to verify access to the Plane application using a secure connection.
Plane requires additional configurations when installed on your server to set up your application structure and invite additional users. In the following steps, configure the Plane interface and enable global options to activate with additional users for access on your server.
Open a new web browser window and access your Plane domain using the /god-mode path to access the application configuration screen.
Enter your email address in the name@company.com field.
Enter a strong password in the Enter password field to associate with the administrator email.
Click Sign in to create your Plane administrator account.
Click Go to God Mode to access the Plane instance configuration page.
Enter your desired Plane application name in the Name of instance field and click Save Changes to save your instance details.
Click Email on the navigation bar to modify your Plane email notification settings and assign the application an SMTP host and a from address to send user emails.
Click Save Changes to apply your Plane application settings.
Click the Exit symbol on the top bar to exit God Mode and access your Plane instance.
Enter your new workspace name in the Name it field, verify your domain URL, and click Make it live to create the workspace.
Enter your first user name in the Enter your full name field, select your plane usage category to personalize the workspace, and click Continue to apply the new changes.
Enter your team email addresses and select the appropriate permissions to assign the new workspace users.
Click Invite members to send email notifications to the user email addresses or click Do this later to skip the invitation process depending on your email server settings.
Confirm your new Plane instance workspace and click Take a Product Tour to explore all application features such as cycles, views, modules, analytics, and issues.
Click Create my first project to set up the first workspace project and access the main application interface.
To invite additional team members to the Plane application, click the Workspace name and select Settings to access the project Members list.
To modify your application settings, click your username icon on the top left bar and select Enter God Mode to access the instance configuration page.
In this guide, you have successfully deployed Plane on a Vultr cloud server and configured the application with production environment settings. The Vultr Managed Database for PostgreSQL works as the main database while Vultr Object Storage stores all Plane application assets. This improves the instance availability and performance similar to closed-source applications such as Jira and Linear. For more information, visit the official Plane documentation.
0 Comments
Be the first to comment and share your perspective with the community.