ติดตั้ง n8n บน Server ของคุณเอง: คู่มือฉบับสมบูรณ์
รวมทุกวิธีติดตั้ง n8n แบบ self-host ตั้งแต่ Docker, VPS, จนถึง Raspberry Pi พร้อม checklist ความปลอดภัย
การ 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_PORT | 5678 | Port ที่ n8n รัน |
N8N_PROTOCOL | http | เปลี่ยนเป็น https เมื่อใช้ SSL |
N8N_HOST | localhost | Domain ของคุณ |
WEBHOOK_URL | - | URL สำหรับ webhook (ต้องตั้งเมื่อใช้ reverse proxy) |
N8N_ENCRYPTION_KEY | auto | Key สำหรับเข้ารหัส credential — เก็บไว้ให้ดี |
EXECUTIONS_PROCESS | main | เปลี่ยนเป็น 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
Backup และ Restore Workflow n8n ทำยังไง?
วิธี backup และ restore workflow, credential, และข้อมูล n8n อย่างถูกต้อง ไม่ให้ข้อมูลสูญหายเมื่อเกิดปัญหา
ติดตั้ง n8n ด้วย Docker แบบละเอียด
คู่มือ step-by-step ติดตั้ง n8n ด้วย Docker และ Docker Compose บน Windows, Mac, Linux พร้อม persistent data
Deploy n8n บน Railway ฟรี ภายใน 5 นาที
วิธี deploy n8n บน Railway แบบ step-by-step ไม่ต้องมีเซิร์ฟเวอร์ ฟรีสำหรับ hobby project พร้อมใช้งานได้ทันที