BorisovAI
Все публикации
Общееborisovai-adminGit коммит

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

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

Туннели, фронт и конфиги: как мы выстроили инфраструктуру для нескольких машин

Проект borisovai-admin достиг того момента, когда одного сервера стало недостаточно. Нужно было управлять несколькими машинами, пробрасывать сетевые соединения между ними и всё это как-то красиво завернуть для пользователя. История о том, как мы за один вечер построили систему туннелей с веб-интерфейсом и потом долго разбирались с таймаутами Traefik.

Начало: туннели нужны вчера

Задача выглядела просто: нужен интерфейс для управления туннелями между машинами. Но просто никогда не бывает, правда? Первое, что я сделал — запустил фреймворк frp (Fast Reverse Proxy). Это отличный инструмент для туннелирования, когда основной сервер скрыт за NAT или брандмауэром. Быстрый, надёжный, с минимальными зависимостями.

Спроектировал простую UI в tunnels.html — список активных туннелей, кнопки для создания новых, удаления старых. Ничего сложного, но эффективно. На бэкенде добавил 5 API endpoints в server.js для управления состоянием туннелей. Параллельно обновил скрипты инсталляции: install-all.sh и отдельный install-frps.sh для установки FRP сервера, плюс frpc-template для конфигурации клиентов на каждой машине.

Главное — добавил навигационную ссылку «Туннели» на все страницы админ-панели. Мелочь, но юзабилити выросла в разы.

Неожиданный враг: Traefik и его таймауты

Вроде всё работало, но потом начали падать большие файлы при скачивании через GitLab. Проблема: Traefik по умолчанию использует достаточно агрессивные таймауты. Стоило большому файлу загружаться более пары минут — и соединение рубилось.

Пришлось менять конфигурацию Traefik: установил readTimeout в 600 секунд (10 минут) и добавил специальный serversTransport именно для GitLab. Создал скрипт configure-traefik.sh, который генерирует две динамические конфигурации: gitlab-buffering и serversTransport. Теперь файлы загружаются спокойно, даже если это 500 мегабайт архива.

Пока делал это, понял одно

Знаете, что самое интересное в Traefik? Это микросервис-балансировщик, который любит называться облегчённым, но на практике требует огромного внимания к деталям. Неправильный таймаут — и ваше приложение выглядит медленным. Правильный — и всё летает. Это как тюнинг двигателя: одна скрепка в нужном месте, и мир меняется.

Реорганизация и масштабирование

Пока занимался инфраструктурой, понял, что документация разрослась и стала трудна в навигации. Переделал структуру docs/ под новые реальности: разделил на agents/, dns/, plans/, setup/, troubleshooting/. Каждая папка отвечает за свой кусок практики.

Добавил в config/contabo-sm-139/ полный набор конфигураций конкретного сервера (traefik, systemd, mailu, gitlab) и обновил upload-single-machine.sh для поддержки загрузки этих конфигов. Теперь новую машину можно развернуть, не пересматривая весь интернет.

Что получилось в итоге

За вечер родилась полноценная система управления туннелями с приличным интерфейсом, автоматизацией и нормальной документацией. Проект теперь легко масштабируется на новые серверы. Плюс узнал, что Traefik — это не просто балансировщик, а целая философия правильной конфигурации микросервисов.

Дальше в планах: расширение аналитики для туннелей, SSO интеграция и лучший мониторинг сетевых соединений. Но это уже другая история.

😄 Разработчик: «Я знаю Traefik». HR: «На каком уровне?». Разработчик: «На уровне стака StackOverflow с пятью вкладками одновременно».

Метаданные

Branch:
main
Dev Joke
Разработчик: «Я знаю Storybook». HR: «На каком уровне?». Разработчик: «На уровне Stack Overflow».

Оцените материал

0/1000