Docker Installation#
Docker มีข้อดีดังนี้:
- ติดตั้ง n8n ใน environment ที่สะอาด
- ตั้งค่าฐานข้อมูลที่คุณต้องการได้ง่ายขึ้น
- ลดปัญหาเรื่องความแตกต่างของระบบปฏิบัติการ เพราะ Docker ให้ environment ที่เหมือนกัน
- ลดปัญหา compatibility ที่เกิดจากความแตกต่างของ OS และเครื่องมือ
- ช่วยให้ย้ายไปยัง host หรือ environment ใหม่ได้ง่ายขึ้น
คุณสามารถใช้ n8n กับ Docker ร่วมกับ Docker Compose ได้ด้วย โดยสามารถดูตัวอย่างไฟล์ Docker Compose สำหรับสถาปัตยกรรมต่างๆ ได้ที่ n8n-hosting repository
ความรู้พื้นฐานที่จำเป็นสำหรับการ Self-hosting
การ Self-hosting n8n จำเป็นต้องมีความรู้ทางเทคนิค รวมถึง:
- การตั้งค่าและกำหนดค่า Server และ Container
- การจัดการทรัพยากรของแอปพลิเคชันและการปรับขนาด (Scaling)
- การรักษาความปลอดภัยของ Server และแอปพลิเคชัน
- การกำหนดค่า n8n
n8n แนะนำให้ผู้ใช้ที่มีความเชี่ยวชาญทำการ Self-hosting การตั้งค่าผิดพลาดอาจนำไปสู่การสูญเสียข้อมูล ปัญหาด้านความปลอดภัย และ Downtime หากคุณไม่มีประสบการณ์ในการจัดการ Server ทาง n8n แนะนำให้ใช้ n8n Cloud แทน
Prerequisites#
ก่อนเริ่มต้น ให้ติดตั้ง Docker Desktop
Linux Users
Docker Desktop มีให้สำหรับ Mac และ Windows ส่วน Linux ต้องติดตั้ง Docker Engine และ Docker Compose แยกเองตาม distro ของคุณ
เวอร์ชั่น Latest และ Next
n8n ออกเวอร์ชั่น Minor ใหม่เกือบทุกสัปดาห์ เวอร์ชั่น latest
มีไว้สำหรับใช้งานจริง (Production) ส่วน next
คือเวอร์ชั่นล่าสุดที่เพิ่งออกมา คุณควรพิจารณา next
ว่าเป็นเวอร์ชั่น Beta ซึ่งอาจยังไม่เสถียร หากต้องการรายงานปัญหา โปรดใช้ forum
Current latest
: 1.91.2
Current next
: 1.92.1
Starting n8n#
เปิด terminal แล้วรัน:
1 2 3 |
|
คำสั่งนี้จะสร้าง volume สำหรับเก็บข้อมูลถาวร, ดาวน์โหลด image n8n ที่ต้องใช้ และเริ่ม container โดยเปิด port 5678
ให้คุณเข้าใช้งานได้ และ mount docker volume n8n_data
เพื่อเก็บข้อมูลของคุณไว้ระหว่างที่ container ถูกรีสตาร์ท
เมื่อ container ทำงานแล้ว คุณสามารถเข้าใช้งาน n8n ได้ที่: http://localhost:5678
Using with PostgreSQL#
โดยปกติ n8n จะใช้ SQLite ในการเก็บ credentials, execution ที่ผ่านมา และ workflow ต่างๆ แต่ n8n ก็รองรับ PostgreSQL ด้วย โดยตั้งค่าผ่าน environment variable ตามตัวอย่างด้านล่าง
ถ้าใช้ PostgreSQL ก็ยังควร mount ข้อมูลในโฟลเดอร์ /home/node/.n8n
ไว้เหมือนเดิม เพราะมีข้อมูล user ของ n8n และที่สำคัญคือ encryption key สำหรับ credentials รวมถึงชื่อ webhook ถ้าใช้ n8n tunnel
ถ้า n8n หาโฟลเดอร์ /home/node/.n8n
ไม่เจอตอนเริ่มต้น มันจะสร้างใหม่ให้เอง ซึ่งจะทำให้ credentials เดิมที่เข้ารหัสด้วย key อันเก่าใช้ไม่ได้
Keep in mind
แม้จะใช้ PostgreSQL ก็ยังแนะนำให้ mount /home/node/.n8n
ไว้ แต่ถ้าไม่ mount ก็สามารถกำหนด encryption key เองได้โดยใช้ N8N_ENCRYPTION_KEY
environment variable ตอนสั่งรัน container
ถ้าต้องการใช้ n8n กับ PostgreSQL ให้รันคำสั่งนี้ (แทนที่ค่าต่างๆ ใน <> ด้วยค่าจริงของคุณ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
สามารถดูตัวอย่างไฟล์ docker-compose
สำหรับ PostgreSQL ได้ที่ n8n hosting repository
Setting timezone#
ถ้าต้องการกำหนด timezone ที่ n8n จะใช้ ให้ตั้งค่า GENERIC_TIMEZONE
environment variable node ที่เกี่ยวกับ schedule เช่น Schedule Trigger node จะใช้ค่านี้ในการกำหนด timezone ที่ถูกต้อง
ถ้าต้องการตั้ง timezone ของระบบ (เช่นเวลาที่แสดงในคำสั่ง date
) ให้ใช้ environment variable TZ
ตัวอย่างนี้ตั้ง timezone ให้ทั้งสองตัวแปร:
1 2 3 4 5 6 7 8 9 |
|
Updating#
ถ้าต้องการอัปเดต n8n ใน Docker Desktop ให้ไปที่แท็บ Images แล้วเลือก Pull จาก context menu เพื่อดาวน์โหลด image n8n เวอร์ชันล่าสุด
หรือจะใช้ command line เพื่อ pull เวอร์ชันล่าสุดหรือเวอร์ชันที่ต้องการก็ได้:
1 2 3 4 5 6 7 8 |
|
หลังจาก pull image ใหม่แล้ว ให้หยุด container n8n เดิมแล้วสั่งรันใหม่อีกครั้ง สามารถใช้ command line ได้ โดยแทนที่ <container_id>
ด้วย container ID ที่ได้จากคำสั่งแรก:
1 2 3 4 5 6 7 8 9 10 11 |
|
Updating Docker Compose#
หากคุณรัน n8n โดยใช้ไฟล์ Docker Compose ให้ทำตามขั้นตอนเหล่านี้เพื่ออัปเดต n8n:
1 2 3 4 5 6 7 8 |
|
Further reading#
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า Docker ได้ที่ README ของ Docker image
n8n กับ Tunnel#
Danger
Use this for local development and testing. It isn't safe to use it in production.
ในการใช้ Webhook สำหรับ Trigger node ของบริการภายนอก เช่น GitHub นั้น n8n จะต้องสามารถเข้าถึงได้จากเว็บ n8n มีบริการ tunnel service ที่สามารถเปลี่ยนเส้นทางคำขอ (Redirect requests) จาก Server ของ n8n ไปยัง Instance n8n ในเครื่องของคุณได้
เริ่ม n8n ด้วย --tunnel
โดยรัน:
1 2 3 4 5 6 7 8 |
|
Next steps#
- เรียนรู้เพิ่มเติมเกี่ยวกับ configuring และ scaling n8n
- หรือสำรวจการใช้งาน n8n: ลองดู Quickstarts