Приватные 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)403feature_disabled, feature_id: private-tunnels
Приватность для TCP/UDP400private visibility requires http or https tunnel
Создание share-link для публичного туннеля400share links only for private tunnels
Анонимный доступ к приватному туннелю403forbidden (без валидного токена)
Просроченный или отозванный токен403forbidden

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

Ограничения

Границы использования

  • Приватный режим поддерживается только для HTTP и HTTPS; TCP-туннели всегда публичны по политике сервиса.
  • Кнопки Сделать приватным и Сделать публичным в дашборде показываются только для активных HTTP/HTTPS-туннелей. Чтобы сменить режим туннеля на паузе, сначала возобновите его.
  • На тарифе без права приватных туннелей новый туннель при создании остаётся публичным; кнопка Сделать приватным в дашборде неактивна.
  • Переход в публичный режим безвозвратно отзывает все активные ссылки доступа для туннеля.
  • Управление ссылками доступа (создание и отзыв) в дашборде не предусмотрено — только через API; в интерфейсе доступна смена режима публичный/приватный.
  • Если администратор убирает приватные туннели из тарифа, существующие приватные HTTP/HTTPS-туннели его пользователей становятся публичными в фоне. Их ссылки доступа отзываются безвозвратно; возврат функции в тариф не восстанавливает старые ссылки.