n8n
Docker
Installation
DevOps
Self-Hosted
Cloud

วิธีติดตั้ง n8n บน Docker และ Cloud: คู่มือฉบับสมบูรณ์

คู่มือติดตั้ง n8n อย่างละเอียดทั้ง Docker, Docker Compose, npm และ Cloud พร้อมการตั้งค่า Production และ SSL Certificate

AI Unlocked Team
14/01/2568
วิธีติดตั้ง n8n บน Docker และ Cloud: คู่มือฉบับสมบูรณ์

วิธีติดตั้ง n8n บน Docker และ Cloud: คู่มือฉบับสมบูรณ์

การติดตั้ง n8n มีหลายวิธีให้เลือก ตั้งแต่วิธีง่ายๆ ด้วย npm ไปจนถึง Production-Ready ด้วย Docker Compose บทความนี้จะพาคุณผ่านทุกวิธีพร้อมคำอธิบายละเอียด

หากยังไม่รู้จัก n8n แนะนำให้อ่านก่อน: n8n คืออะไร?

สารบัญ

  1. System Requirements
  2. วิธีที่ 1: Docker (แนะนำสำหรับเริ่มต้น)
  3. วิธีที่ 2: Docker Compose (แนะนำสำหรับ Production)
  4. วิธีที่ 3: npm
  5. วิธีที่ 4: n8n Cloud
  6. การตั้งค่า SSL Certificate
  7. Environment Variables ที่สำคัญ
  8. Troubleshooting

System Requirements

Minimum Requirements

{
  "cpu": "1 vCPU",
  "ram": "1 GB",
  "storage": "10 GB SSD",
  "os": ["Ubuntu 20.04+", "Debian 11+", "macOS 12+", "Windows 10+"]
}
{
  "cpu": "2+ vCPU",
  "ram": "4+ GB",
  "storage": "50+ GB SSD",
  "database": "PostgreSQL 14+",
  "os": "Ubuntu 22.04 LTS"
}

วิธีที่ 1: Docker

วิธีที่ง่ายและเร็วที่สุดสำหรับการทดลองใช้งาน

ขั้นตอนที่ 1: ติดตั้ง Docker

บน Ubuntu/Debian:

# อัพเดท package
sudo apt update

# ติดตั้ง Docker
sudo apt install docker.io -y

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

# รีสตาร์ท terminal หรือ logout/login

บน macOS:

# ใช้ Homebrew
brew install --cask docker

# หรือดาวน์โหลดจาก docker.com

ขั้นตอนที่ 2: รัน n8n

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

อธิบาย Parameters:

Parameterความหมาย
-itInteractive mode
--rmลบ container เมื่อหยุดทำงาน
--name n8nตั้งชื่อ container
-p 5678:5678Map port 5678
-v ~/.n8n:/home/node/.n8nMount volume เพื่อเก็บข้อมูล

ขั้นตอนที่ 3: เข้าใช้งาน

เปิดเบราว์เซอร์ไปที่: http://localhost:5678

การรันแบบ Background

docker run -d \
  --name n8n \
  --restart unless-stopped \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

วิธีที่ 2: Docker Compose

แนะนำสำหรับ Production เพราะจัดการได้ง่ายและรวม PostgreSQL

ขั้นตอนที่ 1: สร้าง Directory

mkdir n8n-docker
cd n8n-docker

ขั้นตอนที่ 2: สร้าง docker-compose.yml

version: '3.8'

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    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}

      # Basic Auth (Production)
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}

      # Webhook URL
      - WEBHOOK_URL=${WEBHOOK_URL}

      # Timezone
      - GENERIC_TIMEZONE=Asia/Bangkok
      - TZ=Asia/Bangkok

      # Execution
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres
    networks:
      - n8n-network

  postgres:
    image: postgres:15-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n-network:
    driver: bridge

ขั้นตอนที่ 3: สร้าง .env file

# .env
POSTGRES_PASSWORD=your_secure_password_here
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your_admin_password
WEBHOOK_URL=https://n8n.yourdomain.com/

ขั้นตอนที่ 4: รัน Docker Compose

# รันแบบ foreground (ดู logs)
docker compose up

# รันแบบ background
docker compose up -d

# ดู logs
docker compose logs -f n8n

# หยุดการทำงาน
docker compose down

ขั้นตอนที่ 5: อัพเดท n8n

# Pull image ใหม่
docker compose pull

# Restart
docker compose up -d

วิธีที่ 3: npm

สำหรับผู้ที่ต้องการรันโดยไม่ใช้ Docker

ขั้นตอนที่ 1: ติดตั้ง Node.js

# ใช้ nvm (แนะนำ)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18

# ตรวจสอบ version
node --version  # ควรได้ v18.x.x
npm --version   # ควรได้ 9.x.x

ขั้นตอนที่ 2: ติดตั้ง n8n

npm install n8n -g

ขั้นตอนที่ 3: รัน n8n

n8n start

การใช้ PM2 สำหรับ Production

# ติดตั้ง PM2
npm install pm2 -g

# รัน n8n ด้วย PM2
pm2 start n8n

# ดู status
pm2 status

# ดู logs
pm2 logs n8n

# ตั้งค่า startup
pm2 startup
pm2 save

วิธีที่ 4: n8n Cloud

สำหรับผู้ที่ไม่ต้องการจัดการ Infrastructure

ขั้นตอน

  1. ไปที่ app.n8n.cloud
  2. สมัครบัญชี (มี Free Trial 14 วัน)
  3. เริ่มใช้งานได้ทันที

ราคา n8n Cloud

{
  "starter": {
    "price": "$20/month",
    "workflows": 5,
    "executions": "2,500/month"
  },
  "pro": {
    "price": "$50/month",
    "workflows": 15,
    "executions": "10,000/month"
  },
  "enterprise": {
    "price": "Custom",
    "workflows": "Unlimited",
    "executions": "Unlimited"
  }
}

เปรียบเทียบราคากับ Zapier และ Make: n8n vs Zapier vs Make

การตั้งค่า SSL Certificate

สำหรับ Production ควรใช้ HTTPS เสมอ

วิธีที่ 1: ใช้ Nginx Reverse Proxy

ติดตั้ง Nginx:

sudo apt install nginx certbot python3-certbot-nginx -y

สร้าง Nginx Config:

# /etc/nginx/sites-available/n8n
server {
    listen 80;
    server_name n8n.yourdomain.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;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        chunked_transfer_encoding off;
        proxy_buffering off;
    }
}

เปิดใช้งานและขอ SSL:

# Enable site
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

# Test config
sudo nginx -t

# Restart Nginx
sudo systemctl restart nginx

# ขอ SSL Certificate
sudo certbot --nginx -d n8n.yourdomain.com

วิธีที่ 2: ใช้ Traefik (Docker)

# docker-compose.yml with Traefik
version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: unless-stopped
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.email=your@email.com"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - letsencrypt:/letsencrypt
    networks:
      - n8n-network

  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"
    environment:
      - WEBHOOK_URL=https://n8n.yourdomain.com/
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n-network

volumes:
  n8n_data:
  letsencrypt:

networks:
  n8n-network:

Environment Variables

ตัวแปรที่สำคัญ

# Database
DB_TYPE=postgresdb                    # sqlite หรือ postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=password

# Authentication
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=secure_password

# Webhook
WEBHOOK_URL=https://n8n.yourdomain.com/
N8N_HOST=n8n.yourdomain.com
N8N_PORT=5678
N8N_PROTOCOL=https

# Timezone
GENERIC_TIMEZONE=Asia/Bangkok
TZ=Asia/Bangkok

# Execution
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168           # ชั่วโมง
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all

# Email (สำหรับ Password Reset)
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=your@gmail.com
N8N_SMTP_PASS=app_password
N8N_SMTP_SENDER=your@gmail.com

# Security
N8N_ENCRYPTION_KEY=your_32_char_encryption_key

Security Best Practices

{
  "security_checklist": [
    "ใช้ HTTPS เสมอ",
    "ตั้ง N8N_BASIC_AUTH_ACTIVE=true",
    "ใช้ Strong Password",
    "เปลี่ยน N8N_ENCRYPTION_KEY",
    "จำกัด IP Access (Firewall)",
    "ใช้ PostgreSQL แทน SQLite",
    "Backup ข้อมูลสม่ำเสมอ"
  ]
}

Troubleshooting

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

1. Permission Denied

# แก้ไข permission ของ volume
sudo chown -R 1000:1000 ~/.n8n

2. Port Already in Use

# หา process ที่ใช้ port 5678
sudo lsof -i :5678

# Kill process
sudo kill -9 <PID>

3. Database Connection Error

# ตรวจสอบ PostgreSQL
docker compose exec postgres pg_isready -U n8n

# ดู logs
docker compose logs postgres

4. Webhook ไม่ทำงาน

{
  "checklist": [
    "ตรวจสอบ WEBHOOK_URL ถูกต้อง",
    "ตรวจสอบ SSL Certificate",
    "ตรวจสอบ Firewall เปิด port 443",
    "ทดสอบจาก external network"
  ]
}

5. Memory Issues

# เพิ่ม memory limit ใน docker-compose
services:
  n8n:
    deploy:
      resources:
        limits:
          memory: 2G

Backup & Restore

Backup:

# Backup volume
docker run --rm \
  -v n8n_data:/data \
  -v $(pwd):/backup \
  alpine tar cvf /backup/n8n-backup.tar /data

# Backup PostgreSQL
docker compose exec postgres pg_dump -U n8n n8n > backup.sql

Restore:

# Restore volume
docker run --rm \
  -v n8n_data:/data \
  -v $(pwd):/backup \
  alpine tar xvf /backup/n8n-backup.tar -C /

# Restore PostgreSQL
docker compose exec -T postgres psql -U n8n n8n < backup.sql

สรุป

วิธีติดตั้งความง่ายProduction Readyแนะนำสำหรับ
Dockerง่ายไม่ทดลองใช้
Docker Composeปานกลางใช่Production
npmปานกลางต้องตั้งค่าเพิ่มDevelopment
n8n Cloudง่ายมากใช่ไม่อยากจัดการ Infra

ขั้นตอนถัดไป

หลังจากติดตั้งเสร็จแล้ว:

  1. สร้าง Workflow แรก: คู่มือ n8n Basic Workflows
  2. เรียนรู้ Webhook: Webhook Triggers ใน n8n
  3. เชื่อมต่อ AI: n8n กับ ChatGPT และ Claude

ต้องการความช่วยเหลือในการติดตั้ง?

ติดต่อทีมงาน AI Unlocked เพื่อรับคำปรึกษาและบริการติดตั้ง n8n สำหรับองค์กรของคุณ


เขียนโดย

AI Unlocked Team