Plane logoProject Management

Plane

Quản lý issue, sprint và roadmap, phù hợp thay Linear/Jira cho team nhỏ.

Ghi chú review

Nhiều service hơn các app nhỏ, nên kiểm tra tài nguyên VPS và backup database định kỳ.

Hướng dẫn deploy

Plane cần nhiều service hơn, nên dùng Docker Compose chính thức và VPS tối thiểu 4 GB RAM.

  1. Clone repo hoặc tải bundle self-hosted chính thức.
  2. Cấu hình `.env` gồm domain, secret key, database, Redis và object storage nếu dùng.
  3. Chạy migration/setup theo tài liệu trước khi mở cho user.
  4. Đặt reverse proxy HTTPS cho web và API.
  5. Tạo workspace, kiểm tra email/invite nếu bật tính năng mời thành viên.
Backup:Backup PostgreSQL, Redis nếu có dữ liệu queue quan trọng, và object storage attachments.

Copy để chạy trên server

Dùng từng block riêng: lưu compose trước, hoặc copy script bash để tạo file và chạy 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-stopped
setup.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