EQVPS

Docker Compose สำหรับเอเจนต์ AI: สแตกแบบ self-hosted ครบชุดบน VPS ตัวเดียว

Sep 6, 2026 · 2 นาทีในการอ่าน · EQVPS Team

เอเจนต์ AI แทบไม่เคยเป็นโพรเซสเดียว มีลูปเอเจนต์เอง, ที่เก็บเวกเตอร์ สำหรับความจำ, แคช หนึ่งตัว, มักมี ฐานข้อมูล สำหรับสถานะ, และอาจมีแดชบอร์ดเล็ก ๆ การรันแต่ละอย่างด้วยมือ — เริ่มมัน รีสตาร์ทหลังรีบูต จำว่าพอร์ตไหนเป็นอะไร — น่าเบื่อเร็ว Docker Compose อธิบายทั้งหมดในไฟล์เดียวและรันด้วยคำสั่งเดียว นี่คือสแตกคัดลอก-วางสำหรับวางเอเจนต์บน VPS แบบเรียบร้อย

ถ้าคุณต้องการแค่เวอร์ชัน deploy-ไม่ใช้-Docker คู่มือรันเอเจนต์ AI ตลอด 24/7 ครอบคลุม systemd แทน หน้านี้คือเวอร์ชันแบบคอนเทนเนอร์-เนทีฟ

สแตก

เอเจนต์ self-hosted ทั่วไปต้องการสี่อย่างข้าง ๆ ตัวมัน: โพรเซสเอเจนต์, Qdrant (ความจำเวกเตอร์), Redis (แคช / คิว) และ Postgres (สถานะ) นี่คือ docker-compose.yml ที่รันทั้งหมดนั้น โดยกันบริการภายในให้พ้นจากอินเทอร์เน็ตสาธารณะ:

# /opt/agent/docker-compose.yml
services:
  agent:
    build: .                      # your agent image (or image: your/agent:latest)
    restart: unless-stopped
    env_file: [.env]              # OPENAI/ANTHROPIC keys etc. — never in this file
    environment:
      QDRANT_URL: http://qdrant:6333
      REDIS_URL: redis://redis:6379
      DATABASE_URL: postgres://agent:${DB_PASSWORD}@postgres:5432/agent
    depends_on: [qdrant, redis, postgres]
    # no ports: — this agent only makes outbound calls. Publish one only if it serves webhooks.

  qdrant:
    image: qdrant/qdrant:latest
    restart: unless-stopped
    volumes: ["qdrant:/qdrant/storage"]   # internal only — not published

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: ["redis-server", "--save", "60", "1"]
    volumes: ["redis:/data"]

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: agent
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: agent
    volumes: ["pg:/var/lib/postgresql/data"]

volumes: { qdrant: {}, redis: {}, pg: {} }

secret อยู่ใน .env ไม่ใช่ในไฟล์ compose:

# /opt/agent/.env  (chmod 600, never committed)
ANTHROPIC_API_KEY=sk-ant-...
DB_PASSWORD=a-long-random-string

ยกมันขึ้น:

apt update && apt install -y docker.io docker-compose-v2
systemctl enable --now docker
cd /opt/agent && docker compose up -d
docker compose logs -f agent

บริการภายในทุกตัว (Qdrant, Redis, Postgres) เข้าถึงได้ เฉพาะ บนเครือข่าย compose ด้วยชื่อบริการ — ไม่มีตัวใดถูกเผยแพร่สู่อินเทอร์เน็ต เอเจนต์คุยกับพวกมันผ่านเครือข่ายส่วนตัวนั้น และไม่มีอะไรบนพอร์ตเหล่านั้นหันหน้าออกสู่โลก

รายละเอียดที่สำคัญ

ส่วนที่เป็นของเราจริง ๆ: เอเจนต์สร้างเครื่องของตัวเองได้

เพราะ EQVPS เปิด เซิร์ฟเวอร์ MCP เอเจนต์ที่รันสแตกนี้สามารถจัดหา อีก VPS สะอาดได้ด้วยตัวเอง — สั่งซื้อ รับ root รื้อทิ้ง — โดยจ่ายจากยอดคริปโตแบบเติมล่วงหน้า สแตก compose ที่ต้องการแซนด์บ็อกซ์ใหม่สามารถยกขึ้นได้โดยไม่มีมนุษย์ในลูป

ทำไมต้อง EQVPS สำหรับเอเจนต์ที่ทำเป็น Docker

VPS สำหรับเอเจนต์ AI (ภาพรวม) → · VPS สำหรับ Docker → · โฮสต์ฐานข้อมูลเวกเตอร์สำหรับความจำเอเจนต์ →

FAQ

ทำไมต้องรันเอเจนต์ AI ด้วย Docker Compose แทนโพรเซสเปล่า ๆ?

เอเจนต์แทบไม่เคยเป็นโพรเซสเดียว — มันคือลูปเอเจนต์บวกที่เก็บเวกเตอร์ แคช และมักจะมีฐานข้อมูล Compose อธิบายสแตกทั้งชุดในไฟล์เดียว ยกทุกอย่างขึ้นด้วยคำสั่งเดียว รีสตาร์ทแต่ละส่วนเมื่อแครชหรือรีบูต และเก็บบริการภายใน (Postgres, Redis, Qdrant) ไว้บนเครือข่ายส่วนตัวเพื่อให้เปิดเผยเฉพาะที่คุณเลือก เป็นวิธีที่เรียบร้อยที่สุดในการ self-host เอเจนต์ที่มีชิ้นส่วนเคลื่อนไหว

สแตกเอเจนต์ต้องใช้แพ็กเกจไหน?

สำหรับเอเจนต์ที่พึ่ง API (โมเดลรันที่ผู้ให้บริการของคุณ) สแตกเบา — ลูปเอเจนต์, Qdrant, Redis และ Postgres ลงตัวสบายบน Small ($8/เดือน) หรือแพ็กเกจ AI-Agent ($10/เดือน, 4 GB) ของเรา คุณต้องการ RAM มากขึ้นก็ต่อเมื่อเก็บดัชนีเวกเตอร์ใหญ่ในหน่วยความจำหรือรันโมเดลในเครื่อง ซึ่งเป็นการตั้งค่าที่ต่างและหนักกว่า

คีย์ API ใส่ที่ไหน — ในไฟล์ compose?

ไม่ เก็บ secret ไว้ในไฟล์ .env (git ละเว้น) และอ้างอิงเป็นตัวแปรสภาพแวดล้อมใน compose หรือใช้ Docker secrets อย่า commit คีย์ลง docker-compose.yml เด็ดขาด ผูกบริการภายในเข้ากับเครือข่าย compose เท่านั้น; เผยแพร่แค่พอร์ตของเอเจนต์ (หรือไม่เผยแพร่เลย ถ้ามันทำแค่การเรียกออก)

คอนเทนเนอร์กลับมาหลังรีบูตไหม?

เฉพาะเมื่อคุณสั่ง ตั้ง restart: unless-stopped (หรือ always) ในแต่ละบริการและเปิด Docker ตอนบูต แล้ว docker compose up -d จะรอดจากรีบูตและแครช หากไม่มีนโยบายรีสตาร์ท คอนเทนเนอร์จะดับหลังเซิร์ฟเวอร์รีสตาร์ท

คุณขอ KYC หรือบัตรไหม?

ไม่ อีเมลเพื่อสมัคร จ่ายด้วย USDC หรือ USDT — ไม่มีเอกสาร ไม่มีบัตร root ในราวหนึ่งนาที

← กลับไปบล็อกดูแพ็กเกจและราคา →

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง