เปิดใช้ n8n Assistant โดยไม่ขยาย Blast Radius
แนวทางเพิ่มการสร้าง workflow ผ่านบทสนทนา, sandbox สำหรับรันโค้ด และ web search ภายใน ให้กับ n8n ที่ทำงานอยู่แล้วบน Docker Compose
01สรุปสำหรับผู้บริหารและทีมปฏิบัติการ
เป้าหมาย: เพิ่มความสามารถให้ผู้ดูแลสร้างและแก้ไข workflow ด้วย AI โดยไม่สร้างระบบ n8n ชุดใหม่ และไม่เปิดบริการใหม่สู่ internet วิธีการ: คง data plane เดิมของ n8n ไว้ เพิ่ม sandbox และ search layer ในเครือข่าย Compose เดิม แล้วเชื่อมต่อ Assistant กับ model gateway ที่รองรับ OpenAI-compatible API
02ที่มาของปัญหาและโจทย์ที่ต้องแก้
n8n Assistant ต้องมี 3 ความสามารถ: model provider, code sandbox และ web search (เป็นทางเลือก) แต่ระบบเดิมใช้สำหรับงาน automation ที่มีความสำคัญ จึงต้องเพิ่มความสามารถโดยรักษาเสถียรภาพและขอบเขตความปลอดภัยไปพร้อมกัน
สิ่งที่ต้องการ
ให้ผู้ดูแลสร้าง workflow, แก้ไขข้อผิดพลาด และค้นหาเอกสารเชิงเทคนิคได้ผ่านบทสนทนา
สิ่งที่ต้องไม่เกิด
ไม่สร้าง n8n/database ซ้ำ, ไม่เปิด privileged service สู่ public network และไม่เก็บ credential ใน source configuration
03แนวทางออกแบบ
| การตัดสินใจ | เหตุผล |
|---|---|
| ต่อยอดจาก Compose project เดิม | ใช้ service discovery และ lifecycle เดิม ลดความซ้ำซ้อนและความเสี่ยงจาก configuration drift |
| ใช้ self-hosted bundled sandbox | แยกพื้นที่รันโค้ดออกจาก n8n พร้อมมอง privileged runner เป็นส่วนที่ต้องควบคุมเป็นพิเศษ |
| เก็บ sandbox และ search ไว้ภายใน | n8n เรียกผ่านชื่อ service ใน Compose network จึงไม่มีเหตุผลให้เปิด port สู่ภายนอก |
| แยก credential ออกจาก overlay | เก็บในไฟล์ local ที่จำกัดสิทธิ์ และไม่ใส่ค่า secret ในเอกสารหรือ Compose overlay |
| ให้มนุษย์อนุมัติการเปิดใช้งาน | workflow ที่ AI สร้างต้องถูกทดสอบและ review ก่อน activate ในระบบ production |
04แผนภาพเพื่อทำความเข้าใจระบบ
แผนภาพต่อไปนี้ตอบ 3 คำถาม: องค์ประกอบอยู่ที่ใด, ผู้ใช้ทำงานผ่าน Assistant อย่างไร และ ข้อมูลไหลผ่านขอบเขตใดบ้าง
แผนภาพสถาปัตยกรรม — ส่วนประกอบและขอบเขต
n8n เป็นผู้เริ่มต้นการเชื่อมต่อภายใน ส่วน runner และ search backend ไม่ต้องรับ traffic จาก public network
Workflow diagram — ขั้นตอนควบคุมการใช้งาน
การตัดสินใจขั้นสุดท้ายยังเป็นของมนุษย์ ข้อความที่ AI สร้างไม่ได้ถือเป็นการอนุมัติเปลี่ยนแปลง production
Data-flow diagram — ข้อมูลที่แลกเปลี่ยน
credential ใช้ยืนยันการเชื่อมต่อระหว่าง service แต่เก็บในไฟล์ local ที่จำกัดสิทธิ์ ไม่อยู่ใน Compose overlay หรือบทความ public
05รูปแบบการติดตั้ง
ชุดที่นำไปใช้ซ้ำได้ประกอบด้วย Compose overlay และ preparation script ที่ไม่ deploy อัตโนมัติ
| องค์ประกอบ | หน้าที่ | การเข้าถึง |
|---|---|---|
| Certificate bootstrap | สร้าง mTLS material สำหรับ sandbox services | one-shot container; ไม่มี host port |
| Sandbox API | รับคำขอจาก n8n และจัดการการลงทะเบียนของ runner | private Compose network |
| Sandbox runner | รันงานโค้ดแบบแยกขอบเขตผ่าน Docker-in-Docker | privileged; private Compose network |
| SearXNG | ให้บริการ JSON search สำหรับเอกสารและ API lookup | private Compose network |
06หลักฐานการตรวจสอบ
| รายการตรวจ | ผลที่พบ |
|---|---|
| Configuration rendering | merged Compose configuration ผ่านการ validate |
| n8n health | internal และ public health endpoint ตอบ OK |
| Sandbox health | Sandbox API ตอบ {"status":"ok"} |
| Runner registration | mTLS registration stream และ heartbeat ทำงาน |
| Model gateway | authenticated model-list request ตอบ HTTP 200 |
| Web search | internal JSON search ตอบ 42 results |
| Repository quality | automated suite เดิมผ่าน 327 tests |
07ประโยชน์ที่ได้รับ
สร้างและแก้ workflow ได้เร็วขึ้น
ผู้ดูแลใช้ Assistant เพื่อเริ่มต้น workflow, อธิบาย node และช่วยวิเคราะห์ execution ได้ โดยยังคงใช้ขั้นตอน review เดิมก่อน activate
ลดความเสี่ยงจากการแยกระบบ
ใช้ Compose project และ data plane เดิม จึงไม่ต้องดูแล n8n, database และ queue stack ซ้ำอีกชุด
รักษาขอบเขตความปลอดภัย
sandbox, runner และ search ทำงานผ่าน internal network เท่านั้น; credential แยกจาก source configuration และจำกัดสิทธิ์ไฟล์
นำรูปแบบไปใช้ซ้ำได้
มี Compose overlay, preparation script, acceptance checks และ rollback guide สำหรับใช้กับ n8n project อื่นโดยไม่ deploy อัตโนมัติ
08บทเรียนที่นำไปใช้ซ้ำได้
ตัวอย่างต้องผูกกับเวอร์ชัน
ชื่อ environment variable และ container version ต้องตรวจสอบกับ sandbox-service เวอร์ชันที่ deploy จริง ไม่ควรคัดลอกจากเอกสารที่เปลี่ยนตลอดเวลาโดยไม่ตรวจสอบ
แก้เฉพาะส่วนที่เสีย
runner launch แรกต้องเพิ่ม compatibility variable เพิ่มเติม แต่แก้ได้โดยไม่แตะ database หรือ worker และ n8n public service ยังคงทำงาน
Internal DNS ลดพื้นที่โจมตี
การใช้ Compose service name ทำให้ไม่ต้องสร้าง public endpoint เพิ่ม และทำให้ trust boundary ชัดเจนขึ้น
Usage accounting เป็นคนละสิทธิ์
inference key ใช้พิสูจน์ model connectivity ได้ แต่ไม่ควรได้สิทธิ์อ่าน spend log; การรายงานควรใช้ read-only credential แยก
09ขั้นถัดไป
- ตรวจในหน้า n8n Assistant ว่า model, sandbox และ web search แสดงเป็น server-configured
- ทดสอบ Assistant ด้วย non-production fixture workflow และ review การเปลี่ยนแปลง
- คง human approval ก่อน activate workflow ที่ AI สร้าง
- หากต้องการรายงานค่าใช้จ่าย ให้สร้าง LiteLLM reporting credential แบบ read-only แยกจาก inference key
เวอร์ชัน public นี้ตัด internal address, domain, path, credential และ deployment identifier ออกโดยตั้งใจ เพื่อให้เผยแพร่ได้อย่างปลอดภัย