Skip to main content
Docker Compose is the quickest way to self-host Plane. This method is ideal for small to medium teams and development environments.

Prerequisites

1

Install Docker

Ensure Docker Engine 20.10+ and Docker Compose v2+ are installed and running.
Verify installation:
2

System Requirements

  • CPU: 2 vCPU minimum (4 vCPU recommended)
  • RAM: 4GB minimum (8GB recommended)
  • Storage: 20GB minimum
  • OS: Ubuntu 20.04+, Amazon Linux 2, macOS, or Windows with WSL2
3

User Permissions

Ensure your user has Docker permissions. On Linux, you may need:

Quick Start Installation

Plane provides an interactive setup script that handles the entire installation process.
1

Create Installation Directory

2

Download Setup Script

3

Run Installation

You’ll see a menu like this:
Select 1 to install. This creates a plane-app directory with:
  • docker-compose.yaml - Service definitions
  • plane.env - Environment configuration
4

Configure Environment

Edit the plane-app/plane.env file before starting services:
Critical settings to configure:
plane.env
See the configuration guide for all available options.
5

Start Services

Run the setup script again and select 2:
The script will:
  • Pull Docker images for all services
  • Create Docker volumes for data persistence
  • Start all containers
  • Run database migrations
Wait for all services to start (2-5 minutes depending on your connection).
6

Access Plane

Open your browser and navigate to the URL you configured:
  • Local: http://localhost
  • Custom port: http://localhost:8080 (if you set LISTEN_HTTP_PORT=8080)
  • Domain: https://plane.example.com
You’ll be prompted to create the first instance admin account.

Docker Compose Configuration

The docker-compose.yaml file defines all services. Here’s an overview of the architecture:
docker-compose.yaml (simplified)
Do not modify the docker-compose.yaml file directly. The setup script may overwrite it during upgrades. Use environment variables in plane.env instead.

Management Operations

Starting Services

Alternatively, use Docker Compose directly:

Stopping Services

Or with Docker Compose:

Restarting Services

Useful after configuration changes:
Or restart specific services:

Viewing Logs

Interactive log viewer:
Direct log access:

Checking Service Status

Backup and Restore

Creating Backups

The setup script includes a backup utility:
This creates a timestamped backup in plane-app/backup/YYYYMMDD-HHMM/ containing:
  • pgdata.tar.gz - PostgreSQL database
  • redisdata.tar.gz - Redis data
  • uploads.tar.gz - User uploads and files
Schedule regular backups using cron:

Restoring from Backup

1

Download Restore Script

2

Stop Plane Services

3

Run Restore

The script will restore all three data volumes.
4

Start Services

Upgrading Plane

Always backup your data before upgrading.
1

Create Backup

2

Run Upgrade

This will:
  • Stop running services
  • Download the latest docker-compose.yaml
  • Download the latest plane.env template
  • Pull new Docker images
3

Review Configuration

Important: Review the new plane.env file for new settings:
Merge your custom configuration with new defaults.
4

Start Updated Instance

The migrator service will automatically run database migrations.

SSL/HTTPS Configuration

Plane’s proxy service supports automatic SSL certificate generation using Let’s Encrypt.

Using Let’s Encrypt

Edit plane.env:
plane.env
Ensure your domain points to your server’s IP and ports 80/443 are accessible from the internet.

Using Custom Certificates

If you have your own SSL certificates, you can mount them into the proxy container. Modify the docker-compose.yaml proxy service:

External Services

You can use external managed services instead of the bundled containers.

External PostgreSQL

Edit plane.env:
Comment out the plane-db service in docker-compose.yaml or use a custom compose file.

External Redis

plane.env

External S3-Compatible Storage

plane.env

Troubleshooting

Services Won’t Start

  1. Check if ports are available:
  2. View service logs:
  3. Verify environment variables:

Database Connection Errors

Migration Failures

Out of Memory

If services are crashing due to memory issues:
docker-compose.yaml

Permission Errors

Performance Optimization

Increase Worker Replicas

For better background job processing:
plane.env

Database Optimization

docker-compose.yaml

Enable Redis Persistence

docker-compose.yaml

Next Steps

Configuration

Configure environment variables, email, OAuth, and more

Instance Admin

Set up instance administration and manage settings