Bạn có thể chạy nhiều instance n8n trên cùng 1 VPS bằng cách tạo các Docker container độc lập, kết hợp Docker Compose và Reverse Proxy để quản lý tên miền, HTTPS cho từng hệ thống. Mỗi instance sẽ có giao diện quản trị, workflow, tài khoản và dữ liệu riêng. Giải pháp này phù hợp khi cần vận hành nhiều hệ thống tự động hóa cho các dự án, phòng ban hoặc môi trường thử nghiệm mà không muốn thuê thêm VPS. Dưới đây là hướng dẫn triển khai hai chi tiết.
Có thể chạy nhiều instance n8n trên cùng một VPS không?
Hoàn toàn được.
Instance là một bản n8n chạy độc lập, có tài khoản quản trị, workflow, credentials (thông tin đăng nhập dịch vụ bên ngoài) và lịch sử thực thi riêng. Mỗi bản n8n chỉ cần không trùng 3 thứ: cổng lắng nghe, nơi lưu dữ liệu và địa chỉ truy cập. Khi ba yếu tố này được tách riêng, các instance hoạt động độc lập trên cùng một máy chủ.
Docker giải quyết gọn cả ba điều kiện trên: mỗi container có mạng riêng nên tất cả cùng dùng cổng mặc định 5678 bên trong mà không xung đột, mỗi container gắn một volume dữ liệu riêng, còn reverse proxy định tuyến theo tên miền.

Ví dụ, bạn có thể triển khai hai instance trên cùng VPS như sau:
Thành phần Instance n8n thứ nhất Instance n8n thứ hai Tên miền n8n1.example.com n8n2.example.com Docker container n8n-one n8n-two Cổng nội bộ 5678 5678 Dữ liệu n8n_one_data n8n_two_data Tài khoản quản trị Riêng Riêng Workflow và Credentials Độc lập Độc lập
Ngoài ra, để chạy nhiều instance n8n, VPS cũng cần đáp ứng đủ tài nguyên RAM và CPU.
Hướng dẫn chạy nhiều instance n8n trên cùng 1 VPS
Để chạy 2 instance n8n trên cùng một VPS chưa cài đặt gì, bạn chỉ cần cài Docker, Docker Compose, tạo hai container n8n có dữ liệu riêng và sử dụng Caddy để cấu hình tên miền HTTPS cho từng instance.
Hướng dẫn dưới đây dành cho người mới, bắt đầu từ VPS Ubuntu hoàn toàn trống, chưa có Nano, Docker hay n8n. Từng bước đều có câu lệnh cụ thể, cách thực hiện và kiểm tra kết quả.
Mô hình triển khai
Sau khi hoàn thành, VPS sẽ chạy ba container:

Hai instance sẽ có tài khoản quản trị, workflow, credentials và dữ liệu riêng. Mặc dù cùng sử dụng cổng 5678 bên trong Docker, cả hai không xung đột vì không công khai cổng này trực tiếp trên VPS.
Chuẩn bị trước khi thực hiện
| Thành phần | Yêu cầu |
| VPS | Ubuntu Server 24.04 LTS (ví dụ hướng dẫn) |
| CPU | Khuyến nghị từ 2 vCPU cho thử nghiệm nhẹ |
| RAM | Khuyến nghị từ 4 GB cho 2 instance |
| Quyền truy cập | SSH với tài khoản root hoặc tài khoản có sudo |
| Tên miền | Một tên miền có quyền quản lý DNS |
| Phần mềm trên Windows | Xshell hoặc ứng dụng SSH tương đương |
Cấu hình CPU và RAM trên là mức khuyến nghị tham khảo cho thử nghiệm, không phải yêu cầu tối thiểu chính thức. Mức sử dụng thực tế phụ thuộc vào workflow.
Trong ví dụ, chúng ta dùng:
- n8n1.example.com (n8n1.tunghuynhwiki.com) – n8n thứ nhất
- n8n2.example.com (n8n2.tunghuynhwiki.com) – n8n thứ hai.
Cả hai subdomain sẽ trỏ đến cùng một IP của VPS. Bạn cần thay example.com bằng tên miền thực tế.
Bước 1. Đăng nhập VPS bằng Xshell (hoặc một công cụ SSH tương tự)
Sau khi SSH vào VPS, kiểm tra hệ điều hành bằng lệnh:
cat /etc/os-release
Kết quả cần cho thấy VPS đang sử dụng Ubuntu. Nếu VPS chạy Debian, AlmaLinux hoặc hệ điều hành khác, không sử dụng nguyên xi các lệnh cài Docker bên dưới.

Bước 2. Cập nhật VPS và cài đặt Nano
Để cài đặt trình soạn thảo Nano, chạy:
sudo apt update
sudo apt install -y nano curl ca-certificates
Kiểm tra Nano đã được cài đặt:
nano --version

Cách sử dụng Nano cơ bản
Thao tác Phím bấm Mở file nano tenfileLưu file Ctrl + O, sau đó Enter Thoát Nano Ctrl + X Tìm kiếm văn bản Ctrl + W
Khi sử dụng Xshell, bạn có thể dán nội dung bằng lệnh Paste của Xshell hoặc nhấp chuột phải nếu đã cấu hình chuột phải để dán.
Bước 3. Cài đặt Docker và Docker Compose
3.1. Thêm khóa xác thực Docker
Chạy lần lượt các lệnh sau:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
3.2. Thêm kho phần mềm Docker chính thức
Sao chép và dán toàn bộ khối lệnh sau vào Terminal:
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Đây là phương pháp cài đặt qua kho APT chính thức của Docker dành cho Ubuntu.

3.3. Cài đặt Docker và Compose
Cập nhật danh sách phần mềm:
sudo apt update
Sau đó cài các thành phần:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kích hoạt Docker và cho phép tự khởi động cùng hệ thống:
sudo systemctl enable --now docker

3.4. Kiểm tra kết quả cài đặt
Kiểm tra Docker:
sudo docker --version
Kiểm tra Docker Compose:
sudo docker compose version
Cuối cùng, chạy một container thử nghiệm:
sudo docker run --rm hello-world
Nếu Terminal hiển thị dòng: Hello from Docker! Docker đã hoạt động và có thể tiếp tục cài đặt n8n.

Trong các bước bên dưới, chúng ta sử dụng sudo docker để tương thích với tài khoản chưa được cấp quyền Docker trực tiếp.
Bước 4. Cấu hình 2 subdomain trỏ về VPS
Trước khi cài n8n, bạn cần tạo hai subdomain và trỏ về cùng địa chỉ IP của VPS.
Để kiểm tra DNS, trên Windows, mở Command Prompt (CMD) và chạy:
nslookup n8n1.example.com
nslookup n8n2.example.com
Thay example.com bằng tên miền thực tế. Kết quả cần trả về địa chỉ IP của VPS. Nếu chưa đúng, hãy kiểm tra bản ghi DNS và chờ hệ thống cập nhật.

Bước 5. Kiểm tra firewall của VPS
Caddy cần cổng 80 (HTTP) và 443 (HTTPS) để phục vụ hai instance n8n.
Nếu VPS sử dụng UFW, kiểm tra bằng:
sudo ufw status
Nếu UFW đang hoạt động, cho phép hai cổng:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Kiểm tra lại:
sudo ufw status

Nếu nhận thông báo ufw: command not found, bạn có thể cài UFW bằng lệnh sudo apt install -y ufw. Nếu UFW đang ở trạng thái inactive, các quy tắc UFW chưa được áp dụng. Không cần bật UFW chỉ để thực hiện hướng dẫn này.
Lưu ý: Nếu nhà cung cấp VPS có firewall riêng, bạn cũng cần cho phép TCP 80 và 443 tại trang quản trị. Luôn giữ cổng SSH đang sử dụng được phép truy cập để tránh mất kết nối Xshell.
Bước 6. Tạo thư mục và file Docker Compose cho 2 instance
Đây là bước quan trọng nhất, quyết định cách hai instance n8n hoạt động trên cùng VPS.
6.1. Tạo thư mục lưu trữ
Trên Terminal VPS, chạy:
mkdir -p ~/n8n-multi
Di chuyển vào thư mục:
cd ~/n8n-multi

6.2. Tạo file Docker Compose
Nhập lệnh:
nano compose.yaml
Nano sẽ mở một file mới. Sao chép toàn bộ cấu hình dưới đây và dán vào:
services:
n8n-one:
image: docker.n8n.io/n8nio/n8n:2.43.4
restart: unless-stopped
environment:
- N8N_HOST=n8n1.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_EDITOR_BASE_URL=https://n8n1.example.com/
- WEBHOOK_URL=https://n8n1.example.com/
- N8N_PROXY_HOPS=1
- NODE_ENV=production
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- n8n_one_data:/home/node/.n8n
n8n-two:
image: docker.n8n.io/n8nio/n8n:2.43.4
restart: unless-stopped
environment:
- N8N_HOST=n8n2.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_EDITOR_BASE_URL=https://n8n2.example.com/
- WEBHOOK_URL=https://n8n2.example.com/
- N8N_PROXY_HOPS=1
- NODE_ENV=production
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- n8n_two_data:/home/node/.n8n
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n-one
- n8n-two
volumes:
n8n_one_data:
n8n_two_data:
caddy_data:
caddy_config:
Trong cấu hình trên, bạn cần thay thế:
- n8n1.example.com bằng subdomain thứ nhất.
- n8n2.example.com bằng subdomain thứ hai.

Giữ nguyên các thành phần còn lại nếu bạn sử dụng đúng mô hình hướng dẫn.
Giải thích nhanh:
Thành phần Chức năng n8n-one Container n8n thứ nhất n8n-two Container n8n thứ hai n8n_one_data Lưu database và dữ liệu instance 1 n8n_two_data Lưu database và dữ liệu instance 2 N8N_WEBHOOK_URL Khai báo địa chỉ webhook HTTPS N8N_PROXY_HOPS Cấu hình số reverse proxy phía trước n8n caddy Cấp HTTPS và chuyển yêu cầu đến đúng instance
Biến N8N_WEBHOOK_URL được n8n hỗ trợ từ phiên bản 2.30.0 và thay thế WEBHOOK_URL cũ, bị đánh dấu deprecated từ phiên bản 2.35.0. Vì vậy, cấu hình trên sử dụng đúng tên biến theo tài liệu hiện hành.
Để lưu file:
- Nhấn Ctrl + O.
- Nhấn Enter để xác nhận.
- Nhấn Ctrl + X để thoát.
Sau đó kiểm tra file đã được tạo:
ls -l
Bạn sẽ thấy file compose.yaml trong danh sách.
Bước 7. Tạo file Caddy để cấu hình HTTPS
Hai instance n8n sẽ sử dụng tên miền khác nhau nhưng cùng cổng HTTPS 443. Caddy đảm nhiệm việc chuyển yêu cầu đến đúng container.
Đảm bảo đang ở thư mục dự án:
cd ~/n8n-multi
Tạo file:
nano Caddyfile
Dán nội dung:
n8n1.example.com {
reverse_proxy n8n-one:5678
}
n8n2.example.com {
reverse_proxy n8n-two:5678
}
Nhớ thay example.com bằng tên miền thực tế của bạn.
Giải thích cách hoạt động:
- Khi truy cập https://n8n1.example.com → Caddy sẽ chuyển đến n8n-one:5678.
- Khi truy cập https://n8n2.example.com → Caddy sẽ chuyển đến n8n-two:5678.

Khi DNS trỏ đúng và cổng 80/443 có thể truy cập từ Internet, Caddy tự động xin và gia hạn chứng chỉ HTTPS cho các tên miền phù hợp.
Nhấn Ctrl + O, Enter, rồi Ctrl + X để lưu.
Kiểm tra lại thư mục:
ls -l
Lúc này phải có hai file:
n8n-multi/
├── compose.yaml
└── Caddyfile

Bước 8. Kiểm tra cấu hình và khởi chạy 2 instance
Sau khi đã tạo đầy đủ file, tiến hành triển khai n8n.
Kiểm tra Docker Compose:
sudo docker compose config -q
Nếu lệnh kết thúc mà không xuất hiện lỗi, cấu hình Compose đã hợp lệ về cú pháp và khả năng phân giải cấu hình.
Tải các Docker image:
sudo docker compose pull
Lệnh này tải image n8n và Caddy theo các phiên bản được khai báo.
Khởi chạy toàn bộ dịch vụ:
sudo docker compose up -d
Docker sẽ tạo ba container, đồng thời khởi tạo những volume dùng để lưu dữ liệu.
Kiểm tra trạng thái:
sudo docker compose ps
Nếu thành công, kết quả sẽ có ba dịch vụ với trạng thái tương tự sau:
Service Trạng thái mong đợi n8n-one Up n8n-two Up caddy Up
Đây là trạng thái ví dụ, không phải kết quả thử nghiệm trên VPS của bạn.

Bạn có thể kiểm tra nhật ký nếu cần:
sudo docker compose logs --tail=50
Nếu xuất hiện lỗi, cần xử lý trước khi chuyển sang bước tiếp theo.
Bước 9. Truy cập và thiết lập tài khoản n8n
Sau khi các container khởi động, mở trình duyệt trên Windows.
Truy cập instance n8n thứ nhất
Mở địa chỉ: https://n8n1.example.com
Nếu đây là lần truy cập đầu tiên, n8n sẽ yêu cầu thiết lập tài khoản chủ sở hữu.
Thực hiện:
- Nhập email quản trị.
- Nhập họ tên theo yêu cầu.
- Tạo mật khẩu đủ mạnh.
- Hoàn thành phần thiết lập tài khoản và các bước giới thiệu tiếp theo nếu có.
Sau đó, bạn sẽ truy cập vào giao diện quản trị n8n.

Truy cập instance n8n thứ hai
Mở địa chỉ: https://n8n2.example.com
Tiếp tục tạo tài khoản quản trị cho instance thứ hai.

Hai instance có thể sử dụng email quản trị giống nhau hoặc khác nhau, nhưng dữ liệu tài khoản được lưu độc lập. Đối với môi trường thực tế, nên quản lý thông tin xác thực cẩn thận cho từng hệ thống.
Bước 10. Kiểm tra hai instance có hoạt động độc lập không
Sau khi đăng nhập cả hai instance, bạn nên kiểm tra khả năng tạo và lưu workflow.
Hãy tạo workflow thử nghiệm tại n8n thứ nhất. Sau đó, truy cập n8n thứ hai và mở danh sách workflow.
Nếu hai instance đã được cấu hình độc lập, workflow vừa tạo ở n8n thứ nhất sẽ không xuất hiện trong n8n thứ hai.
Kiểm tra trạng thái bằng Terminal. Trên Xshell, chạy:
curl -fsS https://n8n1.example.com/healthz
Tiếp tục:
curl -fsS https://n8n2.example.com/healthz
Nếu cả hai lệnh hoàn thành thành công, endpoint kiểm tra trạng thái của từng instance đã phản hồi qua HTTPS.
Bạn cũng có thể kiểm tra riêng từng container:
sudo docker compose logs --tail=30 n8n-one
sudo docker compose logs --tail=30 n8n-two
Đến đây, quá trình cài đặt hai instance n8n trên cùng một VPS đã hoàn tất.
Những lỗi có thể gặp khi cài đặt nhiều instance n8n
Lỗi 1: Không truy cập được tên miền
Kiểm tra DNS đã trỏ đúng IP, firewall cho phép 80/443 và ba container đang hoạt động. Sử dụng sudo docker compose logs –tail=50 caddy để xem lỗi HTTPS.
Lỗi 2: Caddy báo 502 Bad Gateway
Có thể container n8n chưa khởi động xong, đang gặp lỗi hoặc địa chỉ dịch vụ trong Caddyfile bị sai. Kiểm tra sudo docker compose ps và log n8n tương ứng.

Lỗi 3: Port is already allocated
Cổng 80 hoặc 443 đang được ứng dụng khác sử dụng. Kiểm tra bằng sudo ss -ltnp để tìm tiến trình đang lắng nghe. Cần xử lý xung đột trước khi khởi động Caddy.
Lỗi 4: Container n8n tự khởi động lại liên tục
Kiểm tra sudo docker compose logs –tail=100 n8n-one hoặc thay bằng n8n-two. Nguyên nhân có thể liên quan đến cấu hình, quyền lưu dữ liệu hoặc thiếu tài nguyên.
Những lưu ý quan trọng khi cài nhiều instance n8n
- Không cần mở cổng 5678 ra Internet: Docker Compose cho phép Caddy truy cập trực tiếp các container qua mạng nội bộ.
- Mỗi instance sử dụng SQLite riêng: Phù hợp với bài thực hành này. Với workflow quan trọng hoặc hoạt động thường xuyên, nên cân nhắc PostgreSQL.
- Phải sao lưu dữ liệu định kỳ: Sao lưu cả database và khóa mã hóa credentials của mỗi instance. Không chỉ sao chép file Compose.
- Không sử dụng
sudo docker compose down -vkhi có dữ liệu cần giữ: Tùy chọn -v xóa các volume do Compose quản lý. - Theo dõi CPU và RAM: Hai n8n cùng dùng tài nguyên VPS nên có thể ảnh hưởng lẫn nhau khi workload tăng cao.
- Cập nhật n8n có kiểm soát: Sao lưu trước khi chỉnh sửa tag phiên bản, sau đó mới tải image mới và tạo lại container.

Kết luận
Chạy nhiều instance n8n trên cùng một VPS bằng Docker Compose là cách đơn giản để quản lý nhiều hệ thống tự động hóa độc lập mà không cần sử dụng nhiều máy chủ. Mỗi instance có thể sở hữu tài khoản, workflow, database và tên miền riêng.
Sau khi triển khai, bạn nên thường xuyên theo dõi CPU, RAM và sao lưu dữ liệu để đảm bảo hoạt động ổn định. Khi nhu cầu xử lý tăng cao, hãy cân nhắc nâng cấp VPS hoặc phân chia các instance sang những máy chủ riêng.
Các bài viết liên quan:
- Hướng dẫn đổi database n8n từ SQLite sang PostgreSQL không mất workflow
- Hướng dẫn tối ưu RAM và CPU cho n8n Docker trên VPS
Những câu hỏi thường gặp
Các instance có tự chạy lại khi VPS khởi động lại không?
Có, nếu dịch vụ Docker được bật khởi động cùng hệ thống và container có restart: unless-stopped như cấu hình trong bài. Kiểm tra bằng systemctl is-enabled docker, kết quả cần là enabled. Riêng container đã bị dừng thủ công bằng docker compose stop sẽ không tự chạy lại sau khi khởi động.
Có thể cài thêm instance n8n sau khi đã triển khai 2 instance không?
Có. Bạn chỉ cần khai báo thêm dịch vụ n8n trong Docker Compose, tạo volume lưu trữ riêng và cấu hình tên miền tương ứng trong Caddy. Đồng thời, cần kiểm tra tài nguyên VPS trước khi mở rộng.
Một VPS có thể chạy tối đa bao nhiêu instance n8n?
Không có giới hạn cố định. Số lượng instance phụ thuộc vào cấu hình VPS và mức tiêu thụ tài nguyên của từng workflow. VPS có CPU và RAM càng lớn thì khả năng chạy nhiều instance càng cao, nhưng cần theo dõi hiệu suất thực tế.
Nâng cấp cấu hình VPS tại: https://tino.vn/vps-gia-re
Chạy nhiều instance n8n có làm chậm VPS không?
Có thể. Khi nhiều workflow thực thi đồng thời, CPU và RAM sẽ được chia sẻ giữa các instance. Nếu VPS không đủ tài nguyên, tốc độ xử lý có thể giảm.
Có cần sử dụng tên miền riêng cho mỗi instance n8n không?
Không bắt buộc. Bạn có thể truy cập qua các cổng khác nhau để thử nghiệm. Tuy nhiên, sử dụng subdomain riêng kết hợp HTTPS sẽ thuận tiện và phù hợp hơn khi triển khai thực tế.
