Engineering case study · ระบบ AI แบบ self-hosted

เปิดใช้ n8n Assistant โดยไม่ขยาย Blast Radius

แนวทางเพิ่มการสร้าง workflow ผ่านบทสนทนา, sandbox สำหรับรันโค้ด และ web search ภายใน ให้กับ n8n ที่ทำงานอยู่แล้วบน Docker Compose

เผยแพร่20 กันยายน 2026
แพลตฟอร์มSelf-hosted n8n
รูปแบบCompose overlay
ผลลัพธ์ตรวจสอบแล้ว

01สรุปสำหรับผู้บริหารและทีมปฏิบัติการ

เป้าหมาย: เพิ่มความสามารถให้ผู้ดูแลสร้างและแก้ไข workflow ด้วย AI โดยไม่สร้างระบบ n8n ชุดใหม่ และไม่เปิดบริการใหม่สู่ internet วิธีการ: คง data plane เดิมของ n8n ไว้ เพิ่ม sandbox และ search layer ในเครือข่าย Compose เดิม แล้วเชื่อมต่อ Assistant กับ model gateway ที่รองรับ OpenAI-compatible API

ผลลัพธ์: n8n เดิม, queue worker และ database ยังคงทำงานปกติ ขณะที่ sandbox, runner, model gateway และ internal search ได้รับการตรวจสอบจากภายในเครือข่าย n8n แล้ว ไม่มีการ publish port ของ sandbox หรือ search service ออกสู่ host

02ที่มาของปัญหาและโจทย์ที่ต้องแก้

ที่มา: ทีมปฏิบัติการต้องสร้างและแก้ไข workflow ในสภาพแวดล้อมที่มีงาน automation สำคัญอยู่แล้ว การทดลอง AI แบบแยก stack ใหม่จะเพิ่มภาระดูแล, สร้าง configuration drift และทำให้ rollback ซับซ้อน ขณะเดียวกันการเปิด sandbox หรือ search backend สู่ public network จะเพิ่มพื้นที่โจมตีโดยไม่จำเป็น

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 อย่างไร และ ข้อมูลไหลผ่านขอบเขตใดบ้าง

แผนภาพสถาปัตยกรรม — ส่วนประกอบและขอบเขต

PRIVATE COMPOSE NETWORKn8nAssistant + workflowsSandbox APImTLS control boundaryModel gatewayOpenAI-compatible APIPrivileged sandbox runnerInternal JSON web search

n8n เป็นผู้เริ่มต้นการเชื่อมต่อภายใน ส่วน runner และ search backend ไม่ต้องรับ traffic จาก public network

Workflow diagram — ขั้นตอนควบคุมการใช้งาน

1. ผู้ดูแลถาม Assistant2. Assistant เสนอ workflow3. ทดสอบ fixture / review4. มนุษย์อนุมัติ activation

การตัดสินใจขั้นสุดท้ายยังเป็นของมนุษย์ ข้อความที่ AI สร้างไม่ได้ถือเป็นการอนุมัติเปลี่ยนแปลง production

Data-flow diagram — ข้อมูลที่แลกเปลี่ยน

Workflow contextrequest + metadataModel responseproposal / guidanceSearch querydocumentation lookupSearch resultsinternal JSON response

credential ใช้ยืนยันการเชื่อมต่อระหว่าง service แต่เก็บในไฟล์ local ที่จำกัดสิทธิ์ ไม่อยู่ใน Compose overlay หรือบทความ public

05รูปแบบการติดตั้ง

ชุดที่นำไปใช้ซ้ำได้ประกอบด้วย Compose overlay และ preparation script ที่ไม่ deploy อัตโนมัติ

องค์ประกอบหน้าที่การเข้าถึง
Certificate bootstrapสร้าง mTLS material สำหรับ sandbox servicesone-shot container; ไม่มี host port
Sandbox APIรับคำขอจาก n8n และจัดการการลงทะเบียนของ runnerprivate Compose network
Sandbox runnerรันงานโค้ดแบบแยกขอบเขตผ่าน Docker-in-Dockerprivileged; private Compose network
SearXNGให้บริการ JSON search สำหรับเอกสารและ API lookupprivate Compose network
Operational guardrail: script ควรเตรียมไฟล์เท่านั้น ไม่ควร recreate production container แบบเงียบ ๆ การ validate, backup, deploy และ rollback ต้องเป็นขั้นตอนที่ผู้ปฏิบัติงานตรวจทานได้

06หลักฐานการตรวจสอบ

รายการตรวจผลที่พบ
Configuration renderingmerged Compose configuration ผ่านการ validate
n8n healthinternal และ public health endpoint ตอบ OK
Sandbox healthSandbox API ตอบ {"status":"ok"}
Runner registrationmTLS registration stream และ heartbeat ทำงาน
Model gatewayauthenticated model-list request ตอบ HTTP 200
Web searchinternal JSON search ตอบ 42 results
Repository qualityautomated 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ขั้นถัดไป

  1. ตรวจในหน้า n8n Assistant ว่า model, sandbox และ web search แสดงเป็น server-configured
  2. ทดสอบ Assistant ด้วย non-production fixture workflow และ review การเปลี่ยนแปลง
  3. คง human approval ก่อน activate workflow ที่ AI สร้าง
  4. หากต้องการรายงานค่าใช้จ่าย ให้สร้าง LiteLLM reporting credential แบบ read-only แยกจาก inference key

เวอร์ชัน public นี้ตัด internal address, domain, path, credential และ deployment identifier ออกโดยตั้งใจ เพื่อให้เผยแพร่ได้อย่างปลอดภัย