Publiczny dostęp do stron i usług lokalnych w ServBay za pomocą Pinggy
Pinggy to niezwykle prosty w użyciu system tunelowania sieci lokalnej, który dzięki technologii reverse proxy pozwala na bezpieczne udostępnienie usług webowych uruchomionych lokalnie (np. w środowisku ServBay) do internetu. Ten przewodnik szczegółowo pokazuje, jak w środowisku ServBay wykorzystać Pinggy, by szybko umożliwić publiczny dostęp do lokalnych serwisów webowych — idealne rozwiązanie do prezentacji zdalnych, współpracy zespołowej czy odbierania webhooków.
Jak to działa
Sercem Pinggy jest bezpieczny tunel SSH. Punkt po stronie lokalnej (często znajdujący się za NAT lub firewallem) łączy się przez SSH z serwerem Pinggy w publicznej sieci i przekazuje wybrany port swojej usługi. Użytkownicy internetu, odwiedzając adres przydzielony przez Pinggy, są automatycznie przekierowywani (poprzez tunel) do usług uruchomionych na Twoim komputerze.
W kontekście ServBay oznacza to, że dowolna strona działająca lokalnie (np. https://myproject.servbay.demo
) może być zmapowana przez Pinggy na publiczny adres URL — bez potrzeby skomplikowanej konfiguracji portów czy firewalla.
Wymagania wstępne
Aby korzystać z Pinggy, nie jest wymagane instalowanie żadnego dodatkowego oprogramowania klienckiego. Wystarczy:
- Zainstalowany i uruchomiony ServBay: Upewnij się, że środowisko ServBay działa poprawnie i że docelowa strona lub usługa jest dostępna lokalnie.
- Działająca strona ServBay: W ServBay musisz mieć skonfigurowaną oraz uruchomioną co najmniej jedną lokalną witrynę. Strony te są zwykle obsługiwane przez wbudowany serwer Caddy lub Nginx i nasłuchują na lokalnych portach 80 (HTTP) lub 443 (HTTPS).
- Terminal z obsługą SSH: macOS posiada domyślny terminal, a inne używane emulatory terminala również wspierają SSH.
- Podstawowa znajomość SSH: Warto wiedzieć, jak wykonywać polecenia SSH w terminalu.
Konfiguracja tunelu
Główne polecenie
Utworzenie tunelu za pomocą Pinggy sprowadza się do uruchomienia jednej komendy SSH w terminalu. Przykład polecenia wystawiającego stronę servbay.new
nasłuchującą lokalnie na porcie 443 na publiczny adres Pinggy:
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
Ważna uwaga: XXXXXXXXXXX
należy zastąpić swoim loginem przydzielonym przez stronę Pinggy (zazwyczaj losowy ciąg znaków). servbay.new
trzeba podmienić na własną, lokalną domenę ServBay, którą chcesz wystawić publicznie (np. myproject.servbay.demo
).
Rozbijmy to polecenie na części i wyjaśnijmy znaczenie najważniejszych parametrów:
Składnik polecenia | Opis działania |
---|---|
-p 443 | Wskazuje, że połączenie SSH nawiązuje się z serwerem Pinggy poprzez port 443 (standardowy port HTTPS, co zwiększa szanse działania mimo firewalli). |
-R0:localhost:443 | Kluczowy element tunelowania. 0 oznacza automatyczne przydzielenie przez Pinggy publicznego portu, natomiast localhost:443 przekazuje na ten port cały ruch z Pinggy. |
-o StrictHostKeyChecking=no | Wyłącza sprawdzanie kluczy SSH po stronie hosta. Dla testów i prób wystarczające, natomiast dla produkcji zaleca się weryfikację klucza maszyny. |
-o ServerAliveInterval=30 | Co 30 sekund wysyła wiadomość keep-alive, by zapobiec zerwaniu połączenia SSH podczas bezczynności. |
-t [email protected] | Nazwa użytkownika Pinggy oraz adres serwera. XXXXXXXXXXX to Twój unikalny login do Pinggy. |
x:localServerTls:servbay.new | Parametr specyficzny dla Pinggy: informuje serwis, że lokalna usługa obsługuje HTTPS (TLS) i posiada domenę servbay.new (zamień ją na swój adres). |
"u:host:servbay.new" | Kolejny parametr Pinggy działający na poziomie nagłówków HTTP. Wymusza, by nagłówek Host w żądaniu ustawiany był na wskazaną domenę. Kluczowe przy wielu stronach (vhost). |
Po uruchomieniu tego polecenia, terminal wyświetli publiczny adres URL, pod którym dostępna jest Twoja usługa — z reguły zarówno w wersji HTTP, jak i HTTPS, np.:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
1
2
2
Weryfikacja działania
Po zbudowaniu tunelu możesz sprawdzić dostępność swojej strony w następujący sposób:
Sprawdzenie przez
curl
(zalecane): Wywołaj poleceniecurl
z flagą-I
na otrzymany adres URL (podmień na swój adres otrzymany z Pinggy):bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1Jeśli wszystko działa poprawnie, zobaczysz odpowiedź HTTP podobną do tej poniżej. Będzie ona pochodzić z Twojego webserwera uruchomionego lokalnie (np. Nginx lub 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 # Data może być inna Expires: Sun, 02 Jan 1990 00:00:00 GMT Pragma: no-cache Server: nginx # lub caddy, zależnie od konfiguracji ServBay Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN X-Powered-By: PHP/8.4.3 # lub inne informacje o technologii
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Jeżeli widzisz kod
HTTP/1.1 200 OK
i poprawny nagłówekServer
, oznacza to, że połączenie jest prawidłowe i Twoja strona ServBay odpowiedziała poprawnie.Test przez przeglądarkę: W dowolnej przeglądarce (także na urządzeniach spoza lokalnej sieci) wejdź na adres HTTPS otrzymany od Pinggy (np.
https://rnirh-172-188-50-148.a.free.pinggy.link
). Powinieneś zobaczyć dokładnie tę samą stronę co lokalnie przez ServBay.Spodziewane efekty:
- Użytkownik internetu może dostać się do Twojej strony/serwisu ServBay przez wskazany przez Pinggy adres.
- Jeżeli Twoja usługa działa na HTTPS (ServBay domyślnie generuje samopodpisane certyfikaty), Pinggy automatycznie obsłuży ruch HTTPS przez certyfikat wystawiony przez publiczny CA.
- Czas reakcji, stabilność i wydajność zależą od jakości Twojego połączenia, sytuacji sieciowej między Tobą a Pinggy i obciążenia serwerów Pinggy.
Wskazówki zaawansowane
Wystawianie innych portów i usług: Jeśli usługa działa na innym porcie niż domyślny web (np. port 8000 dla aplikacji Python/Node.js), wystarczy zmodyfikować parametr
-R
, jak poniżej:bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1Dla usług nie-webowych lub nie wymagających nagłówka
Host
, parametryx:localServerTls
iu:host
są zbędne.Własna domena (Pinggy Pro): Jeśli korzystasz z Pinggy Pro, masz możliwość użycia własnej domeny zamiast losowego subdomeny Pinggy, co daje bardziej profesjonalny adres. Szczegółowa instrukcja znajduje się w dokumentacji Pinggy.
Trwały tunel (przez
autossh
): Połączenia SSH mogą zrywać się przez niestabilność sieci. Dla trwałych tuneli polecany jestautossh
, który monitoruje połączenie i automatycznie je odnawia. Na macOS można zainstalować go przez Homebrew:brew install autossh
, a potem użyć: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\""
1Opcja
-M 0
polecaautossh
monitorować połączenie wyłącznie przez mechanizm keep-alive SSH (ServerAliveInterval
).Polecenia jednorazowe (token-less): Pinggy pozwala na generowanie poleceń tunelujących bez ujawniania loginu/tokena. Wystarczy wejść na stronę Pinggy i uzyskać jednorazowe polecenie. Przydatne przy udostępnianiu tunelu innym, którzy nie powinni znać Twojego tokena.
Typowe zastosowania
- Demo zdalne: Pokazuj klientom lub zespołom działające lokalnie strony/aplikacje bez potrzeby deployu na staging czy produkcję.
- Debug webhooków: Przyjmuj żądania webhook (np. z płatności, GitHub itd.) bezpośrednio w swoim środowisku deweloperskim.
- Testy na wielu urządzeniach: Sprawdź responsywność i kompatybilność lokalnej strony na smartfonach czy tabletach, nawet spoza swojej sieci LAN.
- Współpraca w zespole: Pozwala innym członkom zespołu łatwo testować Twoje lokalne usługi ServBay.
Rozwiązywanie problemów
Problem | Rozwiązanie |
---|---|
SSH — przekroczony czas lub błąd połączenia | Sprawdź połączenie internetowe oraz czy masz dostęp do a.pinggy.io . Skontroluj firewalla, czy nie blokuje wyjścia na port 443. Upewnij się, że login Pinggy jest poprawny. |
Pinggy zwraca błąd (np. 502 Bad Gateway) | Upewnij się, że strona/usługa ServBay jest uruchomiona i nasłuchuje na localhost:443 (lub innym wskazanym porcie w parametrze -R ). Sprawdź konfigurację serwera web ServBay. |
Odpowiedź 404 lub domyślna strona ServBay | Jeśli masz wiele stron (vhost), sprawdź, czy w poleceniu SSH parametry x:localServerTls i u:host pasują do domeny witryny, którą chcesz udostępnić (np. myproject.servbay.demo ). |
Zrywanie połączenia | Przyczyną mogą być problemy sieciowe lub timeout SSH. Spróbuj zwiększyć wartość ServerAliveInterval lub skorzystać z autossh (patrz „Wskazówki zaawansowane”). |
Problemy z certyfikatem HTTPS | Pinggy powinien zapewnić certyfikat CA dla publicznego adresu. Jeżeli lokalnie korzystasz z samopodpisanego certyfikatu, przeglądarka może ostrzec — ale Pinggy rozwiązuje ten problem dla użytkowników publicznych. Sprawdź też, czy usługa ServBay działa przez HTTPS i nasłuchuje na 443. |
Podsumowanie
Pinggy umożliwia użytkownikom ServBay wyjątkowo łatwo i szybko wystawić lokalne strony i aplikacje do publicznego internetu przez bezpieczny tunel. Korzyści rozwiązania:
- Brak instalacji klienta: Upraszcza konfigurację i codzienne użycie.
- Tunel z jednej komendy: Wystarczy proste polecenie SSH do uruchomienia tunelu.
- Automatyczne HTTPS: Pinggy obsługuje darmowy certyfikat CA przy publicznym dostępie.
- Obsługa HTTP i TCP: Możliwość tunelowania różnych typów usług.
- Pełna kompatybilność z ServBay: Dzięki poprawnej konfiguracji nagłówka
Host
można bezproblemowo wystawić wybrane witryny lokalne ServBay. - Opcja poleceń bez tokena: Bezpieczniejsze udostępnianie poleceń innym.
W porównaniu do narzędzi wymagających instalacji dedykowanych klientów bądź skomplikowanych konfiguracji, Pinggy stanowi lekkie i niezwykle wygodne rozwiązanie — szczególnie dla deweloperów ServBay potrzebujących szybkich testów, demo lub tymczasowego udostępnienia usług. Dla komercyjnych potrzeb (własna domena, tunelowanie bez przerw) rozważ Pinggy w wersji płatnej. Potężne środowisko lokalne ServBay w połączeniu z prostotą Pinggy zdecydowanie przyspiesza codzienną pracę i współpracę zespołową.