วิธีติดตั้ง n8n บน Docker และ Cloud: คู่มือฉบับสมบูรณ์
การติดตั้ง n8n มีหลายวิธีให้เลือก ตั้งแต่วิธีง่ายๆ ด้วย npm ไปจนถึง Production-Ready ด้วย Docker Compose บทความนี้จะพาคุณผ่านทุกวิธีพร้อมคำอธิบายละเอียด
หากยังไม่รู้จัก n8n แนะนำให้อ่านก่อน: n8n คืออะไร?
สารบัญ
- System Requirements
- วิธีที่ 1: Docker (แนะนำสำหรับเริ่มต้น)
- วิธีที่ 2: Docker Compose (แนะนำสำหรับ Production)
- วิธีที่ 3: npm
- วิธีที่ 4: n8n Cloud
- การตั้งค่า SSL Certificate
- Environment Variables ที่สำคัญ
- Troubleshooting
System Requirements
Minimum Requirements
{
"cpu": "1 vCPU",
"ram": "1 GB",
"storage": "10 GB SSD",
"os": ["Ubuntu 20.04+", "Debian 11+", "macOS 12+", "Windows 10+"]
}
Recommended for Production
{
"cpu": "2+ vCPU",
"ram": "4+ GB",
"storage": "50+ GB SSD",
"database": "PostgreSQL 14+",
"os": "Ubuntu 22.04 LTS"
}
วิธีที่ 1: Docker
วิธีที่ง่ายและเร็วที่สุดสำหรับการทดลองใช้งาน
ขั้นตอนที่ 1: ติดตั้ง Docker
บน Ubuntu/Debian:
# อัพเดท package
sudo apt update
# ติดตั้ง Docker
sudo apt install docker.io -y
# เพิ่ม user ปัจจุบันเข้ากลุ่ม docker
sudo usermod -aG docker $USER
# รีสตาร์ท terminal หรือ logout/login
บน macOS:
# ใช้ Homebrew
brew install --cask docker
# หรือดาวน์โหลดจาก docker.com
ขั้นตอนที่ 2: รัน n8n
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
อธิบาย Parameters:
| Parameter | ความหมาย |
|---|---|
-it | Interactive mode |
--rm | ลบ container เมื่อหยุดทำงาน |
--name n8n | ตั้งชื่อ container |
-p 5678:5678 | Map port 5678 |
-v ~/.n8n:/home/node/.n8n | Mount volume เพื่อเก็บข้อมูล |
ขั้นตอนที่ 3: เข้าใช้งาน
เปิดเบราว์เซอร์ไปที่: http://localhost:5678
การรันแบบ Background
docker run -d \
--name n8n \
--restart unless-stopped \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
วิธีที่ 2: Docker Compose
แนะนำสำหรับ Production เพราะจัดการได้ง่ายและรวม PostgreSQL
ขั้นตอนที่ 1: สร้าง Directory
mkdir n8n-docker
cd n8n-docker
ขั้นตอนที่ 2: สร้าง docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
# Basic Auth (Production)
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
# Webhook URL
- WEBHOOK_URL=${WEBHOOK_URL}
# Timezone
- GENERIC_TIMEZONE=Asia/Bangkok
- TZ=Asia/Bangkok
# Execution
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
networks:
- n8n-network
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
volumes:
n8n_data:
postgres_data:
networks:
n8n-network:
driver: bridge
ขั้นตอนที่ 3: สร้าง .env file
# .env
POSTGRES_PASSWORD=your_secure_password_here
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your_admin_password
WEBHOOK_URL=https://n8n.yourdomain.com/
ขั้นตอนที่ 4: รัน Docker Compose
# รันแบบ foreground (ดู logs)
docker compose up
# รันแบบ background
docker compose up -d
# ดู logs
docker compose logs -f n8n
# หยุดการทำงาน
docker compose down
ขั้นตอนที่ 5: อัพเดท n8n
# Pull image ใหม่
docker compose pull
# Restart
docker compose up -d
วิธีที่ 3: npm
สำหรับผู้ที่ต้องการรันโดยไม่ใช้ Docker
ขั้นตอนที่ 1: ติดตั้ง Node.js
# ใช้ nvm (แนะนำ)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
# ตรวจสอบ version
node --version # ควรได้ v18.x.x
npm --version # ควรได้ 9.x.x
ขั้นตอนที่ 2: ติดตั้ง n8n
npm install n8n -g
ขั้นตอนที่ 3: รัน n8n
n8n start
การใช้ PM2 สำหรับ Production
# ติดตั้ง PM2
npm install pm2 -g
# รัน n8n ด้วย PM2
pm2 start n8n
# ดู status
pm2 status
# ดู logs
pm2 logs n8n
# ตั้งค่า startup
pm2 startup
pm2 save
วิธีที่ 4: n8n Cloud
สำหรับผู้ที่ไม่ต้องการจัดการ Infrastructure
ขั้นตอน
- ไปที่ app.n8n.cloud
- สมัครบัญชี (มี Free Trial 14 วัน)
- เริ่มใช้งานได้ทันที
ราคา n8n Cloud
{
"starter": {
"price": "$20/month",
"workflows": 5,
"executions": "2,500/month"
},
"pro": {
"price": "$50/month",
"workflows": 15,
"executions": "10,000/month"
},
"enterprise": {
"price": "Custom",
"workflows": "Unlimited",
"executions": "Unlimited"
}
}
เปรียบเทียบราคากับ Zapier และ Make: n8n vs Zapier vs Make
การตั้งค่า SSL Certificate
สำหรับ Production ควรใช้ HTTPS เสมอ
วิธีที่ 1: ใช้ Nginx Reverse Proxy
ติดตั้ง Nginx:
sudo apt install nginx certbot python3-certbot-nginx -y
สร้าง Nginx Config:
# /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
chunked_transfer_encoding off;
proxy_buffering off;
}
}
เปิดใช้งานและขอ SSL:
# Enable site
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
# Test config
sudo nginx -t
# Restart Nginx
sudo systemctl restart nginx
# ขอ SSL Certificate
sudo certbot --nginx -d n8n.yourdomain.com
วิธีที่ 2: ใช้ Traefik (Docker)
# docker-compose.yml with Traefik
version: '3.8'
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=your@email.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- letsencrypt:/letsencrypt
networks:
- n8n-network
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
environment:
- WEBHOOK_URL=https://n8n.yourdomain.com/
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n-network
volumes:
n8n_data:
letsencrypt:
networks:
n8n-network:
Environment Variables
ตัวแปรที่สำคัญ
# Database
DB_TYPE=postgresdb # sqlite หรือ postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=password
# Authentication
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=secure_password
# Webhook
WEBHOOK_URL=https://n8n.yourdomain.com/
N8N_HOST=n8n.yourdomain.com
N8N_PORT=5678
N8N_PROTOCOL=https
# Timezone
GENERIC_TIMEZONE=Asia/Bangkok
TZ=Asia/Bangkok
# Execution
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168 # ชั่วโมง
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
# Email (สำหรับ Password Reset)
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=your@gmail.com
N8N_SMTP_PASS=app_password
N8N_SMTP_SENDER=your@gmail.com
# Security
N8N_ENCRYPTION_KEY=your_32_char_encryption_key
Security Best Practices
{
"security_checklist": [
"ใช้ HTTPS เสมอ",
"ตั้ง N8N_BASIC_AUTH_ACTIVE=true",
"ใช้ Strong Password",
"เปลี่ยน N8N_ENCRYPTION_KEY",
"จำกัด IP Access (Firewall)",
"ใช้ PostgreSQL แทน SQLite",
"Backup ข้อมูลสม่ำเสมอ"
]
}
Troubleshooting
ปัญหาที่พบบ่อย
1. Permission Denied
# แก้ไข permission ของ volume
sudo chown -R 1000:1000 ~/.n8n
2. Port Already in Use
# หา process ที่ใช้ port 5678
sudo lsof -i :5678
# Kill process
sudo kill -9 <PID>
3. Database Connection Error
# ตรวจสอบ PostgreSQL
docker compose exec postgres pg_isready -U n8n
# ดู logs
docker compose logs postgres
4. Webhook ไม่ทำงาน
{
"checklist": [
"ตรวจสอบ WEBHOOK_URL ถูกต้อง",
"ตรวจสอบ SSL Certificate",
"ตรวจสอบ Firewall เปิด port 443",
"ทดสอบจาก external network"
]
}
5. Memory Issues
# เพิ่ม memory limit ใน docker-compose
services:
n8n:
deploy:
resources:
limits:
memory: 2G
Backup & Restore
Backup:
# Backup volume
docker run --rm \
-v n8n_data:/data \
-v $(pwd):/backup \
alpine tar cvf /backup/n8n-backup.tar /data
# Backup PostgreSQL
docker compose exec postgres pg_dump -U n8n n8n > backup.sql
Restore:
# Restore volume
docker run --rm \
-v n8n_data:/data \
-v $(pwd):/backup \
alpine tar xvf /backup/n8n-backup.tar -C /
# Restore PostgreSQL
docker compose exec -T postgres psql -U n8n n8n < backup.sql
สรุป
| วิธีติดตั้ง | ความง่าย | Production Ready | แนะนำสำหรับ |
|---|---|---|---|
| Docker | ง่าย | ไม่ | ทดลองใช้ |
| Docker Compose | ปานกลาง | ใช่ | Production |
| npm | ปานกลาง | ต้องตั้งค่าเพิ่ม | Development |
| n8n Cloud | ง่ายมาก | ใช่ | ไม่อยากจัดการ Infra |
ขั้นตอนถัดไป
หลังจากติดตั้งเสร็จแล้ว:
- สร้าง Workflow แรก: คู่มือ n8n Basic Workflows
- เรียนรู้ Webhook: Webhook Triggers ใน n8n
- เชื่อมต่อ AI: n8n กับ ChatGPT และ Claude
ต้องการความช่วยเหลือในการติดตั้ง?
ติดต่อทีมงาน AI Unlocked เพื่อรับคำปรึกษาและบริการติดตั้ง n8n สำหรับองค์กรของคุณ
เขียนโดย
AI Unlocked Team
บทความอื่นๆ ที่น่าสนใจ
วิธีติดตั้ง FFmpeg บน Windows และ Mac: คู่มือฉบับสมบูรณ์
เรียนรู้วิธีติดตั้ง FFmpeg บน Windows และ macOS พร้อมการตั้งค่า PATH อย่างละเอียด เพื่อใช้งานโปรแกรมตัดต่อวิดีโอและเสียงระดับมืออาชีพ
สร้าง AI-Powered SaaS: จากไอเดียสู่ผลิตภัณฑ์
คู่มือครบวงจรในการสร้าง AI-Powered SaaS ตั้งแต่การวางแผน พัฒนา ไปจนถึง launch และ scale รวมถึง tech stack, pricing และ business model
AI Security: วิธีใช้ AI อย่างปลอดภัย
เรียนรู้แนวทางการใช้ AI อย่างปลอดภัย ครอบคลุม prompt injection, data privacy, API security และ best practices สำหรับองค์กร