n8n Thai
by n8n Thai

ติดตั้ง n8n ด้วย Docker แบบละเอียด

คู่มือ step-by-step ติดตั้ง n8n ด้วย Docker และ Docker Compose บน Windows, Mac, Linux พร้อม persistent data

ติดตั้ง n8n ด้วย Docker แบบละเอียด

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-stoppedrestart อัตโนมัติเมื่อ server รีบูต
-p 5678:5678map port 5678 ของ host ไปยัง container
-v ~/.n8n:/home/node/.n8nmount 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