Der Remote Database Proxy (TCP/TLS): Sichere Verbindung von Cloud-Workern zu Localhost

Quick answer
Sicherer Remote-Datenbank-Proxy: Lokales PostgreSQL & Redis exponieren: quick comparison answer
Choose the tunnel tool based on the network model: public HTTPS URLs for webhooks and demos, private mesh access for internal apps, and managed infrastructure when policy controls matter most.
Which tunnel tool is best for public webhook testing?
Use a public HTTPS localhost tunnel with stable URLs. InstaTunnel focuses on webhook testing, demos, OAuth callbacks, and MCP endpoint workflows.
When should I choose a private network tool instead?
Choose a private mesh or Zero Trust tool when every user and service should stay inside a controlled private network.
Moderne Cloud-Entwicklung hat grundlegend verändert, wo unser Code läuft im Vergleich dazu, wo unsere Daten während des Engineering-Lebenszyklus gespeichert sind. Wir erstellen serverlose Funktionen, setzen Edge-Worker auf Vercel oder Cloudflare ein und stellen AWS Lambdas bereit, die unendlich skalieren. Doch die grundlegenden Daten, die diese Deployments antreiben — Ihre frisch angelegte, sorgfältig mockte relationale Datenbank oder schnelles Caching-Speicher — sitzen oft direkt auf Ihrer lokalen Maschine.
Das Standard-Developer-Playbook sieht meist vor, eine Mock-HTTP-API vor die lokale Datenbank zu setzen, damit der Remote-Worker Daten abrufen kann. Aber manchmal möchten Sie keine API. Wenn Sie komplexe Prisma-Migrationen testen, tief verschachtelte SQL-JOIN-Anweisungen debuggen oder die rohe Durchsatzrate eines Cloud-Workers mit Cache bewerten, ist eine API-Abstraktion hinderlich. Sie brauchen, dass Ihre Cloud-Infrastruktur direkt mit Ihrer lokalen Datenbank spricht.
Sie benötigen eine Möglichkeit, Ihren lokalen PostgreSQL-Server sicher, temporär und zuverlässig für das Internet zugänglich zu machen. Eine TCP-Tunnel-Lösung für localhost-Datenbanken, die Netzwerkschichten überspringt, ohne die Integrität Ihrer Maschine zu gefährden.
Im Teil 8 unseres Deep Dives in fortgeschrittenes Entwicklernetzwerk-Engineering untersuchen wir die Mechanik des Layer-4-Tunnelings. Wir zeigen genau, wie man die Lücke zwischen Cloud-Workern und lokalen Datenspeichern mit LocalXpose schließt, inklusive sicherem Redis-Remote-Zugriff und PostgreSQL-Konnektivität via rohem TCP-Tunnel und TLS-Tunnel — und wo die Wahl des Tunneltyps die Konfiguration auf der Datenbankseite beeinflusst.
Das Netzwerk-Dilemma: Warum Layer-7-Tunnel Datenbanken scheitern
Wenn Sie jemals versucht haben, einen Standard-Webhook-Testtunnel zu verwenden, um eine Datenbank zu exponieren, haben Sie wahrscheinlich gesehen, wie Ihr Terminal sofort Verbindungsfehler ausspuckt. Warum das so ist, erklärt ein kurzer Abstieg ins OSI-Netzwerkmodell.
Die meisten Entwickler-Tools für Tunneling arbeiten strikt auf Layer 7 (Anwendungsschicht). Sie sind für HTTP- und HTTPS-Verkehr ausgelegt. Wenn eine Anfrage den öffentlichen Edge-Server des Tunnels erreicht, erwartet die Proxy-Engine eine HTTP-Anfragezeile (z.B. GET /api/users HTTP/1.1) und Standard-Header.
Datenbanken sprechen kein HTTP.
PostgreSQL kommuniziert über das Postgres Wire Protocol, ein benutzerdefiniertes Binärprotokoll. Redis nutzt RESP, das Redis Serialization Protocol. Beide sind grundsätzlich Layer-4-Verkehr. Wird dieser Binärstrom in einen HTTP-Tunnel eingespeist, versucht der Proxy, ihn als HTTP-Text zu interpretieren, findet keine gültigen Header und beendet die Verbindung abrupt.
Um das zu umgehen, greifen Entwickler traditionell auf zwei Optionen zurück, die beide schlechter sind als das eigentliche Problem:
- Port-Forwarding — Zugriff auf das Admin-Panel eines Heimrouters, um Port 5432 ins offene Internet zu exponieren. Sehr unsicher, oft durch ISPs mit Carrier-Grade NAT (CGNAT) blockiert.
- VPN-Gateways — Einrichtung von WireGuard oder OpenVPN, sodass Cloud-Worker und lokale Maschine ein virtuelles Subnetz teilen. Funktioniert, ist aber aufwändig in der Konfiguration für eine kurze Testphase.
Die moderne Lösung ist ein dedizierter TCP-Tunnel-Proxy für localhost-Datenbanken: Er überspringt die HTTP-Parsing-Schicht komplett und leitet rohe TCP-Byte-Streams vom öffentlichen Internet direkt an Ihren localhost-Port weiter.
Das Toolset: Warum LocalXpose?
Der Markt ist voll mit HTTP-only Webhook-Proxies, aber ein zuverlässiger TCP- und UDP-Tunnel-Dienst ist eine engere Suche. LocalXpose ist ein Reverse-Proxy, der genau dafür entwickelt wurde: Er unterstützt nativ HTTP, HTTPS, TCP, TLS und UDP-Tunnel, was genau den Protokollbereich abdeckt, den dieses Workflow benötigt.
| Feature | HTTP Tunnel (Layer 7) | TCP Tunnel (Layer 4) | TLS Tunnel (Layer 4 + Sicherheit) |
|---|---|---|---|
| Parsing | Inspektiert Header und Payload | Keine Inspektion; roher Byte-Stream | Verschlüsselter Byte-Stream, keine Inspektion |
| Zielanwendung | Webhooks, Next.js-Vorschauen | PostgreSQL, MySQL, SSH | Redis mit TLS, Produktionsdaten-Synchronisationen, alles, was TLS spricht |
| TLS-Beendigung | LocalXpose-Edge-Server entschlüsseln für Sie, dann übergeben Sie die plain HTTP an Ihre App | Nicht anwendbar — Verkehr ist unverschlüsselt bis zum Ziel, es sei denn, die App verschlüsselt es | Nie am LocalXpose-Edge. Entweder Ihre App beendet es, oder Sie übergeben dem LocalXpose Client ein Zertifikat/Schlüssel, und es beendet es lokal |
| LocalXpose-Unterstützung | loclx tunnel http |
loclx tunnel tcp |
loclx tunnel tls |
Die Zeile zur TLS-Beendigung ist wichtig, weil sie die meisten Anleitungen — inklusive eines früheren Entwurfs dieses Textes — falsch verstehen, und sie beeinflusst, was Workflow 2 unten tatsächlich erfordert.
Workflow 1: Lokales PostgreSQL ins Internet freigeben
Sie haben eine Next.js-App auf einer Vercel-Vorschau, die Prisma nutzt, und möchten, dass sie mit PostgreSQL in Docker auf Ihrem Laptop spricht.
1. Installieren und authentifizieren Sie LocalXpose.
LocalXpose wird als plattformübergreifende Binärdatei und als npm-Wrapper ausgeliefert.
npm install -g loclx
loclx account login
(Hinweis: Homebrew, Snap und Chocolatey-Builds sind ebenfalls verfügbar, falls Sie npm vermeiden möchten.)
2. Überprüfen Sie, ob PostgreSQL lokal läuft.
psql -h localhost -p 5432 -U postgres -d my_local_db
3. Starten Sie den TCP-Tunnel.
loclx tunnel tcp --to localhost:5432
Dies gibt eine dynamisch generierte öffentliche Adresse aus, z.B. us.loclx.io:49152. Das ist jetzt eine direkte Verbindung zu Ihrem lokalen Port 5432 — mit einem Haken: Sie ist zufällig und ändert sich bei jedem Neustart des Tunnels. Wenn Sie das in eine Vercel-Umgebungsvariable integrieren möchten, ist das problematisch, weil Vercel den Port nicht kennt. Reservieren Sie stattdessen eine stabile Adresse:
loclx endpoint reserve
loclx tunnel tcp --reserved-endpoint us.loclx.io:4455
4. Zeigen Sie den Remote-Worker darauf.
# Format: postgresql://[user]:[password]@[tunnel-host]:[tunnel-port]/[db-name]
DATABASE_URL="postgresql://postgres:mysecretpassword@us.loclx.io:4455/my_local_db"
5. Führen Sie Migrationen oder Abfragen wie gewohnt aus.
Ihre Cloud-Funktion verbindet sich zu us.loclx.io:4455, das von LocalXpose direkt in Ihren Docker-Container weitergeleitet wird.
Da TCP-Tunnel den Payload nicht inspizieren, läuft die SSL-Verhandlung von Postgres (sslmode=require, verify-full, Client-Zertifikate etc.) vollständig unberührt durch. Sie brauchen keinen TLS-Tunnel von LocalXpose für Postgres, es sei denn, Sie möchten explizit Tunnel-überlagerte TLS. Das Wire-Protokoll kümmert sich um die Verschlüsselung, wenn Sie es so konfiguriert haben.
Workflow 2: Sicherer Redis-Zugriff mit TLS-Tunnel von LocalXpose
Redis stellt ein anderes Problem dar als Postgres. Es wurde für den Betrieb in vertrauenswürdigen privaten Netzwerken entwickelt, und viele lokale Installationen — inklusive der meisten Standard-Homebrew- und apt-Builds — haben TLS nicht integriert. Wenn Sie eine Standard-Redis-Instanz unverschlüsselt ins öffentliche Internet schicken, sind Cache-Inhalte, Sitzungstoken und Anwendungszustand für jeden auf dem Weg lesbar.
Hier kommt ein TLS-Tunnel ins Spiel — aber hier die Korrektur: Ein loclx tunnel tls-Befehl fügt keine Verschlüsselung hinzu, die vorher nicht vorhanden war. LocalXpose’s TLS-Tunnel-Typ verschlüsselt den Byte-Stream über den öffentlichen Hop zwischen Edge-Servern und Ihrer Maschine, aber diese Server entschlüsseln den Stream nie für Sie, wie sie es bei HTTP-Tunneln tun. Die Beendigung erfolgt auf Ihrer Seite, entweder:
- Ihr lokaler Dienst spricht bereits TLS. Zeigen Sie
loclx tunnel tlsdarauf, und die verschlüsselten Bytes passieren unberührt bis zu Ihrer App. - Ihr lokaler Dienst spricht kein TLS (z.B. plain FTP). Dann übergeben Sie dem LocalXpose-Client ein Zertifikat/Schlüssel mit
--crt/--key, und der Client entschlüsselt lokal, bevor er unverschlüsselten Text an Ihre App weitergibt.
Redis fällt nur in den ersten Fall, wenn TLS tatsächlich aktiviert ist. Redis unterstützt seit Version 6.0 native TLS, aktiviert durch tls-port in redis.conf — auf vielen Plattformen muss es explizit eingebaut werden (make BUILD_TLS=yes; redis-server --version sollte tls=yes anzeigen). Ein einfaches requirepass mit Redis, das noch unverschlüsselt auf Port 6379 hört, bietet nur Authentifizierung, keine Verschlüsselung. Ein TLS-Tunnel auf diesen Port scheitert entweder oder, wenn Sie --crt/--key verwenden, reichert er nur unverschlüsseltes RESP an, was okay ist, aber wichtig zu wissen.
1. TLS auf Redis aktivieren.
# redis.conf
tls-port 6379
port 0
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt
requirepass MyUltraSecurePassword
Moderne Redis-Versionen unterstützen auch ACL-basierte Nutzer (ACL SETUSER) als feinere Alternative zu requirepass. Nützlich, wenn mehrere Dienste den Tunnel nutzen.
2. Überprüfen Sie die Verbindung.
redis-cli --tls --cert redis.crt --key redis.key --cacert ca.crt -h localhost -p 6379 ping
3. Starten Sie den TLS-Tunnel.
loclx tunnel tls --to localhost:6379
Sie erhalten einen sicheren Endpunkt, z.B. eu.loclx.io:51020 — reservieren Sie eine Domain, wenn das für Neustarts notwendig ist.
4. Konfigurieren Sie den Remote-Client mit rediss://.
# Das 'rediss://' Präfix erzwingt eine TLS-Verbindung
REDIS_URL="rediss://default:MyUltraSecurePassword@eu.loclx.io:51020"
Da der Tunnel nur durchreicht, wird die TLS-Handshake direkt mit Ihrem lokalen Redis-Server ausgehandelt — LocalXpose transportiert nur die verschlüsselten Bytes, ist aber kein Verschlüsselungspartner.
Absicherung: IP-Allowlisting
Beide Workflows sind standardmäßig von überall im Internet erreichbar, was zwar gewollt, aber auch riskant ist. LocalXpose unterstützt IP-Allowlisting als Plugin in der Konfigurationsdatei, gilt für TCP- und TLS-Tunnel genauso wie für HTTP:
# config.yaml
db-tunnel:
type: tcp
region: us
to: localhost:5432
plugins:
ip_whitelist:
- 203.0.113.0/24 # z.B. Egress-Bereich Ihres Cloud-Providers
loclx tunnel config -f /path/to/config.yaml
Wenn Ihre Lambda- oder Vercel-Funktion eine statische Egress-IP hat (z.B. AWS NAT-Gateway), schränkt die Beschränkung auf dieses CIDR fast alle Risiken aus.
Noch ein praktischer Hinweis, der im früheren Entwurf fehlte: TCP- und TLS-Tunnel sind in der kostenlosen Version von LocalXpose nicht verfügbar. Das kostenlose/Starter-Paket ist nur HTTP(S); TCP, TLS und UDP-Tunnel — sowie reservierte Endpunkte und benutzerdefinierte Domains — erfordern das kostenpflichtige Pro-Paket (aktuell 8 USD/Monat bei Jahresrechnung, 96 USD/Jahr, 10 gleichzeitige Tunnel, unbegrenzte Bandbreite). Das sollte man wissen, bevor man einen Workflow aufbaut, der auf einem kostenlosen Konto nicht läuft.
Das Prinzip der minimalen Rechte: Sicherheitsvorgaben
Ein Loch in die Firewall direkt in Ihre lokale Datenbank zu bohren, ist eine mächtige Fähigkeit — und eine gefährliche Waffe. Das Umgehen des NAT-Schutzes Ihres Routers bedeutet, Sicherheit nicht zu vernachlässigen:
- Exponieren Sie niemals unautorisierte Datenquellen. Starke Passwörter (oder Redis-ACLs) auf PostgreSQL, MySQL oder Redis vor dem Tunnelaufbau, immer. Standard-Defaults wie
postgres:postgresoderadmin:adminvermeiden. - Behandeln Sie den Tunnel als temporär. Für Testzwecke. Beenden Sie den LocalXpose-Daemon sofort nach Ende der Session — nicht laufen lassen.
- Verschlüsseln Sie Ihre Daten. Lokale Datenbanken sollten nur synthetische oder stark anonymisierte Daten enthalten. Niemals eine Produktions-Datenbank mit echten PII auf einen Laptop wiederherstellen und dann tunneln; ein kompromittierter Tunnel macht Ihren Rechner zum Angriffsvektor.
- Verwenden Sie IP-Allowlisting, wenn die Infrastruktur eine stabile, bekannte Egress-Range hat — siehe oben.
Überleben im Latenz-Dilemma: Connection Pooling
Ein letzter technischer Punkt: Physik. Eine Lambda in us-east-1, die eine RDS-Instanz in derselben Region abfragt, hat Latenz unter einer Millisekunde. Dasselbe Lambda, das durch einen TCP-Tunnel auf Ihren Laptop zugreift, muss vom AWS-Rechenzentrum, über LocalXpose-Edge, durch das öffentliche Internet, Ihren ISP, ins WLAN, in Docker und zurück. Eine einzelne Abfrage kann 100 ms dauern; ORM-Operationen mit mehreren Relationenschritten (N+1-Problem) können 50 ms Produktionslatenz in Sekunden verwandeln.
Das eine, was hier korrigiert werden sollte: Der Standard-Timeout von Lambda ist 3 Sekunden, nicht 10 — und kann bis zu 900 Sekunden (15 Minuten) konfiguriert werden. Aber diese Grenze gilt nur für die Funktion selbst. Wenn sie über API Gateway (REST oder HTTP API) aufgerufen wird, setzt das Gateway eine harte Grenze von 29 Sekunden, unabhängig vom Timeout der Funktion. Das Erhöhen auf 60 Sekunden in vercel.json oder serverless.yml hilft nicht, wenn API Gateway die Verbindung schneidet. Function URLs und asynchrone Invocations (EventBridge, SQS) sind davon nicht betroffen und können die vollen 900 Sekunden nutzen.
Zur Reduktion der Round-Trip-Zeit beim Testen:
- Timeout auf der richtigen Ebene erhöhen — die Lambda-eigene Einstellung und separat das API-Gateway-Timeout.
- Verbindungen lokal pooled halten. Serverless-Funktionen öffnen und schließen Verbindungen ständig, was bei hohem Latenzaufwand teuer ist. Nutzen Sie PgBouncer vor PostgreSQL und zeigen Sie den Tunnel auf PgBouncer statt auf die Rohdatenbank.
- Queries batchen. Besser Bulk-
IN-Klauseln statt iterativer Schleifen, um die Anzahl der Round Trips zu verringern.
Automatisierung: Docker, Node.js-Client und CI/CD
Neben der interaktiven CLI bietet LocalXpose einige Komponenten, um das manuelle Tippen von loclx tunnel ... zu vermeiden:
- Ein offizieller Node.js-Client (
node-localxposeauf GitHub, veröffentlicht alslocalxposeauf npm) mit einer Promise-basierten API —client.tcp({ to: '127.0.0.1:5432', reservedEndpoint: '...' })oderclient.tls({ crt: '/path/to/cert.pem', key: '/path/to/key.pem' })— um die Tunnel-Lifecycle direkt in Test-Runner oder Seed-Skripte zu integrieren. - Ein offizielles Docker-Image (
localxpose/localxpose), nützlich für den Betrieb des Tunnels als Sidecar-Container; wenn Sie Let’s Encrypt-Zertifikate für TLS-Tunnel generieren, mounten Sie ein Volume nach/home/nonroot/.localxpose, um die Rate-Limits zu umgehen. - Eine GitHub Action (
LocalXpose/localxpose-action@v1) zum Starten eines Tunnels innerhalb eines Workflow-Laufs — praktisch für Integrationstests, bei denen eine echte PostgreSQL-Instanz von einem gehosteten Runner erreichbar sein muss.
Nichts davon ändert die zugrundeliegende TCP/TLS-Mechanik; es verschiebt nur die gleichen Befehle in Umgebungen, in denen Sie sie lieber nicht manuell ausführen.
Der ultimative Shortcut für Integration
Der Remote-Datenbank-Proxy zeigt, wie flexibel modernes Backend-Development geworden ist. Durch den Einsatz von Tools, die Layer-4-Routing beherrschen, können wir die physische Distanz zwischen serverlosem Cloud-Backend und lokaler Entwicklungsumgebung vorübergehend überbrücken.
Ob beim Debuggen eines instabilen Microservices, Testen von Webhook-Daten oder beim Verweigern, eine Mock-API für einen einmaligen Cache-Test zu schreiben — das TCP-Tunnel-Pattern für localhost-Datenbanken ist eine wertvolle Ergänzung im Werkzeugkasten. Wichtig ist nur, die Unterschiede der Tunnelarten zu kennen, welche kostenpflichtig sind, und wann TLS auf der Datenbankseite notwendig ist.
Changelog
Faktisch geprüft anhand der eigenen Dokumentation von LocalXpose, GitHub-Repos, npm-Listings, Redis-Docs und AWS Lambda-Dokumentation (Stand: 9. September 2026).
- Größte Korrektur (TLS-Tunnel-Mechanik): Der Entwurf implizierte, LocalXpose könne eine TLS-Verbindung am Edge terminieren oder durchreichen, was suggerierte, Edge-Seite-Entschlüsselung sei eine Option für TLS-Tunnel wie bei HTTP. Die eigene Dokumentation ist eindeutig, dass TLS-Tunnel nie am Edge terminieren — der Stream passiert entweder direkt an eine TLS-fähige App oder Sie liefern
--crt/--key, und der Client auf Ihrer Maschine beendet die Verschlüsselung. Workflow 2 und die Vergleichstabelle wurden entsprechend angepasst. - Redis TLS-Voraussetzung im Entwurf ausgelassen: Der ursprüngliche Workflow forderte nur ein starkes
requirepassvorloclx tunnel tls --to localhost:6379, was nur funktioniert, wenn Redis TLS aktiviert hat (tls-portinredis.conf,make BUILD_TLS=yes). Redis unterstützt das seit Version 6.0, ist aber optional. Das TLS-Block inredis.confund eineredis-cli-Prüfung mit Zertifikat wurden als echte Voraussetzungen ergänzt; ACL-Nutzer (ACL SETUSER) sind eine moderne Alternative. - AWS Lambda-Timeout-Fakten korrigiert: Der Entwurf nannte 10 Sekunden als Standard, was falsch ist — der Standard ist 3 Sekunden, konfigurierbar bis 900 Sekunden. Außerdem ist die 29-Sekunden-Grenze bei API-Gateway-Invocations zu erwähnen, die unabhängig vom Lambda-Timeout gilt. Das Bump auf 60 Sekunden in
vercel.jsonoderserverless.ymlfunktioniert nur bei direkten Funktionsaufrufen, nicht bei API-Gateway. Function URLs und EventBridge/SQS-Invocations sind unbegrenzt. - Kostenlose Tier-Grenzwerte nicht erwähnt: TCP, TLS, UDP, reservierte Endpunkte und benutzerdefinierte Domains erfordern das Pro-Paket ($8/Monat bei Jahresrechnung). Das kostenlose Paket ist nur HTTP(S). Die Workflows würden auf einem kostenlosen Konto scheitern.
- Reservierte Endpunkte ergänzt: Das Beispiel
us.loclx.io:49152ist zufällig und ändert sich bei jedem Neustart.loclx endpoint reserveund--reserved-endpointsind die Lösung. - IP-Allowlisting konkretisiert: Das Beispiel-
config.yamlzeigt die Syntax fürip_whitelist, gilt für TCP/TLS genauso wie für HTTP. - Postgres/TLS-Tunnel Klarstellung: TCP-Tunnel sind payload-agnostisch, Postgres
sslmode-Verhandlungen passieren unberührt. Der Tunnel braucht kein TLS-Typ, außer Sie möchten Tunnel-überlagerte TLS. - Neue Sektion (Docker, Node.js-Client, CI/CD): Die offiziellen Tools (
node-localxpose, Docker-Image, GitHub Action) wurden ergänzt, inklusive Hinweise auf Rate-Limits bei Let’s Encrypt. - Verifizierte Befehle:
npm install -g loclx,loclx account login,loclx tunnel tcp --to localhost:5432,loclx tunnel tls --to localhost:6379,rediss://URL-Schema, Layer-4 vs. Layer-7. - Keine nicht-standardmäßigen Platzhalter: Das Format ist in Markdown-Headings und Codeblöcken normalisiert.
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.