n8n คือเครื่องมือ Workflow Automation แบบโอเพนซอร์ส ที่ช่วยให้คุณเชื่อมต่อบริการและระบบต่าง ๆ เข้าด้วยกันโดยไม่ต้องเขียนโค้ดมากนัก เหมาะสำหรับงานอัตโนมัติ เช่น ส่งอีเมล แจ้งเตือน ดึงข้อมูล API หรือประมวลผลข้อมูล
แต่ถ้าใช้งานแค่ Single Node อาจเจอปัญหาโหลดสูงหรือทำงานช้าเมื่อ workflow มีจำนวนมาก ดังนั้นในบทความนี้เราจะมาเรียนรู้การ ติดตั้ง n8n แบบกระจายโหลด (Multi-Node / Queue Mode) ด้วย Docker + Redis + PostgreSQL บนเครื่องคอมพิวเตอร์ของคุณง่าย ๆ ในไม่กี่ขั้นตอน เพื่อให้ระบบทำงานได้เสถียรและรองรับการขยายตัวในอนาคต.
ในบทความนี้จะเป็นการ ทดสอบติดตั้งบนเครื่องคอมพิวเตอร์ระบบปฏิบัติการ Windows โดยใช้ Docker Desktop เป็นหลัก ขั้นตอนต่าง ๆ สามารถประยุกต์ใช้กับ Linux หรือ macOS ได้เช่นกัน เพียงแค่แตกต่างกันเล็กน้อยในคำสั่งและการตั้งค่า
ขั้นแรก ให้ทำการสร้างโฟลเดอร์สำหรับเก็บไฟล์ติดตั้งและการตั้งค่าต่าง ๆ ของ n8n โดยในบทความนี้เราจะใช้ชื่อว่า n8n-docker
จากนั้นสร้างไฟล์ .env และ docker-compose.yml ในโฟลเดอร์ n8n-docker
แก้ไขไฟล์ .env สำหรับเก็บค่าตัวแปร (Environment Variables) ที่จะใช้ร่วมกับ docker-compose.yml
อธิบายการตั้งค่า
POSTGRES_USER: ชื่อผู้ใช้สำหรับฐานข้อมูล PostgreSQL
POSTGRES_PASSWORD: รหัสผ่านของฐานข้อมูล
POSTGRES_DB: ชื่อฐานข้อมูลที่จะสร้างขึ้นมาให้ n8n ใช้งาน
N8N_ENCRYPTION_KEY: รหัสเข้ารหัสสำหรับปกป้องข้อมูลสำคัญในระบบ n8n (เช่น credentials)
แก้ไขไฟล์ docker-compose.yml เพื่อกำหนด service ต่าง ๆ ที่จำเป็นสำหรับการรัน n8n แบบกระจายโหลด
อธิบายการตั้งค่า
postgres:
- ใช้ image postgres:16
- อ่านค่า user, password, database จากไฟล์ .env
- เก็บข้อมูลถาวรในโฟลเดอร์ ./pg_data
redis
- ใช้ image redis:7 สำหรับทำงานเป็น queue
- เก็บข้อมูลถาวรในโฟลเดอร์ ./redis_data
n8n-main
- ใช้ image n8nio/n8n:1.107.4
- เปิดพอร์ต 5678 สำหรับเข้าถึง UI
- เชื่อมต่อ PostgreSQL และ Redis
- ตั้งค่าให้ทำงานใน Queue Mode (EXECUTIONS_MODE=queue)
- ใช้ ./n8n_data เก็บข้อมูลของ n8n (credentials, workflows)
n8n-worker
- ใช้ image เดียวกับ n8n-main แต่รันคำสั่ง worker
- ทำหน้าที่ประมวลผลงานที่ส่งเข้ามาใน queue
- สามารถเพิ่มหลาย worker ได้เพื่อกระจายโหลด
- ใช้ environment และ volume เหมือน n8n-main
เมื่อเราเตรียมไฟล์ .env และ docker-compose.yml เสร็จเรียบร้อยแล้ว สามารถเริ่มรันระบบทั้งหมดได้ด้วยคำสั่ง
อธิบายคำสั่ง
docker compose up (สั่งให้ Docker Compose รัน service ตามที่กำหนดใน docker-compose.yml)
-d (detached mode รัน container แบบ background ไม่ผูกกับ terminal)
--build (บังคับให้ Docker ทำการ build image ใหม่อีกครั้ง)
--remove-orphans (ลบ container/service ที่ไม่ได้อยู่ในไฟล์ docker-compose.yml ปัจจุบัน)
--scale n8n-worker=4 (กำหนดให้ service n8n-worker รัน 4 instance พร้อมกัน)
คำสั่งนี้จะทำการรัน PostgreSQL, Redis, n8n-main และ n8n-worker แบบเบื้องหลัง (detached mode) จากนั้นคุณสามารถตรวจสอบ container ว่าทำงานอยู่หรือไม่ด้วยคำสั่ง:
หากทุกอย่างปกติ คุณจะเห็น container ทั้งหมดทำงานอยู่ และสามารถเปิด n8n UI ผ่านเบราว์เซอร์ได้ที่ http://localhost:5678
เสร็จสิ้นการติดตั้ง n8n แบบกระจายโหลด
หากต้องการทดสอบการกระจายโหลด ให้ทำการสร้าง Workflow ขึ้นมา แล้วทดสอบให้ Workflow นั้นทำงานจำนวนมาก จากนั้นใช้คำสั่ง
หาก Workflow ทำงาน เราจะเห็นว่า worker_container_name มีการรับคิวงานมาประมวลผล
ด้วยวิธีนี้ เราจะได้ระบบ n8n ที่เสถียรและรองรับการทำงานจำนวนมาก เหมาะทั้งสำหรับการทดสอบบนเครื่องส่วนตัว และการต่อยอดไปใช้งานจริงในระดับ Production