ติดตั้ง n8n ทำระบบอัตโนมัติบน Cloud VPS
n8n คือเครื่องมือเชื่อมระบบต่าง ๆ เข้าด้วยกันแบบลากวาง เช่น เมื่อมีคนกรอกฟอร์มบนเว็บ ให้บันทึกลง Google Sheets ส่งแจ้งเตือนเข้า LINE และสร้างงานใน Trello โดยไม่ต้องเขียนโค้ดเชื่อมเอง
ข้อดีของการติดตั้งบนเซิร์ฟเวอร์ตัวเองเทียบกับบริการสำเร็จรูปคือไม่มีขีดจำกัดจำนวนการทำงานต่อเดือน และข้อมูลที่ไหลผ่านไม่ออกนอกองค์กร ซึ่งสำคัญเมื่อมีข้อมูลลูกค้าเกี่ยวข้อง
สิ่งที่ต้องเตรียม
- Cloud VPS ที่มี RAM อย่างน้อย 2 GB
- โดเมนที่ชี้มาที่เซิร์ฟเวอร์แล้ว จำเป็นสำหรับ Webhook
- Docker และ Docker Compose
ขั้นตอนที่ 1: เตรียมไฟล์
sudo mkdir -p /opt/n8n/{data,db,files}
cd /opt/n8n
sudo nano .env
DOMAIN=n8n.example.com
GENERIC_TIMEZONE=Asia/Bangkok
TZ=Asia/Bangkok
POSTGRES_USER=n8n
POSTGRES_PASSWORD=รหัสผ่านที่ยาวและสุ่ม
POSTGRES_DB=n8n
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=รหัสผ่านผู้ดูแล
# กุญแจเข้ารหัสข้อมูลรับรองที่บันทึกไว้ สร้างครั้งเดียวแล้วห้ามเปลี่ยน
N8N_ENCRYPTION_KEY=สตริงสุ่มยาว 32 ตัวอักษรขึ้นไป
openssl rand -hex 32
sudo chmod 600 .env
เก็บ N8N_ENCRYPTION_KEY ไว้นอกเครื่องทันที ข้อมูลรับรองทั้งหมดที่บันทึกไว้ใน n8n ถูกเข้ารหัสด้วยกุญแจนี้ หากหายไปจะต้องกรอกรหัสผ่านของทุกบริการใหม่ทั้งหมด
ขั้นตอนที่ 2: เขียนไฟล์ Compose
sudo nano docker-compose.yml
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
retries: 5
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:5678:5678"
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: db
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
N8N_HOST: ${DOMAIN}
N8N_PORT: 5678
N8N_PROTOCOL: https
WEBHOOK_URL: https://${DOMAIN}/
N8N_EDITOR_BASE_URL: https://${DOMAIN}/
N8N_BASIC_AUTH_ACTIVE: ${N8N_BASIC_AUTH_ACTIVE}
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
TZ: ${TZ}
# ลบประวัติการทำงานเก่าอัตโนมัติ ไม่ให้ฐานข้อมูลโตไม่หยุด
EXECUTIONS_DATA_PRUNE: "true"
EXECUTIONS_DATA_MAX_AGE: 336
EXECUTIONS_DATA_SAVE_ON_SUCCESS: none
EXECUTIONS_DATA_SAVE_ON_ERROR: all
volumes:
- ./data:/home/node/.n8n
- ./files:/files
ค่า EXECUTIONS_DATA_SAVE_ON_SUCCESS: none สำคัญมาก หากเก็บประวัติของทุกการทำงานที่สำเร็จ ฐานข้อมูลจะโตหลายกิกะไบต์ภายในไม่กี่สัปดาห์สำหรับ Workflow ที่ทำงานถี่
ขั้นตอนที่ 3: เริ่มและตั้ง Nginx
sudo docker compose up -d
sudo docker compose logs -f n8n
sudo nano /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:5678;
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;
# จำเป็นสำหรับหน้าจอแก้ไข Workflow ที่ใช้ WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_buffering off;
}
}
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d n8n.example.com --agree-tos -m [email protected] --redirect
ขั้นตอนที่ 4: สร้าง Workflow แรก
เปิด https://n8n.example.com เข้าสู่ระบบด้วยบัญชีที่ตั้งไว้ แล้วสร้าง Workflow ทดสอบ
- เพิ่ม Node ชนิด Webhook เป็นจุดเริ่ม คัดลอก URL ที่ได้
- เพิ่ม Node ชนิด Set เพื่อจัดรูปข้อมูล
- เพิ่ม Node ปลายทาง เช่น ส่งอีเมลหรือบันทึกลงฐานข้อมูล
- กด Execute Workflow แล้วยิงคำขอเข้ามาทดสอบ
curl -X POST https://n8n.example.com/webhook-test/abc123 \
-H 'Content-Type: application/json' \
-d '{"name":"สมชาย","email":"[email protected]"}'
เมื่อทดสอบผ่านแล้วกด Active เพื่อเปิดใช้งานจริง URL จะเปลี่ยนจาก webhook-test เป็น webhook
ขั้นตอนที่ 5: ตั้งสำรองข้อมูล
sudo nano /usr/local/bin/n8n-backup.sh
#!/bin/bash
set -euo pipefail
cd /opt/n8n
source .env
DEST=/var/backups/n8n
STAMP=$(date +%F-%H%M)
mkdir -p "$DEST"
docker compose exec -T db pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB" \
| gzip > "$DEST/db-$STAMP.sql.gz"
tar czf "$DEST/data-$STAMP.tar.gz" ./data
find "$DEST" -name '*.gz' -mtime +30 -delete
echo "n8n backup ok: $STAMP"
ส่งออก Workflow เป็นไฟล์แยกด้วย เพื่อให้เก็บใน Git ได้
sudo docker compose exec -T n8n n8n export:workflow --all --output=/files/workflows.json
sudo docker compose exec -T n8n n8n export:credentials --all --decrypted=false --output=/files/credentials.json
ขั้นตอนที่ 6: อัปเดต
cd /opt/n8n
sudo /usr/local/bin/n8n-backup.sh
sudo docker compose pull
sudo docker compose up -d
sudo docker compose logs -f n8n
อ่านบันทึกการเปลี่ยนแปลงก่อนอัปเดตเสมอ n8n มีการเปลี่ยนแปลงที่กระทบ Workflow เดิมเป็นครั้งคราว
ปัญหาที่พบบ่อย
Webhook จากภายนอกเรียกไม่ได้
ตรวจว่าตั้ง WEBHOOK_URL เป็นโดเมนจริงแล้ว และตรวจว่า URL ที่คัดลอกไปใช้เป็นแบบ production ไม่ใช่ webhook-test ซึ่งทำงานเฉพาะตอนกด Execute
หน้าจอแก้ไขค้างหรือไม่อัปเดต
Nginx ไม่ได้ส่งต่อ WebSocket ตรวจว่ามี proxy_http_version 1.1 และ header Upgrade กับ Connection ตามคอนฟิกในขั้นตอนที่ 3
ข้อมูลรับรองเปิดไม่ได้หลังย้ายเครื่อง
N8N_ENCRYPTION_KEY ไม่ตรงกับเครื่องเดิม ต้องใช้กุญแจเดียวกันเสมอ หากหายไปจริง ต้องกรอกข้อมูลรับรองใหม่ทั้งหมด
ฐานข้อมูลโตเร็วมาก
ตั้งค่าการลบประวัติตามขั้นตอนที่ 2 และตรวจขนาดด้วย
sudo docker compose exec -T db psql -U n8n -c "SELECT pg_size_pretty(pg_database_size('n8n'));"
ต้องการ Cloud VPS ที่พร้อมรันระบบอัตโนมัติขององค์กร ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








