Tags

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.