Skip to content

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#

  1. Log in เข้า Hetzner Cloud Console
  2. เลือก project ที่จะใช้ หรือสร้าง project ใหม่โดยกด + NEW PROJECT
  3. กด + 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
apt update && apt -y upgrade
apt install docker-compose-plugin

Clone configuration repository#

Docker Compose, n8n, และ Caddy ต้องใช้ไฟล์ config หลายไฟล์ สามารถ clone repo ตัวอย่างจาก ที่นี่ ไปไว้ใน root user folder ของ server

รันคำสั่งนี้เพื่อ clone:

1
git clone https://github.com/n8n-io/n8n-docker-caddy.git

แล้วเข้าไปที่โฟลเดอร์ที่ clone มา:

1
cd n8n-docker-caddy

Default folders and files#

ฝั่ง host (server) จะมี 2 โฟลเดอร์หลักที่ใช้กับ Docker container:

  • caddy_config: เก็บไฟล์ config ของ Caddy
  • local_files: สำหรับไฟล์ที่อัปโหลดหรือเพิ่มผ่าน n8n

Create Docker volume#

สร้าง Docker volume สำหรับ cache ของ Caddy เพื่อให้ start เร็วขึ้น:

1
docker volume create caddy_data

สร้าง Docker volume สำหรับข้อมูล n8n:

1
sudo docker volume create n8n_data

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
sudo ufw allow 80
sudo ufw allow 443

Configure n8n#

n8n ต้องการ environment variable บางตัวใน container ตัวอย่างไฟล์ .env มี placeholder ให้แก้ไข

เปิดไฟล์ด้วย:

1
nano .env

ในไฟล์จะมี 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
nano docker-compose.yml

Configure Caddy#

Caddy ต้องรู้ว่าจะ serve domain ไหน และเปิด port อะไร แก้ไขไฟล์ Caddyfile ในโฟลเดอร์ caddy_config

1
nano caddy_config/Caddyfile

เปลี่ยน subdomain ที่เป็น placeholder ให้เป็นของคุณเอง เช่น ถ้าใช้ n8n.example.com ให้แก้ตามนี้ ส่วน n8n ใน reverse_proxy หมายถึง service ที่กำหนดไว้ใน docker-compose.yml:

1
2
3
4
5
n8n.<domain>.<suffix> {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

Start Docker Compose#

เริ่มรัน n8n กับ Caddy ด้วยคำสั่ง:

1
docker compose up -d

อาจใช้เวลาสักครู่

Test your setup#

เปิด browser แล้วเข้า URL ที่ตั้งไว้ใน DNS ใส่ username/password ที่ตั้งไว้ ก็จะเข้าใช้งาน n8n ได้

Stop n8n and Caddy#

หยุด n8n กับ Caddy ด้วยคำสั่ง:

1
sudo docker compose stop

Updating#

หากคุณรัน n8n โดยใช้ไฟล์ Docker Compose ให้ทำตามขั้นตอนเหล่านี้เพื่ออัปเดต n8n:

1
2
3
4
5
6
7
8
# Pull latest version
docker compose pull

# Stop and remove older version
docker compose down

# Start the container
docker compose up -d

Next steps#

  • เรียนรู้เพิ่มเติมเกี่ยวกับ configuring และ scaling n8n
  • หรือสำรวจการใช้งาน n8n: ลองดู Quickstarts