Як зробити свій локальний сайт або сервіс ServBay публічно доступним за допомогою Pinggy
Pinggy — надзвичайно простий у використанні інструмент для пробивання NAT, що дозволяє безпечно відкривати локальні (наприклад, розгорнуті у середовищі ServBay) веб-сервіси у публічному інтернеті через зворотній проксі. У цьому гайді розглянуто покрокове підключення Pinggy у середовищі ServBay, що дає розробникам змогу швидко забезпечити віддалений доступ до локального веб-сервісу для демонстрацій, командної роботи або отримання Webhook-запитів.
Як це працює
Основна ідея Pinggy — організація безпечного SSH-тунелю. Локальний (навіть той, що знаходиться за NAT або фаєрволом) порт сервісу прокидується через SSH-з'єднання на публічний сервер Pinggy. Коли хтось переходить за згенерованим Pinggy URL, запит безпечно проходить тунелем до вашого локального сервісу.
У випадку ServBay це дозволяє будь-який локальний сайт (наприклад: https://myproject.servbay.demo
), що працює у вашому середовищі, зробити доступним зовні — без мороки із пробросом портів або налаштуванням фаєрволу.
Підготовка до роботи
Встановлювати окремі клієнти на локальний комп’ютер не потрібно. Вам знадобиться тільки:
- Вже встановлений і запущений ServBay: Переконайтеся, що ServBay встановлено та сервіс, який ви хочете відкрити, вже працює.
- Сконфігурований сайт у ServBay: У вас має бути хоча б один запущений локальний сайт у ServBay, який прослуховує порт 80 (HTTP) або 443 (HTTPS) через Caddy або Nginx.
- Термінал із підтримкою SSH: У macOS штатний Terminal це підтримує, також підійдуть інші емулятори для SSH.
- Базові знання SSH: Щоб виконати необхідні команди у терміналі.
Практична настройка тунелю
Основна команда
Запустити тунель Pinggy дуже просто — достатньо однієї команди SSH у терміналі. Приклад нижче показує, як опублікувати сайт servbay.new
, що в ServBay працює на локальному порті 443:
bash
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
1
Важливо: Замість XXXXXXXXXXX
у команді вкажіть ваш логін Pinggy (ви отримаєте його на сайті Pinggy; це набір символів). servbay.new
— це ваш локальний домен ServBay (наприклад: myproject.servbay.demo
), який потрібно зробити доступним у мережі.
Пояснення ключових параметрів команди:
Компонент | Пояснення |
---|---|
-p 443 | Встановлює порт для SSH-з'єднання з сервером Pinggy — порт 443 (стандартний порт HTTPS), що підвищує ймовірність пробивання навіть жорстких фаєрволів. |
-R0:localhost:443 | Основна команда пробросу: 0 доручає Pinggy видати довільний публічний порт, а трафік з нього спрямовується на локальний адрес localhost:443 . Caddy чи Nginx у ServBay зазвичай слухають 443 порт для HTTPS. |
-o StrictHostKeyChecking=no | Вимикає перевірку ключа хоста у SSH — зручно для швидкого старту; у продакшені варто вмикати перевірку для безпеки. |
-o ServerAliveInterval=30 | Надсилає keep-alive пакети кожні 30 секунд, щоб уникнути обриву з'єднання при простої. |
-t [email protected] | Ваш логін Pinggy та адреса серверу. |
x:localServerTls:servbay.new | Кастомний параметр Pinggy: вказує, що ваш локальний сайт підтримує TLS (HTTPS) і його домен — servbay.new . (Замініть на актуальний для вашого сайту!) |
"u:host:servbay.new" | Ще один параметр Pinggy: підміняє поле HTTP-заголовка Host на ваше доменне ім'я (важливо при кількох сайтах/віртуальних хостах у ServBay). |
Після запуску команди Pinggy у вікні терміналу видасть публічні URL для доступу до локального сервісу, наприклад:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
1
2
2
Перевірка доступності
Після старту тунелю перевірити доступність можна так:
Перевірка через
curl
(рекомендується): Виконайте команду з параметром-I
для отримання тільки заголовків. Замініть URL на той, який видав Pinggy.bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1Якщо налаштування вірне, ви побачите щось на кшталт:
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
, значить тунель працює й ServBay обробляє запити.Доступ з браузера: Просто відкрийте у браузері Pinggy HTTPS URL на будь-якому пристрої, навіть поза вашою домашньою мережею (наприклад:
https://rnirh-172-188-50-148.a.free.pinggy.link
). Ви побачите ту ж версію сайту, що й на локальній машині через ServBay.Що має відбутися:
- Будь-який користувач у мережі отримує доступ до вашого локального сайту чи сервісу за Pinggy-адресою.
- Якщо ваш сайт ServBay працює через HTTPS (за замовчуванням ServBay генерує самопідписані сертифікати), Pinggy автоматично надає безкоштовний сертифікат від довіреної CA — додаткових налаштувань не потрібно.
- Час відповіді та стабільність залежать від вашого інтернету, якості каналу до Pinggy та навантаження на Pinggy.
Додаткові поради і фішки
Публікація інших портів і сервісів: Якщо ваш локальний сервіс працює НЕ на стандартному порту (не 80/443), наприклад на 8000 (як часто буває з Python чи Node.js):
bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1Для сервісів, що не є веб-сервісами чи не використовують заголовок
Host
, опціїx:localServerTls
таu:host
можна опустити.Власний домен (Pinggy Pro): U користувачів Pinggy Pro є можливість підключити свій власний домен замість стандартного піддомену Pinggy. Докладніше — дивіться офіційну документацію Pinggy.
Постійний тунель (
autossh
): Якщо бажаєте, щоб тунель при втраті зв’язку автоматично підіймався знову, встановітьautossh
(brew install autossh
для macOS) і запустіть: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
відключає додатковий моніторинговий порт, все моніториться через keep-alive.Команди без Token: Pinggy дозволяє отримати одноразові команди тунелю на сайті без використання логіна/токену в запрошенні. Це корисно для тимчасового або командного доступу, не ризикуючи своїм ключем.
Типові сценарії використання
- Демонстрація: Показ локального сайту/додатку клієнтам або команді без деплою на staging чи у продакшн.
- Webhook-дебаг: Отримання й перевірка webhook-викликів від сторонніх сервісів (наприклад, платіжних шлюзів чи GitHub) одразу на своєму комп’ютері.
- Крос-девайс тестування: Перевірка адаптивності сайту з різних пристроїв, навіть якщо вони не під'єднані до однієї мережі.
- Спільна розробка: Легкий доступ членів команди до локальних сервісів ServBay своїх колег.
Вирішення типових проблем
Симптом | Рішення |
---|---|
SSH-з’єднання не встановлюється або таймаут | Перевірте інтернет, чи доступний a.pinggy.io , чи не блокує фаєрвол вихід на порт 443 та чи коректний логін Pinggy. |
Pinggy-URL не відкривається або 502 Bad Gateway | Упевніться, що сайт/сервіс ServBay дійсно працює на localhost:443 (або на порту, зазначеному в -R ). Перевірте налаштування Caddy/Nginx у ServBay. |
Pinggy-URL повертає 404 або дефолтну сторінку ServBay | Якщо у ServBay налаштовано кілька сайтів, обов’язково перевірте, чи передані у команді SSH параметри x:localServerTls і u:host з вашим доменом (наприклад myproject.servbay.demo ). Без цього сервер не знає, на який віртуальний хост відповідати. |
Випадкові обриви тунелю | Причина — мережеві проблеми або таймаут SSH. Спробуйте підвищити значення ServerAliveInterval , або використовуйте autossh (див. розділ “Додаткові фішки”). |
Попередження про SSL-сертифікат у браузері | Pinggy для безкоштовних акаунтів надає реальний SSL-сертифікат від довіреної CA, але якщо локальний ServBay використовує самопідписаний сертифікат, браузер може попередити. Для зовнішнього доступу Pinggy це блокує — переконайтесь, що прослуховує порт 443 та працює через HTTPS. |
Підсумок
Pinggy дозволяє користувачам ServBay миттєво і безпечно відкрити доступ до локальних сайтів та додатків у загальний інтернет. Основні переваги такої інтеграції:
- Не треба ставити окремого клієнта: Мінімум налаштувань і рухів.
- Пуск тунелю в одній команді: Дуже швидко і просто.
- Автоматичний HTTPS: Безкоштовний сертифікат CA для захисту та довіри.
- HTTP і TCP тунелі: Можна прокидати не тільки веб-сайти, а й інші сервіси.
- Відмінна сумісність із ServBay: Легко відкривати конкретний сайт через правильний Host-заголовок.
- Token-less команда: Зручно ділитися доступом, не наражаючи на ризик свої ключі.
На відміну від більш складних рішень пробивання NAT, які вимагають установки окремих додатків і написання конфіг-файлів, Pinggy — це надлегкий інструмент для розробників ServBay, який ідеально підходить для тимчасових демонстрацій, тестування і навіть короткострокового спільного доступу до сервісів. Для довготермінових або комерційних задач з кастомним доменом варто розглянути платний Pinggy Pro. Потужне локальне середовище ServBay у поєднанні з Pinggy радикально підвищить ефективність розробки та взаємодії у команді.