ติดตั้ง n8n ด้วย Docker แบบละเอียด
คู่มือ step-by-step ติดตั้ง n8n ด้วย Docker และ Docker Compose บน Windows, Mac, Linux พร้อม persistent data
Docker คือวิธีที่เร็วและง่ายที่สุดในการรัน n8n บนเครื่องของคุณหรือบน server โดยไม่ต้องกังวลเรื่อง dependency หรือ version conflict คู่มือนี้ครอบคลุมทุก scenario ตั้งแต่ทดสอบไปจนถึง production
สิ่งที่ต้องเตรียมก่อนติดตั้ง
ก่อนเริ่มต้อง install Docker บนเครื่องให้เรียบร้อยก่อน:
- Windows / Mac — ดาวน์โหลด Docker Desktop และติดตั้ง
- Linux (Ubuntu/Debian) — รันคำสั่ง
curl -fsSL https://get.docker.com | sh
ตรวจสอบว่า Docker พร้อมใช้งาน:
docker --version
# ควรเห็น: Docker version 24.x.x หรือสูงกว่า
วิธีที่ 1: รัน n8n แบบทดสอบ (ไม่มี persistent data)
เหมาะสำหรับทดลองใช้งาน หรือ demo — ข้อมูล workflow จะหายเมื่อ container ถูกปิด
docker run -it --rm \
--name n8n \
-p 5678:5678 \
n8nio/n8n
เปิดเบราว์เซอร์ไปที่ http://localhost:5678 แล้ว n8n จะรอให้คุณสร้าง account แรก
วิธีที่ 2: รัน n8n แบบมี Persistent Data (แนะนำ)
ข้อมูล workflow, credential, และ execution history จะถูกเก็บไว้แม้ container จะ restart
docker run -d \
--name n8n \
--restart unless-stopped \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
อธิบาย flag แต่ละตัว:
| Flag | ความหมาย |
|---|---|
-d | รันแบบ background (detached mode) |
--restart unless-stopped | restart อัตโนมัติเมื่อ server รีบูต |
-p 5678:5678 | map port 5678 ของ host ไปยัง container |
-v ~/.n8n:/home/node/.n8n | mount directory สำหรับเก็บข้อมูล |
วิธีที่ 3: Docker Compose (แนะนำสำหรับ Production)
Docker Compose ช่วยจัดการ n8n พร้อม PostgreSQL database ในไฟล์เดียว เหมาะกับการใช้งานจริงที่ต้องการความเสถียร
ขั้นตอนที่ 1: สร้างโฟลเดอร์โปรเจค
mkdir ~/n8n-prod
cd ~/n8n-prod
ขั้นตอนที่ 2: สร้างไฟล์ .env
สร้างไฟล์ .env เพื่อเก็บ secret ไม่ให้อยู่ใน docker-compose.yml โดยตรง:
# .env
POSTGRES_PASSWORD=change-this-strong-password
N8N_BASIC_AUTH_PASSWORD=change-this-admin-password
N8N_ENCRYPTION_KEY=change-this-32-char-random-key
WEBHOOK_URL=https://your-domain.com
ขั้นตอนที่ 3: สร้างไฟล์ docker-compose.yml
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
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}
# Auth
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
# Security
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
# Webhook URL (ต้องตั้งเมื่อใช้ reverse proxy)
- WEBHOOK_URL=${WEBHOOK_URL}
- N8N_HOST=0.0.0.0
- N8N_PORT=5678
- N8N_PROTOCOL=https
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:15-alpine
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
volumes:
n8n_data:
postgres_data:
ขั้นตอนที่ 4: รัน Docker Compose
# รัน services ทั้งหมด
docker compose up -d
# ดู log เพื่อตรวจสอบว่าทุกอย่างปกติ
docker compose logs -f n8n
คำสั่งที่ใช้บ่อย
ดูสถานะ container
docker ps
# หรือสำหรับ docker compose
docker compose ps
หยุด / เริ่ม n8n
# หยุด
docker stop n8n
# เริ่มใหม่
docker start n8n
# สำหรับ docker compose
docker compose stop
docker compose start
อัปเดต n8n เป็น version ล่าสุด
# ดึง image ใหม่
docker pull n8nio/n8n:latest
# หยุดและลบ container เก่า (ข้อมูลจะยังอยู่ใน volume)
docker stop n8n && docker rm n8n
# รัน container ใหม่ด้วย image ล่าสุด (ใช้คำสั่งเดิม)
docker run -d \
--name n8n \
--restart unless-stopped \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
# สำหรับ docker compose
docker compose pull
docker compose up -d
ดู log
docker logs n8n
docker logs n8n --tail 100 -f
แก้ปัญหาที่พบบ่อย
Port 5678 ถูกใช้งานอยู่แล้ว
# ตรวจสอบว่าอะไรใช้ port นั้น
sudo lsof -i :5678
# เปลี่ยน port ของ n8n เป็น 5679
docker run -d --name n8n -p 5679:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
Permission denied บน Linux
# สร้างโฟลเดอร์และกำหนด permission
mkdir -p ~/.n8n
sudo chown -R 1000:1000 ~/.n8n
n8n ไม่ขึ้นหน้าแรก
ตรวจสอบ log ดูว่ามี error อะไร:
docker logs n8n 2>&1 | tail -50
ปัญหาที่พบบ่อยคือ database ยังไม่พร้อม หรือ environment variable ไม่ถูกต้อง
ขั้นต่อไป
เมื่อ n8n รันแล้ว ขั้นต่อไปคือเรียนรู้ การใช้งาน Node ต่าง ๆ ใน n8n และ วิธีตั้งค่า Trigger เพื่อเริ่ม Workflow อัตโนมัติ
สำหรับการ deploy บน VPS พร้อม HTTPS ดูได้ที่ คู่มือ Self-Host n8n ฉบับสมบูรณ์
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
Deploy n8n บน Railway ฟรี ภายใน 5 นาที
วิธี deploy n8n บน Railway แบบ step-by-step ไม่ต้องมีเซิร์ฟเวอร์ ฟรีสำหรับ hobby project พร้อมใช้งานได้ทันที
n8n x Airtable: ใช้ Airtable เป็น Backend ง่ายๆ
เชื่อมต่อ n8n กับ Airtable เพื่ออ่าน เพิ่ม อัปเดต และลบข้อมูลอัตโนมัติ เหมาะสำหรับทีมที่ไม่มี Dev
Backup และ Restore Workflow n8n ทำยังไง?
วิธี backup และ restore workflow, credential, และข้อมูล n8n อย่างถูกต้อง ไม่ให้ข้อมูลสูญหายเมื่อเกิดปัญหา