n8n Thai
by n8n Thai

ติดตั้ง n8n บน Server ของคุณเอง: คู่มือฉบับสมบูรณ์

รวมทุกวิธีติดตั้ง n8n แบบ self-host ตั้งแต่ Docker, VPS, จนถึง Raspberry Pi พร้อม checklist ความปลอดภัย

ติดตั้ง n8n บน Server ของคุณเอง: คู่มือฉบับสมบูรณ์

การ self-host n8n หมายความว่าคุณเป็นเจ้าของข้อมูลและ workflow ทั้งหมด ไม่ต้องพึ่งบริการ cloud ของ n8n และประหยัดค่าใช้จ่ายในระยะยาวได้มาก คู่มือนี้รวมทุกวิธีไว้ในที่เดียว

ทำไมต้อง Self-Host n8n?

ก่อนเลือกวิธีติดตั้ง ทำความเข้าใจข้อดีของการ self-host ก่อน:

  • ควบคุมข้อมูล 100% — workflow และข้อมูล credential ไม่ผ่าน server ของใคร
  • ไม่มีค่า execution limit — n8n Cloud คิดราคาตามจำนวนครั้งที่ workflow รัน แต่ self-host ไม่มีขีดจำกัด
  • ปรับแต่งได้เต็มที่ — ตั้งค่า environment variable, custom node, หรือ plugin เพิ่มเติมได้
  • ประหยัดเงิน — VPS ราคา $5-10/เดือนเทียบกับ n8n Cloud ที่เริ่มต้น $20+/เดือน

เปรียบเทียบวิธีติดตั้งทั้งหมด

วิธีความยากเหมาะกับค่าใช้จ่าย
Docker (local)ง่ายทดสอบ/devฟรี
Docker บน VPSปานกลางproduction$5-10/เดือน
Docker Composeปานกลางproduction + DB$5-10/เดือน
npm installปานกลางdeveloperฟรี
Raspberry Piยากhome server$50 ครั้งเดียว

วิธีที่ 1: Docker (แนะนำสำหรับมือใหม่)

Docker คือวิธีเร็วที่สุดในการรัน n8n บนเครื่องของคุณ รองรับทุก OS

รายละเอียดแบบ step-by-step ดูได้ที่บทความ ติดตั้ง n8n ด้วย Docker แบบละเอียด

ขั้นตอนคร่าว ๆ:

# รัน n8n แบบ basic (ข้อมูลหายเมื่อปิด container)
docker run -it --rm --name n8n -p 5678:5678 n8nio/n8n

# รัน n8n แบบมี persistent data
docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

เปิดเบราว์เซอร์ไปที่ http://localhost:5678 แล้วสร้าง account แรก

วิธีที่ 2: Docker Compose + PostgreSQL (แนะนำสำหรับ Production)

สำหรับ production การใช้ Docker Compose ร่วมกับ PostgreSQL database ทำให้ระบบเสถียรกว่าการใช้ SQLite (ค่า default)

ตัวอย่าง docker-compose.yml พื้นฐาน:

version: "3.8"

services:
  n8n:
    image: n8nio/n8n
    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=yourpassword
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=yourpassword
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres

  postgres:
    image: postgres:15
    restart: always
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=yourpassword
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  n8n_data:
  postgres_data:

รันด้วยคำสั่ง:

docker compose up -d

วิธีที่ 3: ติดตั้งด้วย npm

สำหรับนักพัฒนาที่มี Node.js อยู่แล้ว:

# ต้องการ Node.js v18 ขึ้นไป
node --version

# ติดตั้ง n8n global
npm install n8n -g

# รัน n8n
n8n start

วิธีนี้ไม่แนะนำสำหรับ production เพราะจัดการ process restart ได้ยากกว่า Docker

วิธีที่ 4: ติดตั้งบน VPS (DigitalOcean / Vultr / Hetzner)

ขั้นตอนสำหรับการ deploy บน VPS:

1. เตรียม VPS

เลือก Ubuntu 22.04 LTS ขนาดขั้นต่ำ 1 vCPU / 1GB RAM สำหรับการใช้งานเบา ๆ หรือ 2 vCPU / 2GB RAM สำหรับ workflow ที่รันบ่อย

2. ติดตั้ง Docker บน Ubuntu

# อัปเดต package list
sudo apt update

# ติดตั้ง Docker
curl -fsSL https://get.docker.com | sh

# เพิ่ม user ปัจจุบันเข้ากลุ่ม docker
sudo usermod -aG docker $USER

# เริ่ม Docker service
sudo systemctl enable docker
sudo systemctl start docker

3. ตั้งค่า Reverse Proxy ด้วย Nginx

เพื่อให้เข้าถึง n8n ผ่าน domain พร้อม HTTPS ต้องตั้งค่า Nginx และ SSL certificate:

# ติดตั้ง Nginx และ Certbot
sudo apt install nginx certbot python3-certbot-nginx -y

# ขอ SSL certificate (แทน your-domain.com ด้วย domain จริง)
sudo certbot --nginx -d your-domain.com

ตัวอย่าง Nginx config สำหรับ n8n:

server {
    server_name your-domain.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;
    }
}

Checklist ความปลอดภัยก่อน Go Live

เมื่อ n8n พร้อมเปิดใช้งานจริง อย่าลืมตรวจสอบ:

  • เปิดใช้งาน Basic Auth หรือ OAuth (N8N_BASIC_AUTH_ACTIVE=true)
  • ใช้ HTTPS เสมอ — อย่าเปิด HTTP บน public internet
  • ตั้งค่า Firewall ให้เปิดแค่ port 80, 443, 22
  • ใช้ strong password สำหรับ database และ n8n admin
  • ตั้งค่า backup database สม่ำเสมอ
  • อัปเดต n8n image สม่ำเสมอ (docker pull n8nio/n8n)
  • ปิด N8N_DIAGNOSTICS_ENABLED=false ถ้าต้องการความเป็นส่วนตัวสูงสุด

Environment Variables ที่สำคัญ

Variableค่า defaultคำอธิบาย
N8N_PORT5678Port ที่ n8n รัน
N8N_PROTOCOLhttpเปลี่ยนเป็น https เมื่อใช้ SSL
N8N_HOSTlocalhostDomain ของคุณ
WEBHOOK_URL-URL สำหรับ webhook (ต้องตั้งเมื่อใช้ reverse proxy)
N8N_ENCRYPTION_KEYautoKey สำหรับเข้ารหัส credential — เก็บไว้ให้ดี
EXECUTIONS_PROCESSmainเปลี่ยนเป็น own สำหรับ isolation

สรุป: เลือกวิธีไหนดี?

  • มือใหม่ / ทดสอบ — Docker local บนเครื่องตัวเอง
  • ใช้งานจริงคนเดียว — Docker + Docker Compose บน VPS เล็ก
  • ทีม / workflow เยอะ — Docker Compose + PostgreSQL + Nginx บน VPS ที่มี RAM พอเพียง
  • Developer — npm install สำหรับ dev environment

อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co

Related posts