Hermes Agent(NousResearch/hermes-agent)는 월 약 5달러 VPS에서 동작하도록 설계되었으며 노트북에만 국한되지 않습니다. 공식 Docker 이미지 nousresearch/hermes-agent는 호스트에 마운트한 ~/.hermes:/opt/data에 모든 상태를 저장하고, gateway 프로세스가 Telegram, Discord, Slack 등을 하나의 백그라운드 서비스로 연결합니다. 이 글은 저렴한 VPS에 Docker 설치, Telegram 봇 생성, 허용 목록 보안, docker compose 상시 운영을 단계별로 안내합니다. 공식 문서: Docker 사용자 가이드, 메시징 게이트웨이, 팀 Telegram 어시스턴트 가이드.
Apple 하드웨어에서 에이전트 하네스를 비교한다면 macOS 및 Mac mini M4에서 Hermes Agent vs OpenClaw를 참고하세요. 긴 Telegram 세션으로 컨텍스트가 커지면 Mac mini M4의 Hermes trajectory_compressor 메모리·토큰 튜닝이 도움이 됩니다. 해당 글은 로컬 스테이징에 초점을 두고, 이 페이지는 Linux VPS + Docker로 Telegram 24/7 운영에 집중합니다.
고지: MacHTML은 설정 스테이징용 클라우드 Mac mini 임대를 선택적으로 제공합니다. 이 가이드는 Linux VPS와 Docker가 중심이며 Mac은 필수가 아닙니다.
저렴한 VPS에서 Docker를 쓰는 이유
Hermes는 잠자는 동안에도 온라인인 프로세스가 필요합니다. 노트북은 덮개를 닫으면 중단되지만, 저렴한 VPS(보통 1–2 vCPU, 2–4 GB RAM, 월 약 4–6달러)에서는 gateway run을 24시간 돌릴 수 있습니다.
주간 배포 운영자에게 Docker는 세 가지 실익이 있습니다. 첫째 재현 가능한 설치: 매 VPS에서 Python 3.11·Node를 디버깅하는 대신 nousresearch/hermes-agent:latest를 pull. 둘째 격리된 업그레이드: 이미지를 바꿔도 호스트 ~/.hermes에 세션·메모리·API 키가 남습니다. 셋째 선택적 명령 샌드박스: TERMINAL_BACKEND=docker로 셸 도구를 호스트 커널이 아닌 별도 컨테이너에서 실행합니다.
Telegram은 엔드투엔드 검증에 가장 빠릅니다. @BotFather로 봇을 만들고 토큰을 ~/.hermes/.env에 넣고 숫자 사용자 ID를 TELEGRAM_ALLOWED_USERS에 추가하면 몇 초 안에 메시지 테스트가 가능합니다. 게이트웨이는 기본적으로 알 수 없는 사용자를 거부합니다. 터미널 권한이 있는 봇에서는 GATEWAY_ALLOW_ALL_USERS=true를 켜지 마세요.
VPS는 안정적인 공인 IP와 cron에 적합한 가동 시간을 제공합니다. Hermes는 gateway 안에서 60초마다 cron을 실행하며, 호스트 재부팅 후 Compose의 restart: unless-stopped로 gateway가 자동 복구됩니다.
가정용 NAS나 Raspberry Pi보다 작은 클라우드 VM은 Telegram API·LLM 제공자로의 아웃바운드가 안정적이고 스냅샷으로 재해 복구가 쉽습니다. bind-mount한 ~/.hermes를 메이저 업그레이드 전에 스냅샷하세요.
한국에서 운영한다면 Telegram·LLM 엔드포인트로 안정적인 출구가 있는 리전을 선택하거나 프록시를 계획하세요. 공식 이미지는 Docker Hub에서 pull하며, 미러 사용 시 digest를 확인하세요.
Docker Compose는 인수인계를 쉽게 합니다: compose 파일 하나, 데이터 디렉터리 하나, pairing 절차를 문서화해 스테이징 VPS에서 프로덕션을 재현한 뒤 설정을 승격하세요.
Telegram만 쓰고 Dashboard가 필요 없다면 Minimum으로 충분한 경우가 많습니다. terminal.backend: docker나 다중 관리자가 필요하면 Recommended로 올리고 sandbox와 gateway의 RAM 경합을 모니터링하세요.
아키텍처: 컨테이너 내 gateway
Internet → Telegram API → VPS:hermes container (gateway run)
↳ /opt/data (bind-mount ~/.hermes)
├─ .env (TELEGRAM_BOT_TOKEN, API keys)
├─ config.yaml (terminal, models, cron)
├─ sessions/ (per-chat history)
└─ memories/ (curated long-term memory)
gateway는 단일 장수 프로세스로 메시징 플랫폼을 멀티플렉스합니다. 각 Telegram 채팅은 /opt/data/sessions/에 저장되고 에이전트 루프로 디스패치되며, 장기 메모리는 /opt/data/memories/에 저장됩니다. bind-mount ~/.hermes:/opt/data로 모든 상태는 호스트에 있습니다.
같은 /opt/data를 두 gateway 컨테이너에 마운트하지 마세요. 세션 파일은 동시 쓰기에 안전하지 않으며 이중 gateway는 손상·중복 처리를 유발합니다. 프로덕션은 hermes 서비스 하나, command: gateway run이 정석입니다.
포트 8642는 선택적 OpenAI 호환 API·헬스 엔드포인트입니다. Telegram만 쓰면 공개할 필요 없습니다. 활성화 시 API_SERVER_ENABLED=true, 신중한 바인딩, 강한 API_SERVER_KEY와 방화벽으로 보호하세요.
VPS 사이징과 비용
Telegram 트래픽이 안정되면 gateway RAM이 주요 제약입니다. 에이전트 컨테이너는 모델 컨텍스트를 유지하고 terminal.backend: docker 시 sandbox가 추가 비용을 냅니다. 디스크는 세션·스킬·메모리로 커지므로 cron 로그가 쌓이기 전에 여유를 두세요.
아래 표는 네 가지 대표 프로필입니다. 셸 도구나 다중 관리자가 필요하면 Recommended부터 시작하고, Budget lab은 짧은 pairing 검증에만 쓰세요.
| 프로필 | vCPU | RAM | 디스크 | 월 예상 | 적합 |
|---|---|---|---|---|---|
| 최소 | 1 | 2 GB | 20 GB | 약 $4–5 | Telegram 전용 gateway, Dashboard 없음, 단일 사용자 |
| 권장 | 2 | 4 GB | 40 GB | 약 $6–8 | Gateway + TERMINAL_BACKEND=docker 샌드박스 shell |
| 고부하 | 2+ | 8 GB | 60 GB | 약 $12+ | Dashboard, cron, 큰 skills 트리, 다중 관리자 |
| 예산 랩 | 1 | 1 GB | 15 GB | 약 $3–4 | 스모크·pairing 검증만(프로덕션 비권장) |
단계별 런북
- VPS에 Docker 설치 — Ubuntu 22.04 이상에서 docker.io와 docker-compose-v2를 apt로 설치하고 사용자를 docker 그룹에 추가해 sudo 없이 compose를 실행합니다.
sudo apt update && sudo apt install -y docker.io docker-compose-v2 sudo usermod -aG docker $USER newgrp docker - 영구 데이터 디렉터리 생성 — 모든 비밀·세션·설정은 호스트 ~/.hermes에 있습니다. 이미지 업그레이드 전 이 폴더를 백업하세요.
mkdir -p ~/.hermes - 대화형 setup 한 번 실행 — nousresearch/hermes-agent를 pull하고 ~/.hermes:/opt/data를 마운트해 마법사가 .env와 config.yaml을 쓰게 합니다.
docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup - Telegram 봇과 허용 목록 생성 — @BotFather로 bot token, @userinfobot으로 숫자 사용자 ID. 기본은 알 수 없는 사용자 거부——터미널 권한 봇에서 GATEWAY_ALLOW_ALL_USERS=true 금지.
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz TELEGRAM_ALLOWED_USERS=987654321 - DM pairing 코드 승인(선택) — 사전 허용 목록을 생략하면 알 수 없는 사용자에게 1시간 pairing 코드가 갑니다. 호스트에서 pairing approve로 승인합니다.
docker run --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent pairing approve telegram XKGH5N7P - 포그라운드 gateway run 스모크 테스트 — 대화형으로 gateway run을 시작해 봇에 /help를 보내 /model·/compress를 확인한 뒤 프로덕션으로.
docker run --rm -it -v ~/.hermes:/opt/data nousresearch/hermes-agent gateway run - Docker Compose로 프로덕션 배포 — restart: unless-stopped, bind-mount ~/.hermes:/opt/data, 메모리/CPU 상한으로 폭주 에이전트가 VPS를 고갈시키지 않게 합니다.
services: hermes: image: nousresearch/hermes-agent:latest container_name: hermes restart: unless-stopped command: gateway run volumes: - ~/.hermes:/opt/data deploy: resources: limits: memory: 4G cpus: "2.0"docker compose up -d docker logs -f hermes - 팀 봇 터미널 접근 강화 — config.yaml에서 terminal.backend: docker로 shell 도구를 호스트 커널이 아닌 샌드박스 컨테이너에서 실행합니다.
# ~/.hermes/config.yaml excerpt terminal: backend: docker container_cpu: 1 container_memory: 5120 container_persistent: true
문제 해결
봇이 응답하지 않고 로그에 Telegram 401
@BotFather에서 토큰을 재발급하고 ~/.hermes/.env의 TELEGRAM_BOT_TOKEN을 갱신한 뒤 docker compose restart hermes를 실행하세요. 이름 변경·토큰 폐기 후 미갱신이 가장 흔한 원인입니다.
승인되지 않은 메시지 또는 끝없는 pairing
봇 ID가 아닌 개인 숫자 ID를 TELEGRAM_ALLOWED_USERS에 추가하거나 pairing approve telegram <code>를 실행하세요. ~/.hermes를 마운트하는 gateway는 하나만 두세요.
범위 제한 repo 읽기·npm test·가드된 자동 수정이 필요하면 2026 Hermes Agent MCP + Claude Opus 4.8: 로컬 코드 샌드박스를 읽어보세요.
자주 묻는 질문
VPS 대신 Mac mini에서 Hermes Docker를 실행할 수 있나요?
예——동일한 docker run·compose 패턴이 Docker Desktop·Colima에서 동작합니다. Telegram만 24/7이면 VPS가 보통 더 저렴하고 Apple 도구체인이 필요하면 Mac mini M4가 낫습니다.
8642 포트를 노출해야 하나요?
Telegram만이면 불필요합니다. OpenAI 호환 API·외부 헬스체크가 필요할 때만 8642를 켜고 API_SERVER_ENABLED=true와 강한 API_SERVER_KEY, 방화벽을 설정하세요.
사이트 OpenClaw Telegram 가이드와 무엇이 다른가요?
OpenClaw 글은 클라우드 Mac의 Node.js gateway 설치를 다룹니다. Hermes는 hermes gateway와 네이티브 Telegram, Nous Research Docker 문서가 중심입니다.
먼저 테스트할 슬래시 명령은?
첫 응답 후 /status, /model, /compress, /new를 보내세요. 관리자 명령은 제한되고 일반 사용자는 허용 목록을 따릅니다.