สารบัญ — บทที่ ๑๕ / ๑๖
PART 1 · รู้จัก
๑ · BOMLLM คืออะไร
๒ · สถาปัตยกรรม 4 เครื่อง
๓ · ฮาร์ดแวร์ที่ต้องมี
PART 2 · ติดตั้ง
๔ · เตรียมเครือข่าย
๕ · Mac Mini = สมอง
๖ · VPS = หน้าบ้าน
๗ · .env และ litellm.yaml
๘ · Virtual keys และงบประมาณ
PART 3 · ใช้งาน
๙ · Open WebUI ครั้งแรก
๑๐ · ลงโมเดลเพิ่มและส่วนเสริม
๑๑ · ภาพและเสียง (optional)
๑๒ · สูตรภาษาไทย
PART 4 · ต่อช่องทาง
๑๓ · LINE และ Telegram bot
๑๔ · MT5 EA อ่านอย่างเดียว และ content pipeline
PART 5 · ดูแล
▸ ๑๕ · ความปลอดภัยและ monitoring
๑๖ · อัปเกรดและแก้ปัญหา
PART 5 · ดูแล

๑๕15ความปลอดภัยและ monitoring

Security and monitoring

TL;DR — สรุปใน 30 วินาทีtldr

สรุปหลักความปลอดภัยของ BOMLLM ในหนึ่งประโยค: ทุกอย่าง bind อยู่ที่ localhost หรือ Tailscale ของที่เปิดสู่โลกคือ Cloudflare Tunnel ประตูเดียว ทุก API มีกุญแจ ทุกกุญแจมีงบ และไม่มีความลับถูก commit ลง repo เลย

เมื่อไหร่ควรใช้ / When to usewhen to use

บทนี้ไม่ใช่ "อ่านผ่าน" — กลับมาอ่านซ้ำทุกครั้งที่ (1) เพิ่มช่องทางใหม่ (2) เปิดพอร์ต/บริการใหม่ (3) ก่อนอัปเกรดใหญ่

วิธีทำ / How-tohow to

ตาราง bind ของทุก service (นโยบายจริงจาก ss -tlnp):

Servicebind ที่เหตุผล
LiteLLM :4000127.0.0.1 (+ Tailscale ผ่าน forward สำหรับ probe)เส้นทางสาธารณะคือ tunnel เท่านั้น
Open WebUI :3000127.0.0.1อยู่หลัง tunnel
SearXNG :8888127.0.0.1ภายในเท่านั้น
Qdrant :6333127.0.0.1ไม่มีเวกเตอร์สาธารณะ
Postgres / Valkeyเครือข่าย container เท่านั้นไม่เปิด host port เลย
Ollama (Mac) :11434Tailscale IP เท่านั้นmesh เท่านั้น + firewall เปิด
SSHพอร์ตไม่มาตรฐาน + key เท่านั้นufw ตั้ง DROP เป็นค่าตั้งต้น

คุณสมบัติที่ตรวจซ้ำทุกรอบ audit:

# ตรวจเบื้องต้นด้วยตัวเองได้ (รันบน VPS)
curl -o /dev/null -w "%{http_code}" -X POST https://llm.example.com/v1/chat/completions
# ต้องได้ 401 — ไม่มีกุญแจห้ามผ่าน (ตรวจทุกรอบ)

curl -o /dev/null -w "%{http_code}" https://chat.example.com/api/models
# ต้องได้ 401 — ไม่มี session ห้ามเห็นโมเดล

ss -tlnp | grep -v 127.0.0.1   # ดูว่ามีอะไร Listen นอก localhost ที่ไม่ควรมี

ถ้าผลใดผิดจากนี้ = หยุดทุกอย่าง แก้ให้กลับมาถูกก่อน

สุขลักษณะความลับ (ทบทวนจากบทที่ ๗–๘): master key อยู่ใน .env บน VPS เท่านั้น, กุญแจรายช่องทางหมุนเวียนได้โดยไม่แตะ master, .env chmod 600 + gitignore, ใน log/รายงานพูดแค่ "โหลดคีย์แล้ว ยาว N ตัว", n8n เก็บความลับใน credential store เท่านั้น

การเฝ้าระวัง: Uptime Kuma บน NAS probe ทุก 5 นาที (ยิง GET /api/version ผ่าน mesh) และยิงแจ้งเตือน Telegram เมื่อสถานะพลิก — สถานะเฝ้าระวังสรุปไว้ในบอร์ดภายใน

ถ้าติดตรงไหน → บทที่ ๑๖

ตัวอย่างการตั้งค่า / Config exampleconfig example

ตารางภัยคุกคามกับมาตรการ (ฉบับย่อจาก docs/security.md):

ภัยมาตรการที่ระบบทำ
กุญแจรั่ว (git/ภาพ/log)ระบบ gitignore + ตรวจก่อน push + งบต่อกุญแจจำกัดความเสียหาย
สแกนเนอร์อินเทอร์เน็ตเปิดผ่าน tunnel เท่านั้น + 401 ถ้าไม่มีกุญแจ
VPS โดนบุกไม่มีโมเดล/ข้อมูลหนักบน VPS; Mac อยู่ใน mesh; สำรองข้อมูลออกกล่องทุกคืน
Prompt injection ผ่านผลค้นเว็บผลค้นเป็นบริบท ไม่ใช่คำสั่ง + system prompt ตรึงพฤติกรรม + บอทมี post-process
ค่าใช้จ่ายหนีบงบรายวันรายกุญแจ + เพดานรวม $5 + แจ้งเตือน
อุปทาน (image) เปลี่ยนใต้มือปักแท็กเวอร์ชันทุกตัว ห้าม latest

Pro tip — เคล็ดลับจากสนามจริงpro tip

★ PROD LESSON
จุดอ่อนที่เราเคยเจอเอง: Netdata — รอบตรวจหนึ่งเราเจอ Netdata :19999 ลอยอยู่บน 0.0.0.0 โดยไม่มีใครตั้งใจ — จากวันนั้น "เช็ค bind ของทุกอย่างที่ติดตั้งใหม่" ถูกใส่เข้าไปในเช็กลิสต์ audit ถาวร จงสมมติว่ามี service ที่คุณลืมอยู่เสมอ แล้วไปหามันด้วย ss -tlnp
★ PRO TIP
ข้อมูลอยู่ที่ไหน ตอบให้ได้ทุกเมื่อ — แชท/ผู้ใช้อยู่ใน Postgres (VPS), เวกเตอร์ RAG ใน Qdrant (VPS), สำรองทุกคืนออกไป NAS เก็บ 14 วัน — ถ้าตอบโจทย์นี้ไม่ได้ แปลว่ายังไม่รู้ระบบตัวเองพอจะป้องกันมันได้

คำถามที่พบบ่อย / FAQfaq

ถาม: ข้อมูลออกนอกบ้านไหม? — ไม่ ยกเว้นกรณี Tier 3 คลาวด์ถูกดึงใช้ (สามารถปิดขาดได้ในบทที่ ๗) และการค้นเว็บที่ออนไลน์เพื่อดึงผลลัพธ์กลับ (ตัวค้นตั้งในเครื่องแต่ตัวเว็บไซต์เป้าหมายเห็น IP ของ VPS ตามปกติ)

ถาม: ถ้าอยากล็อกแน่นสุด ๆ? — ปิด signup บน WebUI + ครอบ Cloudflare Access ทุกหน้า admin + ปิด Tier 3 + เปิด ufw DROP ทั้งขาเข้ายกเว้น SSH/Tailscale — ระบบจะเงียบสนิทกับโลกภายนอก

คำถามอื่น ๆ ดูที่ FAQ

ดูเพิ่ม / See alsosee also

ภาพประกอบ / Figuresfigures

ประตู Cloudflare Access ที่คุ้มหน้า admin ทุกตัว
ชั้นป้องกันก่อนถึงหน้า login ของแอปจริง — ใช้งานจริงใน production

วิดีโอ / Videovideo

🎬
วิดีโอกำลังผลิต — ติดตามที่ YouTube @icafefx
คลิปสาธิตทีละขั้นของบทนี้จะอัปโหลดที่ youtube.com/@icafefx เร็ว ๆ นี้