Openbare toegang tot lokale websites en diensten in ServBay met Pinggy
Pinggy is een extreem eenvoudig te gebruiken NAT-penetratietool die met behulp van reverse proxy-technologie je lokaal draaiende (bijvoorbeeld in ServBay) webdiensten veilig kan blootstellen aan het publieke internet. In deze handleiding lees je stap-voor-stap hoe je Pinggy gebruikt in ServBay, zodat je als ontwikkelaar snel je lokale webdienst kunt delen met de buitenwereld, bijvoorbeeld voor externe demo's, teamwerk of het ontvangen van webhook-verzoeken.
Technisch principe
Het kernprincipe van Pinggy is het opzetten van een veilige SSH-tunnel. De lokaal draaiende dienst (mogelijk achter een NAT of firewall) wordt via een SSH-verbinding doorgestuurd naar de publieke servers van Pinggy. Als een gebruiker het door Pinggy toegewezen publieke URL bezoekt, wordt het verzoek via de tunnel veilig doorgestuurd naar jouw lokale dienst.
Dit betekent dat je in ServBay een lokaal draaiende website (bijvoorbeeld: https://myproject.servbay.demo
) met Pinggy eenvoudig kunt mappen naar een publiek URL, zonder complexe port forwarding of firewallconfiguratie.
Benodigdheden
Voor het gebruik van Pinggy hoef je geen extra clientsoftware lokaal te installeren. Je hebt slechts het volgende nodig:
- ServBay geïnstalleerd en actief: Zorg dat ServBay juist is geïnstalleerd en dat de lokale website of dienst die je wil publiceren goed draait.
- Een draaiende ServBay-website: Configureer en start ten minste één lokale website in ServBay. Deze websites luisteren doorgaans via ServBay's ingebouwde Caddy of Nginx-server op poort 80 (HTTP) of 443 (HTTPS).
- Terminal met SSH-ondersteuning: macOS wordt standaard geleverd met een Terminal, en andere terminalemulators ondersteunen ook SSH.
- Basiskennis van SSH: Je weet hoe je SSH-commando's in de terminal uitvoert.
Praktische tunnelconfiguratie
Basiscommando
Een tunnel opzetten met Pinggy is heel eenvoudig: voer slechts één SSH-commando uit in de terminal. Hieronder zie je een voorbeeld waarmee je een in ServBay geconfigureerde site op poort 443, zoals servbay.new
, naar het publieke internet publiceert:
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
Belangrijk: Vervang XXXXXXXXXXX
door jouw gebruikersnaam van Pinggy (te vinden op de Pinggy-website; dit is meestal een tekenreeks). Vervang servbay.new
door de lokale website-domeinnaam die je via Pinggy wilt publiceren (bijvoorbeeld: myproject.servbay.demo
).
Laten we de belangrijkste parameters in dit commando verduidelijken:
Onderdeel | Uitleg |
---|---|
-p 443 | Geeft aan dat SSH moet verbinden met poort 443 van de Pinggy-server. Door gebruik te maken van de standaard HTTPS-poort vergroot je de kans op succesvolle firewall-doorbraak. |
-R0:localhost:443 | Dit is de kern van remote port forwarding. 0 betekent dat de Pinggy-server een willekeurige publieke poort toewijst. localhost:443 geeft aan dat verkeer via die publieke poort wordt doorgestuurd naar poort 443 van je lokale computer. Diensten zoals Caddy of Nginx in ServBay luisteren doorgaans op poort 443 voor HTTPS-verkeer. |
-o StrictHostKeyChecking=no | Zet het controleren van SSH-hostsleutels uit. Dit is handig bij eerste verbindingen of tests, maar in productie is het veiliger om deze optie niet uit te schakelen. |
-o ServerAliveInterval=30 | Stuur elke 30 seconden een keep-alive signaal zodat de SSH-verbinding actief blijft en niet wegvalt bij inactiviteit. |
-t [email protected] | De gebruikersnaam van Pinggy en het serveradres. XXXXXXXXXXX is je unieke Pinggy-gebruikersnaam. |
x:localServerTls:servbay.new | Een speciale Pinggy-parameter die aangeeft dat je lokale dienst TLS (HTTPS) ondersteunt, en dat de domeinnaam servbay.new is (vervang door je eigen ServBay-site). Dit is nodig voor correcte HTTPS-afhandeling. |
"u:host:servbay.new" | Nog een Pinggy-optie: deze past de Host header van het HTTP-verzoek aan naar servbay.new (vervang met je eigen domein). Dit is essentieel als je in ServBay meerdere websites (virtual hosts) draait, zodat de juiste lokale site wordt aangesproken. |
Na succesvolle uitvoering van het commando toont Pinggy in de terminal het publieke URL waarmee jouw lokale dienst bereikbaar is; meestal worden zowel HTTP- als HTTPS-links gegeven, bijvoorbeeld:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
1
2
2
Controle van de dienst
Na opzetten van de tunnel kun je op de volgende manieren testen of je dienst publiek goed bereikbaar is:
Controleren met
curl
(aanbevolen): Gebruikcurl
met de-I
optie (alleen HTTP-header) om het publieke URL te testen. Vervang de voorbeeld-URL door de URL die Pinggy bij jou heeft gegeven.bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1Als alles goed gaat, zie je een HTTP-header vergelijkbaar met:
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 # Datum kan variëren Expires: Sun, 02 Jan 1990 00:00:00 GMT Pragma: no-cache Server: nginx # Of caddy, afhankelijk van de ServBay-configuratie Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN X-Powered-By: PHP/8.4.3 # Of andere stack-informatie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Zie je
HTTP/1.1 200 OK
en de juisteServer
header, dan betekent dit doorgaans dat het werkt en dat je lokale ServBay-server reageert.In de browser openen: Open het Pinggy HTTPS-URL in een browser op elk apparaat (zelfs buiten je lokale netwerk). Je zou exact dezelfde website moeten zien als wanneer je deze lokaal via ServBay opent.
Verwachte resultaten:
- Publieke gebruikers kunnen met het gegeven URL je lokale ServBay-website of -dienst bereiken.
- Indien je lokaal HTTPS hebt geconfigureerd (ServBay genereert standaard self-signed certificaten), verzorgt Pinggy automatisch publiek geldige certificaten (van een openbare CA), dus je hebt verder niets te doen.
- De snelheid en stabiliteit hangt af van je lokale netwerk, de verbinding met Pinggy en de belasting op hun server.
Geavanceerde tips
Andere lokale poorten of diensten exposen: Draait je lokale dienst niet op poort 80/443 of is het geen webdienst? Pas dan de
-R
parameter aan. Om bijvoorbeeld poort 8000 te delen (denk aan een Python- of Node.js-app):bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1Voor niet-webdiensten of webdiensten zonder
Host
header-afhandeling zijn dex:localServerTls
enu:host
parameters vaak niet nodig.Eigen domeinnaam (Pinggy Pro): Met een Pinggy Pro-abonnement kun je een eigen domeinnaam in plaats van een willekeurig subdomein gebruiken. Dit zorgt voor een professionelere presentatie. Raadpleeg hiervoor de officiële Pinggy-documentatie.
Tunnel persistent houden (met
autossh
): SSH-verbindingen kunnen verbreken door netwerkproblemen. Voor een blijvende tunnel kun jeautossh
gebruiken, dat verbindingen automatisch herstelt. Na installatie (bijvoorbeeld met Homebrew:brew install autossh
) kun je het als volgt gebruiken: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
geeft aan datautossh
geen extra monitoringpoort gebruikt, maar vertrouwt op SSH’s eigen keep-alive (ServerAliveInterval
).Token-less commando's: Pinggy biedt een manier aan waarbij je geen gebruikersnaam/token in het commando hoeft mee te geven: haal eenvoudigweg een eenmalig commando op via hun website. Dit is handig bij delen met anderen — geen zorgen over tokens die uitlekken.
Typische scenario's
- Externe demo's: Toon je lokaal ontwikkelde website of applicatie direct aan klanten of teamgenoten, zonder een staging of productieserver.
- Webhook-debugging: Ontvang webhook-verzoeken van externe partijen (zoals betaalsystemen, GitHub) rechtstreeks in je lokale ontwikkelomgeving.
- Cross-device testen: Test het responsive design en de compatibiliteit van je site op diverse apparaten (mobiel, tablet), ook buiten je LAN.
- Teamwork: Laat teamleden gemakkelijk elkaars lokale ServBay-diensten testen en gebruiken.
Probleemoplossing
Probleem | Oplossing |
---|---|
SSH time-out of geen verbinding | Controleer je internetverbinding en kijk of a.pinggy.io bereikbaar is. Controleer of uitgaand verkeer op poort 443 niet geblokkeerd wordt door je firewall. Controleer of je Pinggy-gebruikersnaam klopt. |
Pinggy-URL niet bereikbaar of foutmelding zoals 502 Bad Gateway | Controleer of de ServBay-site of -dienst draait en luistert op localhost:443 (of de poort in de -R parameter). Controleer of de webserver (Caddy/Nginx) correct is ingesteld. |
404 Not Found of de standaard ServBay-pagina bij toegang tot Pinggy-URL | Als je meerdere sites (virtual hosts) hebt ingesteld in ServBay, controleer dan altijd dat de x:localServerTls en u:host parameters in je SSH-commando overeenkomen met het domein van de lokale site die je wilt delen (bijvoorbeeld myproject.servbay.demo ). Dit zorgt ervoor dat het juiste virtual host-verzoek wordt gerouteerd. |
Verbinding valt soms weg | Dit kan door een instabiel netwerk of SSH time-outs komen. Probeer de waarde van ServerAliveInterval te verhogen of gebruik autossh voor automatische reconnnects (zie “Geavanceerde tips”). |
Foutmelding over HTTPS-certificaat | Pinggy levert doorgaans een geldig CA-certificaat voor gratis users. Gebruik je lokaal een self-signed certificaat, dan kan je browser waarschuwen. Het publieke CA-certificaat van Pinggy zou certificaatproblemen oplossen; controleer of je dienst lokaal via HTTPS (poort 443) draait. |
Samenvatting van de oplossing
Met Pinggy kunnen ServBay-gebruikers opmerkelijk snel én veilig hun lokaal ontwikkelde websites of apps publiekelijk delen. De voordelen op een rij:
- Geen installaties nodig: Kinderlijk eenvoudig te configureren en te gebruiken.
- One-click activatie: Eén eenvoudige SSH-opdracht start de tunnel.
- Automatische HTTPS-ondersteuning: Pinggy verzorgt kosteloos een geldig publiek certificaat; geen zorgen over HTTPS-waarschuwingen.
- HTTP- én TCP-tunnels mogelijk: Voor iedere publicatiebehoefte.
- Strakke integratie met ServBay: Door de juiste
Host
header door te sturen, kun je eenvoudig specifieke sites uit ServBay extern beschikbaar maken. - Token-vrije commando’s: Veiliger delen van verbindingsinformatie.
In tegenstelling tot veel NAT-penetratietools die lokale clients of complexe configs eisen, biedt Pinggy een lichte, direct inzetbare manier van delen — ideaal voor snelle tests, demo’s of tijdelijk toegang verlenen tot lokale diensten. Bij langdurig gebruik of voor een eigen domeinnaam is upgraden naar een betaald Pinggy-plan aan te raden. De combinatie van ServBay’s krachtige lokale ontwikkelomgeving en Pinggy’s makkelijke publieke deling zal je ontwikkel- en samenwerkingsefficiëntie flink verhogen.