Das Relay über einen Cloudflare Tunnel erreichen
Ein Cloudflare Tunnel gibt deinem Relay eine öffentliche HTTPS-Adresse, ohne
eigenen Server und ohne einen Port an deinem Router zu öffnen. OAR kann
Cloudflares Programm cloudflared für dich betreiben: Es startet es mit dem
Relay, startet es neu, wenn die Verbindung abbricht, und zeigt seinen Zustand im
Statuspunkt. Nimm es, wenn du eine Domain
bei Cloudflare hast und das Relay vom Handy oder aus einem anderen Netzwerk
erreichen willst, oder wenn du HTTPS brauchst, um die Seite als App zu
installieren und für
Push-Benachrichtigungen.
cloudflared verbindet sich nach außen zu Cloudflare. Das Relay lauscht weiter
nur auf diesem Rechner (localhost bleibt true), und Cloudflare leitet
Anfragen für deinen Hostnamen über diese Verbindung an den Port des Relays.
Was du brauchst #
- Ein Cloudflare-Konto mit Zero Trust und eine Domain (eine Zone) darin für den öffentlichen Hostnamen.
cloudflared, installiert auf dem Rechner, auf dem das Relay läuft. OAR liefert es nicht mit und installiert es nicht.- Einen Tunnel, den du in Cloudflare anlegst. OAR betreibt ihn mit dem Token des Tunnels.
Das Relay startet das Programm, das in cloudflared steht, sonst
das cloudflared, das es in seinem PATH findet. Installiere es mit:
| System | Installation |
|---|---|
| Windows | winget install --id Cloudflare. |
| macOS | brew install cloudflared |
| Linux | Cloudflares Paket-Repository (Debian, Ubuntu, RHEL): pkg.cloudflare.com |
Unter Windows funktioniert ein .- oder .-Starter nicht. OAR startet
eine .- oder .-Datei.
Eine Art von Tunnel
OAR unterstützt einen Tunnel, der mit einem Token läuft, die Art, die Cloudflare
einen remote verwalteten Tunnel nennt. Es gibt keine Einstellung für eine
Credentials-Datei oder einen Tunnelnamen und keine für einen Quick Tunnel mit
zufälliger Adresse. Betreibst du so einen Tunnel selbst, starte cloudflared
außerhalb von OAR. OAR weiß dann nichts davon.
Einrichten #
- Leg in deinem Cloudflare-Zero-Trust-Konto einen Tunnel an. Kopiere sein Token.
- Gib dem Tunnel einen öffentlichen Hostnamen in deiner Zone, zum Beispiel
relay., und richte ihn aufexample. com http://. Hast dulocalhost: 3333 portinconfig.geändert, nimm diesen Port. Dieses Routing liegt bei Cloudflare, nicht auf deinem Rechner.json - Füge den Block
cloudflaredmit dem Token inTunnel config.ein (siehe Config-Keys).json - Starte das Relay mit
oar restartneu.
Öffne https:// in einem Browser. Du meldest dich wie gewohnt
mit dem Zugriffstoken an.
Der Config-Block #
{
"cloudflaredTunnel": {
"mode": "managed",
"required": false,
"token": "<tunnel token>",
"binary": "cloudflared",
"extraArgs": []
}
}
| Key | Typ | Standard | Was er tut |
|---|---|---|---|
mode |
"disabled" oder "managed" |
"disabled" |
Mit managed betreibt das Relay cloudflared. |
token |
String | keiner | Das Token des Tunnels. Pflicht bei managed; ohne es bleibt der Tunnel aus, und das Log sagt, warum. |
required |
Boolean | false |
Solange der Tunnel nicht verbunden ist, nimmt das Relay keine Nachrichten aus der Queue. Siehe Pflicht-Tunnel. |
binary |
String | cloudflared |
Das Programm: ein absoluter Pfad oder ein Name, der im PATH gesucht wird. Ein Pfad muss auf eine ausführbare Datei zeigen. Ein relativer Pfad mit einem Ordner darin zählt vom Programmordner des Relays aus, nimm also einen absoluten. |
extra |
String-Array | [] |
Argumente, die nach cloudflared tunnel run --token <token> angehängt werden. Leere Einträge fallen weg. |
Die alte Form "enabled": true funktioniert weiterhin für mode: "managed".
Drei Umgebungsvariablen überschreiben die Datei: COPILOT_,
COPILOT_ und COPILOT_. Die
config.json-Referenz führt die
Keys mit den anderen Tunnel-Einstellungen auf, und die Seite
Umgebungsvariablen führt die
Variablen auf.
Das Relay übergibt das Token an cloudflared als Befehlszeilenargument
(cloudflared tunnel run --token <token>), nicht über die Umgebung. Auf einem
Rechner mit anderen Benutzern kann das Token daher in der Liste laufender
Prozesse auftauchen. Das Log des Relays zeigt es als <redacted>.
Wie er sich verhält #
- Start und Stopp. Das Relay startet
cloudflared, wenn es selbst startet, und stoppt es (mit einem Beendigungssignal), wenn es herunterfährt. - Verbunden. Der Tunnel gilt als verbunden, wenn
cloudflaredeine registrierte Verbindung meldet, oder ersatzweise, wenn es fünf Sekunden gelaufen ist. - Abbrüche. Wenn
cloudflaredendet, startet das Relay es nach einer Wartezeit von etwa 5, 10, 20, 40 und dann 60 Sekunden neu, jeweils mit bis zu 20 Prozent Aufschlag. Die Stufen beginnen von vorn nach einer Verbindung, die länger als 30 Sekunden gehalten hat. - Falsches Token oder gelöschter Tunnel. Endet
cloudflareddreimal hintereinander innerhalb von 10 Sekunden, meldet das Relay den Fehlerauth-und versucht es ab dann nur noch etwa einmal pro Minute.or- config - Kein
cloudflared. Das Relay startet wie gewohnt, und der Tunnel bleibt aus. Es sieht jede Minute erneut nach und startet den Tunnel, sobald das Programm da ist. Hast du es in einen Ordner installiert, der nicht imPATHdes Relays liegt, starte das Relay neu.
Pflicht-Tunnel #
Mit required: true nimmt das Relay keine Nachrichten aus der Queue, solange
der Tunnel nicht verbunden ist. Das gilt auch für die Zeit vor der ersten
Verbindung und für ein fehlendes cloudflared oder Token. Nutze es, wenn das
Relay nur nützt, wenn du es von außen erreichst. Nachrichten warten in der Queue
und laufen, sobald der Tunnel verbunden ist (siehe
Turns und die Queue).
Den Zustand sehen #
| Wo | Was es zeigt |
|---|---|
| Statuspunkt | Bernstein, Tooltip Web relay reachable via Cloudflare Tunnel (Web-Relay über Cloudflare Tunnel erreichbar), solange der Tunnel verbunden ist. Grün, wenn er eingerichtet, aber nicht verbunden ist: Der Tooltip sagt Web relay reachable; Cloudflare tunnel disconnected (cloudflared fehlt. Das Relay antwortet weiterhin. Siehe das Menü und Darstellung. |
oar status |
Eine Zeile Tunnel:, wenn der Tunnel an ist: running, not connected, not connected (<reason>) oder off: <reason>. Bei gestopptem Relay zeigt es denselben Wortlaut wie oar doctor. Siehe oar status. |
oar doctor |
disabled, managed (cloudflared: <path>) oder managed, cannot start: <reason>. Es liest nur die Config und ändert nichts. Siehe oar doctor. |
| Das Log | Zeilen, die mit [cloudflared- beginnen: der Befehl (das Token als <redacted>), Tunnel connected, Beendigungen und Wartezeiten bis zum Neuverbinden sowie die eigene Ausgabe von cloudflared. |
Das Relay kennt deinen öffentlichen Hostnamen nicht, weil das Routing bei Cloudflare liegt; deshalb zeigt ihn keine dieser Stellen.
Tunnel-Verkehr unterscheiden #
Cloudflare fügt jeder Anfrage, die es weiterleitet, einen Header cf- hinzu.
Das Relay erkennt daran, ob eine Anfrage durch den Tunnel kam oder auf diesem
Rechner gestellt wurde. Sollen auch die Header, die dein eigener Edge hinzufügt,
so behandelt werden, trag sie in tunnel ein. public
führt die Hostnamen auf, über die das Relay erreicht wird, und trust
legt fest, welchen Proxys das Relay die weitergeleitete Adresse glaubt. Der
Standard, "loopback", passt zu cloudflared auf demselben Rechner. Alle drei
stehen in der config.json-Referenz.
Ein zweiter Hostname für Previews #
Previews brauchen einen eigenen Hostnamen, damit eine
App in der Preview nie ein Anmelde-Cookie mit dem Relay teilt. Füge ihn demselben
Tunnel als zweiten öffentlichen Hostnamen hinzu, der auf den Preview-Listener
zeigt (standardmäßig http://). Die
Seite zu Previews hat das Ingress-Beispiel und
den Block previews. Trag den Hostnamen des Relays in public ein.
Cloudflare Access vor dem Relay #
Eine Cloudflare-Access-Anwendung über dem Hostnamen des Relays gilt für jeden
Besucher, auch für Betrachter einer geteilten Konversation.
Ohne Ausnahme werden sie zur Anmeldung aufgefordert, und der Link funktioniert
nicht. Lass / und / ohne Anmeldung durch.
Leg keine Cloudflare-Cache-Regel für / an. Eine geteilte Seite
lädt diese Adresse neu, um der Konversation zu folgen, und eine
zwischengespeicherte Antwort würde weiter einen alten Stand zeigen. Das Relay
versieht jede API-Antwort mit Cache- und jede Antwort mit
CDN- und Cloudflare- auf no-. Cloudflare
befolgt diese beiden vor einer Cache-Regel in deiner Zone.
Sicherheit #
Ein Tunnel stellt das Relay ins öffentliche Internet. Das Zugriffstoken hält andere draußen. Siehe Das Zugriffstoken und wer das Relay erreicht und Was OAR offenlegt.
Die Session-Worker des Relays verbinden sich über Sockets, die nur auf diesem
Rechner laufen. Weil ein öffentlicher Tunnel jeden Pfad weiterleitet, antwortet
das Relay mit 403 auf eine Anfrage an diese Pfade, die cf- oder einen
deiner tunnel trägt, und das Log vermerkt das mit
[tunnel-. Geteilte Links, die ohne Anmeldung über den Tunnel kommen,
sind nicht betroffen.
Fehlerbehebung #
| Was du siehst | Was zu tun ist |
|---|---|
Der Tooltip sagt Cloudflare tunnel off: cloudflared is not installed (Cloudflare-Tunnel aus: cloudflared ist nicht installiert) (gefolgt von der Installationsanleitung), oder oar doctor sagt cloudflared is not installed |
Installiere cloudflared (siehe Was du brauchst). Der Tunnel startet innerhalb einer Minute. |
cloudflared was not found as configured (<path>) |
cloudflared zeigt ins Leere. Korrigiere den Pfad oder leere den Key, um cloudflared aus dem PATH zu nehmen. |
cloudflared |
Füge das Token in die Config ein oder setz COPILOT_. |
Tunnel: not connected (auth- |
cloudflared endet immer wieder sofort. Prüf das Token und ob der Tunnel in Cloudflare noch existiert. Das Log enthält die eigene Meldung von cloudflared. |
Tunnel: not connected (exit:<code>) |
cloudflared endete mit diesem Exit-Code. Das Relay versucht es erneut; lies das Log. |
| Der Punkt bleibt grün, obwohl du das Relay über den Tunnel geöffnet hast | Der Tunnel ist von der Seite des Relays aus nicht verbunden. Lies den Tooltip und oar status. |
| Nachrichten laufen nicht, und die Queue ist pausiert | required ist true, und der Tunnel ist nicht verbunden. Repariere den Tunnel oder setz required auf false. |
| Ein geteilter Link fordert den Betrachter zur Anmeldung auf | Cloudflare Access steht im Weg. Lass / und / durch. |
| Eine geteilte Seite zeigt einen alten Stand | Eine Cache-Regel erfasst /. Entferne sie. |
403 auf einem Pfad des Session-Workers |
Erwartet: Diese Pfade sind für Tunnel-Verkehr gesperrt. |
cloudflared ist installiert, aber der Tunnel startet nicht |
Das Relay sieht es vielleicht nicht in seinem PATH. Setz binary auf den vollen Pfad und führ oar restart aus. |