Project Management
Plane
Issue, sprint, and roadmap management, suitable as a Linear or Jira alternative for small teams.
Review notes
It runs more services than small apps, so check VPS resources and schedule database backups.
Deployment guide
Plane runs multiple services, so use the official Docker Compose setup and at least 4 GB RAM.
- Clone the repo or download the official self-hosted bundle.
- Configure `.env` for domain, secrets, database, Redis, and object storage if used.
- Run migrations/setup from the docs before inviting users.
- Put HTTPS reverse proxy in front of the web and API services.
- Create a workspace and verify email/invite flows if enabled.
Backup:Back up PostgreSQL, Redis if queue state matters, and object storage attachments.
Copy and run on your server
Use each block separately: save the compose file, or copy the bash script to create it and start the container.
docker-compose.ymlyaml
services:
plane:
image: makeplane/plane-frontend:stable
container_name: plane_frontend
ports:
- "3000:3000"
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: plane_postgres
environment:
POSTGRES_USER: plane
POSTGRES_PASSWORD: plane_password
POSTGRES_DB: plane
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: plane_redis
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/plane
sudo chown "$USER":"$USER" /opt/plane
cd /opt/plane
cat > docker-compose.yml <<'COMPOSE'
services:
plane:
image: makeplane/plane-frontend:stable
container_name: plane_frontend
ports:
- "3000:3000"
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: plane_postgres
environment:
POSTGRES_USER: plane
POSTGRES_PASSWORD: plane_password
POSTGRES_DB: plane
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: plane_redis
restart: unless-stopped
COMPOSE
docker compose up -d
echo "Plane starter stack is running on http://SERVER_IP:3000"Stack
TypeScriptPythonPostgreSQLRedis