Damit Anrufe auch in Netzen zustande kommen, die keine direkte Verbindung zulassen (15-25 % der Faelle). coturn ist installiert, steht aber still, bis die Konfiguration liegt -- ein coturn mit Werkseinstellung ist ein offenes Relais. KEIN FESTES PASSWORT. Es laege dauerhaft im Browser jedes Team-Mitglieds und liesse sich nie entziehen. Der Server rechnet stattdessen bei jeder Abfrage Zugangsdaten, die nach zwoelf Stunden verfallen (server/workspace-turn.js, coturns `use-auth-secret`). Das Geheimnis liegt in einer Datei, nicht in der Datenbank: einstellung- Setzen() schreibt Werte ins Protokoll, und coturn braucht denselben Wert ohnehin in /etc. Die Oberflaeche frischt die Daten vor jedem Anruf auf. Der Chat ist eine App, die tagelang offen bleibt -- wer nur beim Laden holt, telefoniert am zweiten Tag ohne Vermittlung, und es faellt nicht auf: Es scheitern nur die, die sie gebraucht haetten. DIE WICHTIGSTE ZEILE DER KONFIGURATION ist die Sperrliste. Gemessen: dreizehn Dienste lauschen auf diesem Server nur oertlich, darunter Caddys Verwaltung auf 127.0.0.1:2019 -- wer sie erreicht, kann jede Website umleiten. Ohne Sperrliste waere der Vermittlungsserver die Tuer dorthin, und die Anfrage saehe fuer Caddy aus wie von localhost. Geprueft: pruef-anruf.mjs 51 -> 73 Pruefungen. Gegenprobe (Geheimnis als Passwort ausliefern + fremde Zugangsdaten ueberschreiben) macht genau 5 rot, darunter "das Geheimnis steht NIRGENDS in der Antwort". tools/turn-probelauf.sh beweist am echten coturn, was ein fester Vergleichswert nicht kann: dass coturn unsere Rechnung akzeptiert. Beide Seiten koennten sonst konsequent falsch rechnen und jede Pruefung waere gruen. Seine eigene Gegenprobe war zweimal zu Recht rot -- der erste Aufbau mass wegen `-y` gar nicht das Ziel, das er zu messen behauptete, sondern coturns eingebauten Loopback-Schutz. Co-Authored-By: Claude Opus 5 <[email protected]>
128 lines
5.6 KiB
Plaintext
128 lines
5.6 KiB
Plaintext
# =====================================================================
|
|
# coturn - Vermittlungsserver fuer die Anrufe im Creator Workspace
|
|
# Angelegt 18.09.2026. Gehoert nach /etc/turnserver.conf
|
|
#
|
|
# WARUM DIESE DATEI IM REPO LIEGT
|
|
# Sie steht auf dem Server unter /etc und waere bei einem Neuaufbau weg,
|
|
# ohne dass es jemandem auffiele - der Anruf wuerde dann einfach bei
|
|
# jedem Fuenften nicht mehr klappen. Genau das ist bei RunOne mit den
|
|
# systemd-Dateien passiert; seitdem liegen solche Dateien versioniert.
|
|
#
|
|
# DAS GEHEIMNIS STEHT NICHT HIER DRIN.
|
|
# Es wird vom Einrichtungsbefehl erzeugt und unten angehaengt. Eine
|
|
# Vorlage mit Platzhalter waere eine Vorlage, in der irgendwann der
|
|
# Platzhalter stehen bleibt - im Haus schon zweimal passiert.
|
|
# =====================================================================
|
|
|
|
# --- Wo gelauscht wird -------------------------------------------------
|
|
# Ausdruecklich nur auf der oeffentlichen Adresse. Ohne diese Zeile
|
|
# lauscht coturn auf ALLEN Netzgeraeten - auch auf den vier
|
|
# Docker-Bruecken (172.17-172.20). Ein Vermittlungsserver, der im
|
|
# Docker-Netz erreichbar ist, ist eine Abkuerzung, die niemand braucht.
|
|
listening-ip=159.195.212.167
|
|
relay-ip=159.195.212.167
|
|
listening-port=3478
|
|
|
|
# Kein TLS in dieser Stufe: Dafuer braeuchte es ein Zertifikat und damit
|
|
# einen eigenen Namen im DNS. Ohne diese beiden Zeilen versucht coturn
|
|
# trotzdem, einen TLS-Lauscher zu oeffnen, und schreibt bei jedem Start
|
|
# eine Warnung ueber fehlende Zertifikate - eine Warnung, die immer
|
|
# kommt, liest nach drei Tagen niemand mehr.
|
|
no-tls
|
|
no-dtls
|
|
|
|
# --- Der Portbereich fuer die Weiterleitung ----------------------------
|
|
# Jedes weitergeleitete Gespraech belegt einen Port. Der Standard geht
|
|
# von 49152 bis 65535 - 16000 Ports, die alle in der Firewall offen sein
|
|
# muessten. Fuer ein Team dieser Groesse sind 100 reichlich: Sie
|
|
# reichen fuer 100 gleichzeitige Weiterleitungen, und die Firewall
|
|
# bleibt entsprechend eng.
|
|
min-port=49160
|
|
max-port=49260
|
|
|
|
# --- Wer den Server benutzen darf --------------------------------------
|
|
# Keine Benutzerliste, sondern ein gemeinsames Geheimnis: Der Workspace
|
|
# rechnet daraus Zugangsdaten, die nach zwoelf Stunden verfallen
|
|
# (server/workspace-turn.js). coturn rechnet dieselbe Zahl nach.
|
|
# Vorteil gegenueber festen Benutzern: Es gibt nichts abzugleichen, und
|
|
# ein Zugang, der nicht mehr gelten soll, gilt am naechsten Tag nicht
|
|
# mehr.
|
|
use-auth-secret
|
|
realm=dogfather-universe.com
|
|
|
|
# Wie lange eine einmal ausgestellte Anmeldung nachwirkt.
|
|
stale-nonce=600
|
|
|
|
# --- DIE WICHTIGSTEN ZEILEN DER GANZEN DATEI ---------------------------
|
|
# Ein TURN-Server leitet auf Zuruf Verkehr an eine Adresse weiter, die
|
|
# der Anrufer nennt. Ohne die folgenden Sperren darf er auch 127.0.0.1
|
|
# nennen - und dann steht dieser Server als Tuer vor allem, was auf
|
|
# diesem Rechner nur oertlich lauscht. Am 18.09.2026 gemessen: dreizehn
|
|
# Dienste, darunter
|
|
#
|
|
# 127.0.0.1:2019 die Verwaltung von Caddy (!) - wer sie erreicht,
|
|
# kann JEDE Website auf diesem Server umleiten
|
|
# 127.0.0.1:3000 Gitea 127.0.0.1:4000 VanVans Shop
|
|
# 127.0.0.1:4100 Workspace 127.0.0.1:4400 Buchhaltung
|
|
# 127.0.0.1:25 der Mailserver
|
|
#
|
|
# Fuer Caddy saehe eine so weitergeleitete Anfrage aus, als kaeme sie
|
|
# von diesem Rechner selbst. Diese Liste ist deshalb keine Haertung,
|
|
# sondern die Voraussetzung dafuer, dass der Dienst ueberhaupt laufen
|
|
# darf.
|
|
no-multicast-peers
|
|
denied-peer-ip=0.0.0.0-0.255.255.255
|
|
denied-peer-ip=10.0.0.0-10.255.255.255
|
|
denied-peer-ip=100.64.0.0-100.127.255.255
|
|
denied-peer-ip=127.0.0.0-127.255.255.255
|
|
denied-peer-ip=169.254.0.0-169.254.255.255
|
|
denied-peer-ip=172.16.0.0-172.31.255.255
|
|
denied-peer-ip=192.0.0.0-192.0.0.255
|
|
denied-peer-ip=192.0.2.0-192.0.2.255
|
|
denied-peer-ip=192.88.99.0-192.88.99.255
|
|
denied-peer-ip=192.168.0.0-192.168.255.255
|
|
denied-peer-ip=198.18.0.0-198.19.255.255
|
|
denied-peer-ip=198.51.100.0-198.51.100.255
|
|
denied-peer-ip=203.0.113.0-203.0.113.255
|
|
denied-peer-ip=240.0.0.0-255.255.255.255
|
|
# Dasselbe fuer IPv6 - sonst waere die Sperre oben eine halbe Sperre.
|
|
denied-peer-ip=::1
|
|
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
|
|
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
|
|
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
|
|
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
|
|
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
|
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
|
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
|
|
|
# Weiterleitung nur fuer UDP. WebRTC braucht nichts anderes; TCP-Ziele
|
|
# waeren nur fuer jemanden interessant, der etwas anderes vorhat.
|
|
no-tcp-relay
|
|
|
|
# --- Grenzen gegen Missbrauch ------------------------------------------
|
|
# Falls Zugangsdaten doch einmal abhandenkommen, kostet es Bandbreite,
|
|
# keine Rechnung ohne Ende. 12 gleichzeitige Weiterleitungen je Person
|
|
# reichen fuer eine Vierergruppe mit Ton und Bild deutlich.
|
|
user-quota=12
|
|
total-quota=100
|
|
max-bps=3000000
|
|
|
|
# --- Die eingebaute Fernsteuerung bleibt aus ---------------------------
|
|
# coturn oeffnet sonst auf 127.0.0.1:5766 eine Verwaltungskonsole. Sie
|
|
# wird hier nicht gebraucht, und ein offener Verwaltungszugang, den
|
|
# niemand benutzt, faellt auch niemandem auf.
|
|
no-cli
|
|
|
|
# --- Protokoll ---------------------------------------------------------
|
|
# In das Systemprotokoll statt in eine eigene Datei: Damit wird es
|
|
# mitgedreht und laeuft nicht voll. Bewusst OHNE `verbose` - ein
|
|
# ausfuehrliches Protokoll eines Vermittlungsservers ist eine Liste,
|
|
# wer wann mit wem telefoniert hat.
|
|
syslog
|
|
simple-log
|
|
|
|
# Hilft Gegenstellen, die Pakete zuzuordnen; kostet nichts.
|
|
fingerprint
|
|
|
|
# --- Das gemeinsame Geheimnis wird unten angehaengt --------------------
|