Cách cài n8n trên VPS (Self-host) - hướng dẫn từng bước 2026
n8n là công cụ tự động hóa workflow mạnh, và khi tự host trên VPS riêng, bạn gỡ được giới hạn số workflow/execution của bản Cloud lẫn phí thuê bao tăng dần. Bài này hướng dẫn cài n8n trên VPS theo hai con đường: tự dựng bằng Docker Compose để kiểm soát tối đa, hoặc dùng Cloud Server cài sẵn image để chạy trong vài phút. Kèm theo là cấu hình tối thiểu thực tế, phần bảo mật sau khi cài mà nhiều hướng dẫn bỏ qua, và cách xử lý lỗi hay gặp - viết từ góc nhìn độc lập của Jasmine, không phải trang bán VPS.
Trả lời nhanh
Có hai cách cài n8n trên VPS. Cách thủ công bằng Docker Compose cho bạn toàn quyền cấu hình nhưng mất khoảng 15-30 phút và cần biết chút Linux. Cách nhanh hơn là thuê VPS hoặc Cloud Server đã cài sẵn image n8n (kèm Docker, Nginx và SSL tự động), chỉ mất vài phút là có bản chạy. Dù chọn cách nào, hãy nhớ cấu hình encryption key, bật SSL và siết bảo mật SSH ngay sau khi cài.
Vì sao nên tự host n8n thay vì Zapier hay n8n Cloud
Zapier và n8n Cloud rất tiện để bắt đầu, nhưng khi khối lượng tự động hóa tăng, chúng bộc lộ giới hạn. Tự host trên VPS riêng giải quyết ba điểm:
- Làm chủ dữ liệu: các workflow của bạn thường chạm vào dữ liệu nhạy cảm (email khách, key API, đơn hàng). Self-host giữ dữ liệu trên máy chủ của bạn thay vì đi qua nền tảng bên thứ ba.
- Không giới hạn workflow và execution: bản trả phí theo số tác vụ dễ đội chi phí khi bạn chạy nhiều. Trên VPS riêng, bạn chỉ bị giới hạn bởi tài nguyên máy, không bởi bậc giá.
- Tiết kiệm dài hạn: một VPS tầm trung thường rẻ hơn nhiều so với gói SaaS tự động hóa khi bạn chạy khối lượng lớn, và chi phí cố định giúp dễ dự toán.
Đổi lại, bạn nhận trách nhiệm vận hành: cập nhật, sao lưu và bảo mật. Phần còn lại của bài giúp bạn làm những việc đó gọn gàng.
Chuẩn bị trước khi cài
Chuẩn bị đúng từ đầu giúp bạn tránh phải cài lại. Danh sách tối thiểu:
- Cấu hình VPS: tối thiểu 1-2 vCPU và 2GB RAM để chạy thử; khuyến nghị 2 vCPU / 4GB RAM cho môi trường production chạy nhiều workflow đồng thời. Ưu tiên ổ NVMe vì n8n ghi log và dữ liệu execution khá thường xuyên.
- Hệ điều hành: một bản Linux phổ biến (Ubuntu LTS là lựa chọn an toàn) để dễ tìm tài liệu khi gặp lỗi.
- Tên miền trỏ về IP VPS: cần cho SSL (HTTPS) và cho webhook hoạt động ổn định. Trỏ một bản ghi A từ subdomain (ví dụ n8n.tenmien.com) về IP máy chủ.
- Mở port 80 và 443: để cấp và gia hạn chứng chỉ SSL, và để nhận webhook từ bên ngoài.
Nếu bạn chưa có VPS và muốn thử nghiệm trước khi lên gói cao hơn, tham khảo bài VPS giá rẻ để chọn gói vào phù hợp; còn nếu chưa chắc về khái niệm, xem trước VPS là gì.
Cách 1 - Cài thủ công bằng Docker Compose
Đây là con đường kiểm soát cao nhất. Bạn sẽ dùng Docker Compose để chạy n8n cùng một cơ sở dữ liệu Postgres (khuyến nghị cho production) và một reverse proxy tự lo SSL. Các bước tổng quan:
Bước 1 - Cài Docker và Docker Compose. Cài Docker Engine theo hướng dẫn chính thức cho bản Linux bạn dùng, rồi kiểm tra bằng lệnh phiên bản để chắc chắn Docker và plugin compose đã sẵn sàng.
Bước 2 - Tạo file docker-compose.yml. Một cấu hình tối giản nhưng đủ dùng cho production, với Postgres làm cơ sở dữ liệu và Caddy tự cấp SSL:
services:
n8n:
image: n8nio/n8n:latest
restart: always
environment:
- N8N_HOST=n8n.tenmien.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.tenmien.com/
- N8N_ENCRYPTION_KEY=thay_bang_chuoi_ngau_nhien_dai
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=mat_khau_manh
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=mat_khau_manh
volumes:
- pg_data:/var/lib/postgresql/data
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
depends_on:
- n8n
volumes:
n8n_data:
pg_data:
caddy_data:
Kèm một file Caddyfile ngắn để reverse proxy và tự cấp chứng chỉ Let's Encrypt:
n8n.tenmien.com {
reverse_proxy n8n:5678
}
Bước 3 - Đặt encryption key. Giá trị N8N_ENCRYPTION_KEY dùng để mã hóa credentials trong n8n. Sinh một chuỗi ngẫu nhiên đủ dài và lưu lại an toàn: nếu mất key này, bạn sẽ không giải mã được các credentials đã lưu. Đừng để trống hay dùng chuỗi dễ đoán.
Bước 4 - Khởi động. Chạy lệnh khởi động compose ở chế độ nền, đợi các container lên, rồi mở tên miền qua HTTPS để thiết lập tài khoản quản trị đầu tiên. Nếu trang lên được và có ổ khóa SSL, bạn đã cài xong phần lõi.
Cách này linh hoạt nhưng đòi thời gian và một chút kinh nghiệm xử lý sự cố. Nếu bạn thấy mất công, hãy xem cách 2.
Cách 2 - Dùng Cloud Server cài sẵn image n8n (nhanh hơn)
Một số nhà cung cấp có sẵn image dựng trọn n8n kèm Docker, Nginx và SSL tự động ngay trên Cloud Server, giúp bạn bỏ qua toàn bộ phần cấu hình thủ công ở trên. Theo thông tin iNet công bố, Cloud Server cài sẵn image n8n của họ có thể triển khai trong khoảng 3-5 phút; con số cụ thể và cấu hình bạn nên kiểm tra mới nhất trên inet.vn vì các gói được cập nhật theo thời điểm.
Nên chọn cách này khi bạn muốn tập trung vào việc xây workflow hơn là dựng hạ tầng, hoặc chưa vững phần Docker/SSL và không muốn mất buổi tối để debug cấu hình. Vì n8n cần chạy 24/7 để nhận webhook và chạy lịch, độ ổn định của nhà cung cấp quan trọng. Jasmine đang dùng dịch vụ của iNet và ghi nhận vài điểm thực tế: giá thường rẻ hơn Vietnix nên hợp túi tiền cho dự án automation cá nhân; lúc thanh toán trong portal hay có sẵn mã giảm giá; và uptime theo trải nghiệm quanh mức 99,99%, đủ yên tâm cho tác vụ chạy nền liên tục. Điểm cần lưu ý trung thực: hỗ trợ phản hồi tương đối nhanh nhưng chưa bằng Vietnix, nên nếu bạn thường debug môi trường ngoài giờ và cần hỗ trợ tức thì, hãy cân nhắc. Nếu ưu tiên giá và tốc độ triển khai, bạn có thể thuê Cloud Server cài sẵn n8n của iNet và kiểm tra cấu hình, giá mới nhất trực tiếp.
Bảo mật cơ bản sau khi cài
Đây là phần hai hướng dẫn phổ biến nhất trên mạng thường bỏ qua, nhưng lại quan trọng vì n8n giữ credentials của nhiều dịch vụ. Làm ngay bốn việc sau:
- Dùng SSH key thay mật khẩu: tạo cặp khóa, đưa public key lên VPS, rồi tắt đăng nhập bằng mật khẩu. Cách này gần như loại bỏ rủi ro bị dò mật khẩu SSH.
- Bật firewall: dùng UFW (hoặc công cụ tương đương) chỉ mở các port cần thiết là 22 (SSH), 80 và 443; đóng phần còn lại. Cân nhắc đổi hoặc giới hạn IP truy cập SSH nếu có thể.
- Bật xác thực cho trang quản trị n8n: đặt basic-auth hoặc bật xác thực hai lớp cho editor để người ngoài không mở được giao diện dựng workflow của bạn, kể cả khi biết tên miền.
- Sao lưu định kỳ, có mã hóa: backup cả dữ liệu workflow lẫn credentials, và mã hóa bản sao lưu vì nó chứa thông tin nhạy cảm. Nhớ lưu riêng encryption key ở nơi an toàn để có thể khôi phục.
Nếu cài bằng image dựng sẵn, hãy xác nhận nhà cung cấp đã bật SSL và cập nhật hệ thống, rồi vẫn tự làm phần SSH key và backup vì đó là trách nhiệm của bạn.
Lỗi thường gặp và cách xử lý
Ba nhóm lỗi hay gặp nhất khi tự host n8n:
- Webhook không nhận được dữ liệu: thường do biến
WEBHOOK_URLchưa đúng tên miền HTTPS, hoặc port 443 bị chặn. Kiểm tra lại biến môi trường và firewall, đảm bảo tên miền trỏ đúng IP. - SSL không cấp hoặc không gia hạn được: đa phần vì port 80 bị đóng (Let's Encrypt cần nó để xác thực) hoặc bản ghi DNS chưa trỏ đúng. Mở port 80, đợi DNS lan truyền, rồi thử lại.
- Hết RAM khi workflow nặng: các workflow xử lý file lớn hoặc nhiều nhánh song song dễ ngốn RAM. Nâng cấu hình, tách bớt workflow, hoặc dùng cơ sở dữ liệu Postgres ngoài thay vì SQLite mặc định để giảm tải.
Ai nên self-host, ai nên dùng n8n Cloud
Tự host không dành cho tất cả. Bạn nên self-host nếu chạy nhiều workflow, cần làm chủ dữ liệu, muốn kiểm soát sâu và sẵn sàng lo vận hành cơ bản. Ngược lại, nếu bạn chỉ có vài automation nhẹ, ngại đụng tới máy chủ và muốn được lo hạ tầng giùm, n8n Cloud tiết kiệm công hơn dù chi phí theo tác vụ có thể cao dần. Một hướng đi hợp lý: bắt đầu trên bản Cloud để học công cụ, rồi chuyển sang self-host khi khối lượng đủ lớn để tiết kiệm. Còn nếu bạn vẫn đang cân nhắc chọn nhà cung cấp VPS phù hợp để chạy n8n, quay lại trang Top VPS tốt nhất để so sánh toàn cảnh.
Câu hỏi thường gặp
Cài n8n trên VPS mất bao lâu? Bằng Docker Compose thủ công thường khoảng 15-30 phút nếu bạn quen Linux. Dùng image cài sẵn thì nhanh hơn nhiều, chỉ vài phút, vì phần Docker, Nginx và SSL đã dựng trước.
Cấu hình VPS tối thiểu để chạy n8n là bao nhiêu? Tối thiểu 1-2 vCPU và 2GB RAM cho mức thử nghiệm; khuyến nghị 2 vCPU / 4GB RAM cho production. Ưu tiên ổ NVMe vì n8n ghi dữ liệu execution thường xuyên.
n8n self-host có thực sự không giới hạn workflow không? Bản tự host không tính phí theo số workflow hay execution như bản trả phí, nên giới hạn thực tế đến từ tài nguyên máy chủ (CPU, RAM, ổ) chứ không phải bậc giá.
Có bắt buộc dùng Postgres không, hay SQLite là đủ? SQLite mặc định chạy được cho nhu cầu nhẹ, nhưng với production và nhiều workflow, Postgres ổn định và mở rộng tốt hơn, giảm rủi ro nghẽn dữ liệu.
Nếu mất encryption key thì sao? Bạn sẽ không giải mã được các credentials đã lưu trong n8n, nghĩa là phải nhập lại toàn bộ. Vì vậy hãy lưu key ở nơi an toàn ngay từ đầu và đưa vào bản sao lưu.
Tự host n8n có an toàn không? An toàn nếu bạn siết bảo mật: SSH key thay mật khẩu, firewall chặt, bật xác thực cho editor và sao lưu có mã hóa. Bỏ qua các bước này thì máy chủ chạy dịch vụ tự động hóa dễ thành mục tiêu.