Files
dogfather-universe/deploy/turnserver.conf
T
DogFatherGitandClaude Opus 5 775c4b4207 Vermittlungsserver: coturn mit Zugangsdaten, die verfallen
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]>
2026-09-18 15:22:14 +02:00

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 --------------------