Туннели и таймауты: управление инфраструктурой в админ-панели

Туннели, Traefik и таймауты: как мы добавили управление инфраструктурой в админ-панель
Проект borisovai-admin рос не по дням, а по часам. Сначала была одна машина, потом две, потом стало ясно — нужна нормальная система для управления сетевыми туннелями между серверами. Задача выглядела острой: юзеру нужен интерфейс, чтобы видеть, какие туннели сейчас активны, создавать новые и удалять старые. Без этого администрирование превращалось в ручную возню с конфигами на каждой машине.
Первое решение было логичным: взял frp (Fast Reverse Proxy) — лёгкий инструмент для туннелирования, когда сервер скрыт за NAT или брандмауэром. Почему не что-то более «облачное»? Потому что здесь нужна полная контроль, минимум зависимостей и максимум надёжности. FRP ровно это даёт.
Спроектировал веб-интерфейс: добавил страницу tunnels.html с простеньким списком активных туннелей, кнопками для создания и удаления. На бэкенде в server.js реализовал пять API endpoints для управления состоянием. Параллельно обновил скрипты инсталляции: install-all.sh и отдельный install-frps.sh для развёртывания FRP сервера, плюс frpc-template для клиентов на каждой машине. Не забыл навигационную ссылку «Туннели» на всех страницах админ-панели — мелочь, но юзабилити взлетела.
Вроде всё шло гладко, но потом началось. Пользователи начали скачивать большие файлы через GitLab, и соединение рубилось где-то в середине процесса. Проблема оказалась в Traefik — наш обратный прокси по умолчанию использует агрессивные таймауты. Стоило файлу загружаться дольше пары минут — и всё, соединение закрыто.
Пришлось углубиться в конфиги Traefik. Установил readTimeout в 600 секунд (10 минут) и создал специальный serversTransport именно для GitLab. Написал скрипт configure-traefik.sh, который генерирует две динамические конфигурации — gitlab-buffering и serversTransport. Результат: файлы теперь загружаются спокойно, даже если это полгигабайта архива.
Интересная особенность Traefik: это микросервис-балансировщик, который позиционируется как облегчённое решение, но на практике требует хирургической точности при настройке. Неправильный таймаут — и приложение выглядит медленным. Правильный — и всё летает. Один параметр, и мир меняется.
Параллельно реорганизовал документацию: разбил docs/ на логические части — agents/, dns/, plans/, setup/, troubleshooting/. Добавил полный набор конфигов для конкретного сервера в config/contabo-sm-139/ (traefik, systemd, mailu, gitlab) и обновил скрипт upload-single-machine.sh для их загрузки.
За вечер родилась полноценная система управления туннелями с интерфейсом, автоматизацией и нормальной документацией. Проект теперь легко масштабируется на новые серверы. Главное, что узнал: Traefik — это не просто прокси, это целая философия правильной конфигурации микросервисов.
Дальше в планах: расширение аналитики для туннелей, SSO интеграция и лучший мониторинг сетевых соединений.
😄 Разработчик: «Я настроил Traefik». Пользователь: «Отлично, тогда почему мой файл не загружается?» Разработчик: «А ты пробовал перезагрузить сервер?»
Метаданные
- Session ID:
- grouped_C--projects-bot-social-publisher_20260208_2248
- Branch:
- main
- Dev Joke
- Что говорит PM, когда всё сломалось? «А давайте обсудим это на следующем стендапе»
Часть потока:
Разработка: bot-social-publisher