ติดตั้ง n8n Workflow Automation บน VPS

ติดตั้ง n8n Workflow Automation บน VPS

มิถุนายน 2026 · อ่าน 8 นาที

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
Tip: n8n รองรับ Credentials Vault เก็บ API keys ทุกตัว encrypt ไว้ใน database เพิ่ม credential ครั้งเดียว ใช้ได้ทุก workflow โดยไม่ต้องใส่ซ้ำ

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"}'
Tip: ใช้ n8n's built-in "Test Webhook" feature ใน editor เพื่อรับ request จริงและดู data structure ก่อนสร้าง workflow production เพื่อไม่ให้ workflow fail เมื่อ data ไม่ตรง format

แก้ปัญหาที่พบบ่อย

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