---
name: avtero-tunnel-incident-rathole-migration
description: "Автеро — сайт avtero.codoceh.ru лежал 12+ часов из-за нестабильного localtunnel; мигрирован на rathole, найдена наполовину настроенная труба (клиент указывал не туда)"
metadata: 
  node_type: memory
  type: project
  originSessionId: 4eea915e-3b47-4cd5-8a0e-bfa29b78a87c
  modified: 2026-07-30T06:58:24.030Z
---

При работе над задачей #190 (TecDoc-инфраструктура) нашёлся ЖИВОЙ инцидент, не
историческая проблема: `avtero.codoceh.ru` отдавал 404 непрерывно **12+ часов**
(лог вотчдога — 500/500 проверок неуспешны, с 29.07 21:21), независимо от
правок в текущей сессии. Пользователь узнал об этом только из моего доклада.

**Причина:** `localtunnel` (бесплатный сторонний сервис) не гарантирует
запрошенный поддомен — `--subdomain avtero` систематически игнорировался, каждый
рестарт получал случайное имя (`chilly-frog-100.loca.lt` и т.п.), а ничто не
синхронизировало VPS-прокси с новым именем. Свой же вотчдог (`loca_watchdog.sh`)
честно детектировал нездоровье каждые 90с и рестартовал туннель — но рестарт
никогда не решал проблему по сути, только менял случайное имя на другое случайное.

**Мигрировано на rathole** (по выбору владельца) — тот же механизм, что уже
надёжно работает у zemlya-web и kodoceh-web на этом же mini. Обнаружено:
инфраструктура была наполовину уже настроена прошлой работой — `server.toml` на
VPS codoceh.ru (195.133.147.176) и `Caddyfile` уже правильно вели
`avtero.codoceh.ru` → `127.0.0.1:14013`, но клиентский
`~/Services/kodoceh-web/rathole/client.toml` форвардил сервис `avtero` на
`127.0.0.1:20413` — порт, где НИКОГДА не слушал avtero (там сидел посторонний
node-процесс из семейства kodoceh-web Next-фронтов, диапазон портов 2041x).
Реальный avtero API слушает **8201**. Фикс — одна строка: `20413`→`8201` в
клиентском конфиге, ничего на VPS не менялось.

**Общий инженерный вывод (шире Автеро):** «половина миграции» опасна тем, что
существующая готовая инфраструктура (VPS сервер + Caddy уже настроены)
маскирует провал под видом «ещё не мигрировали». Когда чинишь публичную
доступность через rathole — проверяй ОБА конца трубы (VPS `server.toml`
+ `Caddyfile` И клиентский `client.toml` на конкретном mini), не останавливайся
на первом же, который выглядит правильным.

**Практический маркер для будущих инцидентов такого рода:** если `launchctl
list` показывает healthy PID и лог вотчдога вообще существует (значит кто-то уже
настроил мониторинг) — это НЕ означает, что сервис реально доступен снаружи.
Прямой `curl` на публичный домен обязателен, вотчдог-лог может годами писать
«unhealthy → kickstart» без единого успеха, и это легко пропустить, если не
прочитать сам файл, а не просто проверить, что процесс вотчдога жив.

Связано: [[avtero_make_brand_matching_class]], [[deployed_is_not_running]] — тот
же паттерн «выглядит рабочим по поверхностным признакам, реально не работает»,
только применительно к инфраструктуре, а не к коду.
