Mục lục
Chào các bạn, khi tìm đến bài này thì mình cũng không cần giới thiệu thêm về n8n nữa. Chúng ta vào thẳng vấn đề luôn. Cách cài đặt N8N bằng docker như thế nào. Cũng nhanh thôi, tầm 5 – 10 phút là xong
1. Yêu cầu:
Hôm nay bài này sẽ hướng dẫn trên vps mới hoàn toàn nhé. Yêu cầu như sau:
- Hệ điều hành: Debian 12 hoặc Ubuntu 22.04 hoặc Ubuntu 24.04
- RAM: Tối thiểu 1GB (đề xuất 2GB trở lên)
- CPU: Tối thiểu 1 core (đề xuất 2 core trở lên)
- Disk: Càng nhiều càng tốt, thực tế nó tốn disk không nhiều đâu
2. Cài đặt
# Cài đặt docker và docker composer
Các bạn đăng nhập vào SSH chạy lệnh sau:
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo apt-get install docker-compose-plugin
# Tạo file cấu hình docker composer
Các bạn chạy tiếp lệnh sau (Áp dụng trường hợp chúng ta muốn lưu trữ ở /home nhé):
mkdir /home/n8n
cd /home/n8n
nano docker-compose.yml
Sau đó điền nội dung sau đây vào
version: "3.7"
services:
traefik:
image: "traefik"
restart: always
command:
- "--api=true"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
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:
traefik_data:
external: true
n8n_data:
external: true
# Tạo file cấu hình tên miền
Ở đây chúng ta sẽ dùng file .env để cấu hình tên miền.
nano .env
Nội dung file:
# Ten mien chinh
DOMAIN_NAME=example.com
# subdomain
SUBDOMAIN=n8n
# Ap dung cho truong hop ban xai ten mien nay: https://n8n.example.com
# Mui gio
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
# The email dang ky SSL
SSL_EMAIL=[email protected]
3. Khởi chạy n8n
Cấu hình vậy là xong rồi. Cuối cùng chạy lệnh sau để khởi động n8n
sudo docker compose up -d
Lưu ý quan trọng: Bạn phải trỏ tên miền cần chạy về VPS trước khi chạy lệnh này. Do khởi tạo hệ thống sẽ tiến hành cài đặt SSL luôn, nên cần trỏ tên miền/ tên miền con về IP của VPS trước.
Sau khi khởi chạy thành công, các bạn truy cập trực tiếp vào tên miền của mình để thiết lập tài khoản admin và bắt đầu sử dụng nhé.
Chúc các bạn thực hiện thành công!