In dieser Schnellanleitung beschreiben wir die Einrichtung eines stun-/coturn-Servers für die Verwendung von BigBlueButton, Jitsi Meet, Nextcloud Talk (Hub) u.v.m.. Um eine maximale Kompatibilität zu erreichen wird dabei der Port 443 eingerichtet und verwendet.
Melden Sie sich als priviligierter Benutzer an und laden das notwendige Paket herunter:
sudo -s
UBUNTU 22.0x/24.0x
wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/c/coturn/coturn_4.6.1-2_amd64.deb
DEBIAN 12
wget http://ftp.de.debian.org/debian/pool/main/c/coturn/coturn_4.6.1-2_amd64.deb
Ab hier sowohl für Ubuntu als auch für Debian:
Installieren Sie das Paket und erstellen eine Kopie der initialen Konfigurationsdatei.
dpkg -i coturn_4.6.1-2_amd64.deb
rm -f coturn_4.6.1-2_amd64.deb
mv /etc/turnserver.conf /etc/turnserver.conf.bak
apt install -y certbot
Richten Sie die Firewall ein und passen ggf. den SSH-Port (22) an:
apt install -y ufw
ufw allow 22/tcp comment "SSH"
ufw allow 80/tcp comment "LetsEncrypt"
ufw allow 443/tcp comment "Turnserver"
ufw allow 443/udp comment "Turnserver"
ufw allow 32769:65535/udp comment "Turnserver"
ufw logging medium
ufw default deny incoming
ufw enable
systemctl enable ufw.service
systemctl restart ufw.service
Beantragen Sie Ihre Zertifikate, wichtig dafür ist, dass der Port 80 /TCP offen ist. Alternativ können Sie die Zertifikate auch mittels einer DNS-Challenge beantragen und somit den Port 80 geschlossen halten. Ersetzen Sie bitte die rot markierte Domäne:
sudo certbot certonly --standalone --preferred-challenges http -d coturn.domain.de
Erzeugen Sie die Ordner und einen Diffie-Hellmann-Schlüssel, um einen sicheren Schlüsselaustausch zu ermöglichen.
mkdir -p /etc/turnserver/ssl /etc/letsencrypt/renewal-hooks/deploy
openssl dhparam -dsaparam -out /etc/turnserver/ssl/dhp.pem 4096
Erstellen Sie nun zum Erneuern der Zertifikate folgende Datei
nano /etc/letsencrypt/renewal-hooks/deploy/coturn
und ersetzen die rot markierte Domain mit ihrer coturn-Domäne:
#!/bin/bash -e
for certfile in fullchain.pem privkey.pem ; do
cp -L /etc/letsencrypt/live/coturn.domain.de/"${certfile}" /etc/turnserver/"${certfile}".new
chown turnserver:turnserver /etc/turnserver/"${certfile}".new
mv /etc/turnserver/"${certfile}".new /etc/turnserver/ssl/"${certfile}"
done
systemctl kill -sUSR2 coturn.service
Machen Sie diese Datei ausführbar:
chmod 0755 /etc/letsencrypt/renewal-hooks/deploy/coturn
Erstellen Sie eine neue Konfigurationsdatei:
nano /etc/turnserver.conf
und fügen den gesamten Inhalt hinzu. Passen Sie die rot markierten Werte an:
tls-listening-port=443
listening-ip=<externe IP>
relay-ip=<externe IP>
min-port=32769
max-port=65535
verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=<IhrGeheimerSchlüssel>
realm=<coturn.domain.de>
cert=/etc/turnserver/ssl/fullchain.pem
pkey=/etc/turnserver/ssl/privkey.pem
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
dh-file=/etc/turnserver/ssl/dhp.pem
# syslog
keep-address-family
no-cli
no-tlsv1
no-tlsv1_1
# no-loopback-peers
no-multicast-peers
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=169.254.0.0-169.254.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=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=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Eine Muster-Konfigurationsdatei finden Sie hier. Abschließend richten wir noch die Logrotation ein, dazu erstellen wir diese Datei
nano /etc/logrotate.d/coturn
und fügen den gesamten Inhalt ein.
/var/log/turnserver/*.log
{
rotate 7
daily
missingok
notifempty
compress
postrotate
/bin/systemctl kill -s HUP coturn.service
endscript
}
Legen Sie nun den Ordner für die Logdateien an
mkdir -p /var/log/turnserver
Um den Filehandler (LimitNOFILE=1048576) zu erhöhen und coturn die Möglichkeit zu geben, den Port 443 binden zu können, legen wir einen Ordner und eine Datei an.
mkdir -p /etc/systemd/system/coturn.service.d
nano /etc/systemd/system/coturn.service.d/override.conf
Fügen Sie den gesamten Inhalt ein:
[Service]
LimitNOFILE=1048576
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=
ExecStart=/usr/bin/turnserver -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log
Restart=always
Setzen Sie die notwendigen Berechtigungen:
chown turnserver:turnserver /var/log/turnserver
Der verwendete turnserver-Benutzer ist im coturn-Dienst hinterlegt:
nano /lib/systemd/system/coturn.service
Führen Sie den Hook (Zertifikatshandling) initial aus, laden dann die Services neu und starten zuletzt den coturn-Dienst neu:
/etc/letsencrypt/renewal-hooks/deploy/coturn
systemctl daemon-reload
systemctl restart coturn.service
Überprüfen Sie, ob der Port 443 durch den (co-)turnserver gebunden wurde:
netstat -antp | grep 443
Zudem können Sie von einem anderen Linux-Client die Funktion per Konsole prüfen.
UDP-Verbindungstest:
turnutils_uclient -p 443 -W IhrGeheimerSchlüssel -v -y coturn.domain.de
TCP-Verbindungstest:
turnutils_uclient -t -p 443 -W IhrGeheimerSchlüssel -v -y coturn.ihredomain.de
Um die TCP- und UDP-Ports von außen zu prüfen, nutzen Sie einfach folgende Kommandos:
nmap -sU -p 443 coturn.ihredomain.de
nmap -sT -p 443 coturn.ihredomain.de
Die Installation des stun/coturn-Servers unter Ubuntu 22.04 wurde erfolgreich abgeschlossen. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!