Cài đặt n8n với Docker
🎯 Ưu nhược điểm khi sử dụng cách này
Tự host n8n bằng Docker là phương pháp mạnh mẽ, mang lại sự tự do tối đa nhưng cũng đòi hỏi người dùng phải có kiến thức kỹ thuật nhất định.
- ✅ Miễn phí: Bạn chỉ trả tiền cho máy chủ (VPS/Server), phần mềm n8n hoàn toàn miễn phí.
- 🔒 Toàn quyền kiểm soát & Bảo mật: Dữ liệu của bạn nằm trên server của bạn, không phụ thuộc vào bên thứ ba.
- ✨ Không giới hạn: Không giới hạn số lượng workflow, số lần thực thi (chỉ phụ thuộc vào cấu hình server của bạn).
- 🚀 Tùy biến & Mở rộng: Dễ dàng cài đặt các node tùy chỉnh (custom nodes) và mở rộng tính năng khi cần.
- 🧠 Yêu cầu kỹ thuật: Cần có kiến thức cơ bản về dòng lệnh (command line), Docker và quản trị server.
- 🔧 Tự bảo trì: Bạn phải tự chịu trách nhiệm cập nhật phiên bản, sao lưu dữ liệu và bảo mật cho server.
⚙️ Yêu cầu cần thiết
Để quá trình cài đặt diễn ra suôn sẻ, hãy đảm bảo bạn đã chuẩn bị đầy đủ các yếu tố sau:
- 🖥️ Một máy chủ (Server/VPS): Có thể là một VPS từ các nhà cung cấp như Vultr, DigitalOcean, Hetzner hoặc một máy tính cá nhân chạy Linux. Cấu hình tối thiểu đề nghị:
- RAM: 2GB+
- CPU: 1 vCPU+
- Ổ cứng: 20GB+ SSD
- 🐳 Docker và Docker Compose: Đã được cài đặt sẵn trên máy chủ của bạn.
- ⌨️ Quyền truy cập Terminal/SSH: Bạn cần có khả năng truy cập vào máy chủ thông qua giao diện dòng lệnh.
- 🌐 (Tùy chọn) Một tên miền: Để truy cập n8n qua một địa chỉ web thân thiện và cài đặt SSL (HTTPS) sau này.
📥 Hướng dẫn các bước
Chúng tôi sẽ sử dụng docker-compose để việc quản lý và cấu hình n8n trở nên dễ dàng hơn.
Bước 1: Chuẩn bị thư mục làm việc
Đầu tiên, hãy SSH vào máy chủ của bạn và tạo một thư mục mới cho n8n, sau đó di chuyển vào thư mục đó.
mkdir n8n-server
cd n8n-server
Bước 2: Tạo file cấu hình docker-compose.yml
Sử dụng một trình soạn thảo văn bản như nano hoặc vim để tạo file docker-compose.yml.
nano docker-compose.yml
Sau đó, sao chép và dán nội dung dưới đây vào file:
version: '3.7'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Lưu và đóng file lại (Trong nano, nhấn Ctrl + X, sau đó Y và Enter).
Bước 3: Chạy n8n
Bây giờ, hãy khởi chạy n8n bằng lệnh sau. Cờ -d sẽ giúp container chạy ở chế độ nền (detached mode).
docker-compose up -d
Docker sẽ tự động tải image n8n về và khởi chạy container. Bạn có thể kiểm tra trạng thái bằng lệnh docker-compose ps.
Bước 4: Truy cập giao diện n8n
Sau khi container đã chạy, bạn có thể truy cập n8n qua địa chỉ: http://<IP_SERVER_CUA_BAN>:5678
Bạn sẽ thấy giao diện cài đặt ban đầu để tạo tài khoản quản trị.
Video hướng dẫn chi tiết
Để có cái nhìn trực quan hơn, bạn có thể tham khảo video hướng dẫn cài đặt n8n với Docker và Portainer dưới đây:
💡 Lưu ý
- Persistence (Lưu trữ dữ liệu): Dòng
volumes: - n8n_data:/home/node/.n8ntrong filedocker-compose.ymlcực kỳ quan trọng. Nó đảm bảo rằng tất cả các workflow và credentials của bạn sẽ được lưu lại ngay cả khi bạn khởi động lại hoặc cập nhật container. Không bao giờ xóa volume này trừ khi bạn muốn bắt đầu lại từ đầu. - Timezone (Múi giờ): Biến môi trường
GENERIC_TIMEZONErất quan trọng cho các workflow chạy theo lịch (Cron). Hãy thay${GENERIC_TIMEZONE}bằng múi giờ của bạn (ví dụ:Asia/Ho_Chi_Minh) để đảm bảo các trigger hoạt động đúng giờ. - Bảo mật: Cấu hình mặc định chỉ cho phép truy cập n8n từ chính máy chủ (
127.0.0.1:5678). Để truy cập từ bên ngoài, bạn nên sử dụng một Reverse Proxy như Nginx Proxy Manager hoặc Traefik để thiết lập tên miền và SSL (HTTPS), giúp tăng cường bảo mật. - Cập nhật n8n: Để nâng cấp lên phiên bản mới nhất, chỉ cần chạy các lệnh sau trong thư mục
n8n-server:docker-compose pull
docker-compose up -d