Hướng Dẫn Cài N8N Trên VPS Bằng Docker & PostgreSQL Chi Tiết 2026

Theo dõi Thuevpsgiare.vn trên Google News
Th8 5, 2026

Việc cài n8n trên vps bằng Docker là giải pháp thực tế giúp bạn sở hữu một hệ sinh thái tự động hóa quy trình (workflow automation) độc lập mà không lo ngại về chi phí duy trì đắt đỏ hay giới hạn số lượng tác vụ. Để xây dựng một hệ thống hoạt động ổn định và bảo mật dữ liệu tuyệt đối, việc tự triển khai trên một máy chủ ảo riêng là lựa chọn tối ưu. Nếu bạn đang tìm kiếm một nền tảng máy chủ ảo tin cậy để chạy các tác vụ tự động hóa này, hãy tham khảo dịch vụ của ThueVPSGiaRe.vn nhằm tiết kiệm chi phí đầu tư ban đầu.

1. Tại sao nên tự cài đặt n8n trên máy chủ VPS cá nhân?

n8n là một công cụ kết nối và tự động hóa quy trình làm việc không cần viết nhiều code (low-code workflow automation) vô cùng mạnh mẽ. Việc lựa chọn giải pháp tự lưu trữ (self-hosted) n8n trên máy chủ ảo VPS riêng mang lại nhiều lợi ích vượt trội về mặt chi phí lẫn quyền kiểm soát tài nguyên so với dịch vụ n8n Cloud (bản đám mây).

Dưới đây là bảng so sánh thực tế giữa hai hình thức triển khai giúp bạn dễ dàng đưa ra quyết định phù hợp với nhu cầu vận hành của mình:

Tiêu chí so sánh n8n Cloud (Bản đám mây) n8n Self-hosted (Cài trên VPS)
Chi phí cố định Khá cao, bắt đầu từ khoảng 20 USD/tháng. Tối ưu hơn, chỉ từ 5 – 10 USD/tháng cho chi phí thuê máy chủ ảo.
Giới hạn lượt chạy (Executions) Bị giới hạn nghiêm ngặt theo từng cấp độ gói đăng ký. Không giới hạn số lượng tác vụ, phụ thuộc hoàn toàn vào cấu hình VPS.
Tính bảo mật dữ liệu Dữ liệu và API Keys lưu trên máy chủ của đơn vị cung cấp thứ ba. An toàn tuyệt đối, dữ liệu nằm hoàn toàn trên không gian lưu trữ riêng của bạn.
Khả năng can thiệp hệ thống Hạn chế việc cài thêm các thư viện mở rộng hoặc can thiệp sâu. Toàn quyền cấu hình thêm Python, Node.js hoặc tích hợp các công cụ AI cục bộ.

Bằng cách tự vận hành n8n trên máy chủ riêng, bạn không chỉ kiểm soát tốt hơn dòng chảy thông tin của doanh nghiệp mà còn dễ dàng thử nghiệm các quy trình phức tạp, tích hợp sâu các mô hình ngôn ngữ lớn (LLMs/AI) mà không lo ngại về vấn đề phát sinh chi phí theo lượt gọi API của n8n.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Tối ưu hóa ngân sách vận hành công cụ tự động hóa

Thay vì trả phí định kỳ đắt đỏ cho bản Cloud, việc tự cài đặt n8n trên VPS riêng giúp bạn tiết kiệm đến 90% chi phí. Gói máy chủ ảo của Fast Byte với hiệu năng cao, phần cứng đời mới sẽ là bệ phóng vững chắc cho các workflow của bạn.

Tham khảo VPS giá rẻ

2. Các tài nguyên cần chuẩn bị trước khi cài đặt n8n

Để quá trình cài đặt diễn ra suôn sẻ, tránh gặp phải các lỗi gián đoạn do thiếu hụt tài nguyên hoặc cấu hình mạng, bạn cần chuẩn bị đầy đủ các thành phần kỹ thuật cơ bản sau:

  • Máy chủ ảo VPS sạch: Khuyên dùng hệ điều hành Ubuntu Server 20.04 LTS hoặc 22.04 LTS. Cấu hình tối thiểu để n8n chạy ổn định là 1 vCPU, 1GB RAM và dung lượng ổ cứng từ 20GB SSD trở lên. Nếu quy trình của bạn có liên quan đến việc xử lý dữ liệu lớn hoặc tích hợp AI chuyên sâu, hãy ưu tiên các gói cấu hình từ 2 vCPU và 2GB RAM trở lên để tránh hiện tượng tràn bộ nhớ (Out of Memory).
  • Tên miền riêng (Domain): Bạn cần một tên miền hoặc một subdomain (ví dụ: n8n.yourdomain.com) đã được trỏ về địa chỉ IP public của VPS. Việc này là bắt buộc để hệ thống có thể cấp phát và xác thực chứng chỉ SSL bảo mật.
  • Hệ thống quản lý DNS: Khuyên dùng Cloudflare để quản lý các bản ghi tên miền. Cloudflare hỗ trợ phân giải bản ghi cực nhanh và giúp bạn dễ dàng ẩn địa chỉ IP gốc của máy chủ nếu cần thiết.
  • Công cụ truy cập SSH: Một phần mềm hỗ trợ kết nối SSH chuyên dụng như Termius, MobaXterm, PuTTY hoặc Terminal mặc định trên hệ điều hành macOS/Linux để thao tác với dòng lệnh của máy chủ.

Yêu cầu cấu hình VPS:

Mức độ sử dụng Số lượng workflow Cấu hình VPS khuyến nghị
Học tập, test project Dưới 10 workflow đơn giản 1 vCPU / 1GB RAM / 10GB SSD
Chạy thực tế cho cá nhân 10 – 30 workflow có gọi API 1 vCPU / 2GB RAM / 20GB SSD
Doanh nghiệp nhỏ Hơn 30 workflow, xử lý lượng data lớn 2 vCPU / 4GB RAM / 40GB SSD

3. Quy trình 5 bước cài đặt n8n bằng Docker và PostgreSQL

Mặc định, n8n có thể chạy với cơ sở dữ liệu SQLite tích hợp sẵn. Tuy nhiên, đối với môi trường thực tế, việc sử dụng PostgreSQL làm cơ sở dữ liệu ngoài là bắt buộc để đảm bảo hiệu năng xử lý dữ liệu lớn, tránh tình trạng khóa file (database lock) khi có nhiều luồng tác vụ chạy song song.

Quy trình cài đặt n8n bằng Docker

Dưới đây là hướng dẫn cài đặt chi tiết từng bước.

Bước 3.1: Cấu hình trỏ tên miền về IP máy chủ

Truy cập vào trình quản lý DNS của tên miền của bạn (ví dụ trên Cloudflare). Tiến hành thêm một bản ghi mới với các thông số:

  • Type (Loại bản ghi): A
  • Name (Tên bản ghi): n8n (hoặc tiền tố subdomain mà bạn mong muốn)
  • IPv4 address: Điền địa chỉ IP public của máy chủ VPS của bạn.
  • Proxy status: Chuyển trạng thái đám mây màu vàng sang màu xám (DNS Only) để Certbot có thể xác thực và cấp phát SSL trực tiếp dễ dàng hơn ở các bước sau. Nhấn Save để hoàn tất.

Bước 3.2: Kết nối SSH và cập nhật hệ điều hành

Mở terminal trên máy tính cá nhân của bạn, kết nối vào máy chủ thông qua giao thức SSH bằng tài khoản root và tiến hành làm sạch, cập nhật danh sách các gói phần mềm của hệ thống:

ssh root@your_vps_ip
sudo apt update && sudo apt upgrade -y

Bước 3.3: Cài đặt Docker Engine và Docker Compose

Sử dụng tập lệnh chính thức từ nhà phát triển Docker để tải và cài đặt Docker phiên bản mới nhất lên máy chủ Ubuntu của bạn:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Tiếp tục cài đặt plugin hỗ trợ quản lý container Docker Compose:

sudo apt install docker-compose-plugin -y

Xác thực lại xem cả hai công cụ đã được cài đặt thành công và hiển thị phiên bản hoạt động bình thường chưa bằng lệnh:

docker --version && docker compose version

Bước 3.4: Tạo cấu trúc thư mục và thiết lập Docker Compose

Chúng ta sẽ lưu trữ toàn bộ tệp tin cấu hình và dữ liệu của n8n cũng như PostgreSQL trong thư mục hệ thống /opt/n8n để dễ dàng quản lý và sao lưu về sau:

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

Sao chép nội dung cấu hình Docker Compose chuẩn hóa dưới đây và dán vào trình soạn thảo văn bản Nano:

version: '3.8'

services:
  postgres:
    image: postgres:15-alpine
    container_name: n8n_postgres
    restart: always
    environment:
      - POSTGRES_USER=n8n_user
      - POSTGRES_PASSWORD=ThayTheMatKhauManhCuaBanTaiDay
      - POSTGRES_DB=n8n_database
    volumes:
      - postgres_data:/var/lib/postgresql/data

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n_app
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n_database
      - DB_POSTGRESDB_USER=n8n_user
      - DB_POSTGRESDB_PASSWORD=ThayTheMatKhauManhCuaBanTaiDay
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres

volumes:
  postgres_data:
  n8n_data:

* Lưu ý quan trọng: Hãy thay thế giá trị ThayTheMatKhauManhCuaBanTaiDay bằng một mật khẩu phức tạp của riêng bạn và thay đổi giá trị n8n.yourdomain.com thành đúng tên miền phụ bạn đã chuẩn bị sẵn ở bước trước. Sau khi chỉnh sửa xong, nhấn tổ hợp phím Ctrl + O, nhấn Enter để lưu lại và nhấn Ctrl + X để thoát khỏi trình soạn thảo.

Bước 3.5: Khởi động các Container ứng dụng

Sử dụng Docker Compose để tải về các image tài nguyên cần thiết và khởi tạo các container hoạt động dưới nền máy chủ:

docker compose up -d

Kiểm tra trạng thái hoạt động thực tế của các container và quá trình kết nối cơ sở dữ liệu bằng cách theo dõi log hệ thống:

docker compose logs -f n8n

Khi màn hình hiển thị thông báo dạng n8n ready on port 5678, bạn hãy nhấn tổ hợp phím Ctrl + C để thoát giao diện xem log.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Không gian lưu trữ SSD NVMe U.2 tốc độ cao

Hệ thống cơ sở dữ liệu PostgreSQL của n8n đòi hỏi tốc độ đọc ghi đĩa cứng rất cao khi các luồng webhook chạy liên tục. Với ổ cứng SSD NVMe U.2 chuyên dụng từ các gói VPS của Fast Byte, bạn sẽ hạn chế tối đa độ trễ I/O của cơ sở dữ liệu.

Tham khảo VPS giá rẻ

4. Thiết lập Nginx Reverse Proxy và cài đặt SSL Let’s Encrypt

Lúc này, ứng dụng n8n chỉ đang lắng nghe cục bộ tại cổng 5678 trên địa chỉ IP nội bộ của máy chủ (do chúng ta đã cấu hình cổng ở dạng 127.0.0.1:5678:5678 để bảo mật). Để truy cập hệ thống một cách an toàn từ bên ngoài, chúng ta sẽ cài đặt dịch vụ Nginx làm máy chủ chuyển tiếp (Reverse Proxy) và tiến hành cài đặt chứng chỉ bảo mật HTTPS.

Bước 4.1: Cài đặt phần mềm Nginx

Chạy lệnh cài đặt Nginx trực tiếp từ kho lưu trữ mặc định của hệ điều hành Ubuntu:

sudo apt install nginx -y

Bước 4.2: Tạo tệp cấu hình Reverse Proxy cho tên miền

Tạo mới một file cấu hình Virtual Host riêng biệt cho tên miền n8n của bạn:

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

Sao chép đoạn cấu hình Nginx tiêu chuẩn dưới đây và dán vào file. Cấu hình này đã được tối ưu hóa đặc biệt giúp hỗ trợ tốt giao thức Server-Sent Events (SSE) và WebSockets mà giao diện người dùng của n8n yêu cầu để hiển thị log chạy thời gian thực (nhớ thay đổi n8n.yourdomain.com thành tên miền thực tế của bạn).

server {
    listen 80;
    server_name n8n.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        
        # Vo hieu hoa buffering cho cac ket noi thoi gian thuc cua n8n
        proxy_buffering off;
        proxy_cache off;
        chunked_transfer_encoding off;
    }
}

* Lưu ý: Thay đổi n8n.yourdomain.com thành tên miền phụ chính xác của bạn. Lưu file cấu hình bằng cách nhấn Ctrl + O và thoát bằng Ctrl + X.

Kích hoạt cấu hình mới bằng cách tạo liên kết mềm (symlink) sang thư mục hoạt động của Nginx:

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

Kiểm tra xem file cấu hình Nginx mới vừa tạo có gặp bất kỳ lỗi cú pháp nào hay không:

sudo nginx -t

Nếu hệ thống hiển thị thông báo thành công (syntax is ok, test is successful), tiến hành khởi động lại Nginx để cập nhật cấu hình:

sudo systemctl restart nginx

Bước 4.3: Cài đặt SSL Let’s Encrypt bằng Certbot

Để mã hóa toàn bộ dữ liệu truyền tải của hệ thống, chúng ta sẽ sử dụng công cụ Certbot để xin cấp phát chứng chỉ bảo mật SSL miễn phí từ tổ chức Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d n8n.yourdomain.com

Tại bước này, Certbot sẽ yêu cầu bạn cung cấp email nhận thông báo khi chứng chỉ sắp hết hạn và yêu cầu đồng ý các điều khoản dịch vụ. Hãy làm theo hướng dẫn trên màn hình và chọn phương án tự động chuyển hướng toàn bộ lưu lượng HTTP sang HTTPS khi được hỏi.

Khi hoàn tất, bạn có thể truy cập trực tiếp vào địa chỉ https://n8n.yourdomain.com trên trình duyệt để khởi tạo tài khoản quản trị viên (Admin) đầu tiên và bắt đầu cấu hình các luồng tự động hóa công việc.

5. Kinh nghiệm vận hành và tối ưu hóa hệ thống n8n self-hosted

Sau khi hoàn thành cài đặt, việc đảm bảo hệ thống n8n hoạt động liên tục, không bị lỗi treo máy hay đầy ổ cứng là một thử thách tiếp theo đối với các kỹ sư hệ thống. Dưới đây là những kinh nghiệm thực tế cực kỳ quan trọng bạn nên áp dụng ngay:

Xử lý dọn dẹp lịch sử lượt chạy (Execution Data) tự động

Mặc định, n8n sẽ lưu lại toàn bộ log chi tiết của từng bước chạy (execution data) để bạn dễ dàng debug. Tuy nhiên, nếu luồng tác vụ của bạn chạy với tần suất cao (ví dụ: quét dữ liệu mỗi phút hoặc nhận webhook liên tục), cơ sở dữ liệu PostgreSQL sẽ nhanh chóng phình to lên hàng chục GB chỉ sau vài tuần, gây chậm hệ thống và có nguy cơ làm đầy ổ cứng VPS.

Giải pháp là hãy bổ sung các cấu hình giới hạn thời gian lưu trữ lịch sử chạy vào file docker-compose.yml của bạn. Hãy mở lại file cấu hình và bổ sung các biến môi trường sau dưới mục environment của service n8n:

      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
      - EXECUTIONS_DATA_PRUNE_TIMEOUT=3600

* Các biến cấu hình trên có nghĩa là: Bật chế độ tự động dọn dẹp dữ liệu cũ (PRUNE), chỉ giữ lại lịch sử chạy trong vòng tối đa 168 giờ (tương đương 7 ngày) và tiến hành tác vụ quét dọn dẹp định kỳ sau mỗi 3600 giây (1 giờ).

Thực hiện sao lưu (Backup) hệ thống định kỳ

Thư mục /opt/n8n là nơi chứa toàn bộ linh hồn của hệ thống bao gồm file Docker Compose, cấu hình cơ sở dữ liệu và các luồng workflow đã thiết kế. Bạn nên thiết lập các tác vụ tự động nén thư mục này và tải lên các dịch vụ lưu trữ đám mây ngoài (như Google Drive, S3 Storage) hàng ngày để đề phòng trường hợp xảy ra sự cố phần cứng máy chủ đột ngột.

Quy trình nâng cấp phiên bản n8n an toàn

Khi nhà phát triển phát hành các phiên bản sửa lỗi hoặc cập nhật tính năng mới cho n8n, bạn có thể dễ dàng nâng cấp hệ thống của mình thông qua Docker mà hoàn toàn không lo bị mất mát dữ liệu workflow đã có. Hãy di chuyển vào thư mục làm việc và chạy chuỗi lệnh sau:

cd /opt/n8n
docker compose pull
docker compose up -d

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Băng thông không giới hạn – Tự động hóa liên tục

Các workflow kết nối webhook của n8n cần hoạt động ổn định 24/7 mà không gặp gián đoạn. Dịch vụ VPS giá rẻ của Fast Byte đi kèm tài nguyên băng thông không giới hạn và cổng mạng 100 Mbps giúp việc truyền nhận dữ liệu luôn diễn ra trôi chảy.

Tham khảo VPS giá rẻ

Các thắc mắc thường gặp khi cài đặt n8n (FAQ)

Câu hỏi 1: Tôi có thể sử dụng n8n tự lưu trữ cho mục đích thương mại trong doanh nghiệp không?

Có, phiên bản self-hosted của n8n được phát hành dưới giấy phép n8n Faircode. Bạn hoàn toàn có thể cài đặt và sử dụng miễn phí cho các quy trình vận hành tự động hóa nội bộ trong doanh nghiệp của mình mà không cần trả phí bản quyền. Giới hạn duy nhất là bạn không được phép đóng gói n8n lại để kinh doanh dịch vụ dưới dạng một giải pháp SaaS của riêng mình.

Câu hỏi 2: Giao diện n8n của tôi hiển thị thông báo mất kết nối liên tục khi đang làm việc, lỗi do đâu?

Nguyên nhân phổ biến nhất là do cấu hình Nginx Reverse Proxy chưa cho phép truyền tải giao thức WebSockets hoặc Server-Sent Events (SSE). Bạn hãy kiểm tra kỹ lại file cấu hình Nginx của mình xem đã có đủ các dòng khai báo proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade"; cùng với cấu hình tắt buffer (proxy_buffering off;) như hướng dẫn ở Bước 4 hay chưa.

Câu hỏi 3: Tôi có thể chạy các thư viện Python tùy chỉnh trong luồng n8n được không?

Được. Để sử dụng Python trong n8n container, bạn cần tùy biến lại Dockerfile để cài đặt sẵn môi trường Python cùng các thư viện mong muốn trong container n8n, hoặc cấu hình biến môi trường N8N_ENFORCE_SETTINGS_FILE_GENERATION=true cùng với việc thiết lập quyền truy cập cho node Python.

Câu hỏi 4: Làm thế nào để giải quyết lỗi Certbot không thể cấp phát SSL?

Lỗi này xảy ra khi máy chủ Let’s Encrypt không thể xác thực được tên miền trỏ về IP của máy chủ của bạn. Hãy kiểm tra xem bản ghi A trên DNS đã trỏ đúng IP public của VPS hay chưa, và đảm bảo bạn đã tắt chế độ Proxy (đám mây màu vàng) trên Cloudflare về trạng thái DNS Only (màu xám) trước khi tiến hành chạy lệnh Certbot.

Kết luận và định hướng hành động

Việc hoàn thành quy trình cài n8n trên vps bằng Docker kết hợp cơ sở dữ liệu PostgreSQL mở ra cơ hội tự động hóa không giới hạn cho mọi hoạt động kinh doanh và dự án cá nhân của bạn. Chỉ với vài bước thiết lập cơ bản nhưng chuẩn chỉ về mặt kỹ thuật, hệ thống tự động hóa của bạn đã sẵn sàng vận hành liên tục với mức chi phí tối ưu nhất. Hãy bắt tay thiết lập ngay hệ thống của riêng mình và tự do kiến tạo các luồng công việc thông minh mà không bị ràng buộc bởi các nhà cung cấp dịch vụ bên ngoài.

Khởi tạo máy chủ riêng cho n8n ngay hôm nay

Lựa chọn dòng máy chủ ảo cấu hình mạnh mẽ, băng thông không giới hạn để vận hành mượt mà mọi luồng workflow.

Xem bảng giá VPS

Tuyên bố miễn trừ trách nhiệm kỹ thuật: Các hướng dẫn cài đặt và câu lệnh dòng lệnh được biên soạn dựa trên môi trường thử nghiệm tiêu chuẩn của hệ điều hành Ubuntu Server và các phiên bản Docker/Nginx hiện hành. Cấu hình thực tế có thể thay đổi tùy thuộc vào nhà cung cấp hạ tầng máy chủ ảo, phiên bản phần mềm cụ thể hoặc các chính sách an toàn tường lửa riêng của từng đơn vị. Người đọc nên tiến hành kiểm thử cẩn thận và thực hiện sao lưu toàn bộ dữ liệu trước khi triển khai các quy trình này lên môi trường vận hành thực tế.

Để lại một bình luận