From e69ad01e700e80fa959dfee08cd556ca0d777ffd Mon Sep 17 00:00:00 2001 From: skylar Date: Sun, 1 Nov 2026 05:43:24 -0800 Subject: Yesod: self-hosted WebXR rooms Start a room in a world and hang out in VR from the headset's browser: A-Frame + Networked-A-Frame over EasyRTC, with a coturn relay that can hide everyone's IP address. Ships with the Campfire, Temple, Cabin, Balcony and Test room worlds. Co-Authored-By: Claude Opus 5.5 --- deploy/turnserver.conf | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 deploy/turnserver.conf (limited to 'deploy/turnserver.conf') diff --git a/deploy/turnserver.conf b/deploy/turnserver.conf new file mode 100644 index 0000000..efddc5e --- /dev/null +++ b/deploy/turnserver.conf @@ -0,0 +1,64 @@ +# coturn for Yesod: STUN plus a TURN relay for voice when two people can't +# reach each other directly, and for everyone who hides their IP address. +# Credentials are short-lived HMACs minted by the app (yesod.service) from the +# shared secret below. +# +# On install, set realm to your domain and replace STATIC_AUTH_SECRET with +# TURN_SECRET from /etc/yesod/env (see README.md). + +listening-port=3478 +realm=example.org +use-auth-secret +static-auth-secret=STATIC_AUTH_SECRET +fingerprint + +# Relay ports (open these UDP ports in the firewall). With "Hide my IP +# address" on, everyone relays: each person holds one allocation, and one +# port, per other person in the room. The app's cap of 60 people in rooms of +# up to 8 needs at most 60 x 7 = 420. If you change MAX_PEOPLE or +# MAX_CONNECTIONS, keep these in step. +min-port=49160 +max-port=49999 + +# Each person gets their own TURN username from the app; 7 others plus a +# little slack for reconnects. The total matches the app's limits above. +user-quota=10 +total-quota=450 +stale-nonce=600 + +# No TLS listener (nginx owns 443), no admin CLI, no TCP relays. +no-tls +no-dtls +no-cli +no-tcp-relay +no-multicast-peers + +# Never relay into private, loopback or reserved address space. +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=224.0.0.0-255.255.255.255 +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 + +# No logs: coturn otherwise records every session with both ends' addresses. +# (To debug a relay problem, swap these for "syslog" and "verbose" for a while.) +no-stdout-log +log-file=/dev/null +simple-log -- cgit v1.2.3