Hosting n8n on Hetzner cloud#
คู่มือนี้จะสอนวิธีติดตั้ง n8n แบบ self-host บน Hetzner cloud server โดยใช้:
- Caddy (reverse proxy) สำหรับเปิดให้เข้าถึง server จากอินเทอร์เน็ต
- 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 server#
- Log in เข้า Hetzner Cloud Console
- เลือก project ที่จะใช้ หรือสร้าง project ใหม่โดยกด + NEW PROJECT
- กด + CREATE SERVER ใน project ที่ต้องการ
ตั้งค่าได้ตามต้องการ แต่คู่มือนี้จะใช้ Docker ในการรันแอป ในหัวข้อ Image ให้เลือก "Docker CE" จากแท็บ APPS
Type
ตอนสร้าง server Hetzner จะให้เลือก plan ส่วนใหญ่ใช้ CPX11 ก็เพียงพอ
SSH keys
Hetzner ให้เลือกได้ว่าจะใช้ SSH หรือ password-based authentication แนะนำให้ใช้ SSH เพราะปลอดภัยกว่า คู่มือนี้จะสมมติว่าใช้ SSH
Log in to your server#
ขั้นตอนต่อไปต้อง SSH เข้าไปที่ server ผ่าน terminal ดูวิธีได้ที่ Access with SSH/rsync/BorgBackup สามารถดู public IP ได้จากหน้า project
Install Docker Compose#
Hetzner Docker app image ไม่มี Docker Compose ติดมาด้วย ให้ติดตั้งด้วยคำสั่งนี้:
1 2 |
|
Clone configuration repository#
Docker Compose, n8n, และ Caddy ต้องใช้ไฟล์ config หลายไฟล์ สามารถ clone repo ตัวอย่างจาก ที่นี่ ไปไว้ใน root user folder ของ server
รันคำสั่งนี้เพื่อ clone:
1 |
|
แล้วเข้าไปที่โฟลเดอร์ที่ clone มา:
1 |
|
Default folders and files#
ฝั่ง host (server) จะมี 2 โฟลเดอร์หลักที่ใช้กับ Docker container:
caddy_config
: เก็บไฟล์ config ของ Caddylocal_files
: สำหรับไฟล์ที่อัปโหลดหรือเพิ่มผ่าน n8n
Create Docker volume#
สร้าง Docker volume สำหรับ cache ของ Caddy เพื่อให้ start เร็วขึ้น:
1 |
|
สร้าง Docker volume สำหรับข้อมูล n8n:
1 |
|
Set up DNS#
โดยปกติ n8n จะรันบน subdomain ให้สร้าง DNS record ชนิด "A" ชี้ subdomain ไปที่ IP ของ server วิธีการขึ้นกับผู้ให้บริการ 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 |
|
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