Caddy là một web server hiện đại, dễ sử dụng dành cho Linux. Nó hoạt động bằng cách hợp lý hóa quá trình tạo file cấu hình trang web và chứng chỉ SSL. Bài viết này sẽ hướng dẫn bạn quá trình cài đặt Caddy trên máy chủ Ubuntu Linux và cách sử dụng Caddy để triển khai một trang web đơn giản cũng như SSL reverse proxy.
Mục lục bài viết
Tại sao nên sử dụng Caddy làm web server?
Mặc dù Nginx và Apache là các daemon web server mạnh mẽ nhưng chúng có thể khó sử dụng và phức tạp đối với người dùng mới. Caddy cắt giảm sự phức tạp đó bằng cách cung cấp “Caddyfile”, một flat file duy nhất có cú pháp đơn giản, dễ học ngay cả đối với người mới bắt đầu.
Một điểm hấp dẫn khác của Caddy là nó cung cấp HTTPS cho web server của bạn ngay lập tức. Điều này giúp ích cho những người dùng thấy việc thiết lập SSL cho trang web của họ khó khăn và phức tạp. Vì vậy, Caddy là sự lựa chọn hoàn hảo nếu bạn đang tìm kiếm một web server “không ồn ào” trong Linux, vừa dễ bảo trì vừa dễ sử dụng.
Cài đặt Caddy
Bước đầu tiên trong việc cài đặt Caddy trên Ubuntu Linux là đảm bảo rằng bạn có các công cụ để nhập thông tin và key kho lưu trữ của nó:
sudo apt install curl debian-keyring debian-archive-keyring
Tìm nạp key kho lưu trữ cho Caddy từ trang web của nhà phát triển:
curl -fsSL 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Tải xuống và lưu file kho lưu trữ của dự án Caddy vào thư mục “sources.list.d” trên máy của bạn:
curl -fsSL 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy.list
Load lại kho apt của hệ thống bằng cách chạy lệnh sau:
sudo apt update && sudo apt upgrade
Cài đặt gói Caddy cho hệ thống của bạn bằng apt install:
sudo apt install caddy
Chạy trang web caddie đầu tiên của bạn
Để chạy trang web đầu tiên của bạn, hãy tạo thư mục root của trang web trong thư mục home của bạn:
mkdir ~/my-first-website && cd ~/my-first-website
Tạo file index.html bằng trình soạn thảo văn bản yêu thích của bạn:
nano ./index.html
Dán block code sau vào file HTML mới của bạn:
<!DOCTYPE html>
<html>
<head> <title> Hello World! </title> </head>
<body>
<h1> Hello World! </h1>
<p> Hello MakeTechEasier! </p>
</body>
</html>
Lưu file index.html của bạn, sau đó chạy lệnh sau:
caddy file-server --listen :8080
Xác nhận rằng web server của bạn đang hoạt động bình thường bằng cách điều hướng đến nó bằng trình duyệt của bạn.
Tạo một trang web bằng Caddyfile
Mặc dù công cụ CLI rất tốt để phục vụ các trang web đơn giản, nhưng Caddy cũng cung cấp “Caddyfile” dễ sử dụng cho những thiết lập phức tạp hơn. Để bắt đầu, hãy tạo một Caddyfile mới trong “/etc/caddy” bằng trình soạn thảo văn bản yêu thích của bạn:
sudo rm /etc/caddy/Caddyfile && sudo nano /etc/caddy/Caddyfile
Dán block code sau vào Caddyfile mới của bạn:
your-domain.com {
redir https://www.{host}{uri}
}
www.your-domain.com {
root * /var/www/html
file_server
}
Lưu ý: Bạn cũng có thể host trang web chỉ có mạng LAN bằng Caddyfile thông qua việc thay thế “your-domain.com” bằng “localhost”.
Sao chép file index.html từ thư mục chính vào “/var/www” của hệ thống:
sudo mkdir /var/www/html/
sudo cp ~/my-first-website/index.html /var/www/html
Hãy tới nơi đăng ký DNS của bạn và đảm bảo rằng subdomain www và root của bạn có bản ghi A hoặc AAAA trỏ đến địa chỉ IPv4 và IPv6 của máy.
Lưu ý: Bạn không cần điều chỉnh bất kỳ cài đặt DNS nào cho các trang web chỉ có mạng LAN vì Caddy sẽ tạo chứng chỉ tự ký cho trang web đó.
Kích hoạt service Caddy tích hợp trên máy của bạn:
sudo systemctl enable --now caddy
Kiểm tra xem trang web của bạn có hoạt động bình thường hay không bằng cách điều hướng đến tên miền của bạn.
Tạo SSL Reverse Proxy với Caddy
Giống như Nginx và Apache, bạn cũng có thể sử dụng Caddy làm reverse proxy cho service nội bộ trên máy của mình. Để thực hiện việc này, hãy mở Caddyfile trong hệ thống của bạn:
sudo nano /etc/caddy/Caddyfile
Dán block code sau vào Caddyfile của bạn:
your-domain.com {
reverse_proxy 127.0.0.1:LOCAL-PORT
}
Thay thế “LOCAL-PORT” bằng cổng ứng dụng web của bạn. Trường hợp này sẽ thay thế code bằng 3001 để chuyển hướng tất cả lưu lượng truy cập đến máy chủ Uptime Kuma.
Lưu Caddyfile của bạn, sau đó load lại service Caddy để áp dụng cài đặt mới của bạn:
sudo systemctl reload caddy
Kiểm tra xem reverse proxy của bạn có hoạt động bình thường hay không bằng cách điều hướng đến domain của bạn bằng trình duyệt web.
Triển khai nhiều trang web và service bằng Caddy
Bạn cũng có thể sử dụng cùng một Caddyfile cho cả trang web và proxy trên cùng một máy chủ. Điều này giúp dễ dàng quản lý nhiều service khác nhau mà không làm lộn xộn thư mục cấu hình web server.
Để bắt đầu, hãy truy cập trang Download của Caddy, sau đó nhập “caddy-dns” trên thanh tìm kiếm.
Hãy tìm nhà cung cấp DNS quản lý tên miền của bạn. Trong trường hợp này, ví dụ đang sử dụng DigitalOcean.
Chọn nhà cung cấp DNS, sau đó nhấp vào “Download” ở góc trên bên phải của trang. Thao tác này sẽ tải xuống file nhị phân Caddy tùy chỉnh với mô-đun thích hợp cho nhà cung cấp DNS.
Dừng service Caddy bằng systemctl:
sudo systemctl disable --now caddy.service
Tạo bản sao lưu của file nhị phân Caddy gốc, sau đó sao chép file nhị phân tùy chỉnh vào thư mục “/usr/bin/”.
cp /usr/bin/caddy ~/caddy.bin.bak
sudo rm /usr/bin/caddy
sudo cp ~/Downloads/caddy_linux_amd64_custom /usr/bin/caddy
sudo chmod +x /usr/bin/caddy
Kiểm tra xem file nhị phân Caddy tùy chỉnh có hoạt động bình thường hay không bằng cách kiểm tra phiên bản của nó:
caddy --version
Kích hoạt Caddy SSL cho domain Wildcard
Mở Caddyfile của hệ thống bằng trình soạn thảo văn bản yêu thích:
sudo nano /etc/caddy/Caddyfile
Dán block code sau vào Caddyfile:
*.your-domain.com {
tls {
dns digitalocean API-KEY
# Replace the value of digitalocean with your DNS provider.
}
@www host www.your-domain.com
handle @www {
root * /var/www/html
file_server
}
@subdomain host subdomain.your-domain.com
handle @uptime {
reverse_proxy 127.0.0.1:LOCAL-PORT
}
handle {
abort
}
}
Nhận key API từ nhà cung cấp DNS. Trong DigitalOcean, bạn có thể nhận được điều này bằng cách truy cập bảng điều khiển DigitalOcean, sau đó nhấp vào API trên thanh bên trái của trang.
Nhấp vào Generate New Token, sau đó cung cấp thông tin chi tiết về key API.
Sao chép API secret, sau đó dán nó vào biến “API-KEY” trong Caddyfile.
Tùy chỉnh Caddyfile cho thiết lập cụ thể, sau đó lưu nó.
Đảm bảo rằng tên miền có bản ghi A và AAAA thích hợp cho domian và subdomain.
Khởi động lại daemon Caddy đã bị vô hiệu hóa để áp dụng cài đặt mới:
sudo systemctl enable --now caddy
Kiểm tra xem thiết lập “multi-service” có hoạt động bình thường hay không bằng cách mở cả hai domain trên trình duyệt web.
Học cách triển khai các web service đơn giản và an toàn bằng Caddy chỉ là bước đầu tiên để khám phá thế giới tự host tuyệt vời trong Linux. Tìm hiểu sâu hơn về thế giới này bằng cách tạo email alias server của riêng bạn với SimpleLogin.