−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

面向 AI 代理的 Docker Compose:在一台 VPS 上的完整自託管技術堆疊

2026年9月6日 · 1 分鐘閱讀 · EQVPS Team

一個 AI 代理很少是單個程式。有代理迴圈本身、用於記憶的向量儲存、一個快取、通常還有用於狀態的資料庫,也許還有一個小儀表板。手動執行其中每一個——啟動它們、重新啟動後再拉起、記住哪個埠是哪個——很快就煩了。Docker Compose 用一個檔案描述整件事,並用一條指令執行它。這就是把代理整潔地放到 VPS 上的複製貼上技術堆疊。

如果您只想要不用 Docker 的部署版本,全天候執行 AI 代理指南 講的是 systemd。本頁是容器原生版本。

技術堆疊

一個典型的自託管代理身邊想要四樣東西:代理程式、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: {} }

機密放在 .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 網路裡透過服務名可達——沒有一個被髮布到網際網路。代理透過那個私有網路與它們通訊,那些埠上沒有任何東西面向外界。

真正重要的細節

  • 每個服務上的 restart: unless-stopped——這就是挺過重新啟動或崩潰的東西。讓 Docker 開機自啟,整個技術堆疊就會自行回來。
  • 金鑰在 .env 裡,不在 YAML 裡。 用 env 變數引用它們;把 .env 保持 chmod 600 並置於 git 之外。帶有效金鑰的洩露 compose 檔案是經典錯誤。
  • 不必發布的一律不發布。 一個只調用模型 API 和自己服務的代理根本不需要對內埠——所以 NAT 方案就行。只有當它服務 webhook 或儀表板時才加專用 IP。
  • 按記憶體而非核心來選規格。 API 支撐的代理很輕。當 Qdrant 的索引變大或您加了本機模型時,才是您往上升級的時候——見 面向代理的大記憶體 VPS。

真正屬於我們的部分:代理能自己造機器

因為 EQVPS 提供一個 MCP 伺服器,執行這個技術堆疊的代理可以自行開通另一台乾淨的 VPS——下單、拿到 root、拆掉——從預付的加密貨幣餘額中付款。一個需要全新沙箱的 compose 技術堆疊可以在沒有人參與的情況下自己拉起一台。

為什麼用 EQVPS 跑 Docker 化的代理

  • 乾淨映像,約 60 秒拿到 root。 Ubuntu/Debian;docker compose up 技術堆疊就上線了。
  • 無 KYC,加密貨幣付款。 註冊用電子郵件,付款用 USDC/USDT——沒有任何東西把機器和您的身分綁在一起。
  • NVMe + 不計量 1 Gbit/s,歐盟。拉映像和傳記錄不會產生意外帳單。

面向 AI 代理的 VPS(概覽)→ · 面向 Docker 的 VPS → · 為代理記憶託管向量資料庫 →

常見問題

為什麼用 Docker Compose 執行 AI 代理,而不是裸程式?

代理很少只是一個程式——它是代理迴圈加上一個向量儲存、一個快取,通常還有一個資料庫。Compose 用一個檔案描述整個技術堆疊,用一條指令把它全部拉起,在崩潰或重新啟動後重新啟動每個部件,並把內部服務(Postgres、Redis、Qdrant)留在私有網路裡,因此只暴露您選擇的部分。這是自託管一個有多個活動部件的代理最整潔的方式。

代理技術堆疊需要什麼方案?

對於 API 支撐的代理(模型在您的提供商處執行),技術堆疊很輕——代理迴圈、Qdrant、Redis 和 Postgres 在我們的 Small(每月 $8)或 AI-Agent 方案(每月 $10,4 GB)上都很舒適。只有當您在記憶體裡保留一個大型向量索引或執行本機模型時才需要更多記憶體,那是另一種更重的部署。

API 金鑰放哪裡——放在 compose 檔案裡嗎?

不。把機密放在 .env 檔案裡(被 git 忽略),在 compose 裡用環境變數引用它們,或使用 Docker secrets。絕不要把金鑰提交進 docker-compose.yml。把內部服務只綁定到 compose 網路;只發布代理的埠(如果它只發出對外呼叫,則什麼都不發布)。

容器在重新啟動後會回來嗎?

只有您讓它們這樣做才會。在每個服務上設定 restart: unless-stopped(或 always),並讓 Docker 開機自啟;這樣 docker compose up -d 就能挺過重新啟動和崩潰。沒有重新啟動策略,容器在伺服器重新啟動後會保持關閉。

您們要 KYC 或信用卡嗎?

不要。註冊用電子郵件,用 USDC 或 USDT 付款——無檔案、無卡。大約一分鐘拿到 root。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。