Bash script block 03: Cài Caddy Web Sever

Ở phần này chúng ta tiến hành cài Caddy Web Server.

Được chia làm 6 phần, và mỗi phần chạy lệnh đều đi kèm với thông báo.

# Cài Caddy Web Server

echo -e "${GREEN}[1/6] Dang cap nhat he thong...${NC}"
sudo apt update && sudo apt upgrade -y

echo -e "${GREEN}[2/6] Dang cai dat cac goi phu thuoc...${NC}"
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

echo -e "${GREEN}[3/6] Dang them GPG Key va Repository cua Caddy...${NC}"
# Lưu ý: Đã thêm cờ --yes để cho phép ghi đè nếu file đã tồn tại
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor --yes -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list > /dev/null

echo -e "${GREEN}[4/6] Dang thiet lap quyen han cho file key va list...${NC}"
# Cần sudo để chmod các file hệ thống này
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

echo -e "${GREEN}[5/6] Dang cap nhat apt va cai dat Caddy...${NC}"
sudo apt update && sudo apt install caddy -y

echo -e "${GREEN}[6/6] Dang cau hinh tuong lua (UFW)...${NC}"
sudo ufw delete allow ssh || true
sudo ufw limit ssh 
sudo ufw allow 80
sudo ufw allow 443
sudo ufw --force enable

echo -e "${GREEN}>>> Cai dat hoan tat! Kiem tra trang thai Caddy:${NC}"
sudo systemctl status caddy --no-pager
echo -e "${GREEN}>>> Buoc tiep theo: Cai dat PHP & MariaDB.${NC}"
sleep 2

a. Cập nhật hệ thống của OS

sudo apt update && sudo apt upgrade -y

Trong đó:

  • sudo apt update: nó sẽ lấy danh sách các gói phần mềm mới nhất về.
  • sudo apt upgrade: so sánh danh sách các gói mới nhất và các gói OS hiện đang cài rồi tiến hành cài đặt nếu có sự khác biệt.
  • -y: việc cài thường sẽ đi kèm các câu hỏi của chương trình như tôi chuẩn bị cài thêm phần mềm, sẽ tốn ngần này ổ cứng, bạn có muốn cài không? Do you want to continue? [Y/n] và nó chờ quyết định của người dùng. Khi ta chạy script tự động, quá trình này cũng nên tự động, với -y, ta mặc định trở lời có cho các câu hỏi ấy.

b. Cài đặt các gói phụ thuộc

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

Nó cài các công cụ cần thiết để OS có thể cài đặt các gói nằm bên ngoài Ubuntu mặc định (official repositories).

c. Nhập vào địa chỉ để tải Caddy

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor --yes -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list > /dev/null

Phần này là thêm chữ ký số (để đảm bảo nguồn cài là đáng tin cậy/của Caddy chính thức) & thêm địa chỉ tải về cụ thể.

d. Tránh bị lỗi mất quyền

sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

Cái này bổ sung quyền để quá trình cài đặt diễn ra mượt, tránh bị lỗi mất quyền trong quá trình cài.

e. Cài Caddy

sudo apt update && sudo apt install caddy -y

Mọi thứ đã được chuẩn bị, ở đây ta cập nhật danh sách gói, rồi chính thức cài đặt Caddy.

f. Mở tường lửa

sudo ufw delete allow ssh || true
sudo ufw limit ssh 
sudo ufw allow 80
sudo ufw allow 443
sudo ufw --force enable

sudo ufw delete allow ssh || true, dùng để xóa các cài đặt cũ nhằm tránh xung đột hoặc làm hỏng (vô hiệu hóa) các cài đặt sau.

Bật ssh để cho phép dùng cổng 22, nhưng có kèm giới hạn để chống brute-force ở mức cơ bản (cấu hình mặc định thiết lập tối đa không được phép sai quá 6 lần / 30s).

Mở cổng 80 (allow 80) cho truy cập http. Mở cổng 443 cho truy cập https.

--force enable: xác nhận bật (nếu nó chưa bật tường lửa trước đó) và reload.

g. Thông báo cho người dùng cài đặt thành công

echo -e "${GREEN}>>> Cai dat hoan tat! Kiem tra trang thai Caddy:${NC}"
sudo systemctl status caddy --no-pager
echo -e "${GREEN}>>> Buoc tiep theo: Cai dat PHP & MariaDB.${NC}"
sleep 2

Thông báo cho người dùng là đã cài đặt thành công, kèm thông báo bước tiếp theo, dừng màn hình 2s để người dùng đọc thông báo.

Viết một bình luận