Cài n8n trên VPS bằng Docker: checklist chạy thật

Chia sẻ bài viết

Mục lục
Cài n8n trên VPS bằng Docker: checklist chạy thật

Trả lời nhanh: Cách cài n8n chuẩn trên VPS: Ubuntu + Docker Compose, một file cấu hình khai báo n8n kèm volume lưu dữ liệu, trỏ tên miền vào VPS và để Caddy (hoặc Cloudflare Tunnel) lo HTTPS. Bản khởi đầu dùng SQLite có sẵn là đủ; workflow dày lên thì chuyển Postgres. Ba việc bắt buộc trước khi giao việc thật cho nó: đặt mật khẩu đăng nhập, cấu hình đúng địa chỉ webhook, và backup tự động thư mục dữ liệu.

Phần lớn hướng dẫn cài n8n dừng ở "chạy được trên localhost", tức là chưa dùng được thật: webhook từ bên ngoài chưa gọi vào được, mất điện là mất cấu hình, ai biết IP cũng vào được giao diện. Bài này đi thẳng đến cấu hình chạy thật: có tên miền HTTPS, dữ liệu bền, có backup, toàn bộ bằng các khối copy-paste.

Tóm tắt nhanh
  • Docker Compose là đường cài chuẩn: nâng cấp, di chuyển máy, backup đều gọn trong một thư mục
  • Webhook cần HTTPS + tên miền: Caddy tự lo chứng chỉ, hoặc Cloudflare Tunnel nếu không muốn mở port
  • SQLite mặc định đủ cho khởi đầu; chuyển Postgres khi workflow nhiều và chạy dày
  • Backup = chép volume dữ liệu (đã gồm SQLite) + export workflow định kỳ; có lịch cập nhật phiên bản

Bước 1: Docker và thư mục dự án

Trên VPS Ubuntu mới (cách lấy máy xem cuối bài):

curl -fsSL https://get.docker.com | sh
mkdir -p ~/n8n && cd ~/n8n

Tạo file docker-compose.yml:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.ten-mien-cua-ban.vn
      - WEBHOOK_URL=https://n8n.ten-mien-cua-ban.vn/
      - GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
      - TZ=Asia/Ho_Chi_Minh
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:

Chạy: docker compose up -d. Cổng 5678 cố ý chỉ mở cho localhost, thế giới bên ngoài sẽ đi qua lớp HTTPS ở bước sau, không ai vào thẳng IP:port được.

Bước 2: Tên miền và HTTPS - hai đường tùy hoàn cảnh

Đường A - Caddy (khuyên dùng khi VPS có IP công khai): trỏ bản ghi A của n8n.ten-mien.vn về IP VPS, cài Caddy và khai một khối:

sudo apt install -y caddy
# /etc/caddy/Caddyfile
n8n.ten-mien.vn {
    reverse_proxy 127.0.0.1:5678
}
sudo systemctl reload caddy

Caddy tự xin và tự gia hạn chứng chỉ, không phải đụng đến certbot.

Đường B - Cloudflare Tunnel (không cần mở port nào): hợp khi bạn muốn giấu hẳn IP. Cài cloudflared, tạo tunnel trỏ vào http://127.0.0.1:5678: HTTPS và tên miền do Cloudflare lo trọn.

Xong bước này, mở https://n8n.ten-mien.vn: lần đầu n8n bắt tạo tài khoản chủ, đặt email và mật khẩu mạnh ngay tại đây.

Bước 3: SQLite hay Postgres - và thời điểm chuyển

Mặc định n8n lưu mọi thứ vào SQLite trong volume, với vài chục workflow chạy nhịp bình thường, SQLite hoàn toàn ổn và ít thứ phải quản. Dấu hiệu đến lúc chuyển Postgres: workflow chạy dày (phút nhiều lần) kèm log execution lớn, giao diện bắt đầu ì khi mở lịch sử chạy, hoặc bạn cần nhiều tiến trình n8n song song. Cách chuyển: thêm service postgres vào compose, khai bốn biến DB_TYPE/DB_POSTGRESDB_* cho n8n, export workflow trước - import lại sau. Ổ NVMe của VPS lúc này phát huy rõ: cả SQLite lẫn Postgres đều fsync liên tục khi ghi execution log, ổ chậm là giao diện khựng theo.

Bước 4: Backup và cập nhật - phần quyết định bạn ngủ ngon

Backup hai lớp:

# lop 1: chep volume du lieu hang dem (cron 2h sang)
docker run --rm -v n8n_n8n_data:/data -v /root/backup:/backup alpine 
  tar czf /backup/n8n-$(date +%F).tar.gz /data
# lop 2: export workflow ra file JSON moi tuan
docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/export-all.json

Giữ 7-14 bản gần nhất, và nếu VPS có backup máy chủ định kỳ (như backup hàng tuần của TND) thì bạn có thêm lớp thứ ba miễn phí.

Cập nhật: n8n ra bản mới liên tục; nhịp khôn ngoan là mỗi 2-4 tuần, sau khi backup:

docker compose pull && docker compose up -d

Checklist trước khi giao việc thật

  • Đăng nhập bắt buộc + mật khẩu mạnh (đã ép ở lần chạy đầu), giao diện automation là chìa khóa vào mọi tài khoản bạn nối vào nó.
  • WEBHOOK_URL đúng https://... sai biến này là mọi nút webhook sinh link nội bộ vô dụng.
  • Test một webhook từ ngoài (curl từ máy khác) trước khi tin.
  • Backup đã chạy thật ít nhất một lần và bạn đã thử mở file backup ra xem.
  • Credentials các dịch vụ nối vào dùng quyền tối thiểu (Sheet chỉ cần sheet đó, không cần cả Drive).

Câu hỏi thường gặp

Cài n8n không dùng Docker được không?

Được (npm hoặc bản desktop) nhưng không khuyên cho máy chạy thật: Docker đóng gói phiên bản, dữ liệu, cập nhật và di chuyển máy gọn hơn hẳn. Bản desktop chỉ nên để học.

n8n tự host có tốn RAM không?

Bản thân n8n nhàn, cỡ vài trăm MB khi chạy bình thường. RAM ăn theo workflow: xử lý file lớn, chạy nhiều execution song song mới cần 4 GB trở lên. Khởi đầu 2 GB là đủ.

Lỡ hỏng VPS thì workflow có mất không?

Không, nếu làm đúng bước backup: volume chứa toàn bộ workflow + credentials (đã mã hóa) + lịch sử. Dựng máy mới, bung tar vào volume, up lại compose là chạy tiếp, kèm file export JSON làm lưới phụ.

Một VPS chạy được cả n8n lẫn Claude Code không?

Rất hợp lý và là combo phổ biến: n8n trực webhook 24/7, Claude Code cày trong tmux khi bạn giao việc. Gói 4-6 GB RAM gánh thoải mái cả hai; chúng chia sẻ ổ NVMe nên chọn ổ tốt lợi đôi đường.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Cả bài này chỉ cần một nguyên liệu: chiếc VPS. TND bàn giao VPS NVMe Ubuntu trong 5 phút, dán khối compose ở trên là n8n của bạn chào đời tối nay. Ổ Enterprise U.2 NVMe RAID 10 gánh execution log fsync liên tục không khựng, kèm backup máy chủ hàng tuần làm lớp bảo hiểm thứ ba cho dữ liệu automation của bạn.
Dùng thử VPS NVMe, bàn giao trong 5 phút

Bài viết liên quan