Hermes Agent (NousResearch/hermes-agent) рассчитан на VPS за ~5 $/мес, а не только на ноутбук. Официальный образ Docker nousresearch/hermes-agent хранит всё состояние в смонтированном на хосте ~/.hermes:/opt/data, а процесс gateway подключает Telegram, Discord, Slack и другие платформы из одного фонового сервиса. В этом руководстве — установка Docker на недорогом VPS, создание Telegram-бота, безопасность по белому списку и постоянный деплой через docker compose. Официальные материалы: руководство по Docker, шлюз сообщений, гайд по командному Telegram-ассистенту.
Если сравниваете агентные harness на Apple-железе, читайте Hermes Agent vs OpenClaw на macOS и Mac mini M4. После длинных сессий Telegram, раздувающих контекст, настройте память и токены через Hermes trajectory_compressor на Mac mini M4. Те статьи про локальный staging; эта страница — Linux VPS + Docker для Telegram 24/7.
Раскрытие: MacHTML предлагает опциональную аренду облачного Mac mini для staging конфигов; этот гайд про Linux VPS и Docker, Mac не обязателен.
Зачем Docker на дешёвом VPS
Hermes нужен процесс, который остаётся онлайн, пока вы спите. Ноутбук закрывается; дешёвый VPS (часто 1–2 vCPU, 2–4 ГБ RAM, ~4–6 $/мес) может круглосуточно выполнять gateway run.
Docker даёт три практических плюса при еженедельных деплоях. Во-первых воспроизводимые установки: pull nousresearch/hermes-agent:latest вместо отладки Python 3.11, Node и пакетов дистрибутива на каждом новом VPS. Во-вторых изолированные обновления: меняете образ, ~/.hermes на хосте сохраняется. В-третьих опциональная песочница команд: TERMINAL_BACKEND=docker для shell-инструментов в отдельном контейнере, не на ядре хоста.
Telegram — самый быстрый канал для сквозной проверки. Создайте бота через @BotFather, положите токен в ~/.hermes/.env, добавьте числовой user id в TELEGRAM_ALLOWED_USERS. Политика по умолчанию отклоняет неизвестных; не включайте GATEWAY_ALLOW_ALL_USERS=true на боте с доступом к терминалу.
VPS даёт стабильный публичный IP и предсказуемый аптайм для cron. Hermes тикает cron каждые 60 секунд в gateway; после перезагрузки хоста restart: unless-stopped в Compose поднимает сервис без ручного вмешательства.
По сравнению с домашним NAS или Raspberry Pi, небольшая облачная VM обычно лучше ходит к Telegram API и LLM-провайдерам, плюс снапшоты. Делайте снапшот ~/.hermes перед крупными апгрейдами.
Из РФ/СНГ выбирайте регион со стабильным egress к Telegram и LLM или планируйте прокси. Официальный образ тянется с Docker Hub; при зеркалах проверяйте digest.
Docker Compose упрощает передачу дел: один compose-файл, одна директория данных, документированный pairing для воспроизведения prod на staging VPS.
Только Telegram без Dashboard — часто хватает Minimum; при terminal.backend: docker или нескольких админах переходите на Recommended и следите за RAM между sandbox и gateway.
Перед обновлением сделайте снимок ~/.hermes и зафиксируйте digest образа для отката и аудита.
Архитектура: 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 и health. Только Telegram — можно не публиковать. При включении: API_SERVER_ENABLED=true, осторожный bind, сильный API_SERVER_KEY и firewall.
В продакшене настройте ежедневные бэкапы ~/.hermes и оповещения об изменениях, чтобы каталоги сессий не заполняли диск незаметно.
Размер VPS и стоимость
При стабильном трафике Telegram узкое место — RAM gateway. Контейнер агента держит контекст модели; sandbox добавляют нагрузку при terminal.backend: docker. Диск растёт с сессиями, skills и memories — закладывайте запас до накопления логов cron.
Таблица ниже — четыре профиля. Начинайте с Recommended при shell-инструментах или нескольких админах; Budget lab только для коротких pairing-тестов.
Следите за docker stats hermes: при постоянном превышении лимита RAM в Compose сначала увеличьте RAM, затем добавляйте sandbox-навыки.
| Профиль | vCPU | RAM | Диск | Примерно в месяц | Назначение |
|---|---|---|---|---|---|
| Минимум | 1 | 2 ГБ | 20 ГБ | ~$4–5 | Только Telegram gateway, без dashboard, один пользователь |
| Рекомендуемый | 2 | 4 ГБ | 40 ГБ | ~$6–8 | Gateway + sandbox TERMINAL_BACKEND=docker для shell |
| Тяжёлый | 2+ | 8 ГБ | 60 ГБ | ~$12+ | Dashboard, cron, большое дерево skills, несколько админов |
| Бюджетная лаба | 1 | 1 ГБ | 15 ГБ | ~$3–4 | Только smoke и pairing — не продакшен |
Пошаговый runbook
- Установить Docker на VPS — На Ubuntu 22.04+ установите docker.io и docker-compose-v2 через apt, добавьте пользователя в группу docker для compose без sudo.
sudo apt update && sudo apt install -y docker.io docker-compose-v2 sudo usermod -aG docker $USER newgrp docker - Создать каталог постоянных данных — Секреты, сессии и config в ~/.hermes на хосте — бэкап перед обновлением образа.
mkdir -p ~/.hermes - Один раз запустить интерактивный setup — Pull nousresearch/hermes-agent и mount ~/.hermes:/opt/data, чтобы мастер записал .env и config.yaml.
docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup - Создать Telegram-бота и белый список — @BotFather для token, @userinfobot для числового user id. По умолчанию неизвестные отклоняются — не ставьте GATEWAY_ALLOW_ALL_USERS=true с терминалом.
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz TELEGRAM_ALLOWED_USERS=987654321 - Одобрить DM pairing-коды (опционально) — Без предварительного списка неизвестные получают часовой код; одобрите pairing approve с хоста.
docker run --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent pairing approve telegram XKGH5N7P - Smoke-test 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 от разгона агента.
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 работал в sandbox, а не на ядре хоста.
# ~/.hermes/config.yaml excerpt terminal: backend: docker container_cpu: 1 container_memory: 5120 container_persistent: true
Устранение неполадок
Бот не отвечает; в логах Telegram 401
Перевыпустите token в @BotFather, обновите TELEGRAM_BOT_TOKEN в ~/.hermes/.env, затем docker compose restart hermes. Чаще всего после переименования или отзыва token.
Неавторизованное сообщение или бесконечный pairing
Добавьте личный числовой id — не id бота — в TELEGRAM_ALLOWED_USERS или pairing approve telegram <code>. Только один gateway должен монтировать ~/.hermes.
Нужны чтение repo в scope, npm test и guarded auto-fix? Читайте Hermes Agent MCP для Claude Opus 4.8: локальная песочница кода 2026.
FAQ
Можно ли Hermes Docker на Mac mini вместо VPS?
Да — те же docker run и compose работают в Docker Desktop или Colima. Для Telegram-only 24/7 VPS обычно дешевле; Mac mini M4 — для Apple-инструментов.
Нужно ли открывать порт 8642?
Нет для только Telegram. Включайте 8642 для OpenAI-совместимого API или внешних health-check с API_SERVER_ENABLED=true и сильным API_SERVER_KEY.
Чем отличается от гайдов OpenClaw Telegram на сайте?
Статьи OpenClaw про Node.js gateway на облачном Mac. Hermes использует hermes gateway с нативными адаптерами Telegram и Docker-доку Nous Research.
Какие slash-команды проверить первыми?
После первого ответа: /status, /model, /compress, /new. Команды админов ограничены; пользователи — по белому списку.