Публичный доступ к локальному сайту и сервисам в ServBay с помощью Pinggy
Pinggy — это предельно простой и удобный инструмент для проброса локального сервиса во внешний интернет (“интранет во внешний интернет”). С помощью технологии обратного проксирования Pinggy позволяет безопасно представить ваши локальные веб-сервисы (например, в среде ServBay) для доступа извне, через интернет. В этом руководстве подробно описано, как использовать Pinggy в сочетании с ServBay, чтобы быстро опубликовать локальный сайт для удалённых демонстраций, командной работы или получения Webhook-запросов, не расходуя время на сложную настройку.
Технические основы
В основе Pinggy лежит создание защищённого SSH-туннеля. Локальный сервис (даже если он за NAT или firewall) подключается по SSH к публичному серверу Pinggy. Все запросы к выданному Pinggy URL надёжно передаются по этому туннелю на ваш локальный сервер.
Применительно к ServBay, это означает, что любой сайт, запущенный у вас локально (например, на https://myproject.servbay.demo
), можно “пробросить” во внешний интернет через выделенный Pinggy-URL, без сложностей с пробросом портов или настройкой firewall.
Что потребуется
Для работы с Pinggy не требуется установка дополнительного программного обеспечения. Вам нужно:
- Установленный и запущенный ServBay: Убедитесь, что среда ServBay корректно установлена, а нужный сайт или сервис работает локально.
- Сайт, настроенный в ServBay: Как минимум один сайт должен быть сконфигурирован и запущен через ServBay. Чаще всего сайты обслуживаются встроенными Caddy или Nginx, “слушая” локальные порты 80 (HTTP) или 443 (HTTPS).
- Терминал с поддержкой SSH: В macOS терминал встроен, также подойдут любые другие эмуляторы терминала с поддержкой SSH.
- Базовые навыки работы с SSH: Необходимо уметь выполнять SSH-команды в терминале.
Практическая настройка туннеля
Основная команда
Создать туннель через Pinggy очень просто — выполните одну SSH-команду в терминале. Пример ниже показывает, как пробросить локальный сайт servbay.new
, работающий на порту 443, в интернет:
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
Важно:
XXXXXXXXXXX
здесь — ваш индивидуальный username (обычно случайная строка), который вы получили на сайте Pinggy.servbay.new
замените на домен вашего сайта, настроенного в ServBay (например,myproject.servbay.demo
), который хотите сделать доступным через интернет.
Расшифруем ключевые параметры команды:
Компонент | Назначение |
---|---|
-p 443 | Подключение по порту 443 (стандартный HTTPS-порт, чаще всего не блокируется firewall-ом). |
-R0:localhost:443 | Главное: на стороне Pinggy автоматически выдаётся внешний порт (0 — случайный), весь трафик с этого порта пробрасывается на локальный порт 443 вашего компьютера. В ServBay Caddy или Nginx как раз слушают этот порт для HTTPS. |
-o StrictHostKeyChecking=no | Отключает проверку ssh-ключа сервера (удобно для тестирования, но для PROD без крайней необходимости оставлять не стоит). |
-o ServerAliveInterval=30 | “Keep-alive”: раз в 30 секунд посылает сообщение, не давая туннелю разорваться из-за простоя. |
-t [email protected] | Логин (username) Pinggy и адрес сервера подключения. |
x:localServerTls:servbay.new | Пользовательский параметр Pinggy: сообщает, что ваш сервис работает по HTTPS (TLS), и указывает его локальный домен. Это нужно, чтобы Pinggy корректно обрабатывал HTTPS-трафик. |
"u:host:servbay.new" | Второй пользовательский параметр Pinggy: форсирует установку HTTP-заголовка Host в названии вашего локального сайта (servbay.new ). Критично важно, если в ServBay настроено несколько сайтов (виртуальных хостов)! |
При успешном выполнении команды Pinggy выдаст внешний URL для доступа к вашему сервису, обычно сразу оба варианта: HTTP и HTTPS, например:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
2
Проверка работы сервиса
После открытия туннеля вы можете убедиться, что доступ во внешний интернет настроен.
Проверка через
curl
(рекомендуется): С помощьюcurl -I
(отображает только заголовки) проверьте отклик по публичному URL. Замените URL на тот, который сгенерировал Pinggy.bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1В случае успеха вы увидите заголовки от вашего веб-сервера (например, Nginx или Caddy), подобные этим:
HTTP/1.1 200 OK Connection: close Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Access-Control-Allow-Origin: * Cache-Control: max-age=0, must-revalidate, no-cache, no-store, private Connection: keep-alive Content-Type: text/html; charset=UTF-8 Date: Tue, 18 Feb 2025 11:51:48 GMT # Дата может отличаться Expires: Sun, 02 Jan 1990 00:00:00 GMT Pragma: no-cache Server: nginx # или caddy и др., зависит от конфигурации ServBay Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN X-Powered-By: PHP/8.4.3 # или другой стек технологий
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Наличие строки
HTTP/1.1 200 OK
и корректных заголовковServer
означает успешное подключение к вашему локальному серверу.Доступ через браузер: Просто откройте выданный HTTPS-URL Pinggy (например,
https://rnirh-172-188-50-148.a.free.pinggy.link
) на любом устройстве, даже вне вашего локального сегмента. На экране вы должны увидеть то же самое, что и при локальном доступе к серверу в ServBay.Ожидаемый результат:
- Внешние пользователи могут заходить на ваш локальный сайт через Pinggy-URL.
- Если ваш сервис работает по HTTPS (ServBay по умолчанию создает самоподписанный сертификат), Pinggy автоматически выдаёт внешний HTTPS-URL с бесплатным сертификатом от публичного CA — ничего докручивать не надо.
- Задержка и стабильность доступа зависят от состояния вашей сети, задержки до серверов Pinggy и текущей загрузки сервиса Pinggy.
Расширенные возможности
Проброс разных локальных портов или сервисов: Если ваш сервис не веб-сервис или слушает нетипичный порт (например, Python или Node.js на 8000), просто скорректируйте параметр
-R
:bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1Для сервисов, которые не обрабатывают заголовок Host, дополнительные параметры Pinggy (
x:localServerTls
,u:host
) обычно не нужны.Собственный домен (Pinggy Pro): Премиум-пользователи Pinggy могут привязывать свой домен и выдавать клиентам красивый URL вместо случайного субдомена. Подробности — в официальной документации Pinggy.
Постоянный туннель (
autossh
): SSH-туннель может разрываться из-за сетевых сбоев. Если требуется доступ 24/7 — используйте инструментautossh
, автоматически восстанавливающий соединение. Для macOS ставить можно через Homebrew:brew install autossh
.bashautossh -M 0 -t "ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new \"u:host:servbay.new\""
1Ключ
-M 0
отключает дополнительный мониторинг через отдельный порт, иautossh
следит за туннелем по самим keep-alive сообщениям SSH.Без Token в команде: Pinggy позволяет получать одноразовую безопасную команду без вашего username/Token — просто сформируйте ее на сайте Pinggy и дайте нужному человеку, не опасаясь утечки токена.
Где пригодится Pinggy + ServBay
- Демонстрация проектов: Быстро показать клиенту или коллегам свежий сайт или функционал без публикации на staging или production.
- Отладка Webhook: Прямо на локальной машине принимать Webhook-уведомления от сторонних сервисов (платежки, GitHub и др.) и моментально отлаживать логику обработки.
- Кросс-девайс тесты: Проверять адаптивность и “живое” отображение сайта на разных устройствах, даже если они не в одной сети.
- Командная работа: Упростить коллегам доступ к вашим локальным сервисам на ServBay для тестирования и совместной работы.
Частые проблемы и их решение
Симптом | Решение |
---|---|
Ошибка или таймаут SSH-подключения | Проверьте интернет, убедитесь, что сервер a.pinggy.io доступен, и локальный firewall не блокирует исходящие соединения на порт 443. Также перепроверьте корректность Pinggy username. |
URL Pinggy не отвечает или ошибка (502 Bad Gateway) | Убедитесь, что локальный сайт на ServBay запущен и слушает нужный порт (localhost:443 или иной, указанный в -R ). Проверьте настройки веб-сервера (Caddy/Nginx) в ServBay. |
Ошибка 404 или отображается главная страница ServBay | Если несколько сайтов (виртуальных хостов) — проверьте, что параметры x:localServerTls и u:host в SSH-команде правильно выставлены на нужный домен (например, myproject.servbay.demo ). Этот параметр — ключ к нужному виртуальному хосту! |
Время от времени туннель разрывается | Возможна нестабильная сеть или таймаут SSH. Увеличьте ServerAliveInterval или включите автопереподключение через autossh (см. раздел “Расширенные возможности”). |
Сертификат HTTPS некорректен | Бесплатным пользователям Pinggy выдаёт сертификаты от общего CA. Если вы используете самоподписанный сертификат в ServBay, браузер может “ругаться” только при локальном доступе. Для внешних пользователей Pinggy выдаёт валидный сертификат. Если ошибка сохраняется — убедитесь, что сервис ServBay действительно слушает HTTPS (порт 443). |
Итоги
С помощью Pinggy пользователи ServBay могут удивительно просто и быстро организовать безопасный внешний доступ к своим локальным проектам и сайтам. Решение обладает рядом явных преимуществ:
- Без установки клиента: Настройка и использование максимально облегчаются.
- Простота запуска: Туннель включается одной SSH-командой.
- Автоматический HTTPS: Выдаётся бесплатный публичный сертификат — забудьте о сложностях с сертификатами для публичного доступа.
- Поддержка HTTP и TCP-туннелей: Можно пробрасывать практически любые сервисы.
- Идеальная совместимость с ServBay: Благодаря передаче корректного заголовка Host легко публикуется именно нужный сайт среди множества локальных.
- Безопасные одноразовые команды (Token-less): Для шеринга команды не надо передавать секретные токены.
В отличие от решений, где нужно ставить отдельный софт или править сложные конфиги, Pinggy — это настоящее “легкое облако”, идеально подходящее ServBay для теста, демо и временного доступа. Для длительных задач или работы с кастомными доменами подойдут платные тарифы Pinggy. В комбинации с мощной средой разработки ServBay этот подход радикально ускоряет работу веб-разработчика, облегчая командную работу и внешний доступ к тестовым сервисам.