Tạo chứng chỉ SSL cho máy chủ n8n sử dụng nginx

Yêu cầu

– Máy chủ chạy Ubuntu (hoặc hệ điều hành tương tự hỗ trợ Certbot).
– Nginx đã được cài đặt.
– n8n đã được cài đặt và đang chạy.
– Tên miền đã trỏ về địa chỉ IP của máy chủ.
– Cổng 80 và 443 đã được mở.

1. Cài đặt Certbot

Certbot là công cụ để tạo và gia hạn chứng chỉ SSL từ Let’s Encrypt.

a. Cài đặt Certbot trên máy host.
sudo apt update
sudo apt install certbot
b. Kiểm tra cài đặt
certbot --version

Kết quả sẽ hiển thị phiên bản, ví dụ: certbot 2.x.x.

c. Tạo chứng chỉ SSL
sudo certbot certonly --standalone -d yourdomain.com

trong đó –standalone là biến để Certbot sẽ tự chạy một web server nhỏ để xác minh tên miền.

-d yourdomain.com là tên miền của bạn.

Certbot sẽ hỏi bạn vài câu (như email để thông báo). Nhập thông tin và chờ vài giây. Sau khi xong, chứng chỉ sẽ được lưu ở /etc/letsencrypt/live/yourdomain.com/.

Sao chép file vào thư mục ./certs

sudo mkdir -p ./certs
sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./certs/
sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./certs/

Khởi động lại Nginx:

docker-compose restart nginx
d. Thiết lập tự động gia hạn

Gia hạn chứng chỉ khi gần hết hạn.
Sao chép chứng chỉ mới vào thư mục ./certs.
Reload Nginx trong Docker để áp dụng chứng chỉ mới.

Tạo file scripts

nano renew_cert.sh

– Dán nội dung sau vào file (lưu ý sửa đổi lại domain cho đúng với do main của bạn).

#!/bin/bash
# Gia hạn chứng chỉ (chỉ khi còn dưới 30 ngày)
certbot renew --quiet

# Sao chép file chứng chỉ mới vào thư mục ./certs
cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./certs/
cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./certs/

# Reload Nginx trong container để dùng chứng chỉ mới
docker-compose exec nginx nginx -s reload

Cấp quyền chạy cho script:

chmod +x renew_cert.sh

Thêm script vào lịch tự động (cron):

sudo crontab -e

– Cuối file, thêm dòng sau để chạy script mỗi ngày lúc 2h sáng

0 2 * * * /full/path/to/renew_cert.sh
e. Kiểm tra xem scripts có hoạt động không?
sudo certbot renew --dry-run

Nếu không có lỗi, bạn sẽ thấy thông báo như “Simulating renewal”.
Chạy thử script

./renew_cert.sh

Nếu không thấy lỗi và Nginx reload thành công, mọi thứ đã ổn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nội dung