Deploy Plane with Podman Quadlets Commercial Edition
This guide shows you the steps to deploy a self-hosted instance of Plane using Podman Quadlets.
Prerequisites
Before we start, make sure you've got these covered:
- A non-root user account with
systemd --user support(most modern Linux setups have this) - Podman version 4.4 or higher
Set up Podman
Add the Podman repository.
bashecho 'deb http://download.opensuse.org/repositories/home:/alvistack/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:alvistack.listAdd the GPG key.
bashcurl -fsSL https://download.opensuse.org/repositories/home:alvistack/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_alvistack.gpg > /dev/nullRefresh your package lists.
bashsudo apt updateInstall Podman and its dependencies.
bashsudo apt install -y podman uidmap netavark passtThe
uidmappackage handles user namespace mapping,netavarktakes care of networking, andpassthelps with network connectivity.Download and extract Podman Quadlets.
bashmkdir podman-quadlets curl -fsSL https://prime.plane.so/releases/v2.3.1/podman-quadlets.tar.gz -o podman-quadlets.tar.gz tar -xvzf podman-quadlets.tar.gz -C podman-quadletsThe directory contains an
install.shscript that will handle the installation and configuration.
Install Plane
The installation script sets up Plane and configures all required services. You have two options:
Without sudo access
./install.sh --domain your-domain.com --base-dir /your/custom/pathThis installs Plane in your specified directory, which is useful if you want to maintain control over the installation location.
With sudo access
./install.sh --domain your-domain.comThis installs Plane in /opt/plane, which is a standard system location.
INFO
Systemd configurations are installed in ~/.config/containers/systemd/
Configure external services (optional)
If you use external services for database, Redis, RabbitMQ, OpenSearch, or object storage (MinIO/S3), edit plane.env in your Plane installation directory (e.g. /opt/plane or your custom path from --base-dir) before starting services. See Environment variables for more details.
Database — In the DB SETTINGS section, set
DATABASE_URLor individual variables (PGHOST,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB,POSTGRES_PORT).Redis — In the REDIS SETTINGS section, set
REDIS_URLorREDIS_HOSTandREDIS_PORT.RabbitMQ — Set
AMQP_URL(e.g.amqp://username:password@your-rabbitmq-host:5672/vhost).OpenSearch — Set
OPENSEARCH_ENABLED=1,OPENSEARCH_URL, and optionallyOPENSEARCH_USERNAMEandOPENSEARCH_PASSWORD. See Configure OpenSearch for advanced search.MinIO / S3 — In the DATA STORE SETTINGS section, set
USE_MINIO=0for external S3, then setAWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_S3_ENDPOINT_URL, andAWS_S3_BUCKET_NAME.
After editing plane.env, start or restart services as described in Start Plane so the changes take effect.
Start Plane
WARNING
Note that you should run these commands without sudo.
Reload systemd to recognize new configurations.
bashsystemctl --user daemon-reloadStart the network service.
bashsystemctl --user start plane-nw-network.serviceStart core dependencies.
bashsystemctl --user start plane-{db,redis,mq,minio}.serviceStart backend services.
bashsystemctl --user start {api,worker,beat-worker,migrator,monitor}.serviceStart frontend services.
bashsystemctl --user start {web,space,admin,live,proxy}.serviceThe startup sequence is important: network first, then dependencies, followed by backend services, and finally frontend services.
If you've purchased a paid plan, activate your license key to unlock premium features.
Verify service status
Check that all services are running correctly:
Check network status.
bashsystemctl --user status plane-nw-network.serviceCheck core dependencies.
bashsystemctl --user status plane-{db,redis,mq,minio}.serviceCheck backend services.
bashsystemctl --user status {api,worker,beat-worker,migrator,monitor}.serviceCheck frontend services.
bashsystemctl --user status {web,space,admin,live,proxy}.service
Your Plane installation should now be running successfully with Podman Quadlets. This setup provides automatic service restart capabilities and standard systemd management commands for maintaining your installation.
Troubleshoot
To debug service issues, examine the logs using:
journalctl --user -u <service-name> --no-pagerThe logs will provide detailed information about any configuration issues or errors that may occur.

