Как запустить Hermes Agent на VPS круглосуточно: служба и автозагрузка
MarkdownНастройка Hermes Agent для работы на VPS круглосуточно: установка Linux-версии без браузера, запуск шлюза как системной службы, автозагрузка после перезапуска, linger и Docker.
Читать статью полностью
После установки Hermes Agent на ноутбук может возникнуть вопрос: кто будет отвечать в Telegram и готовить утренние сводки, когда компьютер закрыт? На личной машине агент работает лишь до тех пор, пока она включена. Чтобы бот оставался доступен, а запланированные задачи выполнялись автоматически, Hermes нужно разместить на сервере.
В этой инструкции описана установка Hermes на обычный Linux-сервер, настройка шлюза как постоянно работающей службы с запуском после перезагрузки и ограничение доступа к терминалу. Материал основан на официальной документации.
Если Hermes ещё не установлен, сначала прочитай отдельное руководство: что это за агент и как его установить. Здесь предполагается, что на твоём компьютере Hermes уже запущен; речь пойдёт только о переносе на сервер.
Сведения о работе с Ailoot собраны в документации.
Почему Hermes Agent переносят с ноутбука на сервер?
Ключевое
Личный компьютер годится, пока ты рядом и он включён. Для непрерывной работы подойдёт сервер: Telegram-бот сможет отвечать при выключенном компьютере, а задачи по расписанию будут запускаться автоматически. Сервер требуется именно для постоянной доступности; для обычной работы с агентом достаточно ноутбука.
На ноутбуке Hermes работает, пока компьютер включён и ты можешь к нему обратиться. Закроешь его — бот перестанет отвечать, утренняя сводка не появится. Для задач вроде переписки в мессенджере и регулярных действий это неудобно.
Сервер доступен постоянно и не зависит от того, пользуешься ли ты компьютером. На нём можно запустить тот же Hermes: он будет отвечать в Telegram ночью, каждое утро собирать новости по заданным темам и сохранять сессии между запусками.
Перенос оправдан, когда у агента есть постоянная задача: например, бот для личного использования или команды, утренние сводки, автоответы либо регулярная обработка документов. Если ты только знакомишься с Hermes для отдельного проекта и работаешь за компьютером, сервер пока не понадобится.
Что нужно подготовить перед установкой Hermes на VPS?
Ключевое
Подготовь Linux-сервер с доступом по SSH; в официальной документации поддерживается Linux, а проверки проводят на актуальной Ubuntu. Заранее выбери модель. На сервере браузер обычно не требуется. Для режима без постоянного контроля удобен Nous Portal: авторизация через OAuth обновляется автоматически, поэтому токен не должен истечь ночью.
До установки подготовь три вещи.
Сервер. Подойдёт обычный VPS под Linux. Документация указывает Linux и WSL2 в качестве начальных поддерживаемых платформ; тестирование проводится на актуальной Ubuntu. При наличии glibc, systemd и стандартной структуры каталогов Hermes обычно устанавливается без проблем. Для серверной настройки особенно важен systemd: на Ubuntu и Debian он доступен по умолчанию, а на нём основан описанный ниже автозапуск.
Подключение по SSH. Управлять сервером предстоит через терминал и SSH, а не мышью. Все команды из инструкции вводятся в этом сеансе. Если терминал пока незнаком, можно просто копировать приведённые команды целиком.
Модель. Hermes обращается к модели для выполнения задач. Для сервера, работающего без присмотра, важно, чтобы авторизация оставалась действительной. Один из вариантов — подключение к Nous Portal командой hermes setup --portal: вход выполняется через OAuth, а токен обновляется автоматически. Можно использовать собственные API-ключи, но тогда нужно следить за балансом: при его исчерпании агент не сможет продолжить работу. Модель должна поддерживать контекст не менее 64 000 токенов, иначе Hermes не запустится. Это условие выполняют облачные модели из списка.
Пояснение
В официальной документации не указаны точные минимальные характеристики VPS, поэтому конкретные значения здесь не приводятся. Для шлюза с ботом и расписанием может хватить скромного сервера: основные вычисления выполняет модель, поэтому нагрузка на сам сервер невелика. Существенно больше ресурсов может потребовать автоматизация через браузер, которая на сервере обычно не нужна.
Как установить Hermes Agent на сервер одной командой?
Ключевое
Подключись к серверу по SSH и запусти установщик с параметром, пропускающим браузер: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser. Затем обнови оболочку терминала и выбери модель через hermes setup --portal. Работу установки проверь командой hermes doctor.
Установка на сервере почти не отличается от установки на ноутбуке. Обычно браузер агенту там не нужен, а его автоматизация устанавливает тяжёлый Chromium. Поэтому здесь используется параметр --skip-browser.
Подключись к серверу по SSH
ssh root@адрес-твоего-сервераВсе последующие команды выполняй в этом сеансе непосредственно на сервере.
Запусти установщик, пропустив браузер
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browserСкрипт установит необходимое окружение и добавит команду
hermes. Параметр--skip-browserисключает браузерную автоматизацию, которая занимает место на сервере без графической среды. Если браузер понадобится позже, его можно установить отдельно.Обнови оболочку и настрой модель
source ~/.bashrc hermes setup --portalПервая команда обновляет
PATH, чтобы терминал нашёлhermes. Вторая запускает авторизацию в Nous Portal: после подтверждения входа агент получает доступ к модели и сервисам без необходимости настраивать отдельный ключ для каждого.Убедись, что установка прошла успешно
hermes doctorКоманда проверит установку, сообщит о недостающих компонентах и подскажет, как исправить проблемы. Зелёные отметки означают, что всё готово.
Прежде чем подключать бота и расписание, проверь обычный диалог на сервере: запусти hermes и дай ему простую задачу с ответом, который можно проверить. Официальная документация рекомендует сначала добиться нормального разговора и лишь затем добавлять функции.
Как настроить круглосуточную работу Hermes?
Ключевое
Сначала выполни настройку шлюза командой hermes gateway setup и подключи Telegram. Затем установи службу: hermes gateway install создаёт пользовательскую службу, а sudo hermes gateway install --system — системную, запускающуюся при старте сервера. Пользовательской службой управляй через hermes gateway start, stop и status. Для системной службы VPS сохраняй явный --system и нужные полномочия во всех проверках и изменениях.
Шлюз (gateway) — это фоновый процесс Hermes, который поддерживает соединение с мессенджерами, управляет сессиями и запускает задачи по расписанию. Именно от него зависит непрерывная работа агента. Нужно настроить автоматический запуск процесса и его восстановление после сбоя.
Сначала настрой шлюз и подключи мессенджер:
hermes gateway setup
Мастер настройки предложит выбрать платформы, добавить токен бота и указать список разрешённых пользователей. Инструкция по подключению Telegram — созданию бота через BotFather, поиску своего ID и добавлению токена — приведена в основном руководстве по установке.
Если просто запустить hermes gateway, процесс будет работать лишь до завершения SSH-сеанса. Закрытие терминала остановит шлюз. Чтобы процессом управляла система, установи его как службу:
hermes gateway install
В Linux эта команда создаёт пользовательскую службу systemd, а в macOS использует launchd. Система наблюдает за процессом и запускает его снова, если он завершится.
На сервере часто удобнее системная служба: она запускается при загрузке машины, ещё до входа пользователя:
sudo hermes gateway install --system
Такой вариант подходит для VPS: после перезагрузки служба стартует сама, и бот снова становится доступен. Для управления шлюзом предусмотрены команды:
hermes gateway start # запуск
hermes gateway stop # остановка
hermes gateway status # проверка состояния
Для системной службы добавь sudo и параметр --system. Без него команда будет обращаться к пользовательской службе, а не к той, которая запускается вместе с сервером:
sudo hermes gateway start --system
sudo hermes gateway stop --system
sudo hermes gateway status --system
Для чего нужен linger и что произойдёт без него?
Ключевое
Если шлюз установлен как пользовательская служба без параметра --system, systemd может завершить её после выхода из SSH и не запустить при загрузке. Включи linger командой sudo loginctl enable-linger имя-пользователя. Тогда служба сможет работать независимо от входа пользователя в систему.
Здесь часто возникает проблема: служба установлена, но ночью бот перестаёт отвечать. Причина связана с тем, как Linux управляет пользовательскими службами.
По умолчанию пользовательская служба systemd привязана к сеансу. При подключении по SSH запускается менеджер пользователя и служба работает. После выхода система считает пользователя неактивным и может остановить его службы, включая шлюз. Для сервера, к которому подключаются время от времени, такое поведение мешает постоянной работе бота.
Режим linger позволяет системе сохранять менеджер пользователя активным даже тогда, когда пользователь не вошёл в систему:
sudo loginctl enable-linger имя-пользователя
После включения linger пользовательская служба работает самостоятельно и запускается при старте сервера без ожидания входа пользователя. Без него шлюз может завершаться после выхода из SSH и не запускаться при загрузке.
Важно
Для системной службы, созданной командой sudo hermes gateway install --system, linger не требуется: такая служба работает на уровне всей машины и запускается вместе с ней. Выбери один вариант настройки: системную службу либо пользовательскую службу с linger.
Как включить автоматический перезапуск Hermes в Docker?
Ключевое
Для запуска постоянного шлюза в контейнере используй команду: docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run. Параметр --restart unless-stopped возвращает контейнер после перезагрузки, а внутри образа шлюз автоматически запускается снова после сбоя.
Docker — ещё один способ держать агента на сервере. Он подойдёт тем, кто уже использует контейнеры или хочет отделить агента от основной системы. Сначала настрой Hermes командой docker run ... setup, затем запусти контейнер в фоне:
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
nousresearch/hermes-agent gateway run
Параметры, обеспечивающие постоянную работу:
-d— контейнер запускается в фоне и не занимает терминал.--restart unless-stopped— Docker запускает контейнер после перезагрузки сервера или его сбоя. Исключение — случай, когда контейнер остановили вручную.-v ~/.hermes:/opt/data— настройки, ключи, сессии и память хранятся на сервере вне контейнера и сохраняются при его пересоздании.
Внутри образа за процессом также следит супервизор s6. Если шлюз завершится, s6 запустит его снова через несколько секунд, не перезапуская контейнер. Таким образом, Docker наблюдает за контейнером, а s6 — за процессом шлюза внутри него.
У Docker-установки есть особенность: команда hermes update её не обновляет. Чтобы установить новую версию, нужно загрузить свежий образ и пересоздать контейнер.
Как убедиться, что всё работает и запустится после перезагрузки?
Ключевое
Проверь службу командами systemctl и открой текущие логи. Затем перезагрузи сервер и убедись, что бот самостоятельно вернулся в онлайн. Сессии и ответы Hermes сохраняются при перезапуске; незавершённая отправка продолжится после восстановления.
Состояние пользовательской службы и её журналы можно проверить так:
hermes gateway status
journalctl --user -u hermes-gateway -f
Для рекомендуемой на VPS системной службы используй системную область:
sudo hermes gateway status --system
sudo journalctl -u hermes-gateway -f
Первая команда проверяет выбранную службу, вторая показывает её журнал. Имена относятся к стандартной установке ~/.hermes. У другого Hermes home может быть суффикс службы: изучи status и используй точное имя. Не наблюдай пользовательскую службу при проверке системной. Логи Hermes хранятся в ~/.hermes/logs/; секретные данные автоматически скрываются, поэтому при обращении в поддержку их можно отправить без раскрытия секретов.
После этого перезагрузи сервер и проверь, что агент восстановился самостоятельно. Для серверной настройки это основная проверка:
sudo reboot
Когда сервер снова доступен, подключись по SSH. Для системной установки проверь sudo hermes gateway status --system и системный журнал; для пользовательской с linger — hermes gateway status и пользовательский журнал. Затем отправь сообщение Telegram-боту и проверь ответ без дополнительных действий.
Переписка сохраняется: Hermes записывает сессии на диск, поэтому они переживают перезапуск шлюза. Если шлюз завершился во время отправки ответа, после восстановления он продолжит отправку, не запуская задачу заново. Это помогает сохранить ход разговора после случайного перезапуска.
Как защитить агента с доступом к серверному терминалу?
Ключевое
Важны три меры: доступ к боту изначально ограничен списком пользователей, перед опасными действиями агент запрашивает разрешение, а для изоляции команд можно использовать Docker-песочницу. На постоянно работающем сервере не рекомендуется включать режим YOLO, отключающий подтверждения.
Серверный агент получает доступ к терминалу и работает без постоянного наблюдения. Поэтому в первую очередь проверь три настройки.
Ограниченный доступ к боту. По умолчанию шлюз отвечает только пользователям из списка доступа или тем, кто прошёл привязку по коду в личном сообщении. Для бота с доступом к терминалу это важная защита: незнакомый пользователь не сможет управлять агентом. Список можно задать числовыми ID, например для Telegram:
TELEGRAM_ALLOWED_USERS=123456789,987654321
Подтверждение опасных команд. Перед потенциально разрушительным действием агент запрашивает разрешение. В режиме YOLO такие подтверждения отключены; для сервера, работающего без присмотра, этот режим лучше не использовать. Подтверждения нужны, чтобы агент не выполнял необратимые действия без твоего ведома.
Песочница для изоляции. Чтобы команды агента не обращались к основной системе сервера, запусти терминальный режим в Docker-контейнере:
hermes config set terminal.backend docker
В этом режиме действия из терминала выполняются внутри изолированной среды, а не непосредственно на сервере. Это дополнительная мера при самостоятельной работе агента.
Что делать, если бот не отвечает или шлюз остановился?
Ключевое
Начни с проверки состояния службы и её журналов. Частые причины — неверный токен бота, ошибка в списке доступа или проблема с моделью. Если процесс полностью завис и не завершается, сторожевой таймер systemd может перезапустить службу после прекращения сигналов активности.
Если бот замолчал, сначала проверь область установки: sudo hermes gateway status --system и системный журнал для системной службы либо hermes gateway status и пользовательский журнал для пользовательской. Если шлюз запущен, но сообщения не доходят, проверь настройки платформы: токен бота может быть неверным, а отправитель — отсутствовать в списке доступа. Повтори hermes gateway setup в том же Hermes home, затем проверь выбранную службу: sudo hermes gateway status --system для системной или hermes gateway status для пользовательской. Успешная настройка не доказывает работу нужного шлюза.
Если ответы модели пустые или выглядят некорректно, проверь её через hermes model и подтверди выбор провайдера и способ входа. Для общей диагностики выполни hermes doctor, hermes model, hermes setup, затем sudo hermes gateway status --system для системной установки или hermes gateway status для пользовательской.
Для редкого случая, когда процесс полностью зависает, но не завершается, можно включить сторожевой таймер systemd. Добавь параметр в ~/.hermes/config.yaml, затем переустанови службу с обновлением конфигурации.
gateway:
systemd_watchdog_seconds: 120
# Системная служба VPS: тот же Hermes home, что при исходной установке.
sudo hermes gateway install --system --force
sudo hermes gateway status --system
Для пользовательской службы вместо этого обнови только её через hermes gateway install --force и проверь hermes gateway status. Выбери одну область: не устанавливай обе ради исправления одного шлюза.
После настройки шлюз будет регулярно сообщать системе, что он работает. Если сигналы прекратятся, systemd перезапустит процесс. Этот механизм предназначен для Linux с systemd и зависаний процесса; обычное отключение сети или потерю связи с мессенджером он не исправляет.
Какие вопросы о Hermes Agent на сервере задают чаще всего?
Ключевое
Ответы на распространённые вопросы: обязательно ли арендовать VPS, можно ли запустить несколько ботов на одной машине, требуется ли сервер с графической средой и будут ли выполняться расписания при отсутствии пользователя.
Частые вопросы
Обязательно ли использовать VPS или подойдёт собственный компьютер?
Для непрерывной работы нужна постоянно включённая машина. Собственный компьютер подойдёт, если ты готов не выключать его. VPS удобен тем, что остаётся включённым независимо от твоего расписания. Можно взять обычный Linux-сервер: документация указывает Linux как поддерживаемую платформу и сообщает о тестировании на актуальной Ubuntu.
Можно ли запустить несколько ботов на одном сервере?
Да. Hermes поддерживает профили, у каждого из которых может быть собственная служба. Команда вида <профиль> gateway install создаёт отдельную службу hermes-gateway-<профиль>. Профили работают независимо, со своими настройками, токеном бота и памятью.
Нужны ли серверу монитор и графическая среда?
Нет. Сервером можно управлять через терминал по SSH, не подключая экран. Браузерная автоматизация обычно не нужна, поэтому установку запускают с параметром --skip-browser, который исключает компонент, требующий графической среды.
Будут ли запускаться задачи по расписанию, пока меня нет?
Да. В этом и состоит одно из преимуществ серверного размещения. Задачи запускает тот же шлюз: он проверяет расписание раз в минуту, выполняет наступившие задачи и отправляет результат в тот же чат. Если шлюз постоянно работает как служба, расписание выполняется автоматически.
Сохранится ли работа бота после обновления и перезагрузки сервера?
Да. Настройки, сессии и память хранятся в каталоге ~/.hermes. После перезагрузки шлюз запускается системной службой или Docker с параметром --restart unless-stopped. Если процесс завершится во время отправки, незаконченный ответ может быть доставлен после восстановления; если часть ответа уже ушла до сбоя, он может прийти повторно с отметкой о возможном дубликате.
Источники
Познакомься с Ailoot.
Подробнее
Вопросы и ответы
Почему шлюз выглядит остановленным после установки системной службы?
Проверка без области может обращаться к другой службе. Для системной используй hermes gateway status --system и системный журнал. Статус без параметра и пользовательский журнал нужны только пользовательской службе. Везде сохраняй один Hermes home.
Нужен ли loginctl linger системной службе VPS?
Нет. Linger нужен пользовательской службе systemd для работы после выхода и при загрузке. Системная уже запускается вместе с машиной. Выбери одну область установки и повтори проверку статуса и ответа бота после перезагрузки.