Skip to Content

Deploy Plane

🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, docs, and triage.

⭐ 45.5k stars📜 GNU Affero General Public License v3.0🔴 Advanced⏱ ~20 minutes

What You’ll Get

A fully working Plane instance running on your server. Your data stays on your hardware — no third-party access, no usage limits, no surprise invoices.

Prerequisites

  • A server with Docker and Docker Compose installed (setup guide)
  • A domain name pointed to your server (optional but recommended)
  • Basic terminal access (SSH)

The Config

Create a directory for Plane and add this docker-compose.yml:

# ------------------------------------------------------------------------- # 🚀 Created and distributed by The AltStack # 🌍 https://thealtstack.com # ------------------------------------------------------------------------- version: '3.8' services: plane-web: image: makeplane/plane-frontend:latest container_name: plane-frontend restart: unless-stopped depends_on: - plane-backend ports: - "3000:80" plane-backend: image: makeplane/plane-backend:latest container_name: plane-backend restart: unless-stopped depends_on: - plane-db - plane-redis ports: - "8000:8000" environment: - DATABASE_URL=postgres://plane:plane@plane-db:5432/plane - REDIS_URL=redis://plane-redis:6379/ - SECRET_KEY=replace-me-with-a-secure-key plane-db: image: postgres:15-alpine container_name: plane-db restart: unless-stopped environment: - POSTGRES_USER=plane - POSTGRES_PASSWORD=plane - POSTGRES_DB=plane volumes: - plane_db_data:/var/lib/postgresql/data plane-redis: image: redis:7-alpine container_name: plane-redis restart: unless-stopped volumes: - plane_redis_data:/data volumes: plane_db_data: plane_redis_data:

Let’s Ship It

# Create a directory mkdir -p /opt/plane && cd /opt/plane # Create the docker-compose.yml (paste the config above) nano docker-compose.yml # Pull images and start docker compose up -d # Watch the logs docker compose logs -f

Environment Variables

VariableDefaultRequired
DATABASE_URLpostgres://plane:plane@plane-db:5432/planeNo
REDIS_URLredis://plane-redis:6379/No
SECRET_KEYreplace-me-with-a-secure-keyNo
POSTGRES_USERplaneNo
POSTGRES_PASSWORDplaneNo
POSTGRES_DBplaneNo

Post-Deployment Checklist

  • Service is accessible on the configured port
  • Admin account created (if applicable)
  • Reverse proxy configured (Caddy guide)
  • SSL/HTTPS working
  • Backup script set up (backup guide)
  • Uptime monitor added (Uptime Kuma)

The “I Broke It” Section

Container won’t start?

docker compose logs plane | tail -50

Port already in use?

# Find what's using the port lsof -i :PORT_NUMBER

Need to start fresh?

docker compose down -v # ⚠️ This deletes volumes/data! docker compose up -d

Going Further