ติดตั้ง n8n Workflow Automation บน VPS
n8n คือ visual workflow automation tool ที่ใช้งานได้ฟรีเมื่อ host เอง เชื่อมต่อกับ 400+ services เช่น Gmail, Slack, Airtable, MySQL, HTTP request, Telegram โดยลาก-วาง node ใน visual editor ไม่ต้องเขียน code เหมาะสำหรับ automate งานซ้ำซาก เช่น sync ข้อมูล, ส่ง daily report, หรือ notify เมื่อเกิด event
ติดตั้ง n8n ด้วย Docker Compose
mkdir -p ~/n8n
cd ~/n8n
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
N8N_HOST: automation.yourdomain.com
N8N_PORT: 5678
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_URL: https://automation.yourdomain.com/
GENERIC_TIMEZONE: Asia/Bangkok
N8N_BASIC_AUTH_ACTIVE: "true"
N8N_BASIC_AUTH_USER: admin
N8N_BASIC_AUTH_PASSWORD: strongpassword123
volumes:
- n8n_data:/home/node/.n8n
user: "1000:1000"
volumes:
n8n_data:
EOF
docker compose up -d
ตั้ง Nginx + SSL
sudo certbot --nginx -d automation.yourdomain.com
sudo nano /etc/nginx/sites-available/n8n
server {
listen 443 ssl;
server_name automation.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/automation.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/automation.yourdomain.com/privkey.pem;
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;
chunked_transfer_encoding on;
proxy_buffering off;
}
}
sudo nginx -t && sudo systemctl reload nginx
สร้าง Workflow แรก
# เปิด https://automation.yourdomain.com
# Login ด้วย Basic Auth
# ตัวอย่าง workflow: Daily report ส่ง Telegram
# 1. Node: Schedule Trigger (ทุกวัน 09:00)
# 2. Node: HTTP Request (GET /api/stats)
# 3. Node: Telegram (ส่ง message พร้อมข้อมูล)
# ตัวอย่าง webhook workflow:
# 1. Node: Webhook (POST /webhook/new-order)
# 2. Node: MySQL (เพิ่มข้อมูลใน DB)
# 3. Node: Send Email (แจ้งเตือนทีม)
ตั้ง PostgreSQL Database (สำหรับ production)
# เพิ่มใน docker-compose.yml
postgres:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: n8ndbpass123
volumes:
- postgres_data:/var/lib/postgresql/data
# เพิ่ม env ใน n8n service:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: n8ndbpass123
n8n เหมาะสำหรับ VPS ที่ใช้รัน business automation โดยเฉพาะ หากมองหา VPS ไทยที่รองรับ workload 24/7 เช่า VPS ไทยจาก asiagb.com มีแพ็กเกจ RAM 2-16 GB ที่เหมาะสำหรับรัน automation server พร้อม uptime SLA 99.9% และ support ภาษาไทย นอกจากนี้ก่อน deploy n8n ควรตรวจสุขภาพโดเมนและ DNS ด้วยเครื่องมือฟรีที่ dnsxray.com เพื่อให้ webhook URL ทำงานได้อย่างถูกต้อง
ตรวจสอบว่า n8n ทำงานถูกต้อง
# ตรวจ container
docker compose ps
# ดู logs
docker compose logs n8n -f
# ตรวจ port
ss -tlnp | grep 5678
# ทดสอบ webhook endpoint
curl -X POST https://automation.yourdomain.com/webhook-test/test \
-H "Content-Type: application/json" \
-d '{"test": "ok"}'
แก้ปัญหาที่พบบ่อย
Webhook ไม่ได้รับ request จาก external service
ตรวจว่า WEBHOOK_URL ตั้งถูกต้องและ port 443 เปิดอยู่ n8n ใช้ URL นี้สร้าง webhook path:
docker exec n8n sh -c "echo \$WEBHOOK_URL"
# ต้องเป็น https://automation.yourdomain.com/
# ทดสอบ webhook จาก local
curl -v https://automation.yourdomain.com/webhook/your-webhook-id
Workflow ทำงานไม่ต่อเนื่องหลัง restart
n8n ต้องการ "Activate" workflow และ volume ต้องคงอยู่หลัง restart ตรวจว่า volume mount ถูกต้อง:
docker inspect n8n | grep -A5 Mounts
Memory เพิ่มขึ้นเรื่อยๆ (memory leak)
เกิดจาก executions history สะสม ตั้งให้ลบ history อัตโนมัติ:
EXECUTIONS_DATA_PRUNE: "true"
EXECUTIONS_DATA_MAX_AGE: 168 # เก็บ 7 วัน (unit: ชั่วโมง)
n8n ช้าเมื่อมี workflow หลายตัวรันพร้อมกัน
เปิด queue mode สำหรับ production เพื่อใช้ worker แยก:
EXECUTIONS_MODE: queue
QUEUE_BULL_REDIS_HOST: redis
# ต้องเพิ่ม Redis service ด้วย
คำถามที่พบบ่อย
n8n กับ Zapier ต่างกันอย่างไร?
Zapier คือ cloud service คิดค่าตาม "Zaps" (จำนวน workflow) และ tasks (จำนวนครั้งที่รัน) n8n self-hosted ไม่มีค่า task แบ่งตาม execution ทำให้ automation หนักๆ ประหยัดกว่ามาก แต่ต้องดูแล server เอง
n8n รองรับ code node ได้ไหม?
ได้ มี Code node ที่รัน JavaScript หรือ Python ได้ภายใน workflow เหมาะสำหรับ logic ซับซ้อนที่ visual nodes ทำไม่ได้ เช่น array manipulation, date calculation หรือ custom API parsing
Export/Import workflow ได้ไหม?
ได้ n8n ให้ export workflow เป็น JSON และ import ได้ทันที ใช้สำหรับ share workflow กับทีม หรือ backup ก่อน update n8n version