Een lokale poort naar het internet blootleggen zonder gedoe
Een bekende situatie: je start een backend op je lokale machine, configureert integratie met een externe service zoals Stripe of Telegram, en dan moet je een webhook testen. Er is geen externe toegang tot je localhost:8000, een statisch IP bestellen voelt als te veel moeite, en een staging-omgeving deployen voor slechts een paar requests duurt te lang.
Meestal reik je in zulke momenten instinctief naar ngrok of vergelijkbare services. Maar commerciële alternatieven hebben altijd vervelende beperkingen: verkeerslimieten, URL's die bij elke herstart veranderen, of betaalde abonnementen voor basisfuncties. Onlangs stuitte ik op tunnelto — een open-source Rust-hulpprogramma dat precies doet wat het belooft, zonder het extra gedoe.
Wat is dit tool
Met het tunnelto-project kun je een lokale webserver公开 naar het publieke internet via een tunnel. Je voert één commando uit in de terminal, krijgt een geldige publieke URL, en geeft deze door aan externe services of clients voor demo-doeleinden.
Het belangrijkste hoogtepunt is dat zowel de client als de server in Rust zijn geschreven met de async tokio-engine. Dit resulteert in bescheiden geheugengebruik en snelle afhandeling van inkomende verbindingen. Geen zware runtimes of achtergrondprocessen die gigabytes aan RAM verbruiken.
De repository van het project is beschikbaar op https://github.com/tunneltodev/tunnelto.
Hoe het in de praktijk werkt
De installatie kost een paar minuten. Als je op macOS zit, installeer je het hulpprogramma via Homebrew:
brew install agrinman/tap/tunnelto
Als je al een Rust-toolchain hebt geïnstalleerd, kun je het pakket bouwen via Cargo:
cargo install tunnelto
Voor andere systemen heeft de auteur gecompileerde binaries voorbereid in de Releases-sectie op GitHub.
Snelle start
Stel dat je een webapplicatie lokaal draait op poort 8000. Je kunt deze公开 naar de buitenwereld met dit commando:
tunnelto --port 8000
Na uitvoering opent het hulpprogramma een tunnel en geeft onmiddellijk een werkend adres. Alle requests die vanuit het internet naar dat adres komen, worden direct doorgestuurd naar je lokale poort.
Nuttige parameters
In het dagelijks werk heb je vaak aanvullende configuratie nodig. Hier zijn de flags die tijd besparen:
--subdomainstelt een vast subdomein in zodat je de URL niet telkens hoeft te wijzigen in webhook-instellingen na elke herstart--schemeschakelt het protocol tussen http en https als je lokale service een beveiligde verbinding vereist--dashboard-addressstart een lokale interface op voor het inspecteren en bekijken van inkomende requests--keyaccepteert een API-sleutel voor tunnel-autorisatie
Voorbeeldcommando met expliciete subdomein-specificatie:
tunnelto --port 3000 --subdomain my-test-app
Waar dit voor nuttig is
In ontwikkeling zijn er verschillende scenario's waarin tunneling uren werk bespaart:
- Debuggen van inkomende webhooks van betalingssystemen, messengers of OAuth-providers direct in je lokale debugger met breakpoints.
- Een mobiele applicatie testen op een echt smartphone verbonden met een mobiel netwerk, zonder Wi-Fi-router te configureren.
- Snel layouts of prototypes laten zien aan collega's terwijl de code nog niet naar de repository is gepusht of naar een testserver is gedeployed.
- Verifiëren van HTTPS-certificaten en beveiligingsheaders voor release.
Persoonlijke indrukken
De README vermeldt de mogelijkheid om de servercomponent zelf te hosten, hoewel de documentatie gedetailleerde instructies mist. Als volledige verkeersprivacy belangrijk voor je is, moet je zelf in de codebase duiken en een relay op je eigen VPS deployen.
Het project heeft niet veel sterren (ongeveer 400), en commits komen niet elke dag binnen, maar voor basistaken werkt het hulpprogramma betrouwbaar. Het start snel op, vereist geen registratie voor basis-tunneling, en doet precies één duidelijke ding. Als je op zoek bent naar een eenvoudige open-source vervanger voor ngrok, is het de moeite waard om de repository te bekijken en het te proberen.
Gerelateerde projecten