Cách cài đặt và cấu hình Caddy web server trên VPS Ubuntu 18.04

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.

Cách cài đặt và cấu hình máy chủ web Caddy trên VPS Ubuntu 18.04
Cách cài đặt và cấu hình 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 [email protected]_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ả.

Cách cài đặt và cấu hình máy chủ web Caddy trên VPS Ubuntu 18.04
Cách cài đặt và cấu hình máy chủ web Caddy trên VPS Ubuntu 18.04

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

Hướng dẫn deploy project Nuxt JS lên VPS 😍 Giới thiệu PM2 – Trình quản lý các ứng dụng NodeJS Thêm meta tags cho website Nuxt JS Tạo Blog đơn giản với Nuxt JS và WordPress API Cài đặt Git trên Ubuntu 18.04 Hướng dẫn cài đặt Node.js trên VPS Ubuntu 18.04 Sử dụng JavaScript Fetch API với Async/Await Styling Placeholder Text của thẻ input với CSS Cài đặt và Active WebStorm 2019.2.4 với License key 50+ thuộc tính thú vị trong CSS

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.