Skip to content

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
docker volume create n8n_data

docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

คำสั่งนี้จะสร้าง 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 volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
 -e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
 -e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
 -e DB_POSTGRESDB_USER=<POSTGRES_USER> \
 -e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
 -e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

สามารถดูตัวอย่างไฟล์ 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
docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Bangkok" \
 -e TZ="Asia/Bangkok" \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

Updating#

ถ้าต้องการอัปเดต n8n ใน Docker Desktop ให้ไปที่แท็บ Images แล้วเลือก Pull จาก context menu เพื่อดาวน์โหลด image n8n เวอร์ชันล่าสุด

Docker Desktop

หรือจะใช้ command line เพื่อ pull เวอร์ชันล่าสุดหรือเวอร์ชันที่ต้องการก็ได้:

1
2
3
4
5
6
7
8
# ดึงเวอร์ชันล่าสุด (stable)
docker pull docker.n8n.io/n8nio/n8n

# ดึงเวอร์ชันที่ต้องการ
docker pull docker.n8n.io/n8nio/n8n:1.81.0

# ดึงเวอร์ชัน next (unstable)
docker pull docker.n8n.io/n8nio/n8n:next

หลังจาก pull image ใหม่แล้ว ให้หยุด container n8n เดิมแล้วสั่งรันใหม่อีกครั้ง สามารถใช้ command line ได้ โดยแทนที่ <container_id> ด้วย container ID ที่ได้จากคำสั่งแรก:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ดู container ID
docker ps -a

# หยุด container ที่ต้องการ
docker stop <container_id>

# ลบ container ที่ต้องการ
docker rm <container_id>

# สั่งรัน container ใหม่
docker run --name=<container_name> [options] -d docker.n8n.io/n8nio/n8n

Updating Docker Compose#

หากคุณรัน 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

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
docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n \
 start --tunnel

Next steps#

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