❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.

Mặc định Coolify chạy trên http://IP:8000 và các ứng dụng deploy truy cập qua IP + port. Để dùng tên miền đẹp và HTTPS, bạn cần cấu hình DNS và SSL. Bài này hướng dẫn chi tiết cách trỏ domain và cấp SSL tự động trên Coolify.

📖 Bài trước: Phần 3, Giao diện Dashboard

Traefik reverse proxy trên Coolify
Tab Proxy — Traefik tự động route traffic và cấp SSL certificate.

I. Hiểu cách Domain hoạt động trên Coolify

Coolify sử dụng Traefik làm reverse proxy. Khi bạn gán domain cho một resource, Traefik sẽ:

  1. Nhận request từ domain đó (port 80/443)
  2. Route traffic đến đúng container
  3. Tự động cấp SSL certificate qua Let’s Encrypt
  4. Redirect HTTP → HTTPS
User truy cập https://app.example.com
    ↓
Traefik (reverse proxy) — port 443
    ↓ (route theo domain)
Container "my-app" — port 3000 (internal)

ℹ️ Bạn KHÔNG cần cấu hình Nginx, Apache, hay bất kỳ web server nào. Traefik xử lý tất cả, bạn chỉ cần trỏ DNS.

II. Cấu hình DNS

Kiểm tra DNS và SSL certificate
dig kiểm tra DNS, openssl verify SSL certificate từ Let’s Encrypt

1. Domain cho Coolify Dashboard

Đầu tiên, trỏ domain cho chính Coolify dashboard:

  1. Vào DNS provider (Cloudflare, Namecheap, Route53…)
  2. Tạo A record:
    • Name: coolify (hoặc subdomain bạn muốn)
    • Value: IP VPS
    • TTL: Auto
  3. Chờ DNS propagate (thường 1-5 phút)
# Ví dụ DNS record
coolify.example.com    A    103.221.223.142

Sau đó vào Settings trên Coolify → điền domain vào Instance’s Domain → Save.

2. Domain cho ứng dụng

Mỗi ứng dụng/service cần domain riêng. Tạo A record cho từng cái:

# Ví dụ: nhiều apps trên cùng server
blog.example.com       A    103.221.223.142
api.example.com        A    103.221.223.142
n8n.example.com        A    103.221.223.142
monitor.example.com    A    103.221.223.142

💡 Tất cả domain đều trỏ về cùng IP. Traefik sẽ phân biệt chúng dựa trên hostname trong HTTP request và route đến đúng container.

3. Wildcard DNS (nâng cao)

Nếu bạn deploy nhiều apps, thay vì tạo A record cho từng subdomain, dùng wildcard DNS:

# Wildcard — mọi subdomain đều trỏ về server
*.example.com    A    103.221.223.142

Với wildcard, bạn có thể gán bất kỳ subdomain nào cho ứng dụng mà không cần quay lại DNS provider tạo record mới.

⚠️ Wildcard DNS không hỗ trợ trên tất cả DNS providers miễn phí. Cloudflare free plan hỗ trợ wildcard DNS nhưng KHÔNG hỗ trợ wildcard SSL (cần Business plan hoặc tắt proxy mode cho subdomain).

III. SSL Certificate – HTTPS tự động

Let’s Encrypt (mặc định)

Coolify tự động cấp SSL qua Let’s Encrypt khi bạn gán domain cho resource. Quy trình:

  1. Bạn set domain cho ứng dụng (VD: blog.example.com)
  2. Coolify/Traefik tự request certificate từ Let’s Encrypt
  3. Certificate được cấp trong vài giây
  4. Tự động gia hạn trước khi hết hạn (90 ngày)

ℹ️ Không cần thao tác gì thêm, chỉ cần DNS trỏ đúng và port 80/443 mở, SSL sẽ tự động hoạt động.

Yêu cầu để SSL hoạt động

  • Port 80 phải mở: Let’s Encrypt dùng HTTP-01 challenge để verify domain
  • Port 443 phải mở: cho HTTPS traffic
  • DNS đã trỏ đúng: domain phải resolve về IP server Coolify
  • Không dùng Cloudflare proxy (orange cloud) nếu muốn Let’s Encrypt trực tiếp

IV. Sử dụng Cloudflare với Coolify

Cloudflare là DNS provider phổ biến nhất. Có 2 cách dùng với Coolify:

Cách 1: DNS Only (khuyến nghị cho người mới)

  • Tắt proxy (cloud icon → grey/DNS only)
  • Let’s Encrypt cấp SSL trực tiếp
  • Đơn giản, ít config nhất

Cách 2: Cloudflare Proxy (nâng cao)

  • Bật proxy (orange cloud) → traffic đi qua Cloudflare CDN
  • SSL mode: set Full (Strict) trên Cloudflare
  • Ưu điểm: CDN caching, DDoS protection, ẩn IP server thật
  • Nhược điểm: config phức tạp hơn, cần chú ý SSL mode

🚨 Nếu dùng Cloudflare Proxy, phải set SSL mode = Full (Strict). Nếu để Flexible, sẽ gây redirect loop vô hạn (ERR_TOO_MANY_REDIRECTS).

Cách 3: Cloudflare Tunnel (zero trust)

Nếu server ở sau NAT hoặc bạn không muốn mở port 80/443:

  • Cài cloudflared trên server
  • Tạo tunnel trỏ đến Coolify containers
  • Không cần mở port: traffic đi qua tunnel của Cloudflare
  • SSL hoàn toàn do Cloudflare quản lý
Cấu hình domain cho ứng dụng trên Coolify
Trang Configuration — gán domain cho ứng dụng trong phần FQDN.

V. Gán Domain cho Resource trên Coolify

Sau khi DNS đã trỏ, gán domain cho ứng dụng trên Coolify:

  1. Vào resource (app/service/database)
  2. Tìm trường Domains hoặc FQDN
  3. Nhập domain: https://blog.example.com
  4. Click Save
  5. Redeploy resource

💡 Nhập domain với https:// prefix, Coolify sẽ tự biết cần cấp SSL. Có thể gán nhiều domain cho 1 resource, phân tách bằng dấu phẩy.

VI. Xử lý lỗi thường gặp

SSL certificate không cấp được

  • Kiểm tra DNS đã propagate: dig blog.example.com
  • Đảm bảo port 80 mở (Let’s Encrypt cần port 80)
  • Nếu dùng Cloudflare proxy → tắt proxy tạm hoặc chuyển SSL mode = Full (Strict)

ERR_TOO_MANY_REDIRECTS

  • Nguyên nhân: Cloudflare SSL mode = Flexible + Coolify redirect HTTP → HTTPS → loop vô hạn
  • Khắc phục: Set Cloudflare SSL = Full (Strict)

502 Bad Gateway

  • Container chưa start hoặc bị crash → kiểm tra logs
  • Port mapping sai → kiểm tra port trong resource config
  • App chưa ready → đợi vài giây rồi refresh

VII. Tổng kết

Cấu hình domain và SSL trên Coolify rất đơn giản, trỏ DNS, gán domain trong dashboard, và Coolify xử lý phần còn lại. Không cần cài Nginx, không cần chạy Certbot, không cần renew SSL thủ công.

Bài tiếp theo: Deploy ứng dụng đầu tiên lên Coolify, Static site, React/Vue SPA từ GitHub.

Chia sẻ:
Bài viết đã được kiểm duyệt bởi AZDIGI Team

Về tác giả

Thạch Phạm

Thạch Phạm

Đồng sáng lập và Giám đốc điều hành của AZDIGI. Có hơn 15 năm kinh nghiệm trong phổ biến kiến thức liên quan đến WordPress tại thachpham.com, phát triển website và phát triển hệ thống.

Hơn 10 năm phục vụ 80.000+ khách hàng

Bắt đầu dự án web của bạn với AZDIGI