- Plane.so = open source Jira alternative, UI hiện đại như Linear, có cycle (sprint), module, view, page.
- Self-host trên 1 VPS 4-8 GB RAM, docker compose chính thức, deploy 30 phút.
- Tích hợp Github sync 2-way, Slack notification, webhook, API REST đầy đủ.
- Phù hợp startup 5-50 người không trả nổi Jira 7 USD/user hoặc cần data on-shore.
- Còn thiếu vs Jira: roadmap timeline phức tạp, automation rule mạnh, permission marketplace.
Team startup 20 dev, đang xài Jira free 10 user, nay vượt phải trả 7 USD/user/tháng = 1700 USD/năm. Chưa kể Jira Cloud chậm load, UI rối. Linear quá tốt nhưng cũng 8 USD/user/tháng, không self-host được. Plane là điểm giao thoa: UI như Linear, open source self-host miễn phí, đủ cycle + module + view. Triển khai trên 1 VPS là xong.
Bài này hướng dẫn deploy Plane community edition, thiết lập workspace + project, migrate từ Jira/Linear, tích hợp Github, kèm so sánh thẳng với Jira/Linear/Notion để biết khi nào hợp.
Plane là gì? Khác Jira/Linear/Notion?
| Tool | Pricing | Self-host | Speed | Phù hợp |
|---|---|---|---|---|
| Jira | Free 10 user, ~7 USD/user | DC ($$$) | Chậm | Enterprise, workflow phức tạp |
| Linear | Free limited, ~8 USD/user | Không | Cực nhanh | Startup product team |
| Notion | ~10 USD/user | Không | Trung bình | Doc-first team |
| Plane | 0 self-host | Có | Nhanh | Startup dev-led, data sovereignty |
| OpenProject | 0 self-host | Có | Trung bình | Compliance enterprise |
Plane là lựa chọn tốt cho startup không muốn trả phí hằng tháng, có ai đó vận hành VPS được. UI rất giống Linear, learning curve thấp cho team đã quen Linear/Jira.
Yêu cầu VPS
| Quy mô | RAM | vCPU | SSD |
|---|---|---|---|
| 1-10 user | 4 GB | 2 vCPU | 40 GB |
| 10-50 user | 8 GB | 4 vCPU | 80 GB |
| 50-200 user | 16 GB | 6 vCPU | 160 GB |
Stack: API Django + worker + frontend Next.js + Postgres + Redis + RabbitMQ + nginx. Container 6-8 cái, RAM idle ~2 GB, peak khi nhiều user 4 GB.
Deploy Plane self-host
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
cd /srv
sudo git clone https://github.com/makeplane/plane.git
cd plane
# Plane có script deploy chính thức
sudo ./setup.sh
# Hoặc dùng docker compose từ thư mục deploy/selfhost
cd deploy/selfhost
sudo cp .env.example .env
sudo nano .env
Sửa .env:
DOMAIN_NAME=plane.your-domain.com
WEB_URL=https://plane.your-domain.com
SECRET_KEY=GENERATE-LONG-RANDOM
POSTGRES_USER=plane
POSTGRES_PASSWORD=strong-pg-pw
POSTGRES_DB=plane
REDIS_PASSWORD=strong-redis-pw
RABBITMQ_DEFAULT_USER=plane
RABBITMQ_DEFAULT_PASS=strong-rabbit-pw
# Email
EMAIL_HOST=smtp.your-domain.com
[email protected]
EMAIL_HOST_PASSWORD=YOUR_SMTP_PASSWORD
EMAIL_PORT=587
EMAIL_USE_TLS=1
[email protected]
# Disable signup ngoài team
ENABLE_SIGNUP=0
sudo docker compose --env-file .env up -d
sudo docker compose ps
# Đặt Caddy/Nginx reverse proxy
Caddyfile:
plane.your-domain.com {
reverse_proxy 127.0.0.1:80
encode gzip
request_body { max_size 100MB }
}
Vào plane.your-domain.com, sign up tài khoản admin đầu tiên (lần đầu sẽ tự thành owner). Sau đó tắt ENABLE_SIGNUP để chỉ mời qua email.
Workspace, Project, Cycle
- Workspace: tổ chức cha. Vd "Acme Startup". Mời member, set role.
- Project: dự án cụ thể. Vd "Mobile App", "Marketing Site".
- Cycle: sprint, vd 1-2 tuần. Set start/end date.
- Module: nhóm issue theo theme. Vd "Onboarding rewrite", "Payment v2".
- View: filter saved. Vd "My open issues", "Critical bugs assigned to PM".
- Page: notion-style document gắn project.
Quy ước nội bộ ngon: 1 cycle = 1 sprint 2 tuần. Module dùng theo feature. View "Standup today" cho daily standup. Page gắn doc PRD trực tiếp với project.
Issue type và workflow
- Mặc định state: Backlog -> Todo -> In Progress -> Done -> Cancelled.
- Tùy chỉnh state per project trong Settings.
- Issue có priority: Urgent, High, Medium, Low, None.
- Custom field: label, estimate point, attachment, link.
- Sub-issue: 1 issue cha có nhiều sub-issue (tương đương epic-story Jira).
- Comment markdown + mention @user gửi email notification.
Tích hợp Github
- Settings -> Integrations -> Github -> Add.
- Authorize OAuth Github của bạn.
- Chọn repo cần sync.
- Mapping: PR Github -> Issue Plane, branch name pattern (vd
plane-XYZ-feature). - Commit message có "Closes PLANE-123" auto move issue về Done khi merge PR.
Workflow chuẩn: PM tạo issue Plane, dev pick, tạo branch theo pattern, push PR, merge. Plane tự cập nhật state issue. Không phải copy-paste link giữa 2 tool.
Migration từ Jira / Linear
- Jira: export CSV, dùng import script Plane (community plugin) parse mapping. Mất 1 ngày cho 1k issue.
- Linear: API export, viết script Python POST sang Plane API. Migration smooth hơn vì 2 model gần giống.
- Manual: với project nhỏ <50 issue, copy paste cũng được.
Khuyến nghị: chạy song song 1-2 sprint để team làm quen Plane, sau đó cutover hoàn toàn. Đừng migrate ngày đầu rồi mở 2 tab Jira + Plane cho khó.
Backup và scale
- Backup Postgres + file attachment hằng đêm: dùng restic + B2 (xem bài backup).
- Snapshot VPS hằng tuần trước update.
- Khi user vượt 100, tách Postgres ra VPS riêng, scale web container thành 2-3 instance.
- Storage upload (attachment, avatar): mặc định local disk, có thể chuyển sang S3 (R2, Backblaze, MinIO) qua env
USE_MINIO=1+ S3 creds.
Bẫy thường gặp
| Triệu chứng | Cách fix |
|---|---|
| Email mời không gửi | SMTP config sai, check log docker logs plane-api |
| Upload file lỗi 413 | Tăng client_max_body_size nginx và Caddy |
| RabbitMQ liên tục restart | RAM thấp, nâng VPS lên 8 GB |
| Update bị conflict migration | Backup DB, đọc release note, apply migration thủ công nếu cần |
| Github webhook không trigger | Public URL chưa accessible, hoặc secret webhook sai |
VPS đủ chỗ chạy Plane + Postgres + Redis + RabbitMQ
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Gói 8GB RAM cho team 30 dev xài Plane thoải mái, IP VN giúp web load nhanh nội địa.
Xem 8 cấu hình Cloud VPS →FAQ
Plane có miễn phí thật sự cho commercial không?
Community edition là AGPL v3, miễn phí commercial. Có tier paid Plane One với feature enterprise (SSO, audit nâng cao). Self-host CE đủ cho 95% case startup. Lưu ý AGPL: nếu bạn modify code và serve cho user, phải public source modification.
Plane có app mobile không?
Có app iOS/Android (đang phát triển active). Hoặc dùng web app trên mobile - responsive khá tốt. Notification push qua email + Slack/Discord integration. Đủ cho daily standup, quick update task khi ngoài đường.
Tôi quen Linear, học Plane mất bao lâu?
1-2 ngày là đủ tự nhiên. UI/UX Plane lấy cảm hứng từ Linear: keyboard shortcut "C" tạo issue, "B" backlog, "I" inbox. Concept cycle/module/view tương đương cycle/project/view Linear. Khác biệt nhỏ ở custom field và automation - Plane đang catch up.
API có đủ để build integration nội bộ không?
Có. Plane có REST API đầy đủ: CRUD issue, project, cycle, comment, attachment. Documented Swagger. Có thể build bot Slack tự tạo issue khi user report bug, hoặc sync issue từ Zendesk sang Plane qua webhook.
Khi nào nên quay lại Jira/Linear?
Khi cần advanced automation rule (Jira), khi cần roadmap timeline cấp portfolio, khi enterprise sales cần SSO + audit nâng cao mà Plane CE chưa có. Hoặc khi team có sysadmin cũng có thể về Atlassian Cloud cho tiện. Cho 95% startup VN dưới 50 dev, Plane là lựa chọn tốt.

