Virtualization

Tự host PaaS kiểu Heroku trên VPS bằng Coolify

Nếu bạn từng dùng Heroku hoặc một PaaS managed nào đó, bạn quen với vòng lặp git push, hệ thống tự build, tự cấp HTTPS, app lên sóng, nhưng cũng quen luôn với hoá đơn tăng theo từng dyno và cảm giác không thực sự sở hữu hạ tầng. Coolify lấy lại trải nghiệm đó ngay trên VPS của riêng bạn: nối git repo, bấm deploy, app và database chạy sau reverse proxy có HTTPS tự động, còn dữ liệu nằm trên máy chủ bạn kiểm soát. Bài này đi qua Coolify là gì, cài một dòng, nối repo, deploy app kèm database, HTTPS và preview environment, và những tradeoff khi tự host thay vì trả tiền cho nền tảng managed.

Coolify là gì

Coolify là một PaaS mã nguồn mở, self-hosted, định vị như bản thay thế cho Heroku, Vercel hay Railway nhưng chạy trên hạ tầng của bạn. Thay vì thuê từng dyno hay function, bạn cấp cho Coolify một VPS có quyền root, và nó biến máy đó thành một platform: quản lý build, deploy, domain, chứng chỉ SSL, database và backup thông qua một giao diện web duy nhất.

Điểm cốt lõi cần hiểu ngay: Coolify không phát minh lại runtime, bên dưới nó điều phối Docker. Mỗi app bạn deploy trở thành một hoặc nhiều Docker container, mỗi database là một container có volume gắn kèm, và một reverse proxy (Traefik theo mặc định) đứng trước tất cả để định tuyến request theo domain. Coolify chỉ là lớp điều phối và giao diện phía trên Docker. Hiểu điều này giúp bạn debug dễ hơn: khi có sự cố, bạn luôn rớt xuống tầng docker psdocker logs để xem thật sự chuyện gì đang xảy ra.

Phiên bản v4.0 phát hành giữa năm 2026 mang lại dashboard thiết kế lại, orchestration nhiều server native và catalog hơn 280 service one-click. Nhưng cho một VPS đơn lẻ, ba tính năng bạn dùng mỗi ngày là: deploy từ git, database quản lý sẵn, và HTTPS tự động.

Yêu cầu tài nguyên trước khi bắt đầu

Đây là chỗ nhiều người vấp. Mức tối thiểu chính thức là 2 CPU core, 2 GB RAM, và 30 GB dung lượng trống. Con số đó đúng kỹ thuật nhưng gây hiểu lầm: bản thân Coolify cùng thành phần đi kèm (Postgres nội bộ, Redis, Traefik, realtime service) đã ngốn quanh 1 GB RAM trước khi bạn deploy bất cứ thứ gì. Với 2 GB, bạn gần như không còn headroom cho chính app của mình.

  • Thử nghiệm, một app nhỏ: 2 GB RAM là ngưỡng sàn, chấp nhận được để nghịch nhưng dễ bị OOM khi build.
  • Chạy thật vài app kèm database: 4 vCPU / 8 GB RAM / 100 GB NVMe là điểm cân bằng thoải mái.
  • Đĩa: Docker image, build cache và database log tích tụ nhanh. Cho đủ dung lượng và dọn image cũ định kỳ.

Bạn cũng cần quyền root trên VPS và một OS Linux được hỗ trợ (Ubuntu, Debian và các distro phổ thông). Một lưu ý gãy gọn: Coolify cần một VPS vài GB RAM và quyền root để hoạt động đúng.

Cài trong một dòng

Coolify cung cấp một script cài đặt tự lo mọi thứ: kiểm tra hệ thống, cài Docker nếu chưa có, kéo image cần thiết và khởi động platform. Chạy với quyền root:

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

Nếu bạn ngại pipe thẳng script vào shell (một thói quen tốt), hãy curl -o ra file, đọc qua, rồi mới bash chạy. Quá trình mất khoảng 2 tới 5 phút tuỳ tốc độ mạng và việc có phải cài Docker mới hay không. Một lưu ý quan trọng: Docker cài qua snap không được hỗ trợ; nếu máy đã có Docker dạng snap, gỡ nó và để script cài Docker Engine chính thức.

Khi xong, Coolify chạy trên cổng 8000. Mở http://IP-cua-ban:8000, tạo tài khoản admin đầu tiên (ai đăng ký trước làm chủ instance), và bạn đã có một dashboard PaaS đang chạy. Chạy docker ps lúc này sẽ thấy chính các container của Coolify đang hoạt động, bằng chứng trực quan rằng platform này chỉ là Docker được điều phối gọn gàng.

Nối git repo và deploy app đầu tiên

Coolify deploy trực tiếp từ git repo, tích hợp với GitHub, GitLab, Bitbucket và Gitea. Cách sạch nhất là cài một GitHub App cho Coolify: trong dashboard vào Sources, kết nối GitHub, cấp quyền cho các repo cần dùng. Cách này cho Coolify nhận webhook (auto-deploy khi push) và mở preview cho pull request mà không phải dán thủ công token hay khoá SSH.

Sau khi source đã nối, tạo một application mới:

  1. Chọn server đích và repo cần deploy.
  2. Chọn branch, ví dụ main.
  3. Chọn cách build. Coolify tự nhận diện qua Nixpacks cho nhiều framework phổ biến, hoặc bạn trỏ thẳng tới một Dockerfile có sẵn trong repo, hoặc dùng docker-compose.yml cho stack nhiều service.
  4. Khai báo biến môi trường trong tab Environment Variables. Đây là nơi đặt secret, connection string, API key. Coolify tiêm chúng vào container lúc build và runtime.

Bấm Deploy. Coolify clone repo, build image, khởi động container và đưa app ra sau reverse proxy. Mỗi lần bạn push lên branch đã cấu hình, webhook kích hoạt một lần deploy mới tự động, đúng vòng lặp git push quen thuộc của Heroku. Muốn deploy thủ công không cần push, gọi một deploy webhook qua API token:

curl -X POST "https://coolify.domain-cua-ban.com/api/v1/deploy?uuid=APP_UUID" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Deploy database và nối vào app

Điểm mạnh của một PaaS thật sự là database quản lý sẵn. Catalog v4 có sẵn PostgreSQL, MySQL, MariaDB, MongoDB, Redis, ClickHouse, DragonFly và nhiều loại khác, mỗi loại deploy chỉ bằng một cú bấm. Ví dụ tạo PostgreSQL: chọn New Resource, chọn PostgreSQL, chọn phiên bản. Coolify sinh sẵn credential, tạo container với volume bền vững để dữ liệu không mất khi restart, và cấu hình S3 backup định kỳ nếu bạn bật. Kết nối app qua chính connection string Coolify cung cấp trong dashboard, dán vào Environment Variables:

DATABASE_URL=postgres://user:password@ten-service-db:5432/appdb

Điểm tinh tế: trong nội bộ, các container của Coolify nói chuyện với nhau qua mạng Docker riêng bằng tên service, không cần phơi database ra internet. Nghĩa là app kết nối tới database qua hostname nội bộ, còn cổng database không mở ra ngoài. Đó là mặc định an toàn: bạn chỉ nên mở database ra public khi thật sự cần truy cập từ xa, và khi đó phải khoá bằng firewall.

HTTPS tự động và preview environment

Coolify đi kèm Traefik làm reverse proxy, và Traefik lo phần chứng chỉ. Bạn trỏ một domain (hoặc subdomain) vào IP của VPS bằng bản ghi DNS A, gán domain đó cho app, và Traefik tự xin chứng chỉ Let's Encrypt rồi tự động gia hạn. Không cần chỉnh nginx thủ công, không cần cron cho certbot; HTTPS bật gần như tức thì sau khi DNS trỏ đúng.

Tính năng thứ hai đáng giá là preview deployment. Khi đã nối GitHub App, Coolify tự tạo một môi trường riêng cho mỗi pull request, deploy lên subdomain có ID của PR ghép với domain của bạn, chạy song song không đụng production. Reviewer mở đúng link là thấy thay đổi chạy thật kèm HTTPS đầy đủ, thay vì phải tự dựng lại trên máy mình; khi PR merge hoặc đóng thì môi trường preview được dọn đi. Đây chính là tính năng từng khiến các nền tảng managed hấp dẫn, và bạn có nó ngay trên VPS của mình.

Tradeoff so với nền tảng managed

Coolify hấp dẫn, nhưng tự host là một đánh đổi có thật. Hãy nhìn thẳng vào cả hai phía.

Bạn được gì:

  • Chi phí cố định, dễ đoán. Bạn trả tiền VPS, không trả theo dyno hay theo request. Deploy bao nhiêu app tuỳ sức máy.
  • Không vendor lock-in. Mọi thứ là Docker chuẩn; muốn rời đi, mang image và compose file sang chỗ khác.
  • Toàn quyền kiểm soát dữ liệu và cấu hình, hợp với yêu cầu chủ quyền dữ liệu hoặc đặt máy gần người dùng.

Bạn gánh gì:

  • Bạn là đội vận hành. Managed lo OS patch, phần cứng, giám sát. Tự host thì bạn cập nhật kernel, vá lỗ hổng, theo dõi ổ đĩa, xử lý khi container OOM lúc 2 giờ sáng.
  • Không có HA mặc định. Một VPS là một điểm hỏng đơn; VPS reboot là app tắt. Muốn HA phải tự dựng multi-server, phức tạp hơn nhiều.
  • Backup là việc của bạn. Coolify hỗ trợ backup ra S3, nhưng bạn phải bật, kiểm tra và thật sự thử restore. Backup chưa từng restore thành công thì coi như chưa có.
  • Bảo mật thuộc về bạn: firewall, cập nhật kịp thời, không phơi cổng thừa, khoá quyền truy cập dashboard.

Nguyên tắc chọn: nếu thời gian kỹ sư đắt và app cần uptime cực cao với vận hành tối thiểu, managed vẫn đáng tiền. Nếu bạn muốn kiểm soát, chi phí đoán được, và không ngại làm một phần việc sysadmin, Coolify trên VPS cho bạn trải nghiệm PaaS mà không mất quyền sở hữu.

Tóm lược

Coolify biến một VPS có root và vài GB RAM thành PaaS kiểu Heroku: cài một dòng script, điều phối Docker bên dưới, nối git repo để auto-deploy, dựng database one-click với volume bền vững, và cấp HTTPS tự động qua Traefik cùng Let's Encrypt. Preview environment cho mỗi pull request mang lại đúng vòng lặp review mà các nền tảng managed tính phí. Đổi lại, bạn nhận vai trò vận hành: patch, backup, giám sát và một điểm hỏng đơn nếu chỉ chạy một máy. Với mức tối thiểu thực dụng 4 vCPU và 8 GB RAM cho workload thật, Coolify là lựa chọn vững cho ai muốn tốc độ triển khai của PaaS mà vẫn giữ quyền sở hữu hạ tầng. Tài liệu chi tiết có tại coolify.io.