Trong bài viết này, chúng ta sẽ triển khai một hệ thống n8n hoàn chỉnh trên Ubuntu, bao gồm PostgreSQL, Redis, NGINX, SSL (Certbot) cùng các công cụ giám sát (Netdata, Uptime Kuma) và sao lưu tự động hàng ngày.
Toàn bộ hệ thống được triển khai bằng Docker Compose, giúp dễ dàng mở rộng, bảo trì và đảm bảo tính ổn định cho môi trường n8n.
Cách quy trình này hoạt động:
-
Người dùng truy cập hệ thống qua tên miền HTTPS, được bảo vệ bởi NGINX và chứng chỉ SSL từ Certbot.
-
NGINX hoạt động như reverse proxy, định tuyến truy cập đến n8n, Netdata và Uptime Kuma.
-
Khi có sự kiện hoặc trigger, n8n khởi chạy workflow tương ứng.
-
n8n gửi các tác vụ vào hàng đợi Redis để xử lý bất đồng bộ.
-
Worker của n8n lấy tác vụ từ Redis và thực thi chúng.
-
Kết quả và log được ghi lại trong cơ sở dữ liệu PostgreSQL.
-
Dữ liệu cấu hình và file nội bộ của n8n được lưu trong volume
n8n_data. -
Netdata giám sát hiệu năng hệ thống và container theo thời gian thực.
-
Uptime Kuma kiểm tra trạng thái hoạt động của các dịch vụ và ghi log trong
kuma_data. -
Hệ thống backup tự động sao lưu Postgres và volumes mỗi ngày, đảm bảo khả năng khôi phục dữ liệu khi cần.
mục lục
- Bước 1: Cập nhật hệ thống và cài đặt các thành phần cơ bản:
- Bước 2: Cài đặt Netdata để giám sát hệ thống
- Bước 3: Tạo và cấu hình Docker Compose cho n8n
- Bước 4: Khởi động stack Docker
- Bước 5: Cấu hình NGINX reverse proxy và SSL
- Bước 6: Kích hoạt site và kiểm tra:
- Bước 7: Cấp SSL với Certbot:
- Bước 8: Thiết lập tự gia hạn:
- Bước 9: Truy cập giao diện
- Bước 10: Thiết lập hệ thống sao lưu tự động
- Kết luận
Bước 1: Cập nhật hệ thống và cài đặt các thành phần cơ bản:
sudo apt update && sudo apt install -y docker.io docker-compose nginx certbot python3-certbot-nginx git curl
sudo systemctl enable –now docker
sudo systemctl enable –now nginx


Bước 2: Cài đặt Netdata để giám sát hệ thống
bash <(curl -Ss https://get.netdata.cloud/kickstart.sh)

Bước 3: Tạo và cấu hình Docker Compose cho n8n
nano docker-compose.yml
version: “3.9”
services:
postgres:
image: postgres:15
container_name: postgres
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: datacloudPass
POSTGRES_DB: n8n
ports:
– “5432:5432”
volumes:
– pg_data:/var/lib/postgresql/data
networks:
– datacloud
redis:
image: redis:7
container_name: redis
restart: unless-stopped
networks:
– datacloud
n8n:
image: n8nio/n8n:1.113.3
container_name: n8n
restart: unless-stopped
environment:
– N8N_HOST=n8n.datacloud.vn
– WEBHOOK_URL=https://n8n.datacloud.vn/
– DB_TYPE=postgresdb
– DB_POSTGRESDB_HOST=postgres
– DB_POSTGRESDB_PORT=5432
– DB_POSTGRESDB_DATABASE=n8n
– DB_POSTGRESDB_USER=n8n
– DB_POSTGRESDB_PASSWORD=datacloudPass
– EXECUTIONS_MODE=queue
– QUEUE_BULL_REDIS_HOST=redis
– QUEUE_BULL_REDIS_PORT=6379
ports:
– “5678:5678”
volumes:
– n8n_data:/home/node/.n8n
depends_on:
– postgres
– redis
networks:
– datacloud
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: unless-stopped
ports:
– “3001:3001”
volumes:
– ./kuma-data:/app/data
networks:
– datacloud
volumes:
pg_data:
n8n_data:
networks:
datacloud:
driver: bridge

Bước 4: Khởi động stack Docker
docker compose up -d
docker ps

Bước 5: Cấu hình NGINX reverse proxy và SSL
server {
server_name n8n.datacloud.vn;
# n8n
location / {
proxy_pass http://localhost: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;
}
# Netdata /netdata/
location /netdata/ {
proxy_pass http://localhost:19999/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/n8n.datacloud.vn/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/n8n.datacloud.vn/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = n8n.datacloud.vn) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name n8n.datacloud.vn;
listen 80;
trả về 404; # được quản lý bởi Certbot
}

Bước 6: Kích hoạt site và kiểm tra:
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl tải lại nginx

Bước 7: Cấp SSL với Certbot:
certbot –nginx -d n8n.datacloud.vn

Bước 8: Thiết lập tự gia hạn:
crontab -e
0 2 * * * certbot renew –quiet –post-hook “systemctl khởi động lại nginx”
Bước 9: Truy cập giao diện
https://n8n.datacloud.vn → Giao diện n8n

http://n8n.datacloud.vn:3001 -> Dashboard giám sát uptime


https://n8n.datacloud.vn/netdata → Netdata
sudo cat /var/lib/netdata/netdata_random_session_id


Bước 10: Thiết lập hệ thống sao lưu tự động
Bước 10.1: Tạo thư mục lưu backup:
mkdir -p /root/backups/logs
Bước 10.2: Tải script backup:
wget https://script.datacloudvn.com/n8n/backup_n8n.sh
chmod +x /root/backup_n8n.sh
Bước 10.3: Chạy thử:
bash /root/backup_n8n.sh
ls -lh /root/backups
Bước 10.4: Thiết lập cron chạy hằng ngày 01:00 sáng:
crontab -e
0 1 * * * /root/backup_n8n.sh
Bước 10.5: Kiểm tra cron:
trạng thái systemctl cron
sudo grep CRON /var/log/syslog

Kết luận
Chúng ta vừa hoàn thành triển khai thành công hệ thống n8n với đầy đủ thành phần cần thiết: cơ sở dữ liệu, queue, giám sát, bảo mật SSL và cơ chế sao lưu tự động.
Hệ thống này có thể mở rộng, phục hồi và giám sát dễ dàng phù hợp cho môi trường các dự án workflow tự động hoá thực tế.
Cảm ơn các bạn đã đọc bài viết này !



English