EQVPS

Docker Compose cho agent AI: một stack tự lưu trữ đầy đủ trên một VPS

6 thg 9, 2026 · 4 phút đọc · EQVPS Team

Một agent AI hiếm khi là một tiến trình duy nhất. Có bản thân vòng lặp agent, một kho vector cho bộ nhớ, một cache, thường là một cơ sở dữ liệu cho trạng thái, và có thể một bảng điều khiển nhỏ. Chạy từng cái bằng tay — khởi động chúng, khởi động lại sau reboot, nhớ cổng nào là cổng nào — nhanh chóng gây chán. Docker Compose mô tả toàn bộ trong một file và chạy nó bằng một lệnh. Đây là stack sao chép-dán để đặt một agent lên VPS theo cách gọn gàng.

Nếu bạn chỉ muốn phiên bản triển khai-không-Docker, hướng dẫn chạy một agent AI 24/7 thay vào đó bàn về systemd. Trang này là phiên bản container-native.

Stack

Một agent tự lưu trữ điển hình muốn bốn thứ bên cạnh: tiến trình agent, Qdrant (bộ nhớ vector), Redis (cache / hàng đợi) và Postgres (trạng thái). Đây là một docker-compose.yml chạy tất cả những thứ đó, với các dịch vụ nội bộ được giữ khỏi internet công cộng:

# /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: {} }

Bí mật sống trong .env, không phải file compose:

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

Đưa nó lên:

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

Mỗi dịch vụ nội bộ (Qdrant, Redis, Postgres) chỉ có thể truy cập trên mạng compose bằng tên dịch vụ — không cái nào được publish ra internet. Agent nói chuyện với chúng qua mạng riêng đó, và không gì trên các cổng ấy hướng ra thế giới.

Những chi tiết quan trọng

Phần thực sự là của chúng tôi: agent có thể tự dựng máy của chính nó

Vì EQVPS cung cấp một máy chủ MCP, một agent chạy stack này có thể tự cấp phát một VPS sạch khác — đặt nó, lấy root, dỡ bỏ nó — thanh toán từ một số dư crypto trả trước. Một stack compose cần một sandbox mới có thể dựng lên một cái mà không cần con người trong vòng lặp.

Vì sao chọn EQVPS cho một agent đã Docker hóa

VPS cho agent AI (tổng quan) → · VPS cho Docker → · Lưu trữ một cơ sở dữ liệu vector cho bộ nhớ agent →

FAQ

Tại sao chạy một agent AI bằng Docker Compose thay vì các tiến trình trần?

Một agent hiếm khi chỉ là một tiến trình — nó là vòng lặp agent cộng với một kho vector, một cache và thường là một cơ sở dữ liệu. Compose mô tả toàn bộ stack trong một file, đưa tất cả lên bằng một lệnh, khởi động lại từng phần khi crash hoặc reboot, và giữ các dịch vụ nội bộ (Postgres, Redis, Qdrant) trên một mạng riêng để chỉ những gì bạn chọn được phơi bày. Đó là cách gọn gàng nhất để tự lưu trữ một agent có nhiều bộ phận chuyển động.

Một stack agent cần gói nào?

Với một agent dựa trên API (mô hình chạy ở nhà cung cấp của bạn) stack nhẹ — vòng lặp agent, Qdrant, Redis và Postgres vừa thoải mái trên Small của chúng tôi ($8/tháng) hoặc gói AI-Agent ($10/tháng, 4 GB). Bạn chỉ cần thêm RAM nếu giữ một chỉ mục vector lớn trong bộ nhớ hoặc chạy mô hình cục bộ, đó là một thiết lập khác và nặng hơn.

Đặt khóa API ở đâu — trong file compose?

Không. Giữ bí mật trong một file .env (bị git bỏ qua) và tham chiếu chúng như biến môi trường trong compose, hoặc dùng Docker secrets. Đừng bao giờ commit khóa vào docker-compose.yml. Ràng buộc dịch vụ nội bộ chỉ vào mạng compose; chỉ publish cổng của agent (hoặc không gì cả, nếu nó chỉ thực hiện các cuộc gọi ra ngoài).

Các container có trở lại sau reboot không?

Chỉ khi bạn bảo chúng. Đặt restart: unless-stopped (hoặc always) trên mỗi dịch vụ và bật Docker lúc boot; khi đó docker compose up -d sống sót qua reboot và crash. Không có chính sách restart, một container vẫn tắt sau khi máy chủ khởi động lại.

Bạn có yêu cầu KYC hay thẻ không?

Không. Một email để đăng ký, thanh toán bằng USDC hoặc USDT — không giấy tờ, không thẻ. Root trong khoảng một phút.

← Quay lại blogXem gói & giá →

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.