🤖HermesBlog
Hermes Feature Guides · Parte 168/9/2026

Docker + Hermes Agent: สองวิธีในการใช้งาน

Event Hooks — Auto-Trigger at Key Moments — easy-to-understand guide based on official docs (updated 2026-08-09)

hermes-feature-16-hooks

Docker + Hermes Agent: สองวิธีในการใช้งาน

หากคุณเคยสงสัยว่า Docker เข้ามาเกี่ยวข้องกับ Hermes Agent อย่างไร คุณมาถูกที่แล้ว จริงๆ แล้วมีสองวิธีที่ทั้งสองอย่างนี้ทำงานร่วมกันได้ และควรรู้ความแตกต่างก่อนที่คุณจะเริ่มพิมพ์คำสั่ง docker run

สองโหมดของ Docker

  1. รัน Hermes ใน Docker — ตัว agent เองอยู่ในคอนเทนเนอร์ นี่คือจุดโฟกัสหลักของคู่มือนี้
  2. ใช้ Docker เป็นเทอร์มินัลแบ็กเอนด์ — Hermes รันบนเครื่องโฮสต์ของคุณ แต่ทุกคำสั่งที่มันรันจะเกิดขึ้นภายใน Docker sandbox เดียวที่คงอยู่ตลอด sandbox นั้นจะอยู่รอดข้ามการเรียกใช้เครื่องมือ /new และแม้แต่ซับเอเจนต์ ตราบใดที่กระบวนการ Hermes ยังทำงานอยู่

บทความนี้ครอบคลุมตัวเลือกที่ 1 สิ่งสำคัญที่ต้องรู้: ข้อมูลทั้งหมดของคุณ (คอนฟิก, คีย์ API, เซสชัน, สกิล, ความทรงจำ) อยู่ในไดเรกทอรีเดียวบนเครื่องโฮสต์ของคุณ ซึ่งถูกเมานต์ที่ /opt/data ภายในคอนเทนเนอร์ ตัวอิมเมจไม่มีสถานะ (stateless) ดังนั้นคุณสามารถดึงเวอร์ชันใหม่ได้ทุกเมื่อโดยไม่สูญเสียการตั้งค่าของคุณ


เริ่มต้นอย่างรวดเร็ว: การตั้งค่าครั้งแรก

หากนี่เป็นครั้งแรกของคุณ ให้สร้างไดเรกทอรีข้อมูลและเริ่มคอนเทนเนอร์แบบอินเทอร์แอคทีฟเพื่อรันตัวช่วยตั้งค่า:

mkdir -p ~/.hermes
docker run -it --rm \
  -v ~/.hermes:/opt/data \
  nousresearch/hermes-agent setup

คำสั่งนี้จะนำคุณเข้าสู่ตัวช่วยตั้งค่า ซึ่งจะถามคีย์ API ของคุณและเขียนลงใน ~/.hermes/.env คุณต้องทำเพียงครั้งเดียวเท่านั้น ระหว่างนั้น ก็เป็นโอกาสดีที่จะตั้งค่าระบบแชท (Telegram, Discord ฯลฯ) เพื่อให้เกตเวย์ของคุณมีที่สำหรับพูดคุย

⚠️ คำเตือน: หลีกเลี่ยงการใช้คอนโซล VPS บนเบราว์เซอร์สำหรับคำสั่งติดตั้งเหล่านี้ ผู้ให้บริการบางราย (เช่น Hetzner) ทำให้อักขระพิเศษเพี้ยนได้ — : อาจกลายเป็น ;, @ อาจแสดงผลผิดเพี้ยน และคีย์ API ที่วางอาจเสียหายอย่างเงียบๆ ให้เชื่อมต่อผ่าน SSH เสมอ เพื่อการป้อนคำสั่งที่ปลอดภัยจากการคัดลอกวาง หากจำเป็นต้องใช้คอนโซลเบราว์เซอร์ ให้พิมพ์คำสั่งด้วยตนเองและตรวจสอบ :, @, = และ / ทุกตัวอีกครั้ง

เคล็ดลับมือโปร: ภายในคอนเทนเนอร์ ให้รัน hermes setup --portal สักครั้ง — รีเฟรชโทเคนจะถูกเก็บไว้ในวอลุ่ม ~/.hermes ที่คุณเมานต์ไว้


การรันในโหมดเกตเวย์

เมื่อตั้งค่าเสร็จแล้ว ให้รันคอนเทนเนอร์ในเบื้องหลังเป็นเกตเวย์ถาวร:

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent gateway run

พอร์ต 8642 เปิดเผยเซิร์ฟเวอร์ API ที่เข้ากันได้กับ OpenAI ของเกตเวย์และเอนด์พอยต์สุขภาพ (health endpoint) พอร์ตนี้ไม่จำเป็นหากคุณใช้เฉพาะแพลตฟอร์มแชท แต่จำเป็นหากคุณต้องการแดชบอร์ดหรือเครื่องมือภายนอกเข้าถึงเกตเวย์

มีอะไรใหม่: เกตเวย์แบบซูเปอร์ไวซ์

นี่คือการเปลี่ยนแปลงครั้งใหญ่: ภายในอิมเมจ Docker อย่างเป็นทางการ gateway run ตอนนี้ ถูกซูเปอร์ไวซ์โดยอัตโนมัติด้วย s6-overlay หากเกตเวย์คราแชร์ มันจะรีสตาร์ทภายในไม่กี่วินาทีโดยไม่สูญเสียคอนเทนเนอร์ แดชบอร์ด (เมื่อเปิดใช้งาน) ก็ถูกซูเปอร์ไวซ์ควบคู่กันไปด้วย

คุณจะเห็นข้อความสั้นๆ หนึ่งบรรทัดใน docker logs ที่ยืนยันการอัปเกรดนี้ หากต้องการเลือกไม่ใช้และได้พฤติกรรมแบบเดิม (คอนเทนเนอร์ออก = เกตเวย์ออก) ให้ส่ง --no-supervise หรือตั้งค่า HERMES_GATEWAY_NO_SUPERVISE=1 สิ่งนี้มีประโยชน์สำหรับการทดสอบแบบ CI smoke test แต่สำหรับโปรดักชัน การซูเปอร์ไวซ์แบบค่าเริ่มต้นดีกว่าอย่างชัดเจน

การหยุดฮาร์ดสต็อปของ Tool-Loop

การตั้งค่าสำคัญอย่างหนึ่งสำหรับเกตเวย์ที่ทำงานแบบไม่มีคนดูแล: tool_loop_guardrails.hard_stop_enabled มีค่าเริ่มต้นเป็น false ซึ่งใช้ได้ดีสำหรับเซสชันอินเทอร์แอคทีฟที่มนุษย์สามารถเห็นคำเตือนได้ แต่ในการติดตั้งแบบไม่มีคนดูแล คำเตือนเพียงอย่างเดียวอาจไม่สามารถหยุด agent ที่ติดอยู่ในลูปได้ หากคุณต้องการพฤติกรรมแบบเซอร์กิตเบรกเกอร์ ให้เปิดใช้งานใน config.yaml ของโปรไฟล์คุณ:

tool_loop_guardrails:
  hard_stop_enabled: true
  hard_stop_after:
    exact_failure: 5
    idempotent_no_progress: 5

การเปิดเผยเซิร์ฟเวอร์ API

เซิร์ฟเวอร์ API ถูกจำกัดด้วย API_SERVER_ENABLED=true หากต้องการเปิดเผยเกินกว่า 127.0.0.1 ภายในคอนเทนเนอร์ ให้ตั้งค่า API_SERVER_HOST=0.0.0.0 และ API_SERVER_KEY ด้วย (อย่างน้อย 8 อักขระ — สร้างได้ด้วย openssl rand -hex 32):

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  -e API_SERVER_ENABLED=true \
  -e API_SERVER_HOST=0.0.0.0 \
  -e API_SERVER_KEY="$(openssl rand -hex 32)" \
  -e API_SERVER_CORS_ORIGINS='*' \
  nousresearch/hermes-agent gateway run

หมายเหตุด้านความปลอดภัย: การเปิดพอร์ตใดๆ บนเครื่องที่เชื่อมต่ออินเทอร์เน็ตคือความเสี่ยง อย่าทำเว้นแต่คุณจะเข้าใจผลกระทบทั้งหมดอย่างถ่องแท้


การรันแดชบอร์ด

เว็บแดชบอร์ดในตัวทำงานเป็นบริการ s6-rc ที่ถูกซูเปอร์ไวซ์ควบคู่ไปกับเกตเวย์ในคอนเทนเนอร์เดียวกัน เพียงตั้งค่า HERMES_DASHBOARD=1:

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  -p 9119:9119 \
  -e HERMES_DASHBOARD=1 \
  nousresearch/hermes-agent gateway run

หากแดชบอร์ดคราแชร์ s6-supervise จะรีสตาร์ทโดยอัตโนมัติหลังจากหน่วงเวลาสั้นๆ เอาต์พุตของมันจะไปที่ docker logs <container>


โลโก้ไปอยู่ที่ไหน

สำหรับแผนผังการกำหนดเส้นทางทั้งหมด (เกตเวย์รายโปรไฟล์, แดชบอร์ด, boot reconciler และ docker logs ทั้งคอนเทนเนอร์) ให้ดูส่วนเฉพาะในเอกสารประกอบ เวอร์ชันสั้น: ทุกอย่างจะไปลงเอยที่ docker logs ในที่สุด แต่มีคำนำหน้าที่ชัดเจนเพื่อให้คุณแยกแยะได้ว่าอะไรเป็นอะไร


สรุป

Docker มอบวิธีที่สะอาดและอัปเกรดได้ในการรัน Hermes Agent คอนเทนเนอร์ไม่มีสถานะ ข้อมูลของคุณอยู่บนโฮสต์อย่างปลอดภัย และการซูเปอร์ไวซ์แบบ s6 ใหม่หมายความว่าเกตเวย์ของคุณจะยังคงทำงานต่อไปแม้จะคราแชร์ ไม่ว่าคุณจะรันการตั้งค่าแบบง่ายๆ หรือชุดแดชบอร์ด + เซิร์ฟเวอร์ API เต็มรูปแบบ คำสั่งข้างต้นจะพาคุณไปถึงที่นั่นได้ภายในไม่กี่นาที

📖 เอกสารทางการ

この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/features/hooks