Blog

Coolify và Claude Code: Triển khai dự án lên VPS riêng của bạn

Markdown

Cài đặt Coolify, kết nối GitHub, triển khai Next.js, tên miền và HTTPS, MCP, yêu cầu VPS và xử lý sự cố. Giá kỹ thuật tính bằng đô la và các giới hạn ban đầu.

Đọc toàn bộ bài viết

Tài liệu Ailoot — tài liệu tham khảo để làm việc với dịch vụ.

Giới hạn nền tảng và điều khoản thanh toán năm 2026

Điểm chính

Các gói miễn phí vẫn hoạt động cho đến khi bạn lần đầu vượt quá giới hạn; sau đó cần có thẻ quốc tế. Heroku đã đóng gói miễn phí cho tất cả mọi người vào năm 2022 và chuyển sang chế độ duy trì vào tháng 2 năm 2026. Với Coolify tự lưu trữ, máy chủ thuộc về bạn; không tính phí theo ghế và không bị khóa vào nhà cung cấp.

Tình huống thường gặp của người làm vibe coding vào năm 2026: bạn xây dựng một MVP trong Cursor hoặc Claude Code chỉ trong một buổi tối, chuyển nó vào kho lưu trữ GitHub, mở vercel.com → kết nối kho lưu trữ → đến màn hình đăng ký gói → nhập thẻ → nhận thông báo Transaction declined.

Đây không phải lỗi hay sự cố tạm thời.

Railway, Render, Heroku — câu chuyện đều như nhau. Heroku thực sự đã đóng gói miễn phí cho tất cả mọi người vào năm 2022, và vào tháng 2 năm 2026, dự án chuyển sang chế độ duy trì — không có tính năng mới và không có hợp đồng Enterprise mới. Với người dùng có thẻ không được hỗ trợ, điều đó có nghĩa là: “cánh cửa đã đóng; hãy đi đường vòng qua một bên trung gian thu hoa hồng 20%.”

Bạn có thể thanh toán qua thẻ Visa ảo ở Kazakhstan hoặc dịch vụ thanh toán doanh nghiệp. Nhưng như vậy sẽ cộng thêm 20% vào giá, thêm 30 phút cho mỗi giao dịch và có nguy cơ tài khoản của bạn bị chặn khi đơn vị xử lý thanh toán phát hiện quốc gia không khớp.

Ví dụ ban đầu gồm ba lần thử — trên Vercel Pro, Railway và Render.

Coolify là gì và nền tảng tự lưu trữ hoạt động như thế nào?

Điểm chính

Coolify là một PaaS mã nguồn mở, có thể tự lưu trữ, và là lựa chọn thay thế trực tiếp cho Heroku, Vercel và Netlify. Có thể cài đặt bằng một lệnh curl duy nhất trên bất kỳ VPS nào chạy Ubuntu. Bên dưới, nền tảng dùng Docker + Traefik làm reverse proxy và Let's Encrypt cho HTTPS. Nền tảng hỗ trợ tích hợp GitHub, webhook để triển khai tự động, sao lưu S3 và hơn 280 dịch vụ triển khai chỉ bằng một cú nhấp (PostgreSQL, Redis, MinIO). Phiên bản tự lưu trữ miễn phí vĩnh viễn, không giới hạn. Coolify có 55,800 sao trên GitHub và giấy phép Apache-2.0.

Coolify là dự án mã nguồn mở được xây dựng bằng Laravel + Docker, biến bất kỳ VPS trống nào thành nền tảng triển khai ứng dụng. Cài Coolify một lần, sau đó thực hiện mọi việc qua giao diện web: kết nối GitHub, chọn kho lưu trữ rồi nhấp Deploy.

Tài liệu chính thức mô tả ngắn gọn và chính xác:

Coolify là lựa chọn thay thế mã nguồn mở và có thể tự lưu trữ cho Heroku / Netlify / Vercel, v.v.

— README GitHub của Coolify, https://github.com/coollabsio/coolify

Bên dưới, Coolify gồm bốn phần:

  1. Giao diện web được xây dựng bằng Laravel 12 + Livewire 3 + Tailwind v4 — bảng điều khiển để quản lý ứng dụng.
  2. Docker + Docker Compose — mỗi ứng dụng chạy trong một container, tách biệt với các ứng dụng khác.
  3. Reverse proxy (Traefik hoặc Caddy) — nhận lưu lượng HTTP/HTTPS đến và định tuyến đến các container.
  4. Tích hợp Let's Encrypt — tự động cấp và gia hạn chứng chỉ SSL cho mọi tên miền.

Các tính năng chính giúp Coolify có chức năng tương đương Vercel:

Tính năngVercelCoolify
Tự động triển khai khi git push✅✅ (qua GitHub webhook)
HTTPS miễn phí✅✅ (Let's Encrypt)
Triển khai bản xem trước PR✅✅ (qua GitHub App)
Giao diện biến môi trường✅✅
Sao lưu cơ sở dữ liệu❌ (không có cơ sở dữ liệu riêng)✅ (vào bộ nhớ tương thích S3)
PostgreSQL / Redis / MongoDB$20+/tháng mỗi dịch vụ✅ Một cú nhấp, miễn phí
Tác vụ theo lịch (cron)❌✅ (cú pháp cron)
Tính phí theo ghế$20/ghế/thángKhông có
Khóa nhà cung cấpCao (Edge Functions, ISR)Không (Docker của bạn)
CDN toàn cầu✅❌ (chỉ VPS của bạn)

CDN toàn cầu là thứ duy nhất Coolify không tích hợp sẵn. Đó là câu trả lời thẳng thắn. Nếu dự án của bạn có người dùng trên toàn cầu và cần giảm độ trễ cho người dùng ở Mỹ và châu Âu, hãy đặt Cloudflare phía trước; dịch vụ này miễn phí cho nội dung tĩnh.

Giá: phiên bản tự lưu trữ miễn phí vĩnh viễn, không giới hạn số lượng ứng dụng, máy chủ hay lần triển khai. Coolify Cloud có giá $5/tháng cho 2 máy chủ + $3 cho mỗi máy chủ bổ sung — nhưng các máy chủ vẫn thuộc về bạn; Coolify Cloud chỉ lưu trữ bảng điều khiển.

Bản phát hành mới nhất là v4.1.0 ngày 18 tháng 5 năm 2026. Tính năng mới gồm build pack Railpack ở giai đoạn beta, ghi nhật ký kiểm toán, so sánh cấu hình giữa các lần triển khai và điểm cuối MCP gốc (chỉ đọc). Nguồn: các bản phát hành GitHub.

Nên chọn VPS nào cho Coolify vào năm 2026?

Điểm chính

Coolify yêu cầu tối thiểu 2 vCPU, 2 GB RAM, 30 GB SSD và Ubuntu LTS (20.04, 22.04 hoặc 24.04). Một VPS như vậy có thể chạy thoải mái 3–5 dự án được tạo bằng vibe coding cùng lúc.

Các yêu cầu tối thiểu của Coolify được lấy trực tiếp từ tài liệu chính thức:

Thông sốTối thiểuKhuyến nghị
CPU2 lõi2–4 lõi
RAM2 GB4 GB (có phần dự phòng cho các bản build)
Bộ nhớ30 GB50–80 GB (cho image + cơ sở dữ liệu)
Kiến trúcAMD64 hoặc ARM64 (64-bit)AMD64
Hệ điều hànhUbuntu LTS 20.04 / 22.04 / 24.0422.04 LTS
RootBắt buộcQua khóa SSH, không dùng mật khẩu

Mức tối thiểu — 2 GB RAM — là giới hạn dưới cứng. Với 1 GB, trình cài đặt chạy đến Docker, gặp OOM (hết bộ nhớ) rồi treo. Đừng tiết kiệm RAM.

Nguồn giá: Timeweb Cloud, FirstVDS và Selectel.

Nếu cần nhiều tài nguyên hơn (cơ sở dữ liệu 100 GB, nhiều phiên bản Postgres), hãy chọn Aeza Dedicated.

Không nên chọn:

  • VPS dùng chung với RAM 512 MB–1 GB — thậm chí không đủ cho Coolify. Loại này dành cho trang tĩnh chạy nginx, không phải PaaS.

Bạn không chỉ muốn thiết lập triển khai mà còn muốn xây dựng một cấu hình giúp Claude đáng tin cậy? Coolify là công cụ thực thi, nhưng nếu không có ngữ cảnh có cấu trúc (CLAUDE.md, bộ não thứ hai và kỹ thuật ngữ cảnh), Claude vẫn sẽ bịa ra thông tin trong các tác vụ dài. Cấu hình hoàn chỉnh bao gồm cả ba: Bản sao AI + Bộ não thứ hai + Kỹ thuật ngữ cảnh — sự kết hợp này biến Claude từ “trợ lý hay bịa” thành một công cụ đáng tin cậy.

Cách cài Coolify trong 5 phút

Điểm chính

Cài đặt chỉ cần một lệnh curl lấy từ tài liệu. Khi bắt đầu, giao diện web sẽ xuất hiện trên cổng 8000. Tại đó, bạn tạo tài khoản admin đầu tiên và thấy bảng điều khiển trống. Thời gian thực tế từ một bản Ubuntu mới cài đến khi Coolify chạy là 5–7 phút, trong đó 3–4 phút dành cho apt-get install docker. Tập lệnh tự tải các phần phụ thuộc cần thiết và cấu hình Docker; bạn chỉ cần chờ nó hoàn tất.

Bước 1. Kết nối VPS qua SSH.

Sau khi tạo VPS với nhà cung cấp, địa chỉ IP máy chủ và mật khẩu root sẽ xuất hiện trong email hoặc bảng điều khiển. Kết nối từ máy cục bộ của bạn:

ssh root@1.2.3.4

Nếu nhà cung cấp cấp cho bạn khóa SSH thay vì mật khẩu, hãy kết nối bằng -i path/to/key. Từ đây trở đi, giả sử bạn đang dùng bản Ubuntu 22.04 hoặc 24.04 LTS mới cài.

Bước 2. Chạy lệnh cài đặt Coolify.

Một lệnh từ tài liệu chính thức:

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

Tập lệnh thực hiện ba việc:

  1. Kiểm tra hệ thống (Ubuntu LTS? root? AMD64?)
  2. Cài Docker và Docker Compose nếu chúng chưa được cài
  3. Tải image Coolify (coolify/coolify, coolify/realtime, traefik) và chạy chúng trong nền qua docker-compose

Quá trình này mất 3–5 phút. Bạn sẽ thấy nhật ký apt-get chạy liên tục, sau đó là docker pull. Khi thấy Coolify v4.1.0 is now running, hãy chuyển sang bước 3.

Bước 3. Mở giao diện web.

Mở địa chỉ này trong trình duyệt:

http://1.2.3.4:8000

Coolify sẽ hiển thị trình hướng dẫn thiết lập — một biểu mẫu để tạo người dùng đầu tiên. Nhập email và mật khẩu rồi lưu lại. Người dùng này tự động trở thành admin; hiện chưa cần người dùng nào khác.

Sau khi lưu, bạn sẽ đến bảng điều khiển trống: thanh bên trái có Resources / Projects / Servers / Sources / Notifications / Settings, và lời nhắc ở giữa “Add your first resource.”

Bước 4. Mở cổng trong tường lửa của nhà cung cấp (không phải UFW).

Coolify đã chạy, nhưng từ bên ngoài chỉ truy cập được cổng 8000 (bảng điều khiển). Để người dùng truy cập ứng dụng, bạn cần mở các cổng 80 (HTTP) và 443 (HTTPS):

CổngMục đích
22Truy cập SSH vào máy chủ
80Nhận lưu lượng HTTP, cần thiết để xác thực Let's Encrypt
443Nhận lưu lượng HTTPS của người dùng
8000Bảng điều khiển Coolify (chúng ta sẽ đóng cổng này sau khi cấu hình tên miền riêng cho bảng điều khiển)

Một điểm dễ mắc phải được nêu trong tài liệu chính thức:

Docker sử dụng các quy tắc iptables dựa trên NAT, có thể bỏ qua những tường lửa Linux truyền thống như UFW.

— Tài liệu Coolify (tường lửa), https://coolify.io/docs/knowledge-base/server/firewall

Điều đó có nghĩa là ngay cả khi bật UFW và đóng mọi cổng, Docker vẫn phơi các container ra ngoài thông qua iptables. UFW vô dụng trong trường hợp này. Giải pháp là mở và đóng cổng trong bảng điều khiển của nhà cung cấp, không phải qua UFW. Với Timeweb / Selectel / Aeza, bạn thực hiện việc này trong mục “Network → Firewall” của bảng điều khiển web.

Bước 5 (không bắt buộc). Gắn bảng điều khiển với tên miền của bạn.

Để truy cập https://coolify.example.com thay vì http://1.2.3.4:8000, hãy tạo bản ghi DNS A coolify.example.com → 1.2.3.4, vào Settings → Instance Settings → Instance Domain trong Coolify, nhập tên miền phụ rồi lưu. Coolify sẽ yêu cầu chứng chỉ Let's Encrypt và một phút sau tải lại bảng điều khiển qua HTTPS.

Sau đó, bạn có thể đóng cổng 8000 trong tường lửa — bảng điều khiển sẽ truy cập được qua HTTPS trên cổng chuẩn 443.

Cách kết nối GitHub: App hay PAT?

Điểm chính

Coolify hỗ trợ hai cách kết nối với GitHub: GitHub App (được khuyến nghị) và Personal Access Token (PAT). Hãy dùng GitHub App: thiết lập bằng trình hướng dẫn mất 5 phút, bản xem trước PR hoạt động và có thể giới hạn chi tiết quyền truy cập ở cấp kho lưu trữ. PAT là lựa chọn lỗi thời dành cho các trường hợp cũ; nó không có triển khai bản xem trước và có nguy cơ cấp quyền truy cập toàn cục vào mọi kho lưu trữ của bạn. Tài liệu chính thức khẳng định thẳng rằng “với 95% người dùng, GitHub App là lựa chọn phù hợp.”

Trong Coolify, vào Sources → + Add → GitHub App. Coolify sẽ hiển thị trình hướng dẫn gồm ba màn hình:

  1. Tên & mô tả — đặt tên cho nguồn (nhập github-main) và thêm mô tả nếu muốn.
  2. Configure on GitHub — một nút đưa bạn đến GitHub.com và tự động mở biểu mẫu tạo GitHub App với các quyền phù hợp.
  3. Confirm — sau khi quay lại từ GitHub, nhấp “Save.”

Ở bước thứ hai, GitHub sẽ yêu cầu bạn xác nhận các quyền Coolify cần:

QuyềnMức độMục đích
ContentsChỉ đọcSao chép kho lưu trữ
Pull RequestsĐọc-ghiTạo triển khai bản xem trước và bình luận trên PR
Email addressesChỉ đọcNhận diện commit
MetadataChỉ đọcLiệt kê kho lưu trữ

Đây là các quyền tối thiểu — GitHub App không thể xem khóa riêng tư của bạn, không thể ghi vào main và không thể truy cập các kho lưu trữ mà bạn chưa chủ động kết nối.

Theo tài liệu chính thức:

Personal Access Token (PAT) là phương pháp cũ; tôi khuyên bạn không nên dùng. Nhược điểm:

  • PAT cấp quyền truy cập toàn cục vào mọi kho lưu trữ của bạn (kể cả kho riêng tư)
  • Bản xem trước PR không hoạt động — tính năng này chỉ dành riêng cho GitHub App
  • Token tồn tại rất lâu (90 ngày, một năm hoặc vô thời hạn) — nếu bị lộ thì sẽ rất tệ

Chỉ dùng PAT nếu bạn làm việc với kho lưu trữ của một tổ chức có chính sách bảo mật cấm GitHub Apps và không có cách nào khác.

Sau khi lưu nguồn trong Coolify, bạn sẽ thấy GitHub App trên bảng điều khiển cùng danh sách các kho lưu trữ đã kết nối. Khi tạo ứng dụng mới, bạn có thể chọn bất kỳ kho nào chỉ bằng một cú nhấp.

Cách triển khai dự án Next.js từ Claude Code trong 6 bước

Điểm chính

Quy trình hoàn chỉnh từ một thiết lập Claude Code trống đến trang web hoạt động: 1) chạy claude trong thư mục trống, mô tả dự án và Claude tạo mã; 2) chạy git init && git remote add (Claude có thể tự làm việc này qua lệnh slash); 3) push lên GitHub; 4) trong Coolify, chọn “+ New Resource → Application” rồi chọn kho lưu trữ; 5) thêm biến môi trường; 6) Deploy. Coolify sẽ nhận diện đây là Next.js, chọn build pack Nixpacks, tạo image Docker trong 3–5 phút và cung cấp tên miền tạm thời theo định dạng xxx, có sẵn HTTPS.

Bước 1. Mô tả dự án cho Claude Code trong một thư mục trống.

mkdir my-vibe-app
cd my-vibe-app
git init
claude

Trong phiên làm việc:

Tạo một dự án Next.js 14 app router:
- trang chủ có danh sách người dùng
- điểm cuối /api/users trả về một mảng lấy từ cơ sở dữ liệu
- Postgres qua Prisma
- Tailwind để tạo kiểu
- .env.example có DATABASE_URL
- README.md có hướng dẫn chạy dự án

Claude sẽ tạo cấu trúc tệp, package.json, prisma/schema.prisma và .env.example. Đồng thời hãy yêu cầu:

Tạo Dockerfile cho các bản build production và một .dockerignore.

Việc này không bắt buộc — Coolify sẽ build bằng Nixpacks ngay cả khi không có Dockerfile. Nhưng Dockerfile giúp bạn kiểm soát quy trình và nhanh hơn với các dự án lớn.

Bước 2. Tạo kho lưu trữ GitHub và push lên đó.

Bạn có thể làm thủ công qua giao diện GitHub + git remote add origin ..., nhưng Claude Code cũng có thể tự làm:

/commit-push-pr Initial Next.js app generated with Claude Code

Hoặc chỉ cần nói: “Commit everything and push it to a new repository my-vibe-app under my account.” Claude sẽ dùng CLI gh để tạo kho lưu trữ riêng tư (hoặc công khai) và thực hiện lần push đầu tiên. Nguồn: lệnh chính thức của Claude Code.

Bước 3. Tạo Application trong Coolify.

Trong bảng điều khiển Coolify, nhấp + New → Application. Một biểu mẫu sẽ mở ra:

  1. Source — chọn github-main (GitHub App bạn đã kết nối ở H2 trước đó)
  2. Repository — chọn my-vibe-app trong danh sách
  3. Branch — main
  4. Build Pack — Coolify sẽ tự động nhận diện. Nếu có Dockerfile, Coolify sẽ dùng dockerfile. Nếu không, Coolify sẽ dùng nixpacks. Bạn có thể ghi đè thủ công.
  5. Domain — tạm thời giữ nguyên giá trị được đề xuất; đây là tên miền tạm và sau này bạn sẽ thay bằng tên miền riêng
  6. Port — mặc định là 3000 cho Next.js

Lưu lại.

Bước 4. Thêm biến môi trường.

Trong ứng dụng vừa tạo, mở thẻ Environment Variables. Thêm từng biến một:

DATABASE_URL=postgresql://user:pass@db-host:5432/mydb
NODE_ENV=production
ANTHROPIC_API_KEY=sk-ant-...

Nếu chưa có cơ sở dữ liệu, hãy tạo ngay trong Coolify: + New → Database → PostgreSQL. Coolify sẽ chạy container Postgres trong 30 giây và cung cấp DATABASE_URL nội bộ theo định dạng postgresql://postgres:pass@postgres-xyz:5432/postgres — hãy đưa giá trị đó vào ứng dụng.

Mọi biến đều được mã hóa trong cơ sở dữ liệu Coolify và không xuất hiện trong nhật ký build.

Bước 5. Nhấp Deploy.

Ở góc trên bên phải có nút Deploy màu xanh. Nhật ký trực tiếp sẽ xuất hiện trong thẻ Logs:

[stage: clone]   Cloning '<repository-url-from-github>'
[stage: build]   Detected Next.js, using Nixpacks
[stage: build]   Installing Node 20, npm 10
[stage: build]   npm install (245s)
[stage: build]   npm run build (87s)
[stage: deploy]  Creating container my-vibe-app-xyz
[stage: deploy]  Container started, health check passed
[stage: proxy]  
[stage: ssl]    Let's Encrypt cert issued

Lần build đầu tiên mất 3–5 phút (tải image nền Node và cài các phần phụ thuộc). Các lần build tiếp theo mất 60–90 giây nhờ Docker lưu bộ nhớ đệm theo lớp.

Khi trạng thái thành Running, chép URL ứng dụng trong trường Domains của Coolify và mở chính URL đó. Dùng nó làm <app-url-from-coolify> dưới; nhãn ngoặc nhọn là chỗ giữ, không phải địa chỉ thật. Trang chủ của bạn sẽ xuất hiện với HTTPS có sẵn. Coolify dùng tên miền tạm để bạn có thể mở trang ngay mà không cần cấu hình DNS riêng.

Bước 6. Kiểm tra mọi thứ hoạt động.

Mở URL bước trước cộng /api/users, như <app-url-from-coolify>/api/users, không lặp dấu slash. Đây là endpoint JSON tạo ở Bước 1; URL gốc ứng dụng là trang chủ. Nếu gặp lỗi 500, bạn sẽ thấy stack trace trong thẻ Logs. Vấn đề thường gặp nhất ở lần triển khai đầu tiên là DATABASE_URL trỏ đến cơ sở dữ liệu không tồn tại. Hãy sửa bằng cách tạo một phiên bản PostgreSQL trong Coolify (xem bước 4 ở trên) rồi thay DATABASE_URL.

15 phút, tính từ lúc bạn đặt mua VPS. Trong ví dụ ban đầu, quy trình này mất 12–18 phút trên máy chủ mới.

Cách cấu hình tên miền tùy chỉnh và HTTPS

Điểm chính

Kết nối tên miền tùy chỉnh qua 3 bước: tạo bản ghi DNS A trỏ đến IP máy chủ, nhập tên miền của bạn trong mục Configuration của Coolify thay cho tên miền tạm, bật Automatic HTTPS rồi nhấp Redeploy. Let's Encrypt sẽ tự động cấp chứng chỉ SSL sau 2–3 phút kể từ khi DNS được cập nhật (thường mất 5–30 phút). Yêu cầu quan trọng là DNS phải phân giải được trước khi bạn nhấp Redeploy; nếu không, xác thực Let's Encrypt sẽ thất bại và bạn phải đợi 12 phút mới thử lại được.

Bước 1. Tạo bản ghi DNS A trong bảng điều khiển của nhà đăng ký tên miền.

Các ví dụ ban đầu dùng tên miền lưu trữ tại Reg.ru, Beget hoặc Timeweb. Quy trình giống nhau:

Loại bản ghiTênGiá trị
Aapp (hoặc @ cho tên miền gốc)1.2.3.4 (IP máy chủ)

Lưu lại, mở bảng điều khiển rồi kiểm tra:

dig app.example.com +short
# Kết quả cần trả về 1.2.3.4

Nếu không có kết quả hoặc trả về IP khác, DNS chưa được cập nhật. Hãy đợi 5–30 phút.

Bước 2. Nhập tên miền vào Coolify.

Trong ứng dụng, mở thẻ Configuration → General. Trong trường Domains, thay URL tạm chép từ Coolify bằng https://app.example.com với tên miền thật bạn đã cấu hình. Bật Automatic HTTPS (thường được bật mặc định).

Lưu lại và nhấp Redeploy.

Bước 3. Chờ chứng chỉ Let's Encrypt.

Nhật ký build sẽ hiển thị:

[stage: ssl]  Requesting Let's Encrypt cert for app.example.com
[stage: ssl]  HTTP challenge sent to /.well-known/acme-challenge/xxx
[stage: ssl]  Validation passed, cert issued
[stage: ssl]  Cert installed, HTTPS enabled

Sau 2–3 phút, trang của bạn sẽ có tại https://app.example.com với biểu tượng ổ khóa màu xanh trên thanh địa chỉ.

Các sự cố có thể xảy ra với Let's Encrypt (3 vấn đề hàng đầu trong hướng dẫn khắc phục sự cố chính thức):

  1. Cổng 80 bị đóng trong tường lửa. Let's Encrypt xác thực bằng thử thách HTTP — dịch vụ gửi yêu cầu đến http://app.example.com/.well-known/acme-challenge/xxx. Không thể xác thực nếu thiếu cổng 80. Hãy mở cổng này trong tường lửa của nhà cung cấp.
  2. Đã bật proxy Cloudflare (đám mây màu cam). Proxy chặn yêu cầu Let's Encrypt và trả về trang giữ chỗ riêng — xác thực thất bại. Giải pháp là chuyển sang “DNS only” (đám mây màu xám) hoặc cấu hình thử thách DNS-01 qua API Cloudflare.
  3. DNS chưa được cập nhật. Nếu bạn tạo bản ghi A cách đây 30 giây rồi lập tức nhấp Redeploy, Let's Encrypt sẽ không thấy tên miền. Hãy đợi 5–30 phút để DNS được cập nhật trên các máy chủ.

Giới hạn tốc độ của Let's Encrypt: 5 lần thử thất bại mỗi giờ cho một tên miền, với khả năng thử lại theo nhịp 1 lần mỗi 12 phút. Nếu chạm giới hạn, đừng nhấp Redeploy 10 lần liên tiếp; hãy kiểm tra nhật ký, sửa lỗi rồi thử lại sau 12 phút.

Claude Code quản lý Coolify qua MCP như thế nào?

Điểm chính

Thông qua Model Context Protocol, Claude Code được truy cập trực tiếp API Coolify — bạn có thể nói “triển khai ứng dụng này” để bắt đầu build, kiểm tra trạng thái, đọc nhật ký hoặc cập nhật biến môi trường. Có ba lựa chọn: forsonny/Coolify-MCP-Server (cơ bản, 7 nhóm thao tác), dazeb/coolify-mcp-enhanced (thêm hơn 15 công cụ, có triển khai cơ sở dữ liệu bằng một cú nhấp) và ajmcclary/Coolify-Manager (một Claude Skill được xây dựng xoay quanh CLI chính thức). Từ v4.1.0 (ngày 18 tháng 5 năm 2026), Coolify cung cấp điểm cuối MCP gốc mà không cần máy chủ bên thứ ba — nhưng hiện chỉ hỗ trợ đọc.

Model Context Protocol (MCP) là một tiêu chuẩn của Anthropic cho phép Claude Code giao tiếp với các hệ thống bên ngoài (xem hướng dẫn về máy chủ MCP để biết thêm). Kết nối máy chủ MCP và Claude sẽ nhận được một nhóm công cụ mà nó có thể gọi. Có ba máy chủ Coolify dựng sẵn cùng một tùy chọn gốc.

Tùy chọn 1. forsonny/Coolify-MCP-Server-for-Claude-Code — cơ bản.

Có thể làm gì:

  • Ứng dụng: tạo, khởi chạy, dừng, khởi động lại
  • Dịch vụ: liệt kê, tạo, khởi chạy/dừng/khởi động lại
  • Triển khai: xem các tác vụ đang chạy, lấy theo UUID
  • Nhóm & Thành viên: liệt kê, lấy thông tin
  • Khóa SSH: liệt kê, tạo
  • Biến môi trường: CRUD đầy đủ cho ứng dụng và dịch vụ
  • Thông tin máy chủ: tên miền trên mỗi máy chủ, tình trạng, phiên bản

Cài đặt:

git clone '<OFFICIAL_URL>'
cd Coolify-MCP-Server-for-Claude-Code
npm install
npm run build
# In .env:
#   COOLIFY_BASE_URL=https://coolify.example.com
#   COOLIFY_API_TOKEN=[from Coolify Settings → API Tokens]
npm run setup  # automatically configures Claude Code

Sau đó, bạn có thể nhập nội dung này trong Claude Code:

Hiển thị trạng thái ứng dụng my-vibe-app trong Coolify và 3 lần triển khai mới nhất.

Claude sẽ trả về một bảng.

Tùy chọn 2. dazeb/coolify-mcp-enhanced — nâng cao (được khuyến nghị).

Các tính năng bổ sung so với bộ cơ bản:

  • Triển khai PostgreSQL / Redis / MinIO bằng một cú nhấp qua AI — yêu cầu “thiết lập Postgres cho tôi,” hệ thống sẽ tạo container và trả về DATABASE_URL
  • Giám sát thời gian thực + mức sử dụng tài nguyên — CPU/RAM của từng ứng dụng theo thời gian thực
  • Cập nhật cấu hình env hàng loạt — cập nhật 20 biến bằng một lệnh
  • Hỗ trợ Docker Compose — triển khai ứng dụng nhiều dịch vụ

Cấu hình cho Claude Code (.mcp.json ở thư mục gốc của dự án):

{
  "mcpServers": {
    "coolify-enhanced": {
      "command": "node",
      "args": ["/path/to/coolify-mcp-enhanced/dist/index.js"],
      "env": {
        "COOLIFY_ACCESS_TOKEN": "your-token-here",
        "COOLIFY_BASE_URL": "https://coolify.example.com"
      }
    }
  }
}

Tùy chọn 3. ajmcclary/Coolify-Manager — Claude Skill được xây dựng xoay quanh CLI.

Đây không phải máy chủ MCP mà là Claude Code Skill bao bọc CLI Coolify chính thức. Skill này gồm:

  • Chẩn đoán tình trạng dịch vụ và container
  • Chẩn đoán chứng chỉ SSL
  • Hỗ trợ nhiều phiên bản (nếu bạn có vài máy chủ Coolify)
  • Công thức khắc phục sự cố

Cài đặt: tải skill xuống và đặt vào ~/.claude/skills/coolify-manager/. Claude Code sẽ nhận diện và đề xuất skill này cho các tác vụ phù hợp.

Tùy chọn 4 (mới vào tháng 5 năm 2026). MCP gốc trong Coolify v4.1.0.

Nhật ký thay đổi của v4.1.0 ngày 18 tháng 5 năm 2026 ghi:

Đã thêm hỗ trợ MCP ở cấp phiên bản với các công cụ chỉ đọc dành cho tài nguyên Coolify và API/UI.

Coolify hiện cung cấp điểm cuối MCP riêng — bạn có thể kết nối trực tiếp Claude Code mà không cần máy chủ bên thứ ba. Hiện tại tính năng này chỉ đọc (danh sách ứng dụng, trạng thái, cấu hình), không có thao tác chỉnh sửa. Nhưng như vậy đã đủ cho hầu hết tác vụ như “cho tôi biết về hạ tầng.”

Kết nối qua .mcp.json:

{
  "mcpServers": {
    "coolify-native": {
      "url": "https://coolify.example.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-token>"
      }
    }
  }
}

Hãy chờ MCP gốc có toàn quyền ghi trong v4.2 hoặc v4.3 — nhóm Coolify đã hứa sẽ bổ sung trước cuối năm 2026.

5 sự cố thường gặp trong lần triển khai đầu tiên — và cách tránh

Điểm chính

Các lỗi thường gặp nhất trong lần triển khai đầu tiên là RAM không đủ, cổng 80 bị đóng, proxy Cloudflare làm hỏng xác thực Let's Encrypt, UFW không bảo vệ được Docker và chọn PAT thay vì GitHub App. Tất cả đều được đề cập trong tài liệu chính thức, nhưng người chưa có kinh nghiệm thực tế rất dễ gặp phải. Dưới đây là danh sách kiểm tra 5 điểm dựa trên trải nghiệm ban đầu khi cài Coolify lần đầu.

Sự cố 1: RAM dưới 2 GB — cài đặt thất bại do OOM.

Triệu chứng: curl install.sh chạy đến docker pull coolify/coolify, treo ở 70%, rồi tiến trình bị dừng với Killed (signal 9). Nhật ký dmesg | tail hiển thị Out of memory: Killed process.

Cách khắc phục:

# Create a 4 GB swap file to solve the problem temporarily
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Về lâu dài, hãy nâng cấp lên RAM 4 GB. Coolify hoạt động với swap, nhưng các bản build dự án Next.js lớn có thể thất bại.

Sự cố 2: UFW đã bật nhưng Docker vẫn mở cổng.

Triệu chứng: bạn bật UFW và đóng mọi cổng ngoại trừ 22, nhưng ứng dụng vẫn có thể truy cập từ internet qua một cổng ngẫu nhiên nào đó (chẳng hạn 3000).

Lý do theo tài liệu chính thức:

Coolify chạy trên Docker, sử dụng các quy tắc iptables dựa trên NAT và có thể bỏ qua các tường lửa Linux truyền thống như UFW.

— Tài liệu Coolify (tường lửa), https://coolify.io/docs/knowledge-base/server/firewall

Cách khắc phục: dùng tường lửa trong bảng điều khiển của nhà cung cấp, không dùng UFW. Timeweb / Selectel / Aeza có mục “Firewall” hoặc “Network → Firewall” để cấu hình quy tắc ở cấp mạng ảo — các quy tắc này có hiệu lực trước khi gói tin đến Docker.

Một lựa chọn khác là ufw-docker, một tập lệnh vá UFW để tương thích với Docker. Nhưng cách này phức tạp hơn việc nhấp vài nút trong bảng điều khiển.

Sự cố 3: Proxy Cloudflare (đám mây màu cam) làm hỏng Let's Encrypt.

Triệu chứng: sau khi Redeploy, nhật ký hiển thị Let's Encrypt validation failed - challenge returned 403.

Lý do: Cloudflare chuyển tiếp yêu cầu HTTP của Let's Encrypt và trả về trang riêng thay vì tệp thử thách của bạn.

Cách khắc phục — chọn một trong hai phương án:

  1. Chuyển sang “DNS only” (đám mây màu xám trong Cloudflare). Nhược điểm: bạn mất CDN và khả năng bảo vệ của Cloudflare.
  2. Cấu hình thử thách DNS-01 qua API Cloudflare. Trong Coolify, vào Settings → SSL Configuration, chọn nhà cung cấp Cloudflare rồi nhập token API có quyền Zone:Read và DNS:Edit. Let's Encrypt sẽ xác thực qua bản ghi TXT thay vì HTTP.

Phương án thứ hai phức tạp hơn khi thiết lập nhưng vẫn giữ được proxy Cloudflare.

Sự cố 4: Dùng PAT thay cho GitHub App — bản xem trước PR không hoạt động.

Triệu chứng: bạn kết nối GitHub bằng Personal Access Token; mọi thứ hoạt động nhưng không tạo bản triển khai xem trước cho PR. Bạn mở PR trên GitHub nhưng Coolify không hiển thị gì.

Lý do: bản xem trước PR là tính năng độc quyền của GitHub App. PAT không nhận sự kiện pull_request qua webhook.

Cách khắc phục: kết nối lại GitHub qua App. Sources → Add → GitHub App → hoàn tất trình hướng dẫn. Bạn có thể xóa nguồn PAT cũ.

Sự cố 5: “Coolify == Vercel” không hoàn toàn đúng.

Những việc Coolify không làm được ngay từ đầu:

VercelCoolifyCần làm gì
CDN toàn cầuKhôngĐặt Cloudflare phía trước (miễn phí cho nội dung tĩnh)
Tái tạo tĩnh tăng dầnKhôngrevalidatePath chỉ hoạt động trên máy chủ của bạn
Tối ưu hóa hình ảnhKhôngDùng next/image với loader cục bộ hoặc Cloudflare Images
Tự động mở rộng khi cao điểmKhôngTự mở rộng thủ công; nâng cấp VPS
Edge FunctionsKhôngDùng các tuyến API thông thường

Nếu dự án của bạn là SaaS có lưu lượng cao, người dùng toàn cầu và yêu cầu độ trễ < 100 ms trên toàn thế giới, Coolify không phù hợp; hãy chọn Vercel Enterprise. Nếu bạn đang làm vibe coding với một MVP thử nghiệm trên 100–1,000 người dùng mỗi ngày, Coolify đáp ứng mọi nhu cầu.

Theo một phân tích tự lưu trữ thẳng thắn:

Mốc 15 phút trong tiêu đề hướng dẫn này chỉ thời gian theo quy trình thuận lợi nhất để triển khai dự án đầu tiên. Thiết lập hạ tầng đầy đủ với giám sát, sao lưu và cảnh báo mất một hoặc hai buổi tối. Hãy thực tế với chính mình.

Bạn sẽ tiết kiệm được bao nhiêu trong một năm so với Vercel?

Điểm chính

Có một “chi phí thời gian ẩn” là 5–10 giờ cho lần thiết lập ban đầu và 1–2 giờ mỗi tháng để bảo trì.

Số Vercel dưới là ước tính tình huống tháng 5 năm 2026 của bài, không báo giá hiện tại, mới là một phía so sánh. Coolify tự host không phí giấy phép nhưng VPS, backup, storage, traffic và vận hành vẫn tốn. Lấy báo giá đáp ứng yêu cầu trên; tình huống thiếu số giá VPS, nên không thể tuyên bố tiết kiệm cố định.

Gọi C là tổng hóa đơn hạ tầng tháng của VPS chọn, backup, traffic thêm, monitoring và dashboard trả phí nếu có. Mỗi khoản chỉ tính một lần. r là giá giờ vận hành, cùng một tiền tệ. Ước tính thời gian bài là 5–10 giờ đầu, 1–2 giờ mỗi tháng: 17–34 giờ năm đầu, 12–24 giờ năm sau.

Tình huốngVercel/tháng ước tínhVercel/nămHạ tầng Coolify/thángTCO Coolify năm đầu có côngTiết kiệm năm đầu so Vercel
Một nguyên mẫu, 100,000 lượt/tháng$20 cơ bản + ~$5 traffic = $25$300C12C + (17–34)r$300 − 12C − (17–34)r
Năm dự án một VPS$20 cơ bản + $30 traffic/functions = $50$600C12C + (17–34)r$600 − 12C − (17–34)r
Ba nhà phát triển, năm dự án$60 ghế + $30 traffic = $90$1,080C12C + (17–34)r$1,080 − 12C − (17–34)r

Dùng C riêng mỗi tình huống nếu tải cần server khác. Phân bổ công đầu qua 12 tháng: tương đương tháng năm đầu C + (17–34)r/12. TCO năm sau 12C + (12–24)r. Tính công vận hành tương đương phía Vercel nữa. Tiết kiệm âm nghĩa tự host đắt hơn theo đầu vào bạn. Đừng cộng lại cả lương kỹ sư nếu r đã gồm.

Trước chuyển, điền C từ báo giá thật và kế hoạch backup, chọn r rồi so usage thật một tháng. Thiếu đầu vào đó, bài hỗ trợ mô hình phí, chưa hỗ trợ tuyên bố tiết kiệm đô la.

Lợi ích chính không nằm ở tiền bạc. Khi chuyển sang Coolify, không còn phải “phụ thuộc vào chính sách thanh toán của người khác”. Bạn không còn cần thẻ trung gian ảo với mức hoa hồng 20%.

Coolify không phải là Vercel giá rẻ hơn. Đây là một loại sản phẩm khác: bạn sở hữu hạ tầng, chịu trách nhiệm về nó và tiết kiệm tiền bằng cách chấp nhận sự phức tạp.

Nếu triển khai nguyên mẫu là tác vụ đầu tiên sau khi tạo bằng Claude Code, thì quản lý môi trường (env, bí mật, tác vụ theo lịch, sao lưu) là một phần của kỹ thuật ngữ cảnh. Nếu không có cấu trúc cho việc “mọi thứ nằm ở đâu,” Claude sẽ bị lạc và bạn mất thời gian mỗi lần thay đổi. Cấu hình đầy đủ bao gồm: Bản sao AI (Skills và Subagents được điều chỉnh theo phương pháp của bạn) + Bộ não thứ hai (cơ sở tri thức dự án) + Kỹ thuật ngữ cảnh (Plan Mode, /compact, môi trường thực thi). Đây là 3 trụ cột mà nếu thiếu thì AI sẽ bịa ra thông tin.

Quy trình ngữ cảnh hoàn chỉnh: Bản sao AI + Bộ não thứ hai + Kỹ thuật ngữ cảnh.

Có thêm tài liệu tại Ailoot.

Xem thêm chi tiết

Câu hỏi thường gặp

URL nào phải trả JSON sau triển khai?

Sao chép URL ứng dụng trong Domains của Coolify và mở đường /api/users. URL gốc là trang chủ; /api/users là endpoint JSON quy định trong ví dụ.

Tính tự lưu trữ có tiết kiệm tiền thế nào?

Cộng VPS, sao lưu, lưu trữ, lưu lượng, giám sát và dashboard tùy chọn mỗi tháng thành C. TCO năm đầu là 12C cộng 17–34 giờ theo giá giờ của bạn; so với Vercel năm trong tình huống và tính phí vận hành tương đương hai bên.

Tất cả bài viết