Hướng Dẫn Triển Khai Nhiều Instance n8n Trên Docker Với aaPanel, Khắc Phục Lỗi Quyền Và Database

Dưới đây là bài viết hướng dẫn chi tiết giúp bạn triển khai và nhân bản nhiều instance n8n trên Docker với aaPanel mà không gặp lỗi phân quyền hay lỗi database — một trong những chủ đề mà rất nhiều DevOps, quản trị viên server và lập trình viên workflow automation ở Việt Nam quan tâm!
Hướng Dẫn Triển Khai Nhiều Instance n8n Trên Docker Với aaPanel, Khắc Phục Lỗi Quyền Và Database
n8n là một nền tảng workflow automation mạnh mẽ, phổ biến nhờ khả năng mở rộng và dễ tùy biến. Tuy nhiên, khi bạn cần chạy nhiều instance n8n trên cùng một server (VD: phục vụ nhiều team, môi trường test-prod riêng biệt…), nếu cấu hình sai volume hoặc quyền thư mục sẽ phát sinh các lỗi điển hình:
- Lỗi EACCES: permission denied (không truy cập được file)
- Lỗi database is locked / database malformed (xung đột file SQLite khi nhiều container dùng chung)
- Hoặc thậm chí lỗi cấu hình môi trường, trùng port, v.v.
Bài viết này sẽ hướng dẫn bạn cách triển khai đúng chuẩn trên aaPanel với Docker Compose, giúp bạn mở rộng hệ thống dễ dàng, tránh mọi lỗi về quyền và database.
1. Vì Sao Nhiều Instance n8n Bị Lỗi?
- Nhiều container mount chung 1 volume (
/home/node/.n8n
): gây xung đột database SQLite. - Sai quyền thư mục: n8n (user node, UID 1000) không ghi được file cấu hình/workflow.
- Chung port: không truy cập được từng instance.
2. Nguyên Tắc Khắc Phục
- Mỗi container n8n phải dùng 1 volume riêng (1 thư mục riêng trên host).
- Cấp quyền đúng: UID/GID 1000 cho thư mục volume.
- Port và domain/subdomain phải khác nhau cho từng instance.
3. Các Bước Triển Khai Nhiều Instance n8n Trên aaPanel
Bước 1: Tạo Thư Mục Volume Riêng Cho Mỗi Instance
Vào SSH hoặc Terminal trên aaPanel, tạo thư mục cho từng instance:
mkdir -p /www/dk_project/dk_app/n8n/n8n_117/data
chown -R 1000:1000 /www/dk_project/dk_app/n8n/n8n_117
chmod -R 770 /www/dk_project/dk_app/n8n/n8n_117
Lặp lại với
n8n_118
,n8n_119
… (mỗi instance một thư mục khác nhau).
Bước 2: Khai Báo Biến Môi Trường (.env) Cho Mỗi Instance
Ví dụ cho n8n_117:
VERSION=latest
CONTAINER_NAME=n8n_117
HOST_IP=127.0.0.1
WEB_HTTP_PORT=5680
CPUS=0
MEMORY_LIMIT=0MB
APP_PATH=/www/dk_project/dk_app/n8n/n8n_117
Đảm bảo mỗi instance PORT và APP_PATH khác nhau!
Bước 3: Viết File docker-compose Cho Instance n8n_117
Trong aaPanel Docker, khi tạo Compose mới, điền như sau:
version: '3.8'
services:
n8n_117:
image: n8nio/n8n:latest
container_name: n8n_117
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
restart: always
ports:
- ${HOST_IP}:${WEB_HTTP_PORT}:5678
volumes:
- ${APP_PATH}/data:/home/node/.n8n
environment:
N8N_SECURE_COOKIE: false
N8N_HOST: n8n117.movads.vn
WEBHOOK_URL: https://n8n117.movads.vn
labels:
createdBy: "bt_apps"
networks:
- baota_net
networks:
baota_net:
external: true
Bước 4: Tạo Compose Trên aaPanel
- Vào menu Docker > Compose > Add Compose.
- Đặt tên, dán nội dung
.env
vàcompose.yaml
như trên vào các ô tương ứng. - Nhấn Confirm.
Bước 5: Khởi Động Và Kiểm Tra
- Tạo xong, vào tab Container List, nhấn Start.
- Kiểm tra log, nếu thấy dòng:
n8n ready on 0.0.0.0, port 5678 Editor is now accessible via: https://n8n117.movads.vn
là thành công!
Bước 6: Truy Cập Giao Diện n8n
- Nếu port là 5680:
http://<server-ip>:5680
- Nếu đã gắn domain:
https://n8n117.movads.vn
7. Xử Lý Lỗi Phân Quyền
Nếu gặp lỗi kiểu:
EACCES: permission denied, open '/home/node/.n8n/config'
Cách sửa:
Vào SSH/Terminal:
chown -R 1000:1000 /www/dk_project/dk_app/n8n/n8n_117
chmod -R 770 /www/dk_project/dk_app/n8n/n8n_117
8. Muốn Tạo Thêm n8n_118, n8n_119…?
Chỉ cần lặp lại các bước trên, đổi tên:
- Thư mục:
/www/dk_project/dk_app/n8n/n8n_118
- Container, Compose, Port:
n8n_118
,5681
… - Domain:
n8n118.movads.vn
Kết Luận
Với cách triển khai này, bạn có thể mở rộng và quản lý bao nhiêu instance n8n tùy thích trên một server với Docker, không sợ lỗi phân quyền hoặc xung đột database.
Thực hiện trên aaPanel lại càng trực quan, ai cũng có thể tự thao tác!
Nếu bạn gặp vướng mắc về cài đặt, cấu hình nâng cao (HTTPS, reverse proxy, PostgreSQL…), hãy để lại bình luận bên dưới để được hỗ trợ chi tiết!
Chúc bạn triển khai n8n hiệu quả và an toàn!
Nếu bạn cần bản markdown hoặc html để dán lên blog, hãy yêu cầu mình nhé!