Hướng dẫn cài đặt Caddy Reverse Proxy cực kỳ nhẹ và dễ sử dụng
Caddy Server là gì? Hướng dẫn chi tiết cách cài đặt Caddy bằng Docker và cấu hình Caddy làm Reverse Proxy tự động cấp phát SSL miễn phí cực kỳ dễ dàng.
Trong thế giới quản trị hệ thống và vận hành Website, Nginx và Apache đã quá quen thuộc. Tuy nhiên, nếu bạn đang tìm kiếm một Web Server gọn nhẹ, cấu hình cực kỳ đơn giản và đặc biệt là tự động cấu hình HTTPS (SSL) miễn phí, thì Caddy Server chính là ngôi sao sáng nhất hiện nay.
Trong bài viết này, TechCoBan sẽ chia sẻ với anh em cách cài đặt và sử dụng Caddy làm Reverse Proxy một cách đơn giản và tối ưu hiệu suất nhất bằng Docker.
1. Giới thiệu tổng quan về Caddy Server
Caddy Server là một web server mã nguồn mở, mạnh mẽ được viết hoàn toàn bằng ngôn ngữ Go. Điểm “ăn tiền” lớn nhất của Caddy là khả năng tự động cấp và gia hạn chứng chỉ HTTPS (Let’s Encrypt) mà không cần bạn phải cấu hình phức tạp. Nó sinh ra để làm cho trải nghiệm chạy Web Server trở nên an toàn mặc định (Secure by default).
Được thiết kế để dễ sử dụng và đạt hiệu suất cao, Caddy hiện đang được rất nhiều DevOps lựa chọn làm giải pháp thay thế hoàn hảo cho Nginx và Apache trong các dự án web hiện đại.
Các tính năng nổi bật của Caddy:
- Tùy biến cấu hình cực kỳ dễ hiểu, ngắn gọn thông qua file
Caddyfile. - Hỗ trợ tuỳ biến cấu hình nâng cao qua JSON API.
- Tự động xác thực HTTPS mặc định.
- Đa chức năng: Hoạt động như Web server, Reverse proxy, Load balancer.
- Sẵn sàng chạy trên môi trường Production.
- Hỗ trợ mặc định HTTP/1.1, HTTP/2, và HTTP/3.
- Dễ dàng cài thêm plugin/module nhờ thiết kế kiến trúc mở (Modular architecture).
- Khởi chạy dưới dạng file thực thi nhị phân độc lập, không phụ thuộc thư viện (Zero dependencies).
2. Cài đặt Caddy Server bằng Docker
Cách triển khai sạch sẽ và dễ dàng nhất là sử dụng Docker.
Bước 1: Tạo thư mục lưu trữ cấu hình Caddy
mkdir -p ~/caddy
cd ~/caddy
Bước 2: Tạo file cấu hình compose.yml (hoặc docker-compose.yml)
nano compose.yml
Dán nội dung sau vào file:
version: '3.8'
services:
caddy:
container_name: caddy
image: caddy:alpine
restart: always
ports:
- "80:80"
- "443:443"
networks:
- reverse_proxy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
networks:
reverse_proxy:
external: true
Bước 3: Tạo file Caddyfile
Caddyfile là “linh hồn” của Caddy. Chúng ta sẽ tạo cấu hình cơ bản để test thử. Hãy đổi caddy.kienletv.com thành domain hoặc subdomain thực tế của bạn đã trỏ IP về máy chủ.
nano Caddyfile
Dán nội dung sau vào:
caddy.kienletv.com {
respond / "Hello World from Caddy" 200
tls internal
}
(Lưu ý: tls internal sẽ dùng chứng chỉ tự ký (self-signed) dành cho test nội bộ, nếu trỏ tên miền thật, bạn xoá dòng này đi Caddy sẽ tự đăng ký HTTPS miễn phí với Let’s Encrypt).
Bước 4: Khởi tạo Network và chạy Caddy Server
Vì Caddy sẽ làm cầu nối (Reverse Proxy) tới các Container khác, chúng ta nên tạo một mạng network chung trên Docker tên là reverse_proxy.
docker network create reverse_proxy
docker compose up -d
Sau khi chạy xong, hãy mở trình duyệt và truy cập vào địa chỉ https://caddy.kienletv.com. Nếu bạn nhìn thấy dòng chữ Hello World from Caddy, xin chúc mừng, bạn đã cài đặt thành công!
3. Sử dụng Caddy làm Reverse Proxy thực tế
Bây giờ chúng ta sẽ đi vào các ví dụ thực tế: Dùng Caddy chặn phía trước và phân luồng traffic về các ứng dụng nội bộ.
Ví dụ 1: Triển khai Uptime Kuma
Hãy tạo một thư mục mới và chạy ứng dụng giám sát Uptime Kuma.
mkdir ~/uptime-kuma
cd ~/uptime-kuma
nano compose.yml
Nội dung cấu hình Uptime Kuma:
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./data:/app/data
restart: unless-stopped
networks:
- reverse_proxy
networks:
reverse_proxy:
external: true
Khởi chạy Uptime Kuma:
docker compose up -d
Cấu hình Caddy chỉ hướng về Uptime Kuma:
Bạn mở file Caddyfile ở thư mục ~/caddy lúc nãy, và khai báo thêm cấu hình mới vào cuối file:
kuma.kienletv.com {
reverse_proxy uptime-kuma:3001
}
(Cấu hình này nói cho Caddy biết: Bất kỳ ai truy cập vào tên miền kuma.kienletv.com, hãy chuyển tiếp toàn bộ luồng dữ liệu đó về container tên uptime-kuma ở cổng 3001).
Khởi tạo lại Caddy để nhận cấu hình mới:
cd ~/caddy
docker compose up -d --force-recreate
Bây giờ, mở trình duyệt truy cập vào https://kuma.kienletv.com và tận hưởng thành quả.
Ví dụ 2: Triển khai ứng dụng traefik/whoami
Một ứng dụng trả về thông tin network nhỏ gọn thường dùng để test.
mkdir ~/whoami
cd ~/whoami
nano compose.yml
version: '3.7'
services:
whoami:
image: traefik/whoami
container_name: whoami_test
networks:
- reverse_proxy
networks:
reverse_proxy:
external: true
Tương tự, sửa file Caddyfile thêm đoạn sau:
whoami.kienletv.com {
reverse_proxy whoami_test:80
}
Khởi chạy ứng dụng whoami và khởi động lại Caddy:
# Khởi chạy whoami
docker compose up -d
# Reload lại cấu hình Caddy
cd ~/caddy
docker compose up -d --force-recreate
4. Tổng kết
Như vậy, qua bài viết này TechCoBan đã chia sẻ với anh em cách xây dựng Caddy làm Web Server kiêm Reverse Proxy hoàn chỉnh. Cấu hình của Caddy cực kỳ ngắn gọn so với Nginx, và điểm tuyệt vời nhất là anh em không còn phải đau đầu chạy các lệnh certbot để xin chứng chỉ SSL nữa.
Ngoài Caddy ra, anh em cũng có thể tham khảo thêm một số giải pháp Reverse Proxy mạnh mẽ khác (như Traefik hay Nginx Proxy Manager) trong các bài viết trước của mình.
Nếu muốn tìm hiểu sâu hơn về Caddy, anh em có thể tham khảo các tài liệu chính thức sau:
- Trang Github chính thức của Caddy
- Caddy Docker Proxy Plugin (Tính năng nâng cao giúp tự cấu hình giống Traefik)
- Hướng dẫn toàn tập sử dụng Caddy Web Server (BetterStack)
Bình luận
Bài viết liên quan
Bảo mật Web Services với Traefik Reverse Proxy
Tìm hiểu về Traefik Reverse Proxy - công cụ Load Balancer hiện đại giúp tự động cấu hình và bảo mật các ứng dụng chạy trên Docker và Kubernetes.
Buildah là gì? Hướng dẫn cài đặt và sử dụng Buildah thay thế Docker trong CI/CD
Tìm hiểu Buildah là gì, các ưu điểm vượt trội so với Docker (đặc biệt là không cần Daemon và hỗ trợ Rootless) và hướng dẫn chi tiết cách cài đặt, sử dụng Buildah trong môi trường CI/CD.
Dockhand - Công cụ quản lý Docker giao diện web cho người mới
Dockhand là một công cụ quản lý Docker có giao diện web hiện đại, dễ sử dụng, rất phù hợp cho người mới bắt đầu và các hệ thống homelab.