Hướng dẫn triển khai n8n Workflow Automation với PostgreSQL, Redis, Uptime Kuma và Netdata Giám sát

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)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, NetdataUptime 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ảlog được ghi lại trong cơ sở dữ liệu PostgreSQL.

  • Dữ liệu cấu hìnhfile 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.

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 !

Bé Snake