Hosting n8n on DigitalOcean#
คู่มือนี้จะสอนวิธีติดตั้ง n8n แบบ self-host บน DigitalOcean droplet โดยใช้:
- Caddy (reverse proxy) สำหรับเปิดให้เข้าถึง n8n จากอินเทอร์เน็ต และจัดการ SSL/TLS certificate ให้อัตโนมัติ
- Docker Compose สำหรับจัดการ container ของแต่ละ service
ความรู้พื้นฐานที่จำเป็นสำหรับการ Self-hosting
การ Self-hosting n8n จำเป็นต้องมีความรู้ทางเทคนิค รวมถึง:
- การตั้งค่าและกำหนดค่า Server และ Container
- การจัดการทรัพยากรของแอปพลิเคชันและการปรับขนาด (Scaling)
- การรักษาความปลอดภัยของ Server และแอปพลิเคชัน
- การกำหนดค่า n8n
n8n แนะนำให้ผู้ใช้ที่มีความเชี่ยวชาญทำการ Self-hosting การตั้งค่าผิดพลาดอาจนำไปสู่การสูญเสียข้อมูล ปัญหาด้านความปลอดภัย และ Downtime หากคุณไม่มีประสบการณ์ในการจัดการ Server ทาง n8n แนะนำให้ใช้ n8n Cloud แทน
เวอร์ชั่น Latest และ Next
n8n ออกเวอร์ชั่น Minor ใหม่เกือบทุกสัปดาห์ เวอร์ชั่น latest
มีไว้สำหรับใช้งานจริง (Production) ส่วน next
คือเวอร์ชั่นล่าสุดที่เพิ่งออกมา คุณควรพิจารณา next
ว่าเป็นเวอร์ชั่น Beta ซึ่งอาจยังไม่เสถียร หากต้องการรายงานปัญหา โปรดใช้ forum
Current latest
: 1.91.2
Current next
: 1.92.1
Create a Droplet#
- Log in เข้า DigitalOcean
- เลือก project ที่จะใช้ หรือ สร้าง project ใหม่
- ใน project ของคุณ เลือก Droplets จากเมนู Manage
- สร้าง Droplet ใหม่ โดยเลือก Docker image จากแท็บ Marketplace
Droplet resources
ตอนสร้าง Droplet จะมีให้เลือก plan สำหรับการใช้งานทั่วไป เลือกแบบ shared CPU ธรรมดาก็พอ
SSH key or Password
DigitalOcean ให้เลือกได้ว่าจะใช้ SSH key หรือ password-based authentication แนะนำให้ใช้ SSH key เพราะปลอดภัยกว่า
Log in to your Droplet and create new user#
ขั้นตอนต่อไปต้อง SSH เข้าไปที่ Droplet ผ่าน terminal ดูวิธีได้ที่ How to Connect to Droplets with SSH
แนะนำให้สร้าง user ใหม่ ไม่ควรใช้ root
- ล็อกอินเป็น root
- สร้าง user ใหม่:
1
adduser <username>
- ทำตามขั้นตอนใน CLI เพื่อสร้าง user ให้เสร็จ
- ให้สิทธิ์ admin กับ user ใหม่:
จากนี้จะใช้
1
usermod -aG sudo <username>
sudo
สั่งงานแบบ admin ได้ - ตั้งค่า SSH ให้ user ใหม่: Add Public Key Authentication
- logout ออกจาก droplet
- login ใหม่ด้วย SSH เป็น user ที่สร้าง
Clone configuration repository#
Docker Compose, n8n, และ Caddy ต้องใช้ไฟล์ config หลายไฟล์ สามารถ clone repo ตัวอย่างจาก ที่นี่ ไปไว้ใน home folder ของ user ที่ล็อกอินอยู่
รันคำสั่งนี้เพื่อ clone:
1 |
|
แล้วเข้าไปที่โฟลเดอร์ที่ clone มา:
1 |
|
Default folders and files#
ฝั่ง host (Droplet) จะมี 2 โฟลเดอร์หลักที่ใช้กับ Docker container:
caddy_config
: เก็บไฟล์ config ของ Caddylocal_files
: สำหรับไฟล์ที่อัปโหลดหรือเพิ่มผ่าน n8n
Create Docker volumes#
สร้าง Docker volume สำหรับ cache ของ Caddy เพื่อให้ start เร็วขึ้น:
1 |
|
สร้าง Docker volume สำหรับข้อมูล n8n:
1 |
|
Set up DNS#
โดยปกติ n8n จะรันบน subdomain ให้สร้าง DNS record ชนิด "A" ชี้ subdomain ไปที่ IP ของ Droplet วิธีการขึ้นกับผู้ให้บริการ DNS ของคุณ ดูข้อมูลพื้นฐานได้ที่ An Introduction to DNS Terminology, Components, and Concepts
Open ports#
n8n เป็น web app ต้องเปิด port 80 (HTTP) และ 443 (HTTPS) ให้เข้าถึงได้
เปิด firewall ด้วยคำสั่ง:
1 2 |
|
Configure n8n#
n8n ต้องการ environment variable บางตัวใน container ตัวอย่างไฟล์ .env
มี placeholder ให้แก้ไข
เปิดไฟล์ด้วย:
1 |
|
ในไฟล์จะมี comment อธิบายว่าต้องแก้ตรงไหน
ดูรายละเอียด environment variable เพิ่มเติมได้ที่ Environment variables
The Docker Compose file#
ไฟล์ Docker Compose (docker-compose.yml
) จะกำหนด service ที่ต้องใช้ (Caddy กับ n8n)
- Caddy: กำหนด port และ volume ที่จะ mount
- n8n: กำหนด port, environment variable (บางตัวมาจาก
.env
), และ volume ที่ต้องใช้
โดยปกติไม่ต้องแก้ไขไฟล์นี้ แต่ถ้าอยากดูให้รัน:
1 |
|
Configure Caddy#
Caddy ต้องรู้ว่าจะ serve domain ไหน และเปิด port อะไร แก้ไขไฟล์ Caddyfile
ในโฟลเดอร์ caddy_config
1 |
|
เปลี่ยน subdomain ที่เป็น placeholder ให้เป็นของคุณเอง เช่น ถ้าใช้ n8n.example.com
ให้แก้ตามนี้ ส่วน n8n
ใน reverse_proxy
หมายถึง service ที่กำหนดไว้ใน docker-compose.yml
:
1 2 3 4 5 |
|
ถ้าใช้ automate.example.com
ก็จะเป็นแบบนี้:
1 2 3 4 5 |
|
Start Docker Compose#
เริ่มรัน n8n กับ Caddy ด้วยคำสั่ง:
1 |
|
อาจใช้เวลาสักครู่
Test your setup#
เปิด browser แล้วเข้า URL ที่ตั้งไว้ใน DNS ใส่ username/password ที่ตั้งไว้ ก็จะเข้าใช้งาน n8n ได้
Stop n8n and Caddy#
หยุด n8n กับ Caddy ด้วยคำสั่ง:
1 |
|
Updating#
หากคุณรัน n8n โดยใช้ไฟล์ Docker Compose ให้ทำตามขั้นตอนเหล่านี้เพื่ออัปเดต n8n:
1 2 3 4 5 6 7 8 |
|
Next steps#
- เรียนรู้เพิ่มเติมเกี่ยวกับ configuring และ scaling n8n
- หรือสำรวจการใช้งาน n8n: ลองดู Quickstarts