一个 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,欧盟(德国/芬兰)。拉镜像和传日志不会产生意外账单。
评论
暂无评论。来做第一个吧。