Самостоятельный хостинг Hermes Agent на VPS
Разверните 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. Отправьте следующие команды:
/newbot- Введите имя для бота (например, "My Hermes Agent")
- Введите юзернейм (должен заканчиваться на
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 IDapproval_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/месяц. Самостоятельный хостинг дешевле и данные остаются на вашем сервере.
Copyright 2026 Virtua.Cloud. Vse prava zashchishcheny.
Готовы попробовать?
Разверните свой сервер за секунды. Linux, Windows или FreeBSD.
Смотреть тарифы VPS