Mục lục

Project: Deploy N8N, Docker & SSL

Hướng dẫn thực chiến: Cài đặt Docker, triển khai N8N, cấu hình Nginx Reverse Proxy và bảo mật SSL với Certbot trên Ubuntu 24.04.

Bài viết này sẽ kết hợp toàn bộ kiến thức Linux ở các bài trước để xây dựng một hệ thống hoàn chỉnh. Chúng ta sẽ biến một server Ubuntu trống thành một Automation Server mạnh mẽ chạy N8N thông qua Docker, phục vụ web bằng Nginx và bảo mật bằng SSL (HTTPS).

Bước 0: Cấu hình DNS trên Hostinger

Trước khi cài đặt Server, bạn cần trỏ tên miền về địa chỉ IP của VPS để sau này có thể cài SSL.

Ví dụ: Bạn muốn dùng tên miền n8n.english4it.site trỏ về IP 36.50.26.62.

  1. Đăng nhập vào trang quản trị Hostinger -> DNS Zone Editor.
  2. Tìm tên miền english4it.site.
  3. Thêm bản ghi (Record) mới:
Loại (Type)Tên (Name/Host)Trỏ đến (Points to/Content)TTL
An8n36.50.26.6214400 (hoặc Auto)
  1. Nhấn Add Record. Chờ khoảng 1-5 phút để mạng cập nhật.
  2. Kiểm tra bằng cách mở Terminal trên máy tính và gõ: ping n8n.english4it.site. Nếu thấy phản hồi từ 36.50.26.62 là thành công.

1. Cài đặt Docker & Docker Compose

Ubuntu 24.04 (Noble Numbat) có thể cài Docker dễ dàng từ kho chính chủ.

Bước 1: Setup Repository

bash:
# Xóa version cũ (nếu có)
sudo apt-get remove docker docker-engine docker.io containerd runc

# Cập nhật và cài dependencies
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# Thêm GPG Key của Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Thêm Repo vào sources.list
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Bước 2: Cài Docker Engine

bash:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Bước 3: Cho phép User dùng Docker (Không cần sudo) Thay vì gõ sudo docker, hãy thêm user hiện tại vào nhóm docker.

bash:
sudo usermod -aG docker $USER
newgrp docker # Apply nhóm mới ngay lập tức

Test thử: docker run hello-world (Nếu chạy OK mà không cần sudo là thành công).


2. Triển khai N8N với Docker Compose

Chúng ta sẽ dùng Docker Compose để quản lý N8N, giúp dễ dàng update và config.

(Giả sử bạn đang ở thư mục /home/ubuntu)

Bước 1: Tạo thư mục dự án

bash:
mkdir n8n-docker
cd n8n-docker
mkdir n8n_data # Nơi lưu dữ liệu workflow

Bước 2: Tạo file compose.yaml

bash:
nano compose.yaml

Nội dung file:

yaml:
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678" # Chỉ mở port cho Localhost (Nginx sẽ hứng request)
    environment:
      - N8N_HOST=n8n.english4it.site
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.english4it.site/
      - GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
    volumes:
      - ./n8n_data:/home/node/.n8n

Bước 3: Khởi chạy N8N

bash:
docker compose up -d

Lúc này N8N đã chạy ngầm tại cổng 5678.


3. Cài đặt Nginx (Reverse Proxy)

Chúng ta dùng Nginx làm "người gác cổng", nhận request từ Internet (Port 80/443) và chuyển tiếp vào N8N (Port 5678).

Bước 1: Cài Nginx

bash:
sudo apt update
sudo apt install nginx

Bước 2: Tạo Config cho N8N

bash:
sudo nano /etc/nginx/sites-available/n8n

Nội dung file config (Thay n8n.english4it.site bằng domain thật của bạn):

nginx:
server {
    server_name n8n.english4it.site;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # Cấu hình cho Server Sent Events (SSE) của n8n
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
        
        # Cấu hình WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Bước 3: Kích hoạt Config

bash:
# Tạo shortcut (symlink) sang thư mục sites-enabled
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

# Kiểm tra cú pháp config xem có lỗi không
sudo nginx -t

# (Nếu OK) Reload Nginx
sudo systemctl reload nginx

4. Cài SSL (HTTPS) với Certbot

Hiện tại web chạy HTTP không bảo mật. Dùng Certbot để lấy chứng chỉ SSL miễn phí từ Let's Encrypt.

Bước 1: Cài Certbot

bash:
sudo apt install certbot python3-certbot-nginx

Bước 2: Lấy chứng chỉ

bash:
sudo certbot --nginx -d n8n.english4it.site
  • Chọn (2) Redirect khi được hỏi để tự động chuyển mọi truy cập HTTP sang HTTPS.

Bước 3: Kiểm tra tự động gia hạn Chứng chỉ có hạn 90 ngày. Mặc định gói certbot trên Ubuntu đã có timer tự chạy, nhưng chúng ta nên kiểm tra lại cho chắc chắn.

  1. Test thử (Dry-run):

    bash:
    sudo certbot renew --dry-run

    Nếu báo "Congratulations" là OK.

  2. Kiểm tra Timer hệ thống:

    bash:
    systemctl list-timers | grep certbot

    Nếu bạn thấy certbot.timer đang active thì hệ thống sẽ tự lo liệu.

  3. Thêm Cronjob (Ăn chắc mặc bền - Optional): Nếu muốn kiểm soát tối đa, bạn có thể tự thêm lịch chạy.

    bash:
    sudo crontab -e

    Thêm dòng sau vào cuối file (Kiểm tra vào 3h sáng mỗi ngày):

    bash:
    0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

    (Lệnh này có nghĩa: Thử gia hạn, nếu có chứng chỉ mới thì reload lại Nginx để cập nhật).

Tổng kết

Chúc mừng! Bạn đã xây dựng xong hệ thống chuẩn Professional:

  1. Docker: Chạy ứng dụng cách ly, sạch sẽ.
  2. Systemd: Docker tự quản lý việc service tự khởi động lại.
  3. Nginx: Làm Proxy mượt mà, chịu tải tốt.
  4. SSL: Bảo mật dữ liệu mã hóa.

Truy cập https://n8n.english4it.site và bắt đầu tạo workflow tự động hóa đầu tiên!

Quảng cáo
mdhorizontal