Hosting n8n on Heroku#
คู่มือนี้จะสอนวิธีติดตั้ง n8n แบบ self-host บน Heroku โดยใช้:
- Docker Compose สำหรับจัดการ container ของแต่ละ service
- Heroku's PostgreSQL service สำหรับเก็บข้อมูลของ n8n
- ปุ่ม Deploy to Heroku ที่ช่วยให้ deploy ได้ง่าย ๆ แค่คลิกเดียว (แต่ต้องตั้งค่าบางอย่าง)
ความรู้พื้นฐานที่จำเป็นสำหรับการ 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
Use the deployment template to create a Heroku project#
วิธีที่เร็วที่สุดในการ deploy n8n ขึ้น Heroku คือกดปุ่ม Deploy to Heroku ด้านล่างนี้
จะเปิดหน้า Create New App บน Heroku ให้ตั้งชื่อ project และเลือก region ที่จะ deploy
Configure environment variables#
Heroku จะเติมค่าต่าง ๆ ที่ต้องใช้ใน env
section ของไฟล์ app.json
ให้อัตโนมัติ (รวมถึงค่า default ของ environment variable ที่ n8n ใช้)
คุณสามารถเปลี่ยนค่าเหล่านี้ได้ตามต้องการ แต่ ต้องเปลี่ยน ค่าต่อไปนี้:
- N8N_ENCRYPTION_KEY: ใช้สำหรับ encrypt ข้อมูลบัญชีผู้ใช้ ก่อนบันทึกลง database
- WEBHOOK_URL: ต้องตรงกับชื่อ app ที่สร้างไว้ เพื่อให้ webhook ใช้งานได้ถูกต้อง
Deploy n8n#
กด Deploy app
หลังจาก Heroku build และ deploy เสร็จ จะมีลิงก์ให้ Manage App หรือ View แอปที่สร้างไว้
Heroku and DNS
ดูวิธีเชื่อม domain ของคุณกับ Heroku app ได้ที่ Heroku documentation
Changing the deployment template#
ถ้าอยากแก้ไข template ที่ใช้ deploy สามารถ fork repository แล้ว deploy จาก fork ของคุณเองได้
The Dockerfile#
โดยปกติ Dockerfile จะดึง n8n image ล่าสุด ถ้าอยากใช้ version อื่นหรือ fix version ให้แก้ tag ที่บรรทัดแรกของ Dockerfile
Heroku and exposing ports#
Heroku ไม่อนุญาตให้ Docker-based app ใช้คำสั่ง EXPOSE
เพื่อกำหนด port เอง Heroku จะส่งค่า PORT
มาเป็น environment variable ตอนรันแอปจริง ๆ ไฟล์ entrypoint.sh
จะ override คำสั่งเริ่มต้นของ Docker image เพื่อใช้ port ที่ Heroku กำหนด คุณจะเข้าใช้งาน n8n ได้ที่ port 80 ผ่าน browser
Docker limitations with Heroku
อ่านรายละเอียดข้อจำกัดของ Docker บน Heroku ได้ที่ ที่นี่
Configuring Heroku#
ไฟล์ heroku.yml
จะกำหนดรายละเอียดของแอปบน Heroku มี 2 ส่วนหลัก:
setup
>addons
: กำหนด Heroku addon ที่จะใช้ (เช่น PostgreSQL)build
: กำหนดวิธี build แอป (ในที่นี้ใช้ Docker buildpack สร้าง serviceweb
จากDockerfile
ที่ให้มา)
Next steps#
- เรียนรู้เพิ่มเติมเกี่ยวกับ configuring และ scaling n8n
- หรือสำรวจการใช้งาน n8n: ลองดู Quickstarts