−25%

Windows 연간 결제, 10월 31일까지. 요금제 보기

EQVPS
시작하기

AI 에이전트를 위한 Docker Compose: VPS 한 대의 완전한 자체 호스팅 스택

2026년 9월 6일 · 3 분 읽기 · EQVPS Team

AI 에이전트는 좀처럼 단일 프로세스가 아닙니다. 에이전트 루프 자체가 있고, 기억을 위한 벡터 스토어, 캐시, 보통 상태를 위한 데이터베이스, 그리고 어쩌면 작은 대시보드가 있습니다. 그 각각을 손으로 실행하는 것 — 시작하고, 재부팅 후 다시 올리고, 어느 포트가 무엇인지 기억하는 것 — 은 금세 지겨워집니다. Docker Compose는 그 전체를 한 파일로 기술하고 한 명령으로 실행합니다. 이것은 에이전트를 VPS에 깔끔하게 올리기 위한 복사-붙여넣기 스택입니다.

Docker 없는 배포 버전만 원한다면 AI 에이전트 24/7 실행 가이드가 대신 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 요금제면 됩니다. 웹훅이나 대시보드를 서비스할 때만 전용 IP를 추가하세요.
  • 코어가 아니라 메모리로 크기를 잡으세요. API 기반 에이전트는 가볍습니다. Qdrant 인덱스가 커지거나 로컬 모델을 추가할 때가 위로 올라갈 때입니다 — 에이전트용 고메모리 VPS를 보세요.

정말 우리만의 부분: 에이전트가 자기 머신을 만들 수 있다

EQVPS가 MCP 서버를 제공하므로, 이 스택을 실행하는 에이전트는 스스로 또 다른 깨끗한 VPS를 프로비저닝할 수 있습니다 — 주문하고, root를 얻고, 허물기 — 선불 암호화폐 잔액에서 결제하면서. 새 샌드박스가 필요한 compose 스택은 루프에 사람 없이 하나를 올릴 수 있습니다.

Docker화된 에이전트에 EQVPS를 쓰는 이유

  • 깨끗한 이미지, 약 60초에 root. Ubuntu/Debian; docker compose up이면 스택이 살아납니다.
  • KYC 없음, 암호화폐로 결제. 가입에 이메일, 결제에 USDC/USDT — 머신을 당신의 신원에 묶는 것이 없습니다.
  • NVMe + 무제한 1 Gbit/s, EU(독일/핀란드). 이미지를 당기고 로그를 보내도 깜짝 청구서가 나오지 않습니다.

AI 에이전트용 VPS(개요) → · Docker용 VPS → · 에이전트 기억을 위한 벡터 DB 호스팅 →

FAQ

왜 AI 에이전트를 맨 프로세스 대신 Docker Compose로 실행하나요?

에이전트는 좀처럼 프로세스 하나가 아닙니다 — 에이전트 루프에 벡터 스토어, 캐시, 보통 데이터베이스까지입니다. Compose는 스택 전체를 한 파일로 기술하고, 한 명령으로 모두 올리고, 충돌이나 재부팅 시 각 부품을 재시작하며, 내부 서비스(Postgres, Redis, Qdrant)를 사설 네트워크에 두어 당신이 고른 것만 노출합니다. 움직이는 부품이 있는 에이전트를 자체 호스팅하는 가장 깔끔한 방법입니다.

에이전트 스택에는 어떤 요금제가 필요한가요?

API 기반 에이전트(모델은 제공자 쪽에서 실행)라면 스택이 가볍습니다 — 에이전트 루프, Qdrant, Redis, Postgres가 저희 Small(월 $8)이나 AI-Agent 요금제(월 $10, 4 GB)에 넉넉히 들어갑니다. 큰 벡터 인덱스를 메모리에 유지하거나 로컬 모델을 돌릴 때만 더 많은 RAM이 필요하며, 그것은 다르고 더 무거운 구성입니다.

API 키는 어디에 두나요 — compose 파일에?

아니요. 비밀은 .env 파일(git 무시)에 두고 compose에서 환경 변수로 참조하거나 Docker secrets를 쓰세요. 키를 절대 docker-compose.yml에 커밋하지 마세요. 내부 서비스는 compose 네트워크에만 바인딩하고, 에이전트의 포트만 공개하세요(아웃바운드 호출만 한다면 아무것도 공개하지 않기).

컨테이너가 재부팅 후 돌아오나요?

그렇게 지시할 때만요. 각 서비스에 restart: unless-stopped(또는 always)를 설정하고 부팅 시 Docker를 활성화하세요. 그러면 docker compose up -d가 재부팅과 충돌을 견딥니다. 재시작 정책이 없으면 컨테이너는 서버 재시작 후 꺼진 채로 남습니다.

KYC나 카드를 요구하나요?

아니요. 가입에 이메일, 결제는 USDC 또는 USDT — 서류 없음, 카드 없음. 약 1분이면 root.

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.