April 24, 2025
คือ Platform สำหรับทำ workflow automation หรือพูดให้เข้าใจง่าย ๆ ก็คือพวกระบบอัตโนมัติต่าง ๆ นั้นแหละครับ ซึ่งจุดเด่นของเครื่องมือตัวนี้คือเป็น Open Source มีทั้ง version cloud และ self-hosted ให้ใช้งานสำหรับคนที่เป็นห่วงเรื่องความปลอดภัยของข้อมูลครับ อีกทั้งยังเป็น platform ที่อยู่ในรูปแบบของ Low Code หรือ No Code เลยก็ได้ (ในบาง workflows)
ซึ่งผมเองในฐานะของคนที่ชอบเขียนโปรแกรมอยู่แล้ว ต้องบอกเลยว่า "ของดีย์" ครับ ทำให้หลาย ๆ ไอเดียสามารถทำออกมาได้เลย ลดเวลาในการพัฒนาลงได้เยอะครับ ผมเองมองว่าการมีสกิล workflows ติดตัวไว้ถือเป็นข้อได้เปรียบนึงเลยครับ โดยซีรีย์นี้ตั้งใจว่าจะทำออกมาแบ่งเป็น EP ย่อย ๆ ครับแชร์ทริคต่าง ๆ ที่ได้ศึกษามา ยังไงก็ฝากติดตตามด้วยนะครับ เย่ ~
docker --version
docker compose version
)mkdir n8n-labs
cd n8n-labs
nano docker-compose.yml
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
ports:
- '127.0.0.1:5678:5678'
volumes:
- n8n_data:/home/node/.n8n
- n8n_local_files:/files
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${WEBHOOK_SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
pg-vector:
image: pgvector/pgvector:pg17
restart: unless-stopped
environment:
POSTGRES_USER: <username>
POSTGRES_PASSWORD: <password>
POSTGRES_DB: n8n-pgvector
ports:
- '127.0.0.1:5432:5432'
volumes:
- db-pgvector-data:/var/lib/postgresql/data
volumes:
n8n_data:
n8n_local_files:
db-data:
db-pgvector-data:
โดยในส่วนของ POSTGRES_USER
และ POSTGRES_PASSWORD
ให้แก้ไขเป็นค่าที่ปลอดภัยได้เลย หรือจะ generate ด้วย openssl ก็ได้เช่นกันครับ
openssl rand -base64 32
หน้าตาหลังจากแก้ไขจะเป็นประมาณนี้
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: VygpX7KBx2LsLTLoIk84YPV+gBsVZzgfMqVm+Kv0ltM=
จากนั้น (หากใช้ nano
) แก้ไขไฟล์ให้กด CTRL + X
-> Y
-> Enter
จะเป็นการบันทึกและออกจากไฟล์
สร้างไฟล์ .env
และทำการแก้ไขค่าต่าง ๆ
DOMAIN_NAME, SUBDOMAIN, WEBHOOK_SUBDOMAIN ในส่วนนี้อาจจะปล่อยเป็นค่า default แบบนี้ไปก่อนครับ
NODE_ENV="production"
N8N_PROTOCOL="http" # or https
N8N_DIAGNOSTICS_ENABLED=false
GENERIC_TIMEZONE="Asia/Bangkok"
DOMAIN_NAME=localhost
SUBDOMAIN=
WEBHOOK_SUBDOMAIN=
N8N_RUNNERS_ENABLED=true
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168
EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
PG_USER=<username>
PG_PASSWORD=<password>
จากนั้นสามารถ start docker compose ได้เลยด้วยคำสั่ง
docker compose pull
# [+] Pulling 15/29
# ⠧ pg-vector [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling 13.8s
# ⠧ n8n [⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling 13.8s
docker compose --env-file .env up --build -d
# อย่าลืม --env-file flag นะครับ
จากนั้นเปิด browser แล้วไปที่ http://localhost:5678/setup
ได้เลยครับ
โดยในขั้นตอนนี้เป็น optional ครับ แต่แนะนำให้เอากดรับมาครับ
เรียบร้อยครับ เพียงแค่นี้เราก็จะได้ N8N version self-hosted มาใช้งานแล้วครับ
ไปที่เมนู Credential
เลือกเป็น Postgres
กรอกข้อมูล โดยผมจะทำการแก้ชื่อด้านซ้ายบนให้เป็น PG-Vector
นะครับ ในช่องของ database ถ้า setup ตามที่ผมแนะนำไว้ก็สามารถใส่เป็นpg-vector
(service name ใน docker-compose) และใส่ username, password จากไฟล์ .env และ Database เอามาจากไฟล์ docker-compose ได้เลยครับ
ถ้ากด Save แล้วขึ้น Connection Tested Successfully
แสดงว่าใช้งานได้แล้วครับ โดยตัว PG Vector อันนี้จะเป็นตัว Postgres ที่มีการเปิดใช้งาน extension vector ซึ่งเดี๋ยวเราจะเอามาใช้ในการเล่นเกี่ยว LLM ต่อไปนะครับ
สามารถอ่าน Part 2 ต่อได้เลย N8N Part 2