Caddy web server là một máy chủ web mã nguồn mở miễn phí được viết bằng ngôn ngữ Go. Nó hầu hết được biết đến với chức năng HTTP và cho phép HTPPS theo mặc định. Nó có thể chạy trên hầu hết các hệ thống phổ biến bao gồm Windows, OS X và Linux.
Trong bài viết hướng dẫn này, mình sẽ trình bày các bước về cách cài đặt máy chủ web Caddy trên VPS Ubuntu 18.04.
Tổng quan
Điều đó có nghĩa là bạn có thể chuyển trang web của mình từ windows sang Linux mà không phải lo lắng về các vấn đề tương thích.
Một số tính năng của Caddy web server:
- Nó độc lập do đó không cần biên dịch – vì nó được viết bằng ngôn ngữ Go, nên nó không có phụ thuộc(dependencies) bên ngoài.
- Dễ sử dụng.
- Bảo mật theo mặc định
- Sử dụng các plugin có thể mở rộng các tính năng được cung cấp bởi caddy.
- Nó ghi tất cả các lỗi của nó trong một tệp nhật ký, do đó cho phép bạn khắc phục sự cố nhanh chóng.
- Caddy có thể được sử dụng làm proxy ngược hoặc thư viện trong chương trình Go của bạn.
- Caddy rất nhanh; nó có thể sử dụng nhiều CPU hơn.
Điều kiện tiên quyết
- Máy chủ VPS chạy Ubuntu 18.04
- SSH client
Cách cài đặt và cấu hình máy chủ web Caddy trên VPS Ubuntu 18.04
SSH to VPS server
Đăng nhập vào VPS của bạn thông qua SSH:
$ ssh user@vps_IP
– VD: ssh [email protected]
sau đó nhập password để login
Cập nhật các gói
Cập nhật các gói bằng cách chạy các lệnh sau.
$ sudo apt-get update && apt-get -y upgrade
$ sudo apt-get install curl
Cài đặt Caddy web server
curl https://getcaddy.com | bash -s personal
or
wget -qO- https://getcaddy.com | bash -s personal
Bạn cũng có thể cài đặt Caddy với một số tính năng bổ sung -s, phân cách bởi dấu phẩy.
curl https://getcaddy.com | bash -s realip,expires,upload
Bây giờ chúng ta có thể thêm cap_net_bind_servicecapability
để caddy liên kết với các cổng nhỏ hơn 1024.
sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
Configure Caddy
Bây giờ chúng ta phải thiết lập các thư mục sẽ được sử dụng để lưu trữ các tệp cấu hình caddy và chứng chỉ SSL. Do đó, cần chạy các lệnh sau.
sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy
sudo touch /etc/caddy/Caddyfile
sudo mkdir /var/www
sudo chown www-data: /var/www
Sau đó, chúng ta cần tạo một tập lệnh cấu hình systemd
sudo nano /lib/systemd/system/caddy.service
Sau đó thêm các mục sau vào tệp caddy.service
[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target
[Service]
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
User=www-data
Group=www-data
; Letsencrypt-issued certificates will be written to here in this directory
Environment=CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=full
ReadWriteDirectories=/etc/ssl/caddy
; The following additional security directives only work with systemd v229 or later.
; They further restrict privileges that can be gained by caddy. Uncomment if you want.
; You may need to add capabilities required by the plugins in use.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Lưu tệp bằng cách nhấn phím Ctrl + X rồi ghi đè tệp caddy gốc. Sau đó, để cho phép caddy chạy khi khởi động, hãy thực hiện các lệnh sau:
sudo systemctl enable caddy.service
Hoặc bạn có thể tải xuống tệp systemd caddy.service bằng cách sau:
wget https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service
Sau đó sao chép nó vào thư mục systemd và set permissions cho phù hợp:
sudo cp caddy.service /etc/systemd/system
sudo chow root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
Tải lại daemon và bắt đầu dịch vụ:
sudo systemctl daemon-reload
sudo systemctl start caddy.service
Để giám sát caddy, bạn có thể sử dụng lệnh này sẽ hiển thị cho bạn nhật ký mới nhất từ caddy:
journalctl -f -u caddy.server
Chạy systemctl status
để xem thông tin về trạng thái của Caddy service:
sudo systemctl status caddy
Kiểm tra cài đặt
Chúng ta sẽ tạo ra một trang web nhỏ và một caddyfile. Mình sẽ tạo một domain miễn phí tại dot.tk đặt tên là ccgr.tk, rồi mình trỏ domain về VPS.
sudo mkdir -p /var/www/ccgr.tk
sudo echo "Caddy" > /var/www/ccgr.tk/index.html
sudo chown -R www-data: /var/www/ccgr.tk
Sau đó, để thêm tên miền vào tệp caddy, hãy nhập như sau:
sudo nano /etc/caddy/Caddyfile
Và thêm vào như sau:
ccgr.tk {
root /var/www/ccgr.tk
}
Sau đó lưu tệp, đóng trình chỉnh sửa và khởi động lại caddy.
sudo systemctl restart caddy.service
Truy cập vào domain vừa add và xem kết quả.
Kết luận
Mặc dù caddy chưa được nhiều người sử dụng và biết đến như Apache hay Nginx, nhưng nó mang lại những lợi thế đáng kể so với các máy chủ web khác và rất đáng để thử. Hy vong Caddy web server sẽ phát triển mạnh trong tương lai.
Các bạn có thể tìm thông tin tại đây trang chủ của Caddy https://caddyserver.com