Beim Start des STUN/TURN-Servers coturn
innerhalb eines LXC-Containers (z. B. jitsi
) trat folgender Fehler auf:
Failed at step NAMESPACE spawning /usr/bin/turnserver: Permission denied
status=226/NAMESPACE
Ursache: systemd versucht standardmäßig, Prozesse über ein eigenes Mount-Namespace zu isolieren. Dies ist in unprivilegierten Containern nicht erlaubt und führt zu einem Startfehler.
Lösung
Um die problematische Isolation zu deaktivieren, wurde wie folgt vorgegangen:
1. Unit-Datei kopieren
cp /lib/systemd/system/coturn.service /etc/systemd/system/coturn.service
Hinweis: Bestimmte Direktiven wie InaccessibleDirectories
können in Drop-In-Dateien nicht zuverlässig geleert werden. Eine Kopie der vollständigen Unit-Datei ist deshalb notwendig.
2. Unit-Datei anpassen
Datei: /etc/systemd/system/coturn.service
Es wurden gezielt zwei sicherheitsrelevante Zeilen angepasst:
[Service]
InaccessibleDirectories=
PrivateTmp=no
3. systemd neu laden
systemctl daemon-reexec
systemctl daemon-reload
systemctl restart coturn.service
Ergebnis
Nach dem Anpassen der Unit-Datei und einem Neustart konnte coturn
erfolgreich gestartet werden – ohne dass die Mount-Isolation ein Problem darstellt.
Status prüfen
systemctl status coturn.service
Erwartetes Ergebnis:
Active: active (running)
Weitere Logs:
journalctl -u coturn.service
Diese beiden Einträge sind nicht korrekt:
Weiterführende Informationen
coturn mit Self-Signed-Zertifikat absichern
Diese Seite dokumentiert die Konfiguration von coturn mit einem selbstsignierten TLS-Zertifikat innerhalb eines Jitsi-Setups auf einem Debian-basierten LXC-Container.
Voraussetzungen
- coturn ist installiert
- Zertifikat und privater Schlüssel vorhanden unter:
/etc/jitsi/meet/jitsi.DOM.TLD.crt
/etc/jitsi/meet/jitsi.DOM.TLD.key
- coturn läuft nicht als root, sondern unter dem Benutzer
turnserver
Problem: "cannot find private key file"
Die Warnung im Journal:
WARNING: cannot find private key file: /etc/turn/pkey.pem
WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
tritt auf, wenn der Benutzer turnserver
keine Leserechte auf den Key besitzt oder das übergeordnete Verzeichnis (/etc/turn
) nicht betreten darf.
Lösungsschritte
1. Zertifikat und Key nach /etc/turn/
kopieren
mkdir -p /etc/turn
cp /etc/jitsi/meet/jitsi.DOM.TLD.crt /etc/turn/cert.pem
cp /etc/jitsi/meet/jitsi.DOM.TLD.key /etc/turn/pkey.pem
2. Rechte und Besitzer setzen
chown root:turnserver /etc/turn
chmod 750 /etc/turn
chown turnserver:turnserver /etc/turn/cert.pem
chown turnserver:turnserver /etc/turn/pkey.pem
chmod 644 /etc/turn/cert.pem
chmod 600 /etc/turn/pkey.pem
3. Konfiguration anpassen
In /etc/turnserver.conf
:
cert=/etc/turn/cert.pem
pkey=/etc/turn/pkey.pem
dh-file=/etc/turn/dh.pem
4. DH-Parameterdatei erzeugen (falls nicht vorhanden)
openssl dhparam -out /etc/turn/dh.pem 2048
chown turnserver:turnserver /etc/turn/dh.pem
chmod 600 /etc/turn/dh.pem
5. Start testen
systemctl restart coturn
journalctl -u coturn -f
Erwartete Ausgabe:
TLS supported
DTLS supported
Optional: Weiterführende Konfiguration
TURN-Ports explizit definieren:
listening-port=3478 tls-listening-port=5349
Zugang nur via auth-secret erlauben (für jitsi):
use-auth-secret static-auth-secret=<your-secret> realm=jitsi.DOM.TLD
Abschluss
coturn ist nun korrekt TLS-gesichert und kann mit jitsi-meet verwendet werden. Die Self-Signed-Zertifikate müssen bei externem Zugriff entsprechend durch Clients akzeptiert oder durch Let's Encrypt ersetzt werden.