Приватные HTTP-туннели
Приватный режим закрывает HTTP- или HTTPS-туннель для анонимных посетителей. Доступ сохраняется у владельца и у ролей, которым он разрешён правилами сервиса.
Описание
Общее описание функционала
Приватные HTTP-туннели позволяют владельцу скрыть туннель от анонимного доступа по URL туннеля. Пока туннель помечен как приватный, входящие запросы без действующего токена доступа (ссылка-приглашение или cookie после перехода по такой ссылке) получают отказ. В публичном режиме (по умолчанию) любой, кто знает URL туннеля, может обратиться к нему с учётом общих ограничений сервиса (лимиты, списки IP и тариф). Владелец может вернуть туннель в публичный режим; при этом все ранее выданные ссылки доступа отзываются. Функция доступна только для протоколов HTTP/HTTPS и на тарифах с правом приватных туннелей.
Панель управления
В личном кабинете на странице Туннели у каждого активного HTTP- или HTTPS-туннеля отображается колонка «Публичный» с переключателем:
| Положение | Режим | Кто может открыть URL туннеля |
|-----------|--------|-------------------------------|
| Включено | Публичный (по умолчанию) | Любой посетитель по известному URL (с учётом лимитов и политик доступа) |
| Выключено | Приватный | Владелец, администратор и гости с действующей ссылкой доступа; анонимные запросы отклоняются |
Тариф: перевести туннель из публичного в приватный могут пользователи с правом «приватные туннели» на платном тарифе. На бесплатном тарифе переключатель в положении «публичный» заблокирован; при наведении показывается подсказка со ссылкой на смену тарифа. Вернуть приватный туннель в публичный режим можно на любом тарифе.
Подтверждение: при переключении приватный → публичный сервис запрашивает подтверждение, потому что все активные ссылки доступа будут отозваны. Переход публичный → приватный выполняется сразу, без дополнительного диалога.
Тот же переключатель доступен в админ-консоли в списке всех туннелей.
Как пользователь может использовать
- Разработчик на платном тарифе создаёт HTTP-туннель и в дашборде выключает «Публичный», чтобы случайные посетители не видели локальный сервис.
- Владелец выдаёт коллеге ссылку доступа через API (см. справочник API) и отзывает её после демо.
- Пользователь возвращает туннель в публичный режим для открытого тестирования — после подтверждения в дашборде.
- Пользователь на бесплатном тарифе видит заблокированный переключатель и подсказку о смене тарифа; при создании туннель остаётся публичным.
Как это реализовано в сервисе
При создании или изменении туннеля сервер применяет эффективную видимость: без права на тарифе запрос на приватность принудительно переводит туннель в публичный режим. Команда смены видимости через API или переключатель в дашборде меняет флаг публичности; переход в приватный режим проверяет тариф. Прокси для приватного туннеля проверяет токен в параметре запроса, заголовке или cookie. Ссылки создаются и отзываются через API. При смене тарифа без права сервер синхронизирует приватные туннели в публичные и очищает токены.
Справочник API
API (приватные туннели)
Смена видимости
Через дашборд: колонка «Публичный» на странице Туннели (то же в админ-консоли). Переключатель вызывает ту же операцию, что и API ниже.
PATCH /api/tunnels с телом:
{
"id": "<tunnel_id>",
"action": "set_visibility",
"is_public": false
}
is_public: false— сделать туннель приватным (только HTTP/HTTPS).is_public: true— вернуть публичный режим; все share-токены отзываются.
Требуется аутентификация владельца или администратора. На тарифе без private-tunnels — 403 с code: feature_disabled.
Ссылки доступа
GET /api/tunnels/{id}/share-links— список активных ссылок (только владелец).POST /api/tunnels/{id}/share-links— создать ссылку (тело:label, опциональноexpires_at).DELETE /api/tunnels/{id}/share-links/{token_id}— отозвать ссылку.
Создание ссылок разрешено только для приватных HTTP/HTTPS туннелей.
Доступ гостя
Гость открывает URL с параметром токена или проходит bootstrap; сервис выставляет cookie доступа до истечения срока ссылки.
Ошибки
Ошибки (приватные туннели)
| Ситуация | HTTP | Сообщение / код |
|----------|------|-----------------|
| Тариф без приватных туннелей (PATCH set_visibility → private) | 403 | feature_disabled, feature_id: private-tunnels |
| Приватность для TCP/UDP | 400 | private visibility requires http or https tunnel |
| Создание share-link для публичного туннеля | 400 | share links only for private tunnels |
| Анонимный доступ к приватному туннелю | 403 | forbidden (без валидного токена) |
| Просроченный или отозванный токен | 403 | forbidden |
При понижении тарифа приватные туннели автоматически переводятся в публичный режим без отдельного запроса пользователя.
Ограничения
Известные ограничения
- Приватный режим поддерживается только для HTTP и HTTPS; TCP-туннели всегда публичны по политике сервиса.
- Переключатель «Публичный» в дашборде показывается только для активных HTTP/HTTPS-туннелей; для туннелей на паузе или неактивных колонка пуста.
- На тарифе без права приватных туннелей новый туннель при создании остаётся публичным; переключатель в дашборде не позволяет сделать его приватным.
- Переход в публичный режим безвозвратно отзывает все активные ссылки доступа для туннеля.
- Управление ссылками доступа (создание и отзыв) в дашборде не предусмотрено — только через API; в интерфейсе доступна смена режима публичный/приватный.