Привет Habr!
В первой статье блога я хочу рассказать о нашей платформе для разработчиков - Tuna. Как мы начали делать свой сервис реверс-прокси туннелей а-ля ngrok, затем добавили менеджер паролей и теперь не можем остановиться .

❯ Туннели
Собственно как и у всех аналогов у нас есть HTTP (реверс-прокси) и TCP туннели. А ещё есть SSHd и Trigger туннели. В настоящий момент у нас есть 2 региона где размещаются туннельные ноды:
RU - Москва
NL - Амстердам
Наличие туннельной ноды в России делает работу более комфортной ввиду отсутствия большой задержки. Также в ближайшее время мы планируем расширять точки присутствия на восток, вероятнее всего появятся ноды на Урале, Сибири и Дальнем востоке.
Я не буду здесь рассказывать про все функции или пересказывать документацию, но остановлюсь на основном и приведу популярные примеры использования.
HTTP туннели
Обратные-прокси туннели, чаще всего их используют для превью разработки web-сайтов и telegram webapp, тестирования платежей, тестирования телеграм ботов, peer-to-peer передачи больших файлов и прочее.
Открываем доступ к локальному сайту на 127.0.0.1:3000:
# на случайном поддомене
tuna http 3000
# на статичном поддомене
tuna http 3000 -s habr
# на собственном домене
tuna http 3000 -d demo.habr.teamФайловый сервер, если надо передать большой файл, например дамп базы данных:
# сервим текущий каталог закрыв авторизацией
tuna http --basic-auth='user:pass' -f .
# сервим SPA приложение
tuna http -F ./distЕщё есть флаги для включения CORS, генерация QR кода с ссылкой в консоль, что-бы проще было тестировать мобилку, инспектор запросов, управление заголовками, авторизация, WebDAV сервер и прочие ништяки.

Также возможно подключить свой домен. После настройки DNS, проверки и выпуска Let's Encrypt сертификата - можно использовать, а в тарифе для команд есть поддержка и доменных зон (wildcard), где и TLS сертификат свой можно загрузить, вдруг у вас интеграция с кем-то кто доверяет только сертификатам от Минцифры.
TCP туннели
Если же вам надо открыть доступ к какому то не HTTP приложению, например база данных, сервер очередей, minecraft, RTSP поток от IP камеры, RDP в общем что угодно, что работает по TCP - то нужны TCP туннели.

По умолчанию порт выделяется динамически но можно зарезервировать статичный порт, задать ему алиас и тогда вы всегда будете знать куда подключаться.
# динамический порт к локальному postgres
tuna tcp 5432
# статический порт к IP камере в локальной сети
tuna tcp --port=rtsp 192.168.0.55:554SSHd туннели
Нет, это не SSH туннели про которые написано много всего.
Tuna содержит встроенный SSH-сервер, это позволяет создать туннель и предоставить удаленный доступ по SSH без необходимости запускать SSH сервер и какой-либо конфигурации со стороны пользователя. Помимо функционала обычного SSH-сервера, tuna позволяет записывать сессии пользователей и просматривать их.
Возвращаясь к преимуществам, хочу отметить, что такой фичи нет в ngrok или аналогах, ну или пока нет
