сайт в бете
нашли баг? напишите
левин. записаться
← все статьи
Доступ 2026-09-28

Агент на VPS рядом с проектом: как я подключил Claude Code к своему реле

Реле переехало с моего десктопа на VPS за уже работающий nginx, а агент поселился рядом с кодом проекта. Рассказываю по шагам: почему без своего Caddy, почему адрес через sslip.io и на каких трёх грабля�� я наступил.

Л
Проект Левин
автор

Зачем выносить агента с ноутбука

Пока Claude Code крутится на десктопе, он привязан к моей сессии: закрыл крышку — агент исчез из канала. Гипотеза пилота простая: агент живёт на своей машине, приходит в общий чат как участник и имеет собственный доступ к проекту. Тогда его можно показать другу, и друг приведёт своего — каждый со своим харнессом и своей базой знаний.

Реле Buzz здесь работает транспортом. Дальше — как я его перевёз и что при этом сломалось.

Реле переехало на VPS

Раньше реле поднималось на моём компьютере. Теперь оно на VPS NeonMailer (64.188.57.113) и доступно снаружи по wss://64-188-57-113.sslip.io. Трафик закрыт настоящим сертификатом, самоподписанных костылей нет.

Почему без своего Caddy на 80/443

Порты 80 и 443 на сервере держит neonmailer-nginx-1 — он обслуживает два боевых домена, neonmailer.neon.boutique и zadrotometr.ru. Порт 3000 занят самим NeonMailer.

Вариант «поставить рядом Caddy» отпал сразу: два процесса на один порт не встанут; переселять боевой трафик ради пилота — плохая идея. Поэтому реле подселено за существующий nginx отдельным виртуальным хостом:

  • один TLS-терминатор на сервере;
  • один certbot и один набор сертификатов;
  • чужие конфиги не тронуты, боевые домены работают как раньше.

Практический вывод: если на VPS уже живёт что-то боевое, сначала смотрите, кто занимает порты. Второй reverse-proxy почти всегда лишний.

sslip.io вместо своего домена

Ждать делегирование и прогрев DNS не хотелось. sslip.io отдаёт IP прямо из имени: 64-188-57-113.sslip.io резолвится в 64.188.57.113 без единой записи в зоне. Certbot такому имени сертификат выдаёт, WebSocket по нему живёт.

Адрес временный. Появится нормальный домен — виртуальный хост переписывается за пять минут.

Агент рядом с проектом

Вторая половина затеи: агент должен видеть код. На VPS поднята служба buzz-acp, которая запускает Claude Code через ACP-мост с рабочей директорией /opt/steam-psycho (репозиторий ragastar/steam-psycho, тот самый сайт zadrotometr.ru).

Что я проверил на сервере до старта:

Проверка Результат
claude auth status loggedIn: true, подписка claude.ai, cobakaars@gmail.com
node / npm v20.20.1 / 10.8.2
claude установлен глобально

Важная деталь: агент работает по подписке claude.ai через CLI, без отдельного API-ключа. Для пилота это принципиально — стоимость остаётся предсказуемой.

Три грабли, на которые я наступил

404 при подключении. Первое, что сделал агент после переезда, — не подключился. Мост стучался в реле и получал 404. Починка ушла отдельным коммитом (cffa321). Пока маршрут был сломан, любые настройки агента не имели смысла: 404 промптами не лечится.

Смена адреса реле ломает десктоп. Адрес переехал — и десктопный клиент с мостом пришлось онбордить заново (91b3e41). Адрес реле прописан в нескольких местах; держите под рукой список, где именно.

Засвеченный ключ владельца. В том же коммите зафиксировано: ключ владельца попал куда не следует. Это моя ошибка и урок на будущее — при переносе инфраструктуры секреты уезжают вместе с конфигами, и проверять их надо до пуша. Инфраструктурный репозиторий ragastar/buzz-lab приватный именно по этой причине.

После всего этого агент вышел в рабочий режим и начал отвечать в канале (d738632).

Порядок действий, если повторять

  1. Посмотреть, кто занимает 80, 443 и 3000 на сервере, и встроиться в существующий прокси.
  2. Взять адрес, которому не нужен DNS, чтобы не ждать делегирование.
  3. Получить сертификат тем certbot, что уже настроен на сервере.
  4. Проверить claude auth status, версии node и npm, наличие бинаря claude.
  5. Поднять службу моста с рабочей директорией проекта.
  6. Убедиться, что подключение к реле проходит, и только потом трогать логику агента.
  7. Пройтись по секретам до первого пуша.

Что это дало

Агент больше не зависит от моего ноутбука: он на сервере, рядом с кодом проекта, и присутствует в общем канале как участник. Следующий шаг — тот же рецепт для агента друга: своя машина, свой доступ, общий канал. Ради этой проверки пилот и затевался.

теги #vps#claude code#nginx#sslip.io#websocket#агенты

один разговор — и поймём, чем я могу помочь.

В эпоху ИИ человеку нужен человек. Сяду рядом и доведу до результата — встреча длится столько, сколько нужно. Без скрипта продаж и пакетов «за 999 000 ₽». Если пойму, что помочь не смогу, — скажу сразу.