Самостоятельный хостинг Hermes Agent на VPS

11 мин чтения·Matthieu·hermes-agentai-agentself-hostingdockertelegramsystemd|

Разверните Hermes Agent от Nous Research на своем VPS с Docker-изоляцией, Telegram-интеграцией и systemd-сервисом. Каждая команда проверена на реальном сервере.

Hermes Agent работает локально на большинстве машин разработчиков. Но локальный запуск означает: агент отключается, когда ноутбук засыпает, нет доступа с телефона, нет постоянного рабочего пространства. Перенос на VPS решает все три проблемы: агент работает 24/7, вы общаетесь с ним через Telegram, и он сохраняет память и навыки между сессиями.

В этом руководстве мы пройдем развертывание Hermes Agent на VPS с нуля. Вы установите его, подключите LLM-провайдера, изолируете выполнение команд в Docker, настроите Telegram и запустите все как systemd-сервис, который переживает перезагрузки. Каждая команда проверена на Ubuntu 24.04 VPS с 4 vCPU и 8 GB RAM.

Самостоятельный хостинг AI-агентов на VPS

Что такое Hermes Agent и зачем его хостить самому?

Hermes Agent -- это AI-агент с открытым исходным кодом от Nous Research. Он подключается к LLM-провайдерам (OpenRouter, Anthropic, Ollama и другим), выполняет команды в терминале, просматривает веб и запоминает полученную информацию между сессиями. Он хранит постоянную память, создает переиспользуемые навыки из выполненных задач и поддерживает шлюзы для обмена сообщениями через Telegram, Discord, Slack, WhatsApp или Signal.

Самостоятельный хостинг означает, что ваши промпты и данные остаются на вашем сервере. Никакая сторонняя платформа не видит ваши разговоры. Агент работает непрерывно, накапливает контекст со временем, и стоит только VPS-хостинг плюс LLM API-вызовы. На VPS за $5-10/месяц с OpenRouter большинство разработчиков тратят менее $20/месяц суммарно.

Что нужно Hermes Agent для работы на VPS?

Hermes Agent требует Linux-сервер минимум с 2 GB RAM, 10 GB свободного дискового пространства и установленным Git. Docker необходим для изолированного выполнения команд (и это то, что вам нужно). Установщик сам подтянет Python 3.11+ и Node.js.

Требование Минимум Рекомендуется
ОС Ubuntu 22.04 / Debian 12 Ubuntu 24.04
RAM 2 GB 4 GB+
Диск 10 GB свободно 20 GB+ (Docker-образы)
CPU 1 vCPU 2+ vCPU
Зависимости Git Git, Docker
Сеть Исходящий HTTPS Исходящий HTTPS

Сам агент легковесный. Основная часть RAM уходит на Docker-контейнеры при выполнении команд. Если планируете несколько одновременных сессий через шлюз обмена сообщениями, берите 4 GB или больше.

Предварительные требования

Перед установкой Hermes Agent настройте непривилегированного пользователя и базовый файрвол. Если у вас уже защищенный VPS, переходите к разделу установки.

Создание выделенного пользователя

Подключитесь к серверу по SSH как root и создайте пользователя для Hermes:

adduser hermes --disabled-password --gecos ""
usermod -aG sudo hermes

Дайте этому пользователю беспарольный sudo (нужен для Docker и управления сервисами):

echo "hermes ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/hermes
chmod 440 /etc/sudoers.d/hermes

Скопируйте свой SSH-ключ, чтобы можно было входить под этим пользователем:

mkdir -p /home/hermes/.ssh
cp ~/.ssh/authorized_keys /home/hermes/.ssh/
chown -R hermes:hermes /home/hermes/.ssh
chmod 700 /home/hermes/.ssh
chmod 600 /home/hermes/.ssh/authorized_keys

С этого момента работаем под пользователем hermes:

su - hermes

Установка Docker

Hermes Agent использует Docker для изоляции выполнения команд. Установите его из официального репозитория Docker:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin

Добавьте пользователя hermes в группу docker, чтобы он мог запускать контейнеры без sudo:

sudo usermod -aG docker hermes
newgrp docker

Проверьте работу Docker:

docker run --rm hello-world

В выводе должно быть "Hello from Docker!". Это подтверждает, что Docker может скачивать образы и запускать контейнеры.

Настройка файрвола

Установите UFW и настройте его на разрешение только SSH и блокировку всего остального по умолчанию:

sudo apt-get install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable

Проверьте правила:

sudo ufw status verbose

В выводе должно быть видно, что SSH разрешен, а весь остальной входящий трафик запрещен. Шлюз Hermes использует исходящие подключения к API Telegram, поэтому открывать входящие порты для обмена сообщениями не нужно.

Как установить Hermes Agent на Ubuntu?

Hermes Agent устанавливается одной командой, которая подтягивает Python, Node.js и все зависимости. Запускайте под пользователем hermes, не под root.

Сначала проверьте скрипт установщика перед передачей его в bash. Скачайте, просмотрите, затем выполните:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh -o /tmp/hermes-install.sh
less /tmp/hermes-install.sh

Просмотрите скрипт. Он устанавливает Python 3.11+ через uv, Node.js и CLI hermes. Когда убедитесь, что все в порядке:

bash /tmp/hermes-install.sh

Перезагрузите оболочку, чтобы подхватить новую команду hermes:

source ~/.bashrc

Проверьте установку:

hermes --version

Должны увидеть версию и информацию об окружении:

Hermes Agent v0.4.0 (2026.3.18)
Project: /home/hermes/.hermes/hermes-agent
Python: 3.11.15
...

Запустите диагностику для проверки отсутствующих зависимостей:

hermes doctor

Ищите зеленые галочки в выводе. Предупреждения о ненастроенных API-ключах (OpenRouter, Browserbase и т.д.) на этом этапе ожидаемы. Настройка LLM-провайдера будет дальше. Красные пункты по Python, Git или Docker нужно исправить, прежде чем продолжать.

Как настроить LLM-провайдера?

Hermes Agent нуждается в LLM-провайдере для работы. Собственной модели у него нет. Вы подключаете его к API провайдера и платите за токены. OpenRouter дает доступ к 200+ моделям через один API-ключ и является самым быстрым способом начать.

Вариант 1: OpenRouter (рекомендуется для начала)

Создайте аккаунт на openrouter.ai и сгенерируйте API-ключ.

Установщик создал ~/.hermes/.env с полным шаблоном. Сначала ограничьте права доступа:

chmod 600 ~/.hermes/.env

Откройте файл и укажите свой API-ключ в строке OPENROUTER_API_KEY=:

nano ~/.hermes/.env

Найдите строку OPENROUTER_API_KEY= и добавьте свой ключ после знака =. Сохраните и выйдите (Ctrl+X, затем Y, затем Enter).

Установите модель по умолчанию:

hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4

Убедитесь, что файл недоступен другим пользователям:

ls -la ~/.hermes/.env

Права должны показывать -rw------- (600). Только пользователь hermes может читать этот файл.

Вариант 2: Пользовательский OpenAI-совместимый эндпоинт

Если вы запускаете свой инференс-сервер (Ollama, vLLM, llama.cpp) или используете другого провайдера:

echo 'OPENAI_BASE_URL=http://localhost:11434/v1' >> ~/.hermes/.env
echo 'OPENAI_API_KEY=ollama' >> ~/.hermes/.env
echo 'LLM_MODEL=llama3.1:70b' >> ~/.hermes/.env

Сравнение LLM-провайдеров

Провайдер Переменная окружения Стоимость Примечания
OpenRouter OPENROUTER_API_KEY За токен, зависит от модели 200+ моделей, один ключ
Anthropic ANTHROPIC_API_KEY За токен Прямой доступ к Claude
Ollama (локально) OPENAI_BASE_URL + OPENAI_API_KEY Бесплатно (свой хостинг) Нужен GPU VPS для нормальной скорости
vLLM OPENAI_BASE_URL + OPENAI_API_KEY Бесплатно (свой хостинг) Требуется GPU

Проверьте подключение к LLM:

hermes -m "What is 2+2? Reply with just the number."

Если получили ответ, провайдер настроен правильно. Если видите ошибку аутентификации, перепроверьте API-ключ в ~/.hermes/.env.

Как изолировать Hermes Agent с помощью Docker?

По умолчанию Hermes Agent выполняет команды терминала напрямую на хосте. На VPS это риск безопасности. Если LLM сгенерирует деструктивную команду, она выполнится на вашем реальном сервере. Docker-изоляция запускает все команды внутри контейнера.

Установите Docker как терминальный бэкенд:

hermes config set terminal.backend docker

Настройте Docker-образ и лимиты ресурсов в ~/.hermes/config.yaml:

hermes config set terminal.docker_image "nikolaik/python-nodejs:python3.11-nodejs20"
hermes config set terminal.container_cpu 1
hermes config set terminal.container_memory 2048
hermes config set terminal.container_persistent true

Что делают эти настройки:

  • docker_image: Базовый образ для песочницы. Этот включает Python и Node.js, что покрывает большинство задач разработки.
  • container_cpu: Ограничивает контейнер 1 ядром CPU. Предотвращает ситуацию, когда зависший процесс забирает все ресурсы VPS.
  • container_memory: Лимит 2048 MB RAM для контейнера. Увеличьте, если работаете с большими наборами данных.
  • container_persistent: Сохраняет контейнер между командами. Быстрее, потому что не нужно запускать контейнер каждый раз.

Проверьте настройки бэкенда:

hermes config

В разделе Terminal должно быть Backend: docker.

Сравнение терминальных бэкендов

Бэкенд Безопасность Скорость Назначение
local Никакой. Команды выполняются на хосте Самая высокая Только для локальной разработки. Никогда на VPS
docker Контейнерная изоляция Небольшой оверхед при старте VPS-развертывания (рекомендуется)
ssh Сетевая изоляция Сетевая задержка Выполнение на другом сервере

Настройка режима подтверждения

В Hermes Agent есть встроенная система подтверждений, которая спрашивает разрешение перед выполнением потенциально опасных команд. На сервере оставьте ее включенной:

hermes config set approval_mode ask

Три режима:

  • ask: Спрашивает перед любой командой, которая модифицирует файлы, устанавливает пакеты или обращается к сети. Используйте этот режим.
  • smart: AI-модель оценивает риск и спрашивает только для действительно опасных команд. Быстрее, но полагается на суждение AI.
  • off: Без проверок. Каждая команда выполняется сразу. Не используйте на сервере.

Как подключить Hermes Agent к Telegram?

Шлюз обмена сообщениями позволяет общаться с Hermes с телефона. Telegram -- самый распространенный вариант. Шлюз устанавливает исходящие подключения к API Telegram, поэтому открывать входящие порты на файрволе не нужно.

Шаг 1: Создание Telegram-бота

Откройте Telegram и напишите @BotFather. Отправьте следующие команды:

  1. /newbot
  2. Введите имя для бота (например, "My Hermes Agent")
  3. Введите юзернейм (должен заканчиваться на bot, например, myhermes_agent_bot)

BotFather ответит токеном бота. Он выглядит как 7123456789:AAHx.... Скопируйте его.

Шаг 2: Получение вашего Telegram user ID

Напишите @userinfobot в Telegram. Бот ответит вашим числовым user ID. Скопируйте это число.

Шаг 3: Настройка шлюза

Добавьте токен бота и ваш user ID в файл окружения:

echo 'TELEGRAM_BOT_TOKEN=7123456789:AAHxYourTokenHere' >> ~/.hermes/.env
echo 'TELEGRAM_ALLOWED_USERS=your_numeric_user_id' >> ~/.hermes/.env

Переменная TELEGRAM_ALLOWED_USERS -- это контроль безопасности. Только user ID из этого списка могут взаимодействовать с ботом. Без нее кто угодно, нашедший вашего бота, сможет отправлять ему команды. Несколько ID разделяются запятыми.

Шаг 4: Тестирование шлюза

Запустите шлюз в foreground-режиме для проверки подключения:

hermes gateway

Отправьте сообщение боту в Telegram. Вы должны увидеть его в терминале и получить ответ обратно. Нажмите Ctrl+C, чтобы остановить шлюз, когда убедитесь, что все работает.

Если бот не отвечает, проверьте:

  • Токен бота правильно указан в ~/.hermes/.env
  • Ваш user ID есть в TELEGRAM_ALLOWED_USERS
  • VPS может достучаться до api.telegram.org на порту 443 (исходящий HTTPS)

Другие поддерживаемые платформы: Discord, Slack, WhatsApp, Signal и Email. Запустите hermes gateway setup для интерактивного мастера настройки любой из них.

Как запустить Hermes Agent как systemd-сервис?

Запуск hermes gateway в терминальной сессии означает, что он остановится при отключении. Пользовательский systemd-сервис держит шлюз запущенным после выхода и автоматически перезапускает при сбое или перезагрузке сервера.

Установка сервиса

В Hermes есть встроенная команда для установки шлюза как пользовательского systemd-сервиса:

hermes gateway install

Она создает файл сервиса в ~/.config/systemd/user/hermes-gateway.service и автоматически включает lingering. Lingering позволяет пользовательским сервисам работать после выхода из SSH. Без него systemd убьет шлюз при завершении сессии.

Запустите сервис и включите автозагрузку:

systemctl --user enable --now hermes-gateway

enable включает запуск при загрузке. Флаг --now запускает сервис сразу. Всегда используйте оба вместе.

Проверьте, что сервис работает:

systemctl --user status hermes-gateway

Ищите Active: active (running) в выводе. Если показывает failed, смотрите логи.

Просмотр логов

Просмотр логов шлюза в реальном времени:

journalctl --user -u hermes-gateway -f

Нажмите Ctrl+C для остановки. В логах шлюза отображается каждое входящее сообщение, вызов LLM и выполнение инструментов.

Настройка рабочего каталога

По умолчанию шлюз использует домашний каталог как рабочее пространство. Задайте выделенный каталог для проектов:

echo 'MESSAGING_CWD=/home/hermes/projects' >> ~/.hermes/.env
mkdir -p /home/hermes/projects

Перезапустите сервис для применения:

systemctl --user restart hermes-gateway

Как сделать резервную копию данных Hermes Agent?

Hermes хранит все свое состояние в ~/.hermes/. Этот каталог содержит память, выученные навыки, историю сессий, конфигурацию и cron-задачи. Потеря этого каталога означает, что агент забудет все.

Ключевые пути:

Путь Содержимое
~/.hermes/config.yaml Конфигурация
~/.hermes/.env API-ключи и секреты
~/.hermes/memories/ Постоянная память агента
~/.hermes/skills/ Переиспользуемые навыки агента
~/.hermes/sessions/ История сессий шлюза
~/.hermes/cron/ Запланированные задачи
~/.hermes/SOUL.md Идентичность/персона агента

Создайте скрипт резервного копирования:

cat > /home/hermes/backup-hermes.sh << 'SCRIPT'
#!/bin/bash
BACKUP_DIR="/home/hermes/backups"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
tar czf "$BACKUP_DIR/hermes-$TIMESTAMP.tar.gz" \
  --exclude='*.log' \
  -C /home/hermes .hermes/
# Keep only the last 7 backups
ls -t "$BACKUP_DIR"/hermes-*.tar.gz | tail -n +8 | xargs -r rm
echo "Backup saved: $BACKUP_DIR/hermes-$TIMESTAMP.tar.gz"
SCRIPT
chmod 700 /home/hermes/backup-hermes.sh

Запускайте ежедневно через cron:

(crontab -l 2>/dev/null; echo "0 3 * * * /home/hermes/backup-hermes.sh") | crontab -

Проверьте запись в cron:

crontab -l

Должна быть видна задача резервного копирования, запланированная на 03:00 ежедневно. Скрипт хранит 7 дней бэкапов и удаляет более старые.

Для резервного копирования на другой сервер используйте rsync для копирования каталога бэкапов на другую машину или в объектное хранилище. Хранение бэкапов только на том же VPS не защищает от выхода диска из строя.

Как обновить Hermes Agent?

В Hermes Agent есть встроенная команда обновления. Перед обновлением сделайте резервную копию.

/home/hermes/backup-hermes.sh
hermes update

Проверьте новую версию:

hermes --version

Проверьте, нужны ли изменения в конфигурации после обновления:

hermes config migrate
hermes doctor

config migrate добавляет новые параметры конфигурации со значениями по умолчанию. hermes doctor проверяет, что все работает после обновления.

Перезапустите сервис шлюза для запуска новой версии:

systemctl --user restart hermes-gateway
systemctl --user status hermes-gateway

Если что-то сломалось после обновления, восстановите из резервной копии:

systemctl --user stop hermes-gateway
tar xzf /home/hermes/backups/hermes-YYYYMMDD-HHMMSS.tar.gz -C /home/hermes/
systemctl --user start hermes-gateway

Чеклист по усилению безопасности

AI-агент на VPS, выполняющий команды в терминале, требует внимания к безопасности. Вот что уже настроено в этом руководстве и несколько дополнительных шагов.

Уже настроено в этом руководстве:

  • Непривилегированный пользователь (hermes) с выделенным домашним каталогом
  • Docker-изоляция для выполнения всех команд терминала
  • Файрвол UFW, запрещающий весь входящий трафик кроме SSH
  • API-ключи в ~/.hermes/.env с правами 600
  • TELEGRAM_ALLOWED_USERS ограничивает доступ к боту вашим user ID
  • approval_mode: ask требует подтверждение для опасных команд

Дополнительное усиление:

Полностью отключите локальный терминальный бэкенд, проверив конфигурацию:

hermes config

В разделе Terminal убедитесь, что Backend показывает docker, а не local.

Установите лимиты ресурсов на Docker-контейнеры, чтобы зависший процесс не съел все ресурсы сервера. Это было настроено ранее через container_cpu и container_memory.

Периодически проверяйте навыки, выученные агентом:

ls -la ~/.hermes/skills/

Навыки -- это скрипты, которые агент пишет и переиспользует. Проверяйте их так же, как любой код, запускаемый на вашем сервере.

Мониторьте логи шлюза на предмет неожиданных пользователей или необычной активности:

journalctl --user -u hermes-gateway --since "1 hour ago" --no-pager

Устранение неполадок

Шлюз не запускается:

journalctl --user -u hermes-gateway -n 50 --no-pager

Частые причины: невалидный токен бота, отсутствующий API-ключ, Docker не запущен. Проверьте, что Docker активен: systemctl status docker.

Telegram-бот не отвечает:

Убедитесь, что токен бота и список допустимых пользователей заданы:

grep TELEGRAM ~/.hermes/.env

Проверьте исходящее подключение:

curl -s https://api.telegram.org/bot<YOUR_TOKEN>/getMe

Валидный ответ с информацией о боте подтверждает работоспособность токена и сети.

Docker permission denied:

groups

В выводе должен быть docker. Если нет, повторите sudo usermod -aG docker hermes и перелогиньтесь.

Команда hermes не найдена после установки:

source ~/.bashrc

Если по-прежнему не работает, проверьте, есть ли ~/.local/bin в PATH:

echo $PATH | tr ':' '\n' | grep local

Высокое потребление памяти:

Проверьте потребление ресурсов Docker-контейнерами:

docker stats --no-stream

Уменьшите параметр container_memory, если контейнеры потребляют слишком много RAM.

Калькуляция расходов

Самостоятельный хостинг Hermes Agent на VPS стоит сервер плюс использование LLM API. Вот реалистичная оценка для одного разработчика.

Статья Месячная стоимость
VPS (2 vCPU, 4 GB RAM) $5-10
OpenRouter API (умеренное использование, ~500K токенов/день) $5-15
Оверхед Docker Включен в стоимость VPS
Telegram-шлюз Бесплатно
Итого $10-25/месяц

Подписки на управляемых AI-ассистентов стоят $20-200/месяц. Самостоятельный хостинг дешевле и данные остаются на вашем сервере.

Запуск Claude Code на VPS


Copyright 2026 Virtua.Cloud. Vse prava zashchishcheny.

Готовы попробовать?

Разверните свой сервер за секунды. Linux, Windows или FreeBSD.

Смотреть тарифы VPS