ServBay-Lokalentwicklung öffentlich verfügbar machen: FRP als Reverse Proxy (NAT-Durchbruch)
FRP ist ein leistungsstarkes und benutzerfreundliches Reverse-Proxy-Tool, das sich besonders für Szenarien eignet, in denen lokale Entwicklungsdienste (wie Websites, APIs, Datenbanken usw.) sicher und bequem ins öffentliche Internet exponiert werden sollen. Mit seiner Architektur aus Client (frpc
) und Server (frps
) ermöglicht FRP effizienten und zuverlässigen NAT-Durchbruch.
Diese Anleitung richtet sich insbesondere an ServBay-Nutzer unter macOS und zeigt, wie Sie den FRP-Client (frpc
) konfigurieren und einsetzen, um sichere Tunnel einzurichten. Damit machen Sie Ihre in ServBay laufenden lokalen Webdienste bequem aus dem Internet erreichbar – unerlässlich für Remote-Demos, kollaborative Entwicklung, Webhook-Empfang oder externe API-Tests.
Technische Funktionsweise
Das grundlegende Prinzip von FRP besteht darin, zwischen Ihrem Gerät im lokalen Netz (wo frpc
und ServBay laufen) und einem öffentlichen Server (mit frps
) einen verschlüsselten Tunnel herzustellen. Wenn ein Nutzer Ihren Dienst aus dem Internet aufruft, landet die Anfrage zunächst auf dem öffentlichen FRP-Server (frps
). Von dort wird die Anfrage via bestehendem Tunnel an Ihren internen frpc
weitergeleitet, der sie wiederum an den in ServBay laufenden lokalen Dienst (z. B. Ihre Website oder API) übergibt. Die Antwort nimmt denselben Weg zurück.
Dieses Konzept ermöglicht es, Firewalls und Routerbeschränkungen im eigenen Netzwerk elegant zu umgehen und lokale Dienste nach außen zu veröffentlichen. Unterstützte Protokolle sind TCP, UDP, HTTP, HTTPS und mehr – für flexible Remote-Zugriffe in jeder ServBay-Entwicklungsumgebung.
Typische Anwendungsfälle
Die Kombination aus ServBay und FRP ist ideal für folgende Entwicklungsszenarien:
- Remote-Präsentationen & Teamwork: Präsentieren Sie laufende lokale Webseiten oder Anwendungen direkt dem Team oder Kunden, ohne sie extra deployen zu müssen.
- Webhook-Tests: Empfangen Sie Webhook-Benachrichtigungen externer Services (wie GitHub, Stripe, WeChat Pay etc.) und debuggen Sie die Verarbeitungslogik direkt lokal.
- API-Co-Entwicklung: Machen Sie selbstgebaute Backend-APIs für externe Frontend-Entwickler, Partner oder Integratoren über das Netz erreichbar.
- Tests auf Mobilgeräten: Greifen Sie mit Smartphone & Co. auf lokal laufende ServBay-Websites/-Apps zu – ideal für Kompatibilitätstests.
- Temporäres Sharing: Teilen Sie lokale Dateien oder Dienste schnell, ohne komplexe Konfigurationen.
Voraussetzungen
Vor dem Start mit FRP sollte Ihr Setup folgende Bedingungen erfüllen:
- ServBay installiert und aktiv: Auf Ihrem macOS muss ServBay korrekt installiert und gestartet sein – der zu veröffentlichende lokale Dienst (z. B. eine Website) sollte schon funktionieren und im Browser erreichbar sein.
- Einen erreichbaren FRP-Server (
frps
): Sie benötigen einen eigenen Server mit öffentlicher IP, auf dem der FRP-Server läuft. Diese Anleitung beschränkt sich auf den Client-Teil (frpc
). - (Optional, aber empfohlen) Eine öffentliche Domain: Wer den Service per Domain statt nur per IP zugänglich machen will, sollte eine eigene (Sub-)Domain plus DNS-Konfiguration bereithalten.
- Den FRP-Client installiert (
frpc
): FRP-Client ist nicht Teil von ServBay und muss separat heruntergeladen und installiert werden.
Vorbereitung & Installation des FRP-Clients
Folgende Schritte zeigen, wie der FRP-Client (frpc
) auf dem ServBay/macOS-System installiert wird:
FRP-Client herunterladen: Besuchen Sie die FRP GitHub Releases Seite und laden Sie das aktuellste Release für Ihr macOS-System herunter.
- Für Apple Silicon (M1/M2/M3):
frp_*.darwin_arm64.tar.gz
- Für Intel-Macs:
frp_*.darwin_amd64.tar.gz
- Für Apple Silicon (M1/M2/M3):
FRP-Client installieren: Entpacken Sie das Archiv und kopieren Sie die ausführbare Datei
frpc
in ein Verzeichnis im System-PATH, beispielsweise/usr/local/bin
. So können Siefrpc
von überall im Terminal aufrufen.Beachten Sie: Die Version (
0.52.3
als Beispiel, ggf. anpassen!) und Architektur (darwin_arm64
etc.) müssen mit Ihrem Download übereinstimmen.bash# Beispiel: Download von frp_0.52.3_darwin_arm64.tar.gz cd ~/Downloads # Archiv entpacken (Dateiname ggf. anpassen) tar -zxvf frp_0.52.3_darwin_arm64.tar.gz # Ins entpackte Verzeichnis wechseln cd frp_0.52.3_darwin_arm64 # frpc ins System kopieren sudo cp frpc /usr/local/bin/ # (Optional) Beispielkonfiguration ins eigene Home-Verzeichnis kopieren # cp frpc.toml ~/
1
2
3
4
5
6
7
8
9
10
11
12
13
14Geben Sie Ihr Nutzerpasswort für den
sudo
-Befehl ein.Installation überprüfen: Öffnen Sie ein neues Terminal und prüfen Sie, ob
frpc
korrekt läuft und im PATH gefunden wird:bashfrpc -v # Erwartete Ausgabe z. B.: frpc version 0.52.3
1
2Wird eine Versionsnummer angezeigt, war die Installation erfolgreich.
FRP-Client-Tunnel konfigurieren
Die Konfiguration des FRP-Clients erfolgt primär über eine Datei namens frpc.toml
(das TOML-Format wird bei neueren FRP-Versionen empfohlen). Darin legen Sie fest, wie sich der FRP-Client (frpc
) mit dem öffentlichen Server (frps
) verbindet und welche lokalen ServBay-Dienste publik gemacht werden.
Aufbau der Konfigurationsdatei frpc.toml
Hier finden Sie ein Grundmuster der frpc.toml
und Erklärungen zu den wichtigsten Parametern:
# frpc.toml - Beispielkonfiguration für den FRP-Client
# [common]: Verbindungseinstellungen zum Server
serverAddr = "your-frps-server.com" # Öffentliche IP oder Domain des FRP-Servers
serverPort = 7000 # Verbindungs-Port des Servers (Standard: 7000)
# Authentifizierung (Token wird empfohlen)
auth.method = "token"
auth.token = "your_authentication_token" # Passwort/Token, passend zur Serverkonfiguration
# Optional: TLS-Verschlüsselung zwischen Client und Server aktivieren
# tls_enable = true
# [[proxies]]: Definition einer oder mehrerer Proxytunnel
[[proxies]]
name = "my-web-service" # Eindeutiger Name in der Konfiguration
type = "http" # Typ: http, https, tcp, udp, stcp, xtcp, ...
localIP = "127.0.0.1" # IP-Adresse des lokalen Dienstes
localPort = 80 # Port des lokalen Dienstes (z. B. 80 für ServBay HTTP)
customDomains = ["servbay.your-domain.com"] # Öffentliche(n) Domain(s) für Zugriff (nur http/https). **Domain muss per DNS auf FRP-Server zeigen**
# Weitere Proxies lassen sich durch zusätzliche [[proxies]]-Blöcke ergänzen
# [[proxies]]
# ... (Konfiguration für weitere Dienste)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Parameter | Bereich | Beschreibung |
---|---|---|
serverAddr | [common] | Öffentliche IP oder Domain des FRP-Servers (frps ). |
serverPort | [common] | Port, an dem der FRP-Server Verbindungen von Clients annimmt (Standard: 7000). |
auth.method | [common] | Authentifizierungsmethode – meist token (muss auf Client und Server identisch sein). |
auth.token | auth (unter [common] ) | Das Authentifizierungstoken (nicht weitergeben!). |
tls_enable | [common] | Aktiviere die TLS-Verschlüsselung. Empfehlung: true für mehr Sicherheit. |
[[proxies]] | Root-Ebene | Array von Proxyeinträgen: Jeder Block beschreibt einen Tunnel. |
name | [[proxies]] | Einzigartiger Name dieses Tunnels, am besten passend zum Service (z. B. „servbay-website-https“). |
type | [[proxies]] | Protokoll-Typ: http , https , tcp , udp usw. – passend zu Ihrem lokalen Dienst wählen! |
localIP | [[proxies]] | IP-Adresse des lokalen Dienstes (Standard: 127.0.0.1 ). |
localPort | [[proxies]] | Lokaler Port (z. B. 80 für HTTP in ServBay, 443 für HTTPS, MySQL 3306, PostgreSQL 5432 etc.). |
remotePort | [[proxies]] | (nur bei tcp /udp ) Öffentlicher Port am FRP-Server zur externen Erreichbarkeit. |
customDomains | [[proxies]] | (nur bei http /https ) Domänen für den externen Zugang (String-Array, kann mehrere enthalten). Domäne(n) muss per DNS auf Ihren FRP-Server zeigen. |
subdomain | [[proxies]] | (nur bei http /https , falls Server es unterstützt) – Setzt Subdomain relativ zur Serverkonfiguration, alternative zu customDomains . |
[proxies.plugin] | [[proxies]] | Optional: Plugin-Settings (z. B. für „https2https“). |
hostHeaderRewrite | [proxies.plugin] oder [[proxies]] (je nach Typ/Plugin) | Überschreibt den Host -Header in Anfragen an den lokalen Service (wichtig bei ServBay-Setups mit vHosts!). Auf die in ServBay konfigurierte lokale Domain einstellen! |
Beispielkonfiguration: ServBay HTTPS-Website ins Internet tunneln
Standardmäßig laufen ServBay-Webseiten unter HTTPS; die Zertifikatsverwaltung übernimmt ServBay automatisch. Für die Veröffentlichung im Internet verwenden Sie am besten den Proxietyp https
plus (optional) Plugin wie https2https
oder auch tcp
auf Port 443. Da ServBay virtuelle Hosts anhand des Host-Headers trennt, ist die Option hostHeaderRewrite
entscheidend.
Das folgende Beispiel zeigt, wie Sie eine unter ServBay eingerichtete HTTPS-Website (z. B. unter servbay.test
) per FRP über eine öffentliche Domain (etwa test-frp.servbay.app
) zugänglich machen. Achten Sie darauf, dass Ihr Domain-Eintrag, z. B. per DNS-A oder CNAME-Record, auf Ihre öffentliche FRP-Server-Adresse zeigt.
Erstellen Sie im gewünschten Verzeichnis (z. B. im Home-Ordner ~/frpc.toml
) eine neue Datei und tragen Sie ein:
# Beispiel frpc.toml – ServBay-HTTPS-Website veröffentlichen
# [common]: Verbindung zum FRP-Server
serverAddr = "frps.servbay.demo" # Mit Ihrer öffentlichen Serveradresse ersetzen
serverPort = 7000 # Port ersetzen, falls abweichend
auth.method = "token"
auth.token = "servbay_demo_token" # Eigener Auth-Token
# Empfehlung: TLS-Verschlüsselung Client ↔ Server aktivieren
tls_enable = true
# [[proxies]]: Mapping der ServBay-Website ins Internet
[[proxies]]
name = "servbay-website-https" # Frei wählbarer Proxyname, z. B. servbay-test-site
type = "https" # Proxietyp
# Extern sichtbare Domain
customDomains = ["test-frp.servbay.app"] # Eigene Domain eintragen
# Ziel ist der lokale ServBay-Dienst
localIP = "127.0.0.1"
localPort = 443 # Standard-HTTPS-Port in ServBay
# WICHTIG: Host-Header auf die zugehörige lokale Domain in ServBay setzen!
hostHeaderRewrite = "servbay.test" # Eigene lokale ServBay-Domain!
# Optional: Zusätzlicher Header zur Herkunftskennzeichnung
[proxies.requestHeaders.set]
x-from-where = "frp-tunnel"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Ersetzen Sie in der obigen Konfiguration serverAddr
, serverPort
, auth.token
, customDomains
und hostHeaderRewrite
durch Ihre Werte.
Warum ist hostHeaderRewrite
so wichtig? ServBay nutzt Webserver wie Nginx oder Caddy und verteilt Anfragen je nach Host
-Header auf verschiedene Websites. Kommt eine Anfrage via FRP, trägt der HTTP-Header als Ziel meist Ihre öffentliche Domain (z. B. test-frp.servbay.app
) statt Ihrer lokalen ServBay-Adresse (servbay.test
). Ohne hostHeaderRewrite
erkennt ServBay die Anfrage nicht korrekt und liefert entweder einen 404-Fehler oder die falsche Website aus. Nur wenn Sie diesen Wert als lokale ServBay-Domain setzen, funktioniert das Routing wie gewünscht.
FRP-Client starten
Nach dem Speichern der frpc.toml
wechseln Sie im Terminal ins entsprechende Verzeichnis (oder nutzen Sie den kompletten Pfad) und starten den FRP-Client:
# Im aktuellen Verzeichnis (mit .toml-Datei)
frpc -c frpc.toml
# Oder mit absolutem Pfad, z. B. aus dem Home-Verzeichnis
# frpc -c ~/frpc.toml
2
3
4
5
Nun läuft frpc
im Vordergrund, verbindet sich mit dem Server und zeigt den Log an. Bei Erfolg erscheint im Terminal eine entsprechende Erfolgsmeldung.
Für den Betrieb im Hintergrund können Sie nohup
oder unter macOS Dienstwerkzeuge wie launchctl
verwenden – Beispiel mit nohup
:
# Annahme: frpc.toml liegt im Home-Verzeichnis
nohup frpc -c ~/frpc.toml &
2
Alle Ausgaben landen in nohup.out
und frpc
läuft im Hintergrund. Für dauerhaften Betrieb ist launchctl
empfehlenswert (siehe macOS-Dokumentation).
Funktionstest & Logdiagnose
Funktionstest
Starten Sie frpc
und prüfen Sie im Log, dass der Verbindungsaufbau erfolgreich war. Rufen Sie dann im Browser Ihre öffentliche Domain auf – z. B. https://test-frp.servbay.app
. Prüfen Sie Folgendes:
- Die Seite lädt erfolgreich, keine Netzwerk- oder Zertifikatsfehler (bei HTTPS).
- Status-Code: HTTP 200 oder entsprechend erwartet.
- Der Seiteninhalt entspricht exakt dem lokalen Original (
https://servbay.test
). - Bei HTTPS: Das Schlosssymbol erscheint, das SSL-Zertifikat ist gültig und passt zur Domain.
Logs & Fehlerdiagnose
Die frpc
-Logs sind entscheidend für die Diagnose. Standardmäßig landen sie im Terminal. Beobachten Sie Fehler- oder Warnmeldungen aufmerksam.
Für detailliertere Debug-Logs starten Sie wie folgt:
frpc -c frpc.toml --log_level debug
Wurden in der frpc.toml
ein Logfile angegeben (z. B. log_file = "/var/log/frpc.log"
), können Sie direkt auf diese Datei (tail -f /pfad/zu/frpc.log
) zugreifen und Logs live mitlesen.
Häufige Fehler und Lösungen
Bei Problemen helfen diese gängigen Troubleshooting-Tipps:
Problem | Lösung |
---|---|
Authentifizierung am Server fehlgeschlagen | Prüfen Sie, ob auth.token und auth.method im [common] -Block mit der Serverkonfiguration identisch sind. Kontrollieren Sie auch das Serverlog auf Auth-Fehler. |
Öffentliche Domain nicht erreichbar oder DNS-Fehler | Prüfen Sie per DNS-Tool oder Ping, ob Ihre in customDomains angegebene Domain korrekt auf die IP Ihres Servers zeigt. DNS-Cache beachten/bereinigen. |
FRP-Willkommensseite statt Website | Ursache: Domain zeigt richtig auf den Server, aber das Forwarding zu Ihrem Client ist nicht eingerichtet. Prüfen Sie die Übereinstimmung von customDomains und korrektem Typ (http /https ). Checken Sie, ob die Domain auf dem Server erlaubt ist. |
Lokaler Port belegt / Dienst nicht aktiv | Sicherstellen, dass ServBay läuft und der gewünschte Dienst auf dem in localPort angegebenen Port lauscht. Mit lsof -i :PORT (ersetzen Sie PORT entsprechend) überprüfen, wer den Port nutzt. |
Tunnel verbindet, trennt aber häufig / Verbindungsabbrüche | Netzwerkstabilität beim Client und Server prüfen. In [common] können Sie z. B. heartbeat_timeout = 30 setzen oder pool_count erhöhen. Checken Sie auch Ressourcen/Einschränkungen am Server. |
HTTP -> Browser erzwingt immer HTTPS | Kontrollieren Sie die Webserverkonfig in ServBay (z. B. Nginx/Caddy): Ist ein HTTPS-Redirect für die Domain gesetzt? Für reinen HTTP-Betrieb den Proxy-Typ auf http setzen und ggf. Plugins deaktivieren. Bei Nutzung von HTTPS: korrekten Typ (https ) und Zertifikate konfigurieren. |
Zertifikatsfehler beim Proxy (HTTPS) | Bei selbstsignierten oder untrusted-ServBay-Zertifikaten erscheinen im Browser Warnungen. Option 1: ServBay-CA auf Client installieren, Option 2: FRP-Plugin wie https2https und mit ServBays Zertifikaten arbeiten – oder offizielle Zertifikate am Server nutzen. Mit https und HostHeaderRewrite entscheidet das lokale Zertifikat über die Browserwarnung. |
404-Fehler beim Aufruf | Prüfen Sie, ob hostHeaderRewrite exakt die lokale ServBay-Domain einträgt (z. B. servbay.test ). Bei fehlender oder falscher Einstellung kann der Webserver die Website nicht korrekt zuordnen. |
Firewall am Server blockiert Verbindungen | Stellen Sie sicher, dass der Serverport (üblicherweise 7000) und ggf. weitere, für externe Dienste genutzte Ports offen sind (z. B. 80/443 oder die für Ihre TCP/UDP-Ports eingetragenen remotePorts). |
Lokale Firewall verhindert Verbindung | Prüfen Sie, dass Ihr macOS keine Firewallregeln hat, die ausgehende Verbindungen vom Client auf den FRP-Serverport blockieren. Auch lokale Ports (localPort ) für Verbindungen von 127.0.0.1 müssen offen bleiben. |
FRP-Client sagt „connected“, aber Service ist nicht erreichbar | Ursache oft: Fehler in der Serverkonfiguration, DNS oder Portweiterleitung. Server-Logs (frps ) analysieren, ob und wie eingehende Anfragen gemappt werden sollen. |
Vorteile & Sicherheitsempfehlungen beim ServBay/FRP-Einsatz
Die Verbindung von FRP und ServBay eröffnet Ihnen als Entwickler große Flexibilität:
- Protokolle nach Bedarf: HTTP, HTTPS, TCP, UDP und mehr. Mit FRP lässt sich also nicht nur der Webserver, sondern bei Bedarf auch eine lokale Datenbank (MySQL/PostgreSQL/MongoDB), Redis oder SSH freigeben.
- Flexible Konfiguration: Per TOML-Datei mehrere Tunnel und Dienste ermöglichen.
- Open Source, selbst kontrolliert: Volle Kontrolle, keine Abhängigkeit von Drittanbietern.
- Sicherheit: Moderne Features wie Auth-Token und TLS (
tls_enable = true
) schützen die Datenübertragung. Zusammen mit den SSL-Features von ServBay ergeben sich sichere Entwicklungsumgebungen.
Best Practices & Sicherheitstipps:
- TLS aktivieren: Setzen Sie in
[common]
tls_enable = true
, um den Tunnel zwischen Client und Server zu verschlüsseln. - Starkes, regelmäßig erneuertes Token: Nutzen Sie ein komplexes, schwer erratbares Token – und wechseln Sie es regelmäßig!
- Nur notwendige Dienste freigeben: Stellen Sie nur die Dienste und Ports ins Netz, die Sie wirklich benötigen.
- Domains statt IPs verwenden: Für HTTP/HTTPS-Dienste nach Möglichkeit Domains über
customDomains
nutzen, keine nackten IPs. - Server absichern: Der FRP-Server sollte nur strikt notwendige Ports akzeptieren (Firewall!) und bestmöglich abgesichert sein.
- (Optional) Zugriffsbeschränkungen: Wenn der Server/FRP es unterstützt, schränken Sie Zugriffe z. B. auf bestimmte IP-Kreise ein.
Mit dieser Anleitung sollten Sie erfolgreich lokale ServBay-Entwicklungsdienste per FRP ins öffentliche Internet veröffentlichen können – für ein effizienteres, flexibleres und sicheres Arbeiten!