ngrok vs. Expose: Das Open-Source PHP-Tunnel für Webentwickler

Current comparison
Looking for the main ngrok alternative guide?
We keep the latest ngrok alternative comparison, CLI commands, pricing notes, and webhook examples on one canonical page.
Open the InstaTunnel ngrok alternative guideQuick answer
ngrok vs Beyond Code's Expose: Das Open-Source-Tunnel: quick answer
If free tunnel limits interrupt your workflow, compare session length, stable URLs, concurrent tunnels, and paid-plan pricing before choosing a localhost tunnel tool.
What free tunnel limits should developers check first?
Check session duration, URL stability, concurrent tunnels, custom subdomains, bandwidth or request limits, and whether webhook callbacks survive restarts.
How does InstaTunnel handle longer development sessions?
InstaTunnel Free is designed around 24-hour sessions, with Pro available for higher limits and MCP endpoint tunnel workflows.
Wenn Sie APIs erstellen, Webhooks von Stripe, Shopify oder GitHub einrichten oder einem Kunden eine funktionierende Vorschau ohne Deployment auf Staging bereitstellen müssen, haben Sie wahrscheinlich irgendwann zu ngrok gegriffen. Über mehr als ein Jahrzehnt war es die Standardlösung auf die Frage “Wie teile ich meinen localhost?”
Doch die Produktentwicklung von ngrok hat sich gewandelt. Es ist vom einfachen Entwickler-Tool zu einer umfassenden Ingress- und API-Gateway-Plattform gewachsen, und die kostenlose Stufe spiegelt diesen Wandel wider. Das hat Platz geschaffen für spezialisierte, entwicklerfokussierte Alternativen – eine davon ist Expose, ein Open-Source PHP-Tunnel, entwickelt von Beyond Code (die Macher von Laravel Herd und Tinkerwell).
Dieser Beitrag vergleicht die beiden Tools so, wie sie heute tatsächlich stehen, nicht nur, wie sie in älteren Blogposts oft beschrieben werden.
(Hinweis: Dies ist Expose von Beyond Code, nicht LocalXpose, ein separates Cross-Protokoll-Tunneling-Tool, das an anderer Stelle auf dieser Seite behandelt wird. Verschiedene Produkte, ähnlich klingende Namen.)
Warum lokale Tunnel existieren
Ein lokaler Server (http://localhost:8000) ist vom Internet aus nicht erreichbar – das ist die richtige Standardeinstellung. Aber es wird problematisch, sobald Sie:
- Webhooks: Stripe, GitHub und ähnliche Dienste benötigen eine öffentliche URL, um Ereignisse zu POSTen.
- Mobiles Testen: Ein Telefon oder Emulator braucht einen echten Endpunkt, um mit Ihrem lokalen Backend zu kommunizieren.
- Kunden-Demos: Arbeitsfortschritte zeigen, ohne einen Deployment-Schritt.
Tunneling-Tools lösen das, indem sie einen Client auf Ihrem Rechner laufen lassen, der eine ausgehende Verbindung zu einem Relay-Server öffnet. Dieser Server gibt Ihnen eine öffentliche URL und leitet den Traffic durch den Tunnel zu Ihrem lokalen Port weiter.
ngrok: Der Platzhirsch
2013 von Alan Shreve in Go geschrieben, ist ngrok das Tool, auf das die meisten Entwickler beim Tunneln gelernt haben. Es hat sich seitdem als das positioniert, was das eigene Marketing als “universellen Gateway” bezeichnet – mit Kubernetes-Ingress über den eigenen Operator, Traffic-Policy-Regeln (WAF, OAuth/OIDC, SAML), Endpoint-Pooling für Load-Balancing und SOC 2/HIPAA-Konformität für Unternehmenskunden. Es unterstützt HTTP, HTTPS, TCP und (bei bezahlten Plänen) TLS-Traffic, weshalb es immer noch das richtige Tool ist, um etwas zu tunneln, das kein Webserver ist – eine SSH-Session, ein Spieleserver, ein Datenbankport.
Was die kostenlose Stufe tatsächlich einschränkt (und was nicht)
Die aktuellen Limits für den kostenlosen Plan von ngrok:
| Ressource | Limit der kostenlosen Stufe |
|---|---|
| Online-Endpunkte | Bis zu 3 |
| Datenübertragung ausgehend | 1 GB/Monat |
| HTTP/S-Anfragen | 20.000/Monat |
| TCP-Verbindungen | 5.000/Monat (erfordert Kartenverifizierung, um TCP überhaupt zu aktivieren) |
| TLS-Endpunkte | Nicht verfügbar |
| Team-Mitglieder | 1 |
Einige Korrekturen zu Behauptungen, die über die kostenlose Stufe kursieren:
- Es gibt keinen 2-Stunden-Session-Timeout. Die Dokumentation von ngrok besagt klar, dass die kostenlose Stufe keine Timeout für Endpunkte hat und man einen Tunnel unbegrenzt als Hintergrunddienst laufen lassen kann. Das wird in vielen Vergleichsartikeln so wiedergegeben; ist aber bei den aktuellen ngrok-Dokumenten nicht mehr korrekt.
- Die URL der kostenlosen Stufe ist bei jedem Neustart nicht zufällig. Jedes ngrok-Konto – auch das kostenlose – erhält eine zugewiesene “Dev-Domain” (wie
your-name.ngrok-free.app), die an das Konto gebunden ist und nicht bei jeder Sitzung neu generiert wird. Man kann sie nicht anpassen oder eigene Domains hinzufügen, aber sie rotiert nicht so, wie ältere Artikel es beschreiben. - Die Warnseite im Browser kann umgangen werden, ohne ein Upgrade durchzuführen. ngrok injiziert eine Sicherheitswarnung vor HTML-Traffic auf Endpunkten der kostenlosen Stufe, um Phishing zu verhindern. Sie betrifft keinen API- oder Webhook-Traffic und kann bei Browser-Traffic durch das Senden eines
ngrok-skip-browser-warningHeaders oder eines nicht-Standard-User-Agentumgangen werden – kein kostenpflichtiger Plan erforderlich. Ein Upgrade entfernt diese Warnung vollständig, aber sie ist kein unüberwindbares Hindernis auf der kostenlosen Stufe, wie manchmal dargestellt.
Was wirklich einschränkt: 1 GB monatlicher Transfer und 20.000 Requests, die bei echtem Traffic schnell aufgebraucht sind, und TCP-Tunnel benötigen Kartenverifizierung selbst bei kostenlosem Einsatz.
Aktuelle Bezahlpreise
ngrok hat die Plan-Namen vereinfacht. Aktuell gibt es keinen “Personal”-Tarif mehr – die Stufen sind: Free, Hobbyist, Pay-as-you-go und Enterprise:
- Hobbyist – 8 USD/Monat bei Jahresrechnung (10 USD monatlich): 3 Online-Endpunkte, 5 GB Datenübertragung inklusive, 100.000 Requests inklusive, keine Interstitial-Seite, ngrok-markierte Domains.
- Pay-as-you-go – 20 USD/Monat Grundpreis (inkl. 20 USD Nutzung) plus Abrechnung nach Verbrauch: unbegrenzte Online-Endpunkte, eigene Domain, unbegrenzte Team-Mitglieder (3 inklusive).
- Enterprise – individuelle Preise, SSO/SCIM, HIPAA-BAAs, dedizierter Support.
Expose: Die PHP-natürliche Alternative
Expose wird von Marcel Pociot und dem Beyond Code-Team entwickelt (auch hinter Laravel Herd und Tinkerwell). Im Gegensatz zu ngrok ist es vollständig in PHP geschrieben und auf HTTP/HTTPS ausgerichtet – es unterstützt kein reines TCP oder UDP und versucht nicht, ein Kubernetes-Ingress-Controller zu sein. Es richtet sich genau nach dem Workflow, den dieser Blog häufig behandelt: lokale Webentwicklung, Webhook-Tests, Kunden-Vorschauen.
Es ist wirklich Open Source (MIT-Lizenz, Client und Server), was den Kernunterschied zu ngrok darstellt.
Installation
Aktuelle offizielle Installationsmethoden, laut Expose-Dokumentation:
Composer (globale Installation):
composer global require exposedev/expose
Stellen Sie sicher, dass Ihr globales Composer-Bin-Verzeichnis in Ihrem PATH ist.
PHP-Archiv (PHAR), kein Composer erforderlich:
curl https://github.com/exposedev/expose/raw/master/builds/expose -L --output expose
chmod +x expose
sudo mv expose /usr/local/bin/expose
Ein wichtiger Punkt: Expose benötigt trotz PHAR-“Binary” eine lokale PHP-Installation – Beyond Code bestätigt das in der FAQ. Wenn PHP bei Ihnen sonst nicht läuft, ist das eine echte Abhängigkeit, die ngrok mit seinem einzigen Go-Binary nicht hat.
Das Projekt-Repository hat sich von beyondcode zu exposedev verschoben; das ältere beyondcode/expose Composer-Paket ist weiterhin vorhanden und wird aktualisiert, die Dokumentation verweist jetzt auf exposedev/expose.
Authentifizierung und Site-Sharing
expose token YOUR_TOKEN
expose share http://localhost:8000
Wenn Sie ein Pro- oder Team-Konto haben (oder Ihren eigenen Server betreiben), können Sie eine feste Subdomain anfordern:
expose share http://localhost:8000 --subdomain=meine-super-app
Das Dashboard
Expose bietet ein lokales Web-Dashboard (http://127.0.0.1:4040, gleiche Konvention wie ngrok) zur Inspektion und Wiedergabe eingehender HTTP-Anfragen. Expose 3, die aktuelle Hauptversion, hat einige neue Funktionen, die es wert sind, erwähnt zu werden, falls Sie es noch nicht kennen:
- Replay mit Änderungen – Sie können jetzt Header, URI oder Payload vor dem Wiederholen einer erfassten Anfrage bearbeiten.
- Request-Plugins – Expose erkennt spezielle Webhook-Formate (GitHub und Paddle Billing sind integriert) und zeigt die relevanten Payload-Felder direkt im Dashboard und CLI an, ohne in rohes JSON graben zu müssen.
- Vite-Erkennung – Wenn Sie eine Seite teilen, während ein Vite-Entwicklungsserver läuft, erkennt Expose das und routet den Vite-Tunnel automatisch, was ein langjähriges Ärgernis behebt, bei dem CSS/JS bei Hot-Reload im Shared-Tunnel stillschweigend kaputtging.
catch-all-Befehl – startet einen Tunnel, der auf alles mit200 OKantwortet, nützlich, um eine Webhook-Payload schnell zu inspizieren, ohne einen Endpunkt zu implementieren.
Selbsthosting vs. die kostenlose verwaltete Stufe – ein wichtiger Unterschied
Hier wird oft zu stark vereinfacht. “Expose ist Open Source, also bekommst du alles kostenlos” stimmt nur, wenn du den Server selbst hostest.
Expose’s eigene kostenlose (“Hobby”) verwaltete Stufe hat echte Einschränkungen, laut Beyond Code: ein einzelner Serverstandort (ihr EU-Rechenzentrum), zufällige Tunnel-Namen bei jeder Verbindung und eine Zeitbegrenzung pro Verbindung. Das ist eine deutlich andere Vereinbarung als bei ngrok, das eine stabile, kontogebundene Domain ohne Timeout bietet.
Selbsthosting des Open-Source-Servers ist tatsächlich kostenlos und entfernt diese Einschränkungen – Sie kontrollieren die Domain, es gibt kein Zeitlimit, nur Ihre eigene Infrastruktur-Bandbreite. Es erfordert allerdings, dass Sie Ihren eigenen Server aufsetzen und warten (ein einfacher VPS von Hetzner oder DigitalOcean reicht aus), was eine laufende Verantwortung ist, keine einmalige Einrichtung.
Expose Pro und Team (die bezahlten verwalteten Stufen) liegen dazwischen: dauerhafte URLs, eigene Domains, reservierte Subdomains und das globale Servernetzwerk von Beyond Code, ohne dass Sie selbst etwas laufen lassen müssen.
Aktuelle Preise:
| Tarif | Preis | Leistungen |
|---|---|---|
| Hobby | Kostenlos | Ein EU-Server, zufällige Tunnel-Namen, Verbindungslimit |
| Selbsthosting | Kostenlos (Infrastrukturkosten) | Volle Kontrolle, eigene Domain, kein Zeitlimit, eigene Bandbreite |
| Pro | 79 USD/Benutzer/Jahr | Dauerhafte URLs, eigene Domains, reservierte Subdomains, globales Servernetzwerk, kein Zeitlimit |
| Team | 229 USD/Team/Jahr | Alles in Pro, bis zu 10 Nutzer, Prioritätssupport |
Laravel-Integration, korrigiert
Ein häufiger Irrtum ist, dass Expose “ngrok als Standard” in Laravel Valet ersetzt hat. Das ist nicht korrekt – Valet 4+ unterstützt drei austauschbare Share-Tools (ngrok, expose, cloudflared), die explizit via valet share-tool <tool> ausgewählt werden. ngrok bleibt der Standard, solange Sie nicht wechseln.
Eine engere, aktuellere Integration besteht bei Laravel Herd, dem modernen lokalen Entwicklungsumfeld von Beyond Code (Nachfolger von Valet, für macOS und Windows): Expose ist in Herd integriert, und Sie können Ihren Expose-Token direkt in den Herd-Einstellungen konfigurieren, ohne die CLI zu verwenden.
Feature-Vergleich
| Feature | ngrok | Expose |
|---|---|---|
| Hauptanwendungsfall | Allgemeiner Netzwerk-Ingress; API-Gateway für Unternehmen | Web-Entwicklung HTTP/HTTPS-Tunneling |
| Sprache / Laufzeit | Go (ein Binary) | PHP (PHAR, benötigt lokale PHP-Installation) |
| Protokolle | HTTP/S, TCP, TLS (bei Bezahlplänen) | HTTP, HTTPS nur |
| Open Source | Nein | Ja (MIT, Client + Server) |
| Bandbreite/Requests in der kostenlosen Stufe | 1 GB / 20.000 Requests pro Monat | Nicht volumenbeschränkt, aber einzelner Server + zeitlich begrenzte Verbindungen |
| URL der kostenlosen Stufe | Eine dauerhafte Entwickler-Domain pro Konto | Zufällige Subdomain bei jeder Verbindung |
| Webhook-Interstitial | Ja in der kostenlosen Stufe (über Header umgehbar) | Keine |
| Request-Inspektion | Lokales Dashboard, Replay | Lokales Dashboard, Replay mit Bearbeitungen, webhook-gestützte Request Plugins |
| Eigene Domains | Nur bei bezahlten Plänen (8–10 USD/Monat) | Kostenlos bei Selbsthosting, oder Pro (79 USD/Benutzer/Jahr) |
| Kubernetes / Enterprise-Ingress | Ja (eingebauter Operator, SSO/SCIM, HIPAA) | Kein Anwendungsfall |
Wann welches Tool Sinn macht
Behalten Sie ngrok bei, wenn: - Sie etwas tunneln müssen, das kein HTTP ist – SSH, Datenbankport, Spieleserver, reines TCP/TLS. - Sie Kubernetes-Ingress, SSO/SAML oder Compliance-Dokumente benötigen (HIPAA BAAs, SOC 2). - Sie PHP nicht auf einem Rechner benötigen, auf dem sonst keine Abhängigkeiten bestehen.
Erwägen Sie Expose, wenn: - Ihre Arbeit HTTP/Webhook-ähnlich ist und Sie bereits in einer PHP/Laravel-Umgebung (Herd, Valet, Sail) arbeiten. - Sie eine wirklich kostenlose, unbegrenzte Lösung wollen und bereit sind, den Open-Source-Server selbst auf Ihrem VPS zu hosten. - Das webhook-gestützte Dashboard (GitHub/Paddle Payload-Erkennung, Vite-Auto-Routing) Ihren Debugging-Prozess unterstützt.
Es gewinnt hier kein Tool – sie lösen unterschiedliche, sich überschneidende Probleme. Der Vergleich hängt mehr davon ab, ob Sie reines TCP/Enterprise-Ingress (ngrok) oder einen schlanken, selbsthostbaren HTTP-Tunnel mit PHP-native Workflow (Expose) brauchen.
Changelog
Korrekturen und Ergänzungen am Originalentwurf, mit Quellen:
- Entfernung der Aussage “2-Stunden-Session-Timeout” für ngrok. Die Dokumentation zum ngrok Free Plan gibt explizit an, dass es keine Timeout für Endpunkte gibt und Tunnel unbegrenzt im Hintergrund laufen können. (Quelle: ngrok docs, Free Plan Limits)
- Korrektur der Aussage “zufällige URL, die sich bei jedem Neustart ändert”. ngrok weist pro Konto eine Dev-Domain zu, keine bei jeder Sitzung neu generierte; das ist seit ngrok-Domain-Änderungen um 2023 so. (Quelle: ngrok docs, Free Plan Limits)
- Korrektur der Darstellung der Interstitial-Seite als unvermeidliches Upgrade-Problem. Sie kann im kostenlosen Tier durch den Header
ngrok-skip-browser-warningoder einen benutzerdefinierten User-Agent umgangen werden; sie betrifft keinen API- oder Webhook-Traffic. (Quelle: ngrok docs, Free Plan Limits) - Aktualisierung der ngrok-Planbezeichnungen und Preise. Der veraltete “Personal”-Tarif wurde entfernt; aktuelle Stufen sind: Free, Hobbyist, Pay-as-you-go, Enterprise. (Quelle: ngrok.com/pricing)
- Korrektur des Composer-Installationsbefehls für Expose. Die Dokumentation empfiehlt
composer global require exposedev/expose(der GitHub-Org-Name istexposedev), zusätzlich die PHAR-Installation. (Quelle: expose.dev/docs/getting-started/installation) - Hinweis, dass Expose’s PHAR “Binary” eine lokale PHP-Installation benötigt. Es ist kein vollständig eigenständiges Binary wie ngrok. (Quelle: expose.dev FAQ)
- Korrektur der Preisstruktur von Expose. Die aktuellen Stufen: Hobby (kostenlos, eingeschränkt), Pro (79 USD/Benutzer/Jahr), Team (229 USD/Team/Jahr, bis 10 Nutzer). (Quelle: expose.dev/pricing)
- Wichtiger Hinweis: Die kostenlose “Hobby”-Stufe von Expose hat echte Einschränkungen. Zufällige Tunnel-Namen, Verbindungszeitlimit, ein EU-Server. Das “alles kostenlos”-Versprechen gilt nur bei Selbsthosting. (Quelle: expose.dev/docs/getting-started/authentication)
- Korrektur der Laravel Valet-Integration. Valet 4+ unterstützt drei Share-Tools (
ngrok,expose,cloudflared), die explizit ausgewählt werden, ngrok bleibt Standard. (Quelle: laravel.com/docs Valet; Valet 4.0 Release Notes) - Ersetzung durch Laravel Herd, das eigene lokale Entwicklungsumfeld von Beyond Code, mit direkter Expose-Integration (Token-Konfiguration im Herd-UI). (Quelle: expose.dev/docs/getting-started/authentication)
- Neue Inhalte zu Expose 3.0, der aktuellen Hauptversion: Dashboard-Redesign, Replay mit Änderungen, webhook-gestützte Request Plugins (GitHub, Paddle), automatische Vite-Erkennung,
catch-all-Befehl. (Quelle: expose.dev/docs/release-notes) - Entfernung unbestätigter Behauptungen (z.B. exakte VPS-Kosten) zugunsten allgemeiner Formulierungen.
- Entfernung werblicher SEO-Formulierungen aus dem Originaltext.
Related InstaTunnel pages
Continue from this article into the most relevant product guides and workflows.
Related Topics
Keep building with InstaTunnel
Read the docs for implementation details or compare plans before you ship.