Bỏ qua điều hướng
chuanweb.com
Quay lại tất cả bài viết

Cài n8n trên VPS bằng Docker Compose (kèm sao lưu)

chuanweb.com 7 phút đọc
Cài n8n trên VPS bằng Docker Compose (kèm sao lưu)

Bạn muốn tự chủ hoàn toàn workflow tự động hoá nhưng không biết bắt đầu từ đâu. Cài n8n trên VPS là giải pháp tối ưu: tiết kiệm chi phí, kiểm soát dữ liệu và mở rộng không giới hạn. Sau bài viết này, bạn sẽ có sẵn một hệ thống tự động hoá chạy ổn định với HTTPS và sao lưu tự động mỗi ngày.

Cài n8n trên VPS là gì và khi nào cần

Cài n8n trên VPS có nghĩa là bạn triển khai công cụ tự động hoá workflow này trên máy chủ ảo riêng thay vì dùng dịch vụ đám mây trả phí. Cách làm này phù hợp khi bạn cần xử lý dữ liệu nhạy cảm, tích hợp nhiều hệ thống nội bộ hoặc muốn kiểm soát chi phí vận hành lâu dài. VPS cho phép bạn cài đặt mọi thứ với quyền root, tự do cấu hình tường lửa, tên miền và chứng chỉ SSL theo ý muốn.

Điều cần chuẩn bị

Trước khi bắt đầu cài n8n trên VPS, bạn cần chuẩn bị một máy chủ chạy Ubuntu 22.04 trở lên với ít nhất 1GB RAM và 20GB ổ cứng. Đảm bảo đã mở port 80 và 443 trên tường lửa để sau này gắn HTTPS. Bạn cần một tên miền trỏ tới IP của máy chủ, ví dụ n8n.example.com. Cuối cùng, đăng nhập SSH vào máy chủ với quyền root hoặc user có quyền sudo. Nếu đang tìm kiếm máy chủ phù hợp, bạn có thể tham khảo hosting giá rẻ chạy n8n trên chuanweb.com.

Cài n8n trên VPS: các bước thực hiện

Phần này sẽ hướng dẫn cài n8n trên VPS từng bước bằng Docker Compose. Mỗi bước đều kèm lệnh copy-paste được và giải thích rõ ràng.

Bước 1 — Cài đặt Docker và Docker Compose

Trên Ubuntu, bạn cài đặt Docker bằng cách chạy các lệnh sau. Lệnh đầu tiên cài đặt Docker Engine từ kho chính thức:

curl -fsSL https://get.docker.com | sh

Sau đó thêm user hiện tại vào nhóm docker để không phải gõ sudo mỗi lần khi cài n8n trên VPS:

sudo usermod -aG docker $USER
newgrp docker

Kiểm tra bằng lệnh docker --version — nếu hiển thị phiên bản thì cài đặt thành công. Docker Compose đã được tích hợp sẵn trong Docker Engine hiện đại, bạn kiểm tra bằng docker compose version.

Bước 2 — Tạo docker-compose.yml

Tạo thư mục dự án và file cấu hình cho cài n8n trên VPS:

mkdir -p ~/n8n && cd ~/n8n
nano docker-compose.yml

Dán nội dung sau vào file. Đây là cấu hình tối thiểu nhưng đầy đủ để chạy ổn định:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_PROTOCOL=https
      - N8N_HOST=n8n.example.com
      - TZ=Asia/Ho_Chi_Minh
      - N8N_ENCRYPTION_KEY=your-32-char-secret-key-here
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

Giải thích từng dòng quan trọng trong cấu hình cài n8n trên VPS: N8N_ENCRYPTION_KEY là khoá mã hoá dữ liệu workflow — bạn phải tạo một chuỗi ngẫu nhiên 32 ký tự và giữ bí mật. TZ đặt múi giờ để lịch chạy workflow chính xác. N8N_HOST và N8N_PROTOCOL chuẩn bị cho việc gắn reverse proxy sau này. Volume n8n_data đảm bảo dữ liệu không mất khi container được tạo lại.

Bước 3 — Khởi động và kiểm tra

Chạy lệnh sau để khởi động dịch vụ:

docker compose up -d

Lệnh này tải image về và chạy container ở chế độ nền, khởi động lần đầu cho cài n8n trên VPS. Để xem log và kiểm tra xem ứng dụng khởi động thành công hay chưa:

docker compose logs -f n8n

Bạn sẽ thấy dòng “Editor is now accessible via” khi hoàn tất. Nhấn Ctrl+C để thoát log (container vẫn chạy). Truy cập http://IP-VPS:5678 để mở trình soạn thảo lần đầu và tạo tài khoản admin.

Cách kiểm tra đã làm đúng

Sau khi hoàn thành các bước cài n8n trên VPS, bạn cần xác nhận một số điều sau đây. Thứ nhất, chạy docker compose ps — container phải ở trạng thái “Up”. Thứ hai, truy cập http://IP-VPS:5678 bằng trình duyệt, bạn sẽ thấy màn hình đăng nhập. Thứ ba, tạo một workflow thử nghiệm đơn giản và kích hoạt nó để đảm bảo hệ thống hoạt động. Nếu container bị restart liên tục, kiểm tra log bằng docker compose logs n8n để xem lỗi cụ thể.

Cài n8n trên VPS trong thực tế: 3 tình huống thường gặp

Khi cài n8n trên VPS thật, bạn sẽ gặp một số tình huống điển hình. Dưới đây là ba trường hợp phổ biến nhất và cách xử lý.

Tình huống 1 — Gắn reverse proxy để có HTTPS

Sau khi cài n8n trên VPS xong, bạn cần gắn reverse proxy để truy cập qua HTTPS an toàn. Cấu hình Nginx cơ bản sẽ proxy từ port 443 về localhost:5678. Sau khi cấu hình xong, truy cập https://n8n.example.com — bạn sẽ thấy ổ khóa bảo mật trên trình duyệt. Bạn có thể tham khảo thêm bài Tinh chỉnh hiệu năng Nginx: cache, gzip, HTTP/2 và security headers để tối ưu phần này.

Tình huống 2 — Sao lưu tự động hằng ngày

Sau khi cài n8n trên VPS, dữ liệu workflow là tài sản quan trọng nên bạn cần sao lưu định kỳ. Tạo script sao lưu đơn giản:

#!/bin/bash
DATE=$(date +%Y-%m-%d)
mkdir -p ~/backups/$DATE
docker compose -f ~/n8n/docker-compose.yml exec -T n8n n8n export:workflow --separate --output=/backups/$DATE/workflows
cp -r ~/n8n ~/backups/$DATE/volume

Script này xuất toàn bộ workflow của bản cài n8n trên VPS ra file JSON và sao chép volume dữ liệu. Thêm vào crontab với crontab -e và dòng 0 2 * * * /root/backup-n8n.sh để chạy lúc 2 giờ sáng mỗi ngày.

Tình huống 3 — Khôi phục từ bản sao lưu

Khi cần khôi phục bản cài n8n trên VPS, đầu tiên dừng dịch vụ bằng docker compose -f ~/n8n/docker-compose.yml down. Sau đó thay thế thư mục dữ liệu hiện tại bằng bản sao lưu, rồi khởi động lại. Để nhập lại workflow từ file JSON đã xuất, dùng lệnh:

docker compose exec n8n n8n import:workflow --separate --input=/backups/workflows

Lệnh này đọc các file JSON trong thư mục và nhập vào hệ thống. Kiểm tra bằng cách mở trình soạn thảo và xác nhận workflow đã xuất hiện.

Câu hỏi thường gặp về cài n8n trên VPS

Cần cấu hình VPS tối thiểu như thế nào?

Khi cài n8n trên VPS, bạn cần ít nhất 1GB RAM, 1 vCPU và 20GB ổ cứng cho việc chạy ứng dụng ổn định. Nếu dự định chạy nhiều workflow đồng thời hoặc xử lý dữ liệu lớn, hãy nâng lên 2GB RAM trở lên.

Có thể dùng SQLite thay vì PostgreSQL không?

Có, mặc định hệ thống sử dụng SQLite lưu trong volume. Đối với hầu hết cá nhân và doanh nghiệp nhỏ, SQLite đủ dùng. Khi cần hiệu năng cao hơn hoặc nhiều user đồng thời, bạn mới cần chuyển sang PostgreSQL.

Làm sao cập nhật phiên bản mới nhất?

Chạy docker compose pull để tải image mới nhất, sau đó docker compose up -d để tạo lại container. Dữ liệu trong volume được giữ nguyên. Luôn sao lưu trước khi cập nhật để phòng trường hợp có lỗi.

N8N_ENCRYPTION_KEY quan trọng như thế nào?

Đây là khoá mã hoá dữ liệu workflow. Nếu mất khoá này, bạn sẽ không thể giải mã dữ liệu cũ. Hãy lưu nó ở nơi an toàn và không chia sẻ công khai. Nếu cần tạo khoá mới, dùng lệnh openssl rand -hex 16.

Kết luận

Tóm lại, bạn đã hoàn thành việc triển khai công cụ tự động hoá trên máy chủ ảo riêng. Dưới đây là những điểm chính cần nhớ:

  • Docker Compose giúp quản lý vòng đời ứng dụng dễ dàng, chỉ với vài lệnh cơ bản
  • N8N_ENCRYPTION_KEY bắt buộc phải đặt và giữ bí mật để bảo vệ dữ liệu
  • Reverse proxy với HTTPS là bắt buộc khi triển khai thực tế
  • Sao lưu hằng ngày bằng script tự động giúp bạn an tâm vận hành

Nếu bạn đang tìm hiểu thêm về hạ tầng AI, hãy xem Sách AI Infra mã nguồn mở — 12 chương về hạ tầng AI để nâng cao kiến thức. Để tìm hiểu chi tiết hơn về cấu hình, bạn có thể tham khảo tài liệu chính thức của n8n.

Chia sẻ bài viết này