Docker là cách tốt nhất để cài n8n
Dù bạn dùng VPS từ nhà cung cấp nào — AZDIGI, Hostinger, DigitalOcean, Vultr, Linode hay thậm chí máy local — Docker đều hoạt động giống nhau. Bài viết này hướng dẫn cách cài n8n bằng Docker trên bất kỳ server Linux nào.
Yêu cầu hệ thống
- OS: Ubuntu 20.04/22.04, Debian 11/12, CentOS 8/9, hoặc bất kỳ Linux distro hỗ trợ Docker
- RAM: Tối thiểu 1GB, khuyến nghị 2GB+
- Disk: 10GB trống
- Network: Port 80, 443 mở
Bước 1: Cài Docker
Ubuntu/Debian
# Cách nhanh nhất - script chính thức từ Docker
curl -fsSL https://get.docker.com | sh
# Thêm user hiện tại vào group docker (không cần sudo)
usermod -aG docker $USER
# Verify
docker --version
docker compose version
CentOS/RHEL
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker
Bước 2: Tạo thư mục project
mkdir -p /opt/n8n
cd /opt/n8n
Bước 3: File docker-compose.yml
Cấu hình cơ bản (cho testing/dev)
cat > docker-compose.yml <<'EOF'
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
EOF
Cấu hình production (với PostgreSQL + Caddy SSL)
cat > docker-compose.yml <<'EOF'
version: "3.8"
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD:-changeme}
- N8N_HOST=${N8N_DOMAIN}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${N8N_DOMAIN}/
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
- TZ=Asia/Ho_Chi_Minh
- N8N_LOG_LEVEL=info
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
postgres_data:
n8n_data:
caddy_data:
caddy_config:
EOF
Bước 4: File .env
cat > .env <<'EOF'
N8N_DOMAIN=n8n.yourdomain.com
DB_PASSWORD=your_secure_password_here
EOF
Bước 5: Caddyfile (nếu dùng Caddy)
cat > Caddyfile <<'EOF'
{$N8N_DOMAIN:n8n.localhost} {
reverse_proxy n8n:5678 {
flush_interval -1
}
}
EOF
Thay domain thực tế vào Caddyfile hoặc dùng biến từ .env.
Bước 6: Khởi động
docker compose up -d
# Theo dõi startup
docker compose logs -f
# Kiểm tra health
docker compose ps
Các lệnh Docker thường dùng
# Dừng n8n
docker compose down
# Restart
docker compose restart n8n
# Cập nhật lên phiên bản mới
docker compose pull && docker compose up -d
# Xem log
docker compose logs -f --tail=100 n8n
# Vào shell container
docker compose exec n8n sh
# Export tất cả workflow
docker compose exec n8n n8n export:workflow --all --output=/tmp/workflows.json
Bước 7: Tự động khởi động khi reboot
Docker với restart: always đã tự khởi động. Nhưng đảm bảo Docker service cũng auto-start:
systemctl enable docker
Troubleshooting
Lỗi permission
# Fix ownership cho volume
docker compose exec n8n chown -R node:node /home/node/.n8n
Lỗi out of memory
Thêm swap:
fallocate -l 2G /swapfile && chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Webhook không hoạt động
Kiểm tra biến WEBHOOK_URL phải đúng domain public và có / ở cuối.
Kết luận
Docker mang lại trải nghiệm cài đặt thống nhất cho n8n trên mọi VPS. Với file docker-compose.yml ở trên, bạn có thể deploy n8n production-ready trong vài phút. Hãy nhớ dùng PostgreSQL cho production và backup thường xuyên!
Tham khảo: n8n Documentation · GitHub n8n
n8n có miễn phí không?
Có, n8n Community Edition hoàn toàn miễn phí khi tự host. n8n Cloud có gói miễn phí giới hạn và gói trả phí từ €20/tháng.
Cần VPS cấu hình bao nhiêu để chạy n8n?
Tối thiểu 1 vCPU, 1GB RAM, 20GB SSD. Khuyến nghị 2 vCPU, 4GB RAM cho production.
Giao VPS cho chúng tôi — nhận n8n hoàn chỉnh trong ngày. Docker, SSL, backup, hỗ trợ sau setup.
Xem dịch vụ setup →