Tunnelmole vs ngrok: Eine native npm-Alternative für Node.js-Entwickler
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 Tunnelmole: Die Open-Source, Node.js-native Alternative: 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.
Jeder Entwickler, der einen lokalen Server betreibt, stößt irgendwann auf das gleiche Problem: Die App funktioniert auf localhost:3000 einwandfrei, aber ein Webhook-Anbieter, ein physisches Telefon oder ein Kunde auf der anderen Seite der Welt kann ihn nicht erreichen. Seit Jahren ist ngrok die Standardlösung. Tunnelmole ist eine neuere, in TypeScript geschriebene Option, die insbesondere bei Node.js- und JavaScript-Entwicklern an Popularität gewinnt, die nicht das npm-Ökosystem verlassen möchten, um eine öffentliche URL zu erhalten.
Dieses Vergleichsartikel stellt die beiden direkt gegenüber: Installationsaufwand, Lizenzierung, Self-Hosting und die Teile der Tunnelmole-Dokumentation, die vor der Produktion von Traffic durch sie gelesen werden sollten.
Warum es Tunneling-Tools gibt
Dein Router und die OS-Firewall blockieren standardmäßig eingehenden Traffic auf deinem Rechner — das ist eine Funktion, kein Fehler. Aber es erschwert die Entwicklung erheblich:
- Webhooks: Stripe, Twilio, GitHub und Discord benötigen eine öffentliche URL, um POST-Anfragen zu empfangen. Sie können
localhost:3000nicht erreichen. - Mobile und plattformübergreifende Tests: Telefone im selben WLAN sind oft durch Client-Isolation vom Entwicklungsrechner getrennt, und eine LAN-IP in ein Telefon einzutippen ist umständlich.
- Nur-HTTPS-Browser-APIs: Service Worker, die Web Crypto API, Geolocation, Push-Benachrichtigungen und PWA-Installation erfordern einen sicheren Kontext. Selbstsignierte Zertifikate auf mehreren Geräten sind mühsam zu verwalten.
- Demo von laufender Arbeit: einem Kunden oder Teammitglied etwas lokal laufendes zeigen, ohne es vollständig zu deployen.
Ein Tunneling-Tool löst das, indem es einen leichten Client ausführt, der eine ausgehende Verbindung zu einem Cloud-Relay öffnet, das dann eine öffentliche URL bereitstellt und den Traffic zurück auf den lokalen Port weiterleitet. Da die Verbindung outbound-initiiert ist, durchdringt sie die meisten NATs und Firewalls ohne Router-Konfiguration.
Wo ngrok für JS-Entwickler Friktionen schafft
ngrok ist ein ausgereiftes, leistungsfähiges Produkt, aber einige Aspekte stören Entwickler, die im npm-Ökosystem leben:
Es ist eine Go-Binary, kein npm-Paket. Der Kernagent ist eine Closed-Source, vorkompilierte Go-Binary. Node.js-Wrapper existieren, funktionieren aber, indem sie diese Binary als Kindprozess starten, anstatt wie ein natives JS-Modul zu agieren.
Ein Konto und ein Authtoken sind Pflicht. Das ist kein veralteter Unsinn — die CLI-Dokumentation von ngrok sagt klar, dass der Dienst eine Anmeldung erfordert, um einen Agenten zu verbinden, und das Ausführen des Agents ohne verifiziertes Konto und Authtoken scheitert jetzt sofort mit einem ERR_NGROK_4018-Authentifizierungsfehler. Es gibt keinen anonymen, schnellen Einstieg mehr.
Es ist Closed Source. Der Code des Agents ist nicht auditierbar, und die Preisgestaltung, Plan-Namen und Features wurden mehrfach geändert — wichtig zu wissen, wenn du einen Workflow hast, der auf bestimmte Gratis-Limits angewiesen ist.
Einführung Tunnelmole
Tunnelmole ist ein Open-Source-Tunneling-Tool, entwickelt vom Entwickler Robbie Cahill, wobei sowohl der tunnelmole-client als auch das tunnelmole-service Backend in TypeScript geschrieben sind. Das Versprechen ist einfach: kein Go-Binary, kein verpflichtendes Signup für die Gratis-Variante, und ein Codebase, das JS-Entwickler tatsächlich lesen können.
Lizenzierung (dies ist ein Zwei-Lizenz-Projekt)
Ein wichtiger Punkt, da er beeinflusst, was du rechtlich mit den jeweiligen Komponenten machen kannst:
tunnelmole-clientist MIT-lizenziert — permissiv, leicht in eigene Tools integrierbar.tunnelmole-service(das Backend-Relay) ist AGPLv3-lizenziert — wenn du es modifizierst und über ein Netzwerk bereitstellst, greift die AGPL-Netzwerk-Klausel. Der Maintainer bietet auch eine separate kommerzielle Lizenz für Unternehmen, die mehr Flexibilität benötigen.
Installation
Wenn du Node.js 16.10 oder neuer hast, funktioniert der npm-weg:
npm install -g tunnelmole
tmole 3000
Du kannst auch die Node-Version ganz überspringen und eine vorkompilierte Binary mit Node-Bundled in holen:
curl -O https://install.tunnelmole.com/xD345/install a0a0&& sudo bash install
Windows-Nutzer können tmole.exe direkt herunterladen und in den PATH einfügen.
So oder so, führt man tmole <port> aus, erhält man sofort eine HTTP- und HTTPS-URL, für die kein Konto bei der Standard-Hosting-Variante erforderlich ist:
$ tmole 8080
http://evgtkh-ip-49-145-166-122.tunnelmole.net leitet weiter zu localhost:8080
https://evgtkh-ip-49-145-166-122.tunnelmole.net leitet weiter zu localhost:8080
Programmgesteuertes Verwenden
Tunnelmole ist auch als npm-Abhängigkeit für Node/TypeScript-Code verfügbar, unterstützt sowohl ESM als auch CommonJS:
npm install --save tunnelmole
import { tunnelmole } from 'tunnelmole';
import express from 'express';
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Hallo vom öffentlichen Web, geroutet durch Tunnelmole!');
});
app.listen(PORT, async () => {
console.log(`Server läuft lokal auf http://localhost:${PORT}`);
const url = await tunnelmole({ port: PORT });
console.log(`Öffentliche URL: ${url}`);
});
Die Funktion ist asynchron und blockiert nicht den Event-Loop. Das Installieren als Abhängigkeit legt auch node_modules/.bin/tmole in dein Projekt, was praktisch ist, um es in npm-Skripte wie "start-public": "npm run start && tmole 3000" einzubinden.
Zwei Dinge, die die Marketing-Texte oft überspringen
Diese Punkte tauchen in den meisten Vergleichsartikeln nicht auf, sind aber wichtig, wenn man Tunnelmole für mehr als nur gelegentliches lokales Testen in Betracht zieht:
Deine IP wird beim gehosteten Dienst nicht verborgen. Das FAQ von Tunnelmole ist dazu direkt: Der Dienst hat früher die Ursprungs-IP verschleiert, wurde aber von Phishing-Betrügern ausgenutzt, weshalb Tunnelmole jetzt einen X-Forwarded-For-Header mit deiner echten IP an jede Antwort anhängt — und bei zufällig generierten Subdomains ist die IP im URL selbst eingebettet. Wenn IP-Privatsphäre für dein Anwendungsfall wichtig ist, ist Self-Hosting der Weg, um dieses Verhalten zu entfernen (du müsstest den Header selbst entfernen), nicht der Standard-Hosting-Service.
Telemetry ist standardmäßig aktiviert. Der Client sammelt anonymisierte Daten — deine Node.js-Version, OS und Absturzberichte mit Stack-Traces — es sei denn, du deaktivierst das explizit durch Setzen von TUNNELMOLE_TELEMETRY=0 in deiner Umgebung. Für einen einmaligen tmole 3000-Test ist das kein Problem; für workflows mit Datenschutz- oder Compliance-Anforderungen solltest du es explizit deaktivieren und dokumentieren.
Self-Hosting von Tunnelmole
Das bietet ngrok schlichtweg nicht an. Da sowohl Client als auch Service Open Source sind, kannst du deine eigene Instanz laufen lassen, anstatt auf tunnelmole.com zu vertrauen:
git clone git@github.com:robbie-cahill/tunnelmole-service.git
cd tunnelmole-service
npm install
cp config-instance.example.toml config-instance.toml
npm start
Stelle deine tunnelmole-client-Konfiguration auf deinen eigenen WebSocket-Endpunkt um, anstatt die SaaS-Standardinstanz zu verwenden, und du hast eine vollständig private Tunnellösung ohne Dritte, ohne Telemetrie, die du nicht selbst kontrollierst, und ohne Abonnement für benutzerdefinierte Subdomains (die bei gehosteten Diensten extra kosten).
Zwei Hinweise vorweg, bevor du das für produktive Zwecke nutzt:
tunnelmole-serviceunterstützt kein natives HTTPS. Die Dokumentation des Maintainers ist dazu eindeutig — du musst es hinter Nginx (oder ähnlichem) mit einem Let’s Encrypt-Zertifikat betreiben, um HTTPS zu erhalten. Der gehostete tunnelmole.com-Dienst fügt diese Infrastruktur oben drauf; eine reine Self-Hosting-Instanz hat das nicht out of the box.- Der offizielle gehostete Dienst ist nicht 100% identisch mit dem Open-Source-Repo. Laut Maintainer läuft tunnelmole.com mit dem gleichen Open-Source-Code plus geschlossener Billing- und Subscription-Überprüfung sowie der HTTPS-Infrastruktur — das ist die einzige proprietäre Schicht, aber es bedeutet, “self-hosted” und “gehostet” sind nicht exakt die gleiche Software.
Feature-Vergleich
| Attribut | ngrok | Tunnelmole |
|---|---|---|
| Kern-Agent | Go, Closed-Source-Binary | TypeScript, Open Source |
| Konto für Gratis-Plan erforderlich | Ja — verifiziertes Konto + Authtoken | Nein, bei Standard-Hosting |
| Lizenz | Proprietär | MIT (Client) / AGPLv3 (Service) |
| Self-Hosting | Nein | Ja |
| Programmgesteuertes Node.js | Wrapper um externe Binary | Native ESM/CommonJS Modul |
| IP vor Ziel verborgen | N/A (ngrok-eigene Infrastruktur) | Nein — X-Forwarded-For + IP im URL bei gehostetem Service |
| Telemetrie | Nicht im Fokus | Standardmäßig aktiv, per Env-Var deaktivierbar |
| Benutzerdefinierte Subdomains, kostenlos | Inklusive (ngrok-Branding-Domain) | Kostenpflichtiges Abonnement, außer bei Self-Hosting |
Wo jedes Tool wirklich Geld kostet
Da Preise sich schnell ändern, hier die aktuelle ngrok-Preisliste (direkt geprüft auf ngrok.com, nicht von Drittanbietern):
| Tarif | Preis | Enthalten |
|---|---|---|
| Kostenlos | $0 | $5 Guthaben für einmalige Nutzung (gültig ein Jahr, nur bei Free-Plan), bis zu 3 Online-Endpunkte, 1GB Datenübertragung, 20k HTTP/S-Anfragen/Monat, Warnseite bei Endpunkten |
| Hobbyist | $8/Monat bei Jahresrechnung ($10 monatlich) | $10 monatliches Guthaben, 3 Endpunkte, 5GB Daten, 100k Anfragen, keine Warnseite, ngrok-Branding |
| Bezahl nach Nutzung | $20/Monat + Nutzung | Unbegrenzte Endpunkte und Daten, eigene Domain, Abrechnung über Nutzung |
| Enterprise | Individuell | SSO/SAML, SCIM, HIPAA-BAAs, SOC 2, Support-SLAs |
Tunnelmole’s gehosteter Dienst ist im Kern kostenlos (zufällige Subdomain, HTTPS inklusive); ein Abonnement ist nur für eine reservierte Subdomain notwendig, was bei Self-Hosting entfällt.
Anwendungsfälle in der Praxis
Webhook-Entwicklung. tmole 3000 liefert eine stabile öffentliche HTTPS-URL, die du bei Stripe, Twilio oder GitHub für Webhook-Settings verwenden kannst, um Breakpoints zu setzen und Live-Events zu debuggen.
Mobile und plattformübergreifende Tests. Da der Tunnel eine outbound WebSocket-Verbindung ist, umgeht er client-isolierte WLAN-Netzwerke, die sonst den Zugriff auf den Entwicklungsrechner blockieren.
HTTPS-geschützte Browser-Features. Service Worker, PWA-Installation und die Web Crypto API benötigen einen sicheren Kontext. Tunnelmole’s HTTPS-URLs umgehen die Notwendigkeit, selbstsignierte Zertifikate auf jedem Testgerät zu generieren und zu vertrauen.
Fazit
ngrok ist weiterhin eine leistungsfähige, unternehmensfähige Plattform — aber die Konto-Pflicht und der geschlossene Agent sind aktuelle Einschränkungen, keine veralteten Kritikpunkte. Tunnelmole spricht JavaScript-Entwickler mit einer legitimen Lösung an: native npm-Installation, lesbarer TypeScript-Code und ein wirklich kostenloser, ohne Signup erreichbarer Weg für den Standardfall. Die Kompromisse sind jedoch auch vorhanden — Telemetrie ist standardmäßig aktiv, deine IP ist beim gehosteten Dienst sichtbar, und bei Privatsphäre durch Self-Hosting bist du selbst für HTTPS zuständig. Das macht Tunnelmole nicht schlecht; es zeigt nur, dass “Open Source und Self-Hosting” nicht dasselbe ist wie “Privatsphäre standardmäßig”. Es ist wichtig, das zu wissen, bevor du es in produktive Umgebungen oder größere Workflows integrierst.
Changelog
- Entfernt: Werbetexte/SEO-Frame (z.B. “Enter Tunnelmole, das Tool, das kürzlich viral ging”, “der ultimative Flex”, “deine Ecosystem zurückerobern”-Abschnitte) und KI-Entwurf-Text durchgehend; Sprache auf technischen, faktenorientierten Ton verschärft.
- Korrigiert: Das ursprüngliche Draft erwähnte nicht, dass ngrok jetzt die Kontoanmeldung und Authtoken-Überprüfung mit einem spezifischen Fehler (
ERR_NGROK_4018) erzwingt — hinzugefügt und referenziert auf ngrok’s eigene CLI-Dokumentation und eine reproduzierte GitHub-Issue, die den Fehler zeigt. (Quelle: ngrok Agent CLI docs, runatlantis/atlantis#4218) - Hinzugefügt: Aktuelle ngrok-Preistabelle (Kostenlos/Hobbyist/Pay-as-you-go/Enterprise), direkt von ngrok’s Preisseite, nicht nur eine allgemeine Angabe “$0–$49/Monat”. (Quelle: ngrok.com/pricing)
- Hinzugefügt: Bestätigung und Quellenangabe für die Lizenzaufteilung — MIT für
tunnelmole-client, AGPLv3 fürtunnelmole-service, sowie die Existenz einer kommerziellen Lizenz. (Quelle: tunnelmole-service README) - Hinzugefügt: Neuer Abschnitt “Zwei Dinge, die die Marketing-Texte oft überspringen” über (1) dass der gehostete Tunnelmole-Dienst nicht deine IP verbirgt — er fügt einen
X-Forwarded-For-Header hinzu und embed IP in URLs — und (2) dass Telemetrie (Node-Version, OS, Absturzberichte) standardmäßig gesammelt wird, mit Opt-out per Env-Var. Diese Fakten waren im Originalentwurf nicht enthalten. (Quelle: tunnelmole-client README/FAQ) - Hinzugefügt: Klarstellung, dass
tunnelmole-servicekein natives HTTPS unterstützt und eine separate Nginx + Let’s Encrypt-Konfiguration für HTTPS benötigt, sowie die Tatsache, dass der offizielle gehostete Dienst den Open-Source-Code plus geschlossene Billing- und HTTPS-Infrastruktur nutzt — also sind Self-Hosting und gehostet nicht byte-identisch. (Quelle: tunnelmole-service README) - Korrigiert: Das ursprüngliche Draft implizierte, dass
npm install -g tunnelmolekeinen Node.js 16.10+ benötigt; die tatsächliche Anforderung laut README ist Node.js 16.10+ für den npm-Installationsweg (der Binary-Installationsweg benötigt das nicht, da Node im Script gebündelt ist). (Quelle: tunnelmole-client README) - Hinzugefügt: Installationsscript und Windows-Binary-Methoden als Alternativen zu npm, die im ursprünglichen Entwurf fehlen.
- Beibehalten, verifiziert: Self-Hosting-Schritte (
git clone,cp config-instance.example.toml config-instance.toml,npm start) entsprechen exakt der aktuellentunnelmole-service-Dokumentation. (Quelle: tunnelmole-service README) - Beibehalten, verifiziert: Programmatischer ESM/CommonJS-Beispielcode entspricht der aktuellen
tunnelmole-client-Dokumentation. (Quelle: tunnelmole-client README)
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.