Cài Coolify trên VPS: self-host PaaS thay Heroku và Vercel

Mục lục
TL;DR
  • Coolify là PaaS self-host mã nguồn mở, deploy app từ Git như Heroku/Vercel nhưng chạy trên VPS riêng của bạn.
  • Cài bằng một lệnh curl. Cần VPS tối thiểu 2GB RAM, 30GB SSD. Cloud VPS 50 (4GB RAM) là sweet spot.
  • Hỗ trợ Node, Next.js, Laravel, Django, FastAPI, Rust, Go, Python, static site, database (Postgres, MySQL, Redis, Mongo), background worker.
  • HTTPS tự động qua Traefik + Let's Encrypt. Zero-downtime deploy. Webhook GitHub/GitLab tích hợp sẵn.
  • Tiết kiệm: Heroku Hobby 7 USD/app, Vercel Pro 20 USD/user. Coolify trên Cloud VPS 50 (639k ~25 USD) chạy được 8-15 app cùng lúc.

Heroku đã không còn free tier từ 2022. Vercel siết quota function execution từ 2024. Render thắt chặt build minute trên hobby plan. Với dev solo và founder kỹ thuật làm 5-10 side project song song, chi phí PaaS commercial đã vượt qua chi phí mua một VPS riêng từ lâu. Coolify ra đời để giải quyết bài toán đó: cho bạn trải nghiệm "git push, app lên" của Heroku, nhưng chạy trên VPS bạn sở hữu.

Bài này hướng dẫn từ con số 0: chọn VPS phù hợp, cài Coolify bằng lệnh duy nhất, kết nối Git, deploy 3 ứng dụng mẫu (Next.js, FastAPI, static landing), thêm database, setup webhook deploy tự động, và mẹo tránh các lỗi phổ biến nhất. Tất cả test trên Cloud VPS 50 và VPS 80 của TND. Sau bài này, bạn có một "Heroku riêng" chạy không giới hạn app, miễn là VPS còn RAM.

Coolify là gì và khác Dokploy, CapRover ở đâu?

Coolify là một PaaS open-source viết bằng PHP Laravel, được Andras Bacsai phát triển từ 2021 và bùng nổ trong 2024-2025 nhờ trào lưu dev solo tự host. Nó wrap Docker, Traefik, BuildKit thành UI dashboard thân thiện. Bạn không phải viết Dockerfile cho hầu hết framework phổ biến, không phải lo Traefik label, không phải tự cấu hình Let's Encrypt.

So với 2 đối thủ phổ biến khác:

Tiêu chíCoolifyDokployCapRover
Năm bắt đầu202120242017
Tech stackLaravel + LivewireNext.js + DrizzleNode.js + Vue
LicenseApache 2.0Apache 2.0Apache 2.0
Hỗ trợ Database one-click10+ DB engine8 engineCần tự setup
Hỗ trợ Docker ComposeCó, đầy đủHạn chế
Multi-server (manage nhiều VPS)Có (mới)Có (Swarm)
Phiên bản hosted (SaaS)Cloud Coolify trả phíKhông
Cộng đồng VN 2026Lớn nhấtĐang lênỔn định

Coolify thắng ở số lượng integration đã build sẵn (Notion sync, GitHub PR preview, Stripe billing), Dokploy nhẹ và UI hiện đại hơn, CapRover bền bỉ nhưng UI cũ kỹ. Với người mới, Coolify là lựa chọn an toàn nhất nhờ docs đầy đủ và Discord active.

Chuẩn bị VPS

  • Tối thiểu: 2 vCPU, 2 GB RAM, 30 GB SSD. Chỉ chạy 1-2 app nhẹ.
  • Khuyến nghị: 2-4 vCPU, 4-8 GB RAM, 80 GB SSD. Chạy 5-10 app + 1-2 database.
  • Production thật: 4 vCPU, 16 GB RAM, 160 GB SSD. Chạy 15+ app, có Postgres production, Redis cluster nhỏ.
  • OS: Ubuntu 22.04 hoặc 24.04 LTS, Debian 12, AlmaLinux 9. Coolify hỗ trợ tốt nhất Ubuntu.
  • Yêu cầu trước: SSH key login, user root hoặc sudo, port 22, 80, 443, 8000 mở.

Cloud VPS 50 (4GB RAM, 2 vCPU, 60GB SSD CEPH) phù hợp cho dev solo chạy 5-10 project nhỏ. Khi cần scale, snapshot rồi nâng cấp gói trong control panel TND, downtime dưới 1 phút.

Cài Coolify bằng một lệnh duy nhất

ssh [email protected]
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

Script này làm 8 việc tự động: cập nhật apt, cài Docker engine + compose, tạo network coolify, generate SSH key riêng cho deploy, pull image Coolify mới nhất, tạo file .env với secret ngẫu nhiên, khởi động container, in URL truy cập dashboard.

Sau 3-5 phút (tùy băng thông), terminal in ra:

Coolify is up and running!
Access it at http://1.2.3.4:8000
Default admin: register the first account on first visit

Mở browser tới địa chỉ trên, đăng ký tài khoản admin (email + mật khẩu). Tài khoản đầu tiên có quyền root, các tài khoản sau cần được mời.

Setup domain và HTTPS cho dashboard

Truy cập qua IP:port không an toàn. Trỏ subdomain coolify.your-domain.com về IP VPS bằng A record. Sau đó vào Settings > Server > Coolify > đặt FQDN là https://coolify.your-domain.com. Coolify sẽ tự cấp Let's Encrypt cert qua Traefik nội bộ.

Đồng thời mở Settings > General, bật "Force HTTPS". Sau đó truy cập http://1.2.3.4:8000 sẽ tự redirect sang https. Từ giờ chỉ vào dashboard qua domain HTTPS.

Kết nối GitHub và deploy ứng dụng Next.js

Vào Sources > GitHub > Create new. Coolify hỗ trợ 2 cách: GitHub App (recommended cho organization) và Personal Access Token (nhanh cho repo cá nhân).

  1. Bấm "Create GitHub App", Coolify mở wizard tới GitHub.
  2. Đặt tên app, chọn install vào account/org của bạn.
  3. Sau khi cài, GitHub redirect về Coolify với credentials đã điền sẵn.
  4. Save. Coolify lúc này có quyền đọc repo và setup webhook.

Tiếp theo, tạo Project > Add Resource > Application > chọn nguồn GitHub > chọn repo Next.js của bạn > chọn branch main. Coolify detect tự động đây là Next.js, suggest build command "npm run build" và start command "npm run start". Click Deploy.

Log build hiện real-time trong dashboard. Sau 2-5 phút app lên. Coolify gán URL ngẫu nhiên dạng https://random-name.your-vps-fqdn. Bạn có thể thêm custom domain trong tab Domains, Coolify tự xin Let's Encrypt cho domain đó.

Deploy FastAPI Python

Coolify nhận diện Python qua file requirements.txt hoặc pyproject.toml. Tạo resource mới, chọn repo Python:

  • Build pack: Nixpacks (tự động) hoặc Dockerfile (nếu repo có sẵn).
  • Start command: uvicorn main:app --host 0.0.0.0 --port $PORT
  • Port: 8000 (mặc định FastAPI).
  • Environment variables: thêm DATABASE_URL, SECRET_KEY trong tab Environment.

Click Deploy. Coolify build Docker image bằng Nixpacks (open-source build tool của Railway), tự detect Python version, cài dependencies, expose port. Sau 3-5 phút có URL HTTPS.

Deploy static landing page

Với landing tĩnh (Astro, Hugo, Eleventy, hoặc HTML thuần), Coolify dùng Caddy nội bộ làm file server:

  1. Add Resource > Application > Static Site.
  2. Chọn repo > Build command: "npm run build" (hoặc tương ứng).
  3. Publish directory: "dist" hoặc "_site" hoặc "public".
  4. Deploy. Sau 1-2 phút có URL.

Static site nhẹ, không tốn RAM khi idle, có thể chạy hàng chục site trên VPS 4GB.

Thêm database Postgres one-click

Add Resource > Database > PostgreSQL. Chọn version (16 là mặc định khuyên dùng năm 2026). Đặt tên, password tự sinh hoặc nhập tay. Click Deploy.

Sau 30 giây, container Postgres up. Coolify cho bạn 2 connection string: internal (chỉ truy cập từ app trong cùng Coolify) và external (mở port ra public). Khuyến nghị dùng internal, nhanh hơn và an toàn hơn.

Trong app FastAPI vừa deploy, sửa DATABASE_URL thành internal connection string. Tab Environment > Edit > Save > Redeploy. App giờ kết nối Postgres qua Docker network nội bộ, latency dưới 1ms.

Backup database tự động

Coolify có Scheduled Backups built-in. Trong tab Backups của database, click Add Schedule. Chọn:

  • Frequency: Daily 03:00.
  • Retention: Keep last 14 backups.
  • Storage: Local (lưu trên VPS) hoặc S3-compatible (R2, Wasabi, TND Cloud Storage).

Cấu hình S3 cần access key + bucket + endpoint. Mỗi backup là một file .sql.gz, có thể download trực tiếp từ Coolify để restore. Khôi phục cũng one-click qua nút Restore.

Webhook GitHub: git push tự deploy

Mỗi application Coolify tạo webhook URL riêng. Vào tab Webhook > copy URL. Mặc định Coolify đã tự setup webhook khi bạn dùng GitHub App, nên git push vào branch main là Coolify pull code mới, build, deploy.

Có thể chọn deployment strategy:

  • Auto deploy on push: trigger ngay mỗi commit.
  • Auto deploy on tag: chỉ deploy khi push git tag, phù hợp cho production.
  • Manual: phải bấm Deploy trong UI, an toàn cho database migration.

Mẹo: branch dev tự deploy lên subdomain dev.app.your-domain, branch main deploy lên app.your-domain. Cấu hình bằng cách clone resource và đổi branch + domain.

Zero-downtime deploy

Coolify mặc định deploy theo rolling strategy: build container mới song song, health check, switch traffic qua Traefik, sau đó stop container cũ. Người dùng không thấy downtime.

Cấu hình healthcheck trong tab Health Checks:

Path: /api/health
Port: 8000
Interval: 10s
Timeout: 5s
Retries: 3
Start period: 30s

Endpoint /api/health trong app trả 200 OK khi DB connect OK. Nếu fail 3 lần liên tiếp, Coolify giữ container cũ và rollback, gửi notification.

Notification và monitoring

Coolify hỗ trợ Discord, Telegram, Slack, Email cho 6 sự kiện: deploy started, deploy succeeded, deploy failed, server unreachable, backup completed, backup failed. Setup trong Settings > Notifications.

Cho Telegram, tạo bot qua @BotFather, lấy token và chat_id. Paste vào Coolify. Test bằng nút "Send test notification". Sau đó mỗi lần git push thành công, Telegram bạn báo ngay.

Multi-server: quản nhiều VPS từ một dashboard

Khi cần tách database server riêng với app server, hoặc có một VPS US chạy dev và một VPS VN chạy production, Coolify cho phép add server từ xa:

  1. Settings > Servers > Add new server.
  2. Nhập IP, username, copy SSH public key của Coolify.
  3. Trên VPS đích, paste key vào ~/.ssh/authorized_keys của user root.
  4. Click Validate. Coolify cài Docker và agent trên VPS đó tự động.

Sau khi thêm xong, khi tạo resource bạn chọn server đích. Một resource có thể di chuyển giữa server bằng cách clone + delete. Phù hợp cho việc tách workload database nặng ra server riêng.

Lỗi phổ biến và cách fix

  • Build fail "no space left": docker image cũ chiếm disk. Chạy docker system prune -a --volumes hoặc tăng disk VPS.
  • HTTPS không cấp được: port 80 phải mở cho Let's Encrypt HTTP-01 challenge. Kiểm tra firewall (ufw, csf).
  • App start xong rồi exit: thường do app bind 127.0.0.1 thay vì 0.0.0.0. Sửa start command để bind 0.0.0.0 hoặc set HOST=0.0.0.0.
  • Nixpacks không detect framework: thêm file nixpacks.toml hoặc dùng Dockerfile tự viết.
  • Traefik 502 Bad Gateway: kiểm tra app có expose port đúng PORT env mà Coolify cung cấp.
  • Out of memory: Coolify + 5 app + 2 DB cần ít nhất 4GB RAM. Nâng cấp Cloud VPS lên gói 8GB.

Update Coolify lên version mới

Vào Settings > Update. Coolify pull image mới, restart container chính, không ảnh hưởng các app đang deploy. Nếu version có breaking change (rất hiếm), Coolify hiện migration guide trong UI.

Manual update qua SSH:

curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh | bash

So sánh chi phí thực tế

StackHeroku HobbyVercel ProCoolify + TND VPS
1 web app + 1 DB14 USD20 USD~25 USD (gói 50)
5 web app + 2 DB56 USD20 USD + over-quota~25 USD (gói 50)
10 web app + 3 DB91 USD50 USD+~50 USD (gói 80)
Database lớn (10GB+)50 USD addon+ DB add-on Neon/SupabaseĐã bao gồm disk
Băng thông VN200-300ms200-300ms (US edge)5-15ms (VN)

Coolify rẻ hơn 50-70 phần trăm khi bạn chạy nhiều app, lại có ưu thế latency cho user Việt Nam. Đổi lại, bạn phải tự lo update OS, monitoring, scaling. Với dev solo và đội nhỏ, đánh đổi này rõ ràng có lợi.

FAQ

Coolify có hỗ trợ Docker Compose phức tạp không?

Có. Add Resource > Docker Compose > paste nội dung file. Coolify parse, hiểu các service, network, volume, expose port. Trong tab Environment thêm biến chung cho tất cả service. Phù hợp deploy stack có sẵn như Penpot, Plausible, n8n.

Coolify có thể dùng cho production khách hàng thật không?

Có, nhiều startup Việt Nam đang dùng Coolify cho production tới hàng nghìn user/ngày. Cần lưu ý: enable backup database hàng ngày sang S3, dùng VPS có snapshot 1-click (như TND), bật notification để biết khi server down, và test rollback định kỳ.

Coolify có giới hạn số app hay user không?

Không. Open-source và free unlimited. Số app bị giới hạn bởi RAM VPS thôi. Cloud Coolify (SaaS) có giới hạn dựa trên plan, nhưng self-host bản open source thì không. Bạn add bao nhiêu team member, project, application cũng được.

Coolify có support PR preview như Vercel không?

Có. Bật "Preview Deployments" trong Application. Mỗi pull request mới trên GitHub sẽ trigger Coolify deploy một bản preview lên subdomain dạng pr-123.app.your-domain. Khi PR merge hoặc close, Coolify tự dọn dẹp container preview.

Khi VPS đầy, làm sao migrate Coolify sang VPS lớn hơn?

2 cách. Đơn giản nhất: dùng snapshot Cloud VPS TND, nâng cấp gói trong control panel, downtime 1-2 phút. Thay thế: cài Coolify trên VPS mới, dùng tính năng "Server Migration" beta, hoặc backup database Coolify metadata + restore lên server mới rồi sync code qua Git.

Cloud VPS cho vibe coder

VPS sẵn cho Coolify: 4-16GB RAM, snapshot trước update

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. Cài Coolify một lệnh, deploy 10 app dưới 25 USD/tháng, latency VN dưới 15ms.

Xem 8 cấu hình Cloud VPS →

Chia sẻ bài viết