# coturn — Rebreak Voice-Calls TURN-Server (self-hosted) # ──────────────────────────────────────────────────────────────────────────── # Ephemere Credentials via use-auth-secret (TURN-REST-API). Das Backend mintet # username/credential per HMAC-SHA1 aus `static-auth-secret` — coturn validiert # ohne DB. static-auth-secret MUSS exakt = Infisical TURN_SECRET sein. # # Force-Relay-Design: Clients nutzen iceTransportPolicy:"relay" → coturn ist die # EINZIGE Vermittlung, Peers sehen nie die fremde IP (Anonymität). listening-port=3478 tls-listening-port=5349 fingerprint # ─── Auth (ephemere HMAC-Credentials) ────────────────────────────────────── use-auth-secret static-auth-secret=__SET_TO_INFISICAL_TURN_SECRET__ realm=rebreak.org # ─── Relay-Port-Range (Firewall: diese UDP-Range öffnen) ──────────────────── min-port=49160 max-port=49200 # ─── TLS (turns:// auf 5349) — Let's Encrypt für turn.rebreak.org ─────────── cert=/etc/letsencrypt/live/turn.rebreak.org/fullchain.pem pkey=/etc/letsencrypt/live/turn.rebreak.org/privkey.pem # ─── Hardening ────────────────────────────────────────────────────────────── no-cli no-multicast-peers no-tcp-relay # SSRF-Schutz: Relay zu privaten/Loopback-Netzen verbieten 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=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.168.0.0-192.168.255.255 # Hetzner hat i.d.R. eine öffentliche IP direkt am Interface. Falls hinter NAT: # external-ip=