สารบัญ — บทที่ ๑๖ / ๑๖
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 · ดูแล

๑๖16อัปเกรดและแก้ปัญหา

Upgrade runbook and troubleshooting

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

บทสุดท้ายคือ "คู่มือผู้รอดชีวิต" — ทุกบทอื่นชี้กลับมาที่นี่เมื่อมีปัญหา มีสองส่วน: วินัยการอัปเกรดที่ทำให้ระบบไม่พังตอนอัป และ สูตรแก้เมื่อมันพังตอนตี 2

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

กลับมาที่บทนี้ทุกครั้งที่: จะอัปเกรดส่วนไหนก็ตาม, เจออาการผิดปกติ, หรืออ่านเจอคำว่า "ถ้าติดตรงไหน" ในบทอื่น

วิธีทำ / How-tohow to

กฎ 6 ข้อของการอัปเกรด (ไม่มีข้อไหนต่อรอง):

  1. ปักเวอร์ชันทุกอย่าง — ห้าม latest เด็ดขาด (เคยโดน latest เปลี่ยนพฤติกรรมใต้มือ)
  2. หนึ่งองค์ประกอบต่อหนึ่งหน้าต่างเวลา — อัปสองอย่างพร้อมกันแล้วพัง = เรียนรู้อะไรไม่ได้เลย
  3. สำรองก่อนแตะ — dump Postgres + snapshot config และต้อง "กู้กลับได้จริง" (แบ็กอัพที่ไม่เคยกู้ = ข่าวลือ)
  4. เขียนแผนถอยก่อนพิมพ์คำสั่งอัป
  5. รันชุดตรวจ 6 ข้อหลังทุกการเปลี่ยน — เขียวทั้ง 6 หรือถอยกลับ
  6. นอกชั่วโมงเร่ง — หลัง 23:00 ของทุกวัน เว้นหน้าต่างรีสตาร์ทอัตโนมัติของเราเอง

ชุดตรวจ 6 ข้อ (รันหลังทุกการเปลี่ยนแปลง):

vps — ชุดตรวจมาตรฐาน (จาก docs/upgrade.md, sanitized) · 6-probe smoke
# 1. LiteLLM มีชีวิต + DB ต่ออยู่curl -sf https://llm.example.com/health/liveliness # 200curl -sf https://llm.example.com/health/readiness # 200, db=connected# 2. ประตูห้ามคนไม่มีกุญแจยังยืนอยู่POST /v1/chat/completions แบบไม่แนบกุญแจ # ต้องได้ 401# 3. แชทไทยจริงยิงทะลุทั้งสายพานcurl -sf .../v1/chat/completions -H "Authorization: $SMOKE_KEY" -d @smoke-payload.json# 4. WebUI 200 5. SearXNG local ตอบ 6. Mac: โมเดล resident + swap ไม่โตssh mac 'ollama ps && vm_stat | grep -i swap'

ต้นฉบับเต็มอยู่ใน docs/upgrade.md ของ repo — คัดลอกไปเป็นสคริปต์ของคุณได้เลย

อาการที่พบบ่อยกับทางแก้บนมือ:

อาการสาเหตุที่พบบ่อยทางแก้
บอทตอบว่างเปล่าthink เปิด + num_predict น้อยpin think:false บน route (บทที่ ๗)
ข้อความไหลช้า ๆ ขึ้นเป็นพัก ๆสองโมเดล resident จน swapไล่โมเดลรอง (keep_alive 0) แล้วดูบทที่ ๓
เข้าเว็บแชทไม่ได้ 401 รัว ๆกุญแจ/เซสชันหมดอายุตรวจ master key ใน .env แล้ว up -d ใหม่
คำตอบไทยเริ่มมีตัวจีนชุกsystem prompt หลุด / route ใหม่ไม่ได้ใส่ Config Gกลับไปดู route + บทที่ ๑๒
ค่าคลาวด์วันนี้สูงผิดปกติMac ล่มนาน จน Tier 3 ทำงานหนักดู spend log รายชั่วโมง + เช็คสาเหตุที่ Mac
อัปเดตแล้วพังเวอร์ชันลอย / param ถูกตัดเงียบถอยกลับแท็กเดิมก่อน แล้วหาสาเหตุทีหลัง

สูตรตี 2 (พังตอนกลางคืน): (1) อย่า debug ลึก ๆ ตอนง่วง — ถอยกลับแท็กเดิมก่อน (2) เก็บ log 30 นาทีล่าสุดใส่โฟลเดอร์เหตุการณ์ (3) นอน (4) ทำ post-mortem หนึ่งหน้าใน 48 ชม. ระบุสาเหตุราก + กฎข้อไหนที่ถ้าทำตามจะกันเหตุนี้ แล้วเพิ่มกฎนั้นเข้าคู่มือ

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

ขั้นตอนอัปเกรดยอดฮิตแบบย่อ (เต็มอยู่ใน docs/upgrade.md):

# --- Ollama บน Mac ---
brew upgrade ollama          # แล้ว restart service
ollama --version             # client == server ต้องตรงกัน
ollama ps                    # โมเดลหลักต้องกลับมา resident
# แชทอุ่นเครื่องแรก < 5 วิ จึงนับว่าเสร็จ

# --- LiteLLM / WebUI บน VPS ---
docker compose pull litellm          # แท็กที่ปักไว้
docker compose up -d litellm         # recreate ตัวเดียว
docker compose logs -f litellm       # ดู boot: parse config + DB migrate
# หลังอัป: diff /model/info กับ snapshot ก่อนอัป + รัน smoke 6 ข้อ

ความเสี่ยงสุด = migration ของฐานข้อมูล ดังนั้น dump Postgres ทุกครั้งก่อน pull

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

★ PROD LESSON
แบ็กอัพที่ไม่เคยกู้ = ไม่มีอยู่ — เราทดสอบกู้จริงอย่างน้อยปีละครั้ง โดยเอา dump ไป restaure บนเครื่องทดสอบ — ครั้งแรกที่ลอง คุณจะพบว่าอะไรขาดหายไปในสคริปต์แบ็กอัพของตัวเองแน่นอน (ทุกคนเจอ)
★ PRO TIP
จดบันทึกการอัปเกรดทุกครั้ง — ตารางง่าย ๆ: วันที่ | อะไร | จาก->ไป | smoke ผล | ต้องถอยไหม — สามเดือนต่อมาเวลาถามว่า "เริ่มพังตั้งแต่เมื่อไหร่" ตารางนี้คือคำตอบที่ถูกที่สุด

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

ถาม: ควรอัปเดตถี่แค่ไหน? — มี CVE ด่วน = ทันทีแต่ตามกฎ 6 ข้อ, ปกติ = เดือนละครั้งในหน้าต่างกลางคืน, macOS = เลือกสัปดาห์ว่าง ๆ เท่านั้น

ถาม: พังจนไม่รู้จะทำไง? — ถอยทั้ง stack กลับแท็กเดิมทั้งหมด (ทำได้เพราะทุกอย่างปักเวอร์ชัน + มี dump) แล้วค่อยหาสาเหตุบนสำเนา ไม่ใช่บนของจริงที่ลูกค้ากำลังใช้

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

ดูเพิ่ม / See alsosee also

ภาพประกอบ / Figuresfigures

บันได fallback 3 ชั้น — เหตุผลที่ระบบทนต่อการอัปเกรด
ตอนอัปเกรองค์ประกอบหนึ่ง อีกสองชั้นรับงานแทนชั่วคราว

วิดีโอ / Videovideo

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