5 Punkte von litdemon 11 일 전 | 4 Kommentare | Auf WhatsApp teilen

Service-Link: https://natnest.site
Client-Quellcode: https://github.com/litdemon/natnest-client


Hallo. Ich habe NatNest entwickelt, einen Dienst, der auf SSH-Reverse-Tunneling basiert und lokale Server nach außen exponiert.

run local server 8080

natnest 8080 → https://yourname.natnest.site


Wie es dazu kam

Ich habe zu Hause einen Mac mini, auf dem Ollama läuft.
Ich wollte ihn auch unterwegs nutzen, aber jedes Mal war Port-Forwarding die Hürde.
Dafür musste ich die Admin-Seite des Routers öffnen und den Port freigeben.

Dann kam die Situation, dass ich bei der Nutzung von Dialogflow von Google einen Webhook (Fulfillment) registrieren musste.
Dafür war HTTPS erforderlich, also musste ich eine Domain und ein Zertifikat vorbereiten, Nginx starten und einen Reverse Proxy einrichten und verbinden.

Andere Entwickler mussten in derselben Situation genau die gleiche Arbeit erledigen wie ich. Ich hätte es jedes Mal erklären müssen, also dachte ich mir:

„Warum nicht einfach selbst bauen?“ – so hat NatNest angefangen.

Ich habe nicht nur den Client gebaut. NatNest besteht aus mehreren zusammengebundenen Servern und Komponenten wie Nginx + Rua, Redis, DB, API-Server und Tunnel-Server (SSH-Server).

Während der Entwicklung habe ich dann gemerkt, dass es mit ngrok und Cloudflare Tunnel bereits praktisch denselben Dienst gibt T_T.


Wie funktioniert es?

Wenn der Client (CLI) per SSH einen Reverse Tunnel zum Server aufbaut, registriert der Server in Redis ein Mapping von Subdomain → internem Port. Wenn danach von außen eine Anfrage an https://yourname.natnest.site eingeht, fragt OpenResty (Nginx + Lua) Redis ab und leitet an den entsprechenden SSH-Tunnel-Port weiter.

Externe Anfrage → [Nginx + Lua] → Redis-Abfrage → SSH-Tunnel-Port → lokaler Server

Der Client hält die SSH-Verbindung über einen Watchdog-Prozess im Hintergrund aufrecht. Selbst wenn das Terminal geschlossen wird oder das Netzwerk kurz unterbrochen ist, erfolgt innerhalb von 5 Sekunden automatisch ein Reconnect.


Was ist der Unterschied zu ngrok / Cloudflare Tunnel?

NatNest : permanente URL, Self-Hosting, Webhook-Log-Viewer
Ngrok Free : permanente URL (❌), kein Self-Hosting, Webhook-Log-Viewer (ab Pro)
Cloudflare Tunnel : permanente URL (❌), ab Pro, nicht vorhanden (❌)

Es richtet sich an Leute wie mich, die sagen: „Eine permanente URL kostenlos, und die Daten auf meinem eigenen Server.“

Der größte Vorteil ist,
dass ich eine Lösung habe, mit der sich ein Dienst wie ngrok umsetzen lässt, und
dass sich gute Ideen aus den Kommentaren hier sofort umsetzen lassen.

Das ist wirklich ein erster Schritt, um Funktionen einzubauen, die Entwickler tatsächlich wollen.


Aktueller Stand und ehrliche Grenzen

Mit Stand v0.5.1 funktionieren die folgenden Features:

  • Verknüpfung mit Google-Konto (OAuth Device Flow) + automatische SSH-Key-Erstellung
  • Permanente Subdomain + automatische Erneuerung von Wildcard-HTTPS mit Let's Encrypt
  • Web-Dashboard (Liste aktiver Tunnel, Echtzeit-Webhooks-Logs)
  • Client-Binaries für Linux (amd64·arm64), macOS und Windows

Es gibt aber auch noch Punkte, die fehlen:

  • Die Windows-Build-CI/CD-Automatisierung ist noch nicht fertig (derzeit manuelle Builds)
  • Der Server läuft als einzelner Server zu Hause, daher gibt es Latenz
  • Ich betreibe den Dienst allein, daher ist eine serviceweite Stabilitätsgarantie (SLA) schwer zu gewährleisten

Falls ihr es ausprobieren wollt

Linux / macOS

curl -fsSL https://natnest.site/install.sh | bash

natnest setup # Google-Konto verknüpfen
natnest 8080 # lokalen Port 8080 nach außen freigeben


Da ich es zum ersten Mal öffentlich zugänglich mache, wäre ich für Erfahrungsberichte oder Hinweise wie „So eine Funktion wäre noch hilfreich“ in den Kommentaren wirklich sehr dankbar.

4 Kommentare

 
hshim 10 일 전

Der Installationsbefehl und der GitHub-Link oben auf der Homepage werfen einen 404-Fehler aus.

 
litdemon 10 일 전

Danke für den Kommentar. Ich habe die Korrektur übernommen.
Das größere Problem scheint mir eine Designänderung zu sein, bei der man auf den ersten Blick sieht, dass sie von einer KI gemacht wurde.

 
click 8 일 전

https://github.com/anderspitman/awesome-tunneling
Awesome Tunneling – Sammlung von ngrok-Alternativen
Es scheint viele Tunnel-Dienste dieser Art zu geben, weil die Nachfrage hoch ist. Es dürfte auch sinnvoll sein, sich anzusehen, was man von anderen Services übernehmen kann.

 
sacru2red 10 일 전

Sieht gut aus. Ein Ausweg aus der Konfigurationshölle