一個 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,歐盟。拉映像和傳記錄不會產生意外帳單。
評論
目前還沒有評論。歡迎成為第一位。