BorisovAI
Все публикации
Новая функцияborisovai-adminClaude Code

Туннели за день: как я параллелизировал frp-интеграцию

Туннели за день: как я параллелизировал frp-интеграцию

Параллелизм в действии: как я за один день собрал туннельное решение для borisovai-admin

Когда ты работаешь над проектом borisovai-admin, появляются моменты, когда нужно сделать сразу много однотипной работы. У меня была ровно такая задача: реализовать систему frp tunneling — нужно было создать четыре новых файла, переделать четыре существующих и не запутаться в деталях. Обычно такие дни начинаются с вопроса: «С чего начать?» Я выбрал ответ: со всем одновременно.

Задача: соединить машины, не ломая архитектуру

Проблема была в том, что нам нужна была система туннелирования для соединения удалённых серверов через контрольный канал. frp (fast reverse proxy) — отличный инструмент для этого, но его нужно было интегрировать в существующую инфраструктуру. При этом всё должно было работать параллельно с Traefik и не конфликтовать с уже развёрнутой системой.

Первым делом я понял: это не может быть один огромный рефакторинг. Нужен был план, разбитый на логические части.

Что я создал: четыре ключевых компонента

install-frps.sh стал сердцем всей системы — 210-строчный скрипт установки, который берёт на себя всю грязную работу: скачивает бинарник, генерирует конфиг, создаёт systemd unit, настраивает DNS и firewall. Это не просто скрипт — это полноценный конвейер, который должен работать на production-сервере без человеческого вмешательства.

Параллельно я подготовил шаблон frpc.toml для Windows-клиентов, чтобы разработчик мог просто заполнить пару полей и запустить. И конечно, systemd unit и Traefik конфиг для основного сервера — чтобы всё было pre-built и готово к развёртыванию.

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

Когда я раскладывал архитектуру по полочкам, выяснилось, что frp использует три разных порта: 17420 (control channel), 17480 (HTTP vhost за Traefik), 17490 (dashboard только для localhost). Первый импульс был открыть всё в firewall, но стоп — нужна была безопасность. В итоге получилось изящное решение: контрольный канал открыт, vhost спрятан за Traefik с wildcard HostRegexp, dashboard доступен только локально.

Интересный факт про reverse proxy

Знаете, что смешного в reverse proxy? Обычный proxy скрывает клиента (вы видите proxy, а не пользователя). Reverse proxy делает противоположное — скрывает сервер (клиент видит публичный адрес, а не реальную машину). frp — это именно reverse proxy в его самом полезном проявлении для распределённых систем.

Что дальше

В итоге я обновил четыре существующих файла, добавил скрипт установки в upload-процесс, расширил конфиг примеров четырьмя новыми полями. Теперь разработчик может развернуть frps-сервер одной командой и подключить Windows-клиент без боли.

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

😄 Что общего у Bun и подростка? Оба непредсказуемы и требуют постоянного внимания.

Метаданные

Session ID:
grouped_borisovai-admin_20260207_1905
Branch:
main
Dev Joke
Что общего у Bun и подростка? Оба непредсказуемы и требуют постоянного внимания

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

0/1000