Jitsi Konferenzen sind eine gute Alternative zu kommerziellen Angeboten. Ein Jitsi Server kann kostengünstig selber gehostet werden oder es stehen diverse Anbieter mit kostenlosen oder Managed Services zur Verfügung.
Eine 1:1 Konferenz ist dennoch die häufigste Konferenz. Um eine P2P (Person to Person) Konferenz effizienter und mit besserer Performance zu gestaltet, lohnt es sich einen STUN oder TURN Server auszusetzten und diesen wenn nötig mit Jitsi zu koppeln.
Je nach Konfiguration kann auch ein Jitsi und STUN Server auf einem virtuellen Server betrieben werden. Bei unseren All-in-One Angeboten bieten wir unseren Kunden genau diese Kombination aus Jitsi und CoTurn auf einem Root Server an.
Wir verwenden Ansible um alle Server auszusetzten und zu verwalten. Alle hier angegeben Felder müssen durch eigene Ersetzt werden.
# /etc/jitsi/meet/{{ jitsi_meet_server_name }}-config.js
# (ca. Line 234)
useStunTurn: true,
# (ca. Line 327)
p2p: {
enabled: true,
// Use XEP-0215 to fetch STUN and TURN servers.
useStunTurn: true,
// The STUN servers that will be used in the peer to peer connections
stunServers: [
{% for server in jitsi_meet_config_stun_servers %}
{ urls: '{{ server }}' }{% if not loop.last -%},
{% endif %}
{% endfor %}
],
Mit dieser Konfiguration wird Jitsi mitgeteilt, dass dieser bei P2P Konferenzen TURN nutzen soll. Als Server werden hier die eigenen coturn Server mit der offentlichen Domain z.B. turn.meet.h2-invent.com:
# /etc/prosody/conf.avail/{{ jitsi_meet_server_name }}.cfg.lua
# Global
{% set jitsi_meet_stun_server_host = jitsi_meet_config_stun_servers[0].split(':')[0] %}
{% set jitsi_meet_stun_server_port = jitsi_meet_config_stun_servers[0].split(':')[1] %}
-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "{{ jitsi_meet_server_name }}";
# TRUN Server Secrets
turncredentials_secret = "{{ coturn_static_auth_secret }}";
# Einrichten der ProSody Schnittstelle zum coturn Server
turncredentials = {
{ type = "stun", host = "{{ jitsi_meet_stun_server_host }}", port = "{{ jitsi_meet_stun_server_port }}" },
{ type = "turn", host = "{{ jitsi_meet_stun_server_host }}", port = "{{ jitsi_meet_stun_server_port }}", transport = "udp" },
{ type = "turns", host = "{{ jitsi_meet_stun_server_host }}", port = "{{ jitsi_meet_stun_server_port }}", transport = "tcp" }
};
Mit dieser Konfigration wird dem Prosody Dienst gesagt, wohin er sich verbinden soll, wenn nur zwei Teilnehmer in einer Konferenz sind.
Noch das Modul "turncredentials" aktivieren und dieser Teil ist geschafft.
modules_enabled = {
"bosh";
"pubsub";
"ping"; -- Enable mod_ping
"turncredentials";
}
BTW! Das Modul muss bereits installiert sein. Sonst geht es nicht. "mod_turncredentials.lua"
cd /tmp && \
wget https://raw.githubusercontent.com/otalk/mod_turncredentials/master/mod_turncredentials.lua && \
sudo cp mod_turncredentials.lua /usr/lib/prosody/modules/
# /etc/jitsi/videobridge/sip-communicator.properties
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES={{ jitsi_meet_config_stun_servers[0] }}
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
Diese Konfiguration kann vorgenommen werden, muss aber nicht.
# sudo vim /etc/default/coturn
TURNSERVER_ENABLED=1
Wenn der Coturn Server mit Letsencrypt verwendet werden soll, müsst ihr folgende Zertifikate eintragen und natürlich den Certbot installieren
server-name=<YOUR_COTURN_DOMAIN>
cert=/etc/letsencrypt/live/<YOUR_COTURN_DOMAIN>/cert.pem
pkey=/etc/letsencrypt/live/<YOUR_COTURN_DOMAIN>/privkey.pem
# /etc/turnserver.conf
server-name:stun.{{domain}}
#listening-port=3478
{% if not coturn_tls %}#{% endif %}tls-listening-port={{ coturn_tls_listening_port }}
listening-ip={{ ansible_host }}
relay-ip={{ ansible_host }}
fingerprint
use-auth-secret
static-auth-secret={{ coturn_static_auth_secret }}
realm={{ stundomain }}
total-quota=100
bps-capacity=0
no-udp
no-tcp
stale-nonce=600
cert={{ coturn_tls_cert }}
pkey={{ coturn_tls_key }}
cipher-list="ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
ec-curve-name=secp384r1
dh-file=/etc/coturn-dh-2048.pem
no-stdout-log
log-file=/var/log/turnserver.log
simple-log
no-multicast-peers
cli-port=5766
no-tlsv1
no-tlsv1_1
min-port=15000
max-port=25000
Coturn Service neu Starten nicht vergessen. Der Port muss ein anderer sein, wie der von ngnix und Jitsi. Sonst startet einer der Dienste nicht korrekt. Als {{ coturn_tls_listening_port }} eignet sich z.B. 444 oder 445, darf aber nicht 443 sein, da dieser bereits von ngnix verwendet wird. Es besteht die Möglichkeit, nginx als Load Ballancer und Reverse Proxy einzusetzten. Wir aber hier nicht weiter beschrieben.
Zum Testen des Coturn Servers steht das Tool Trickle ICE zur Verfügung. Dafür benötigt ihr noch ein Benutzername und ein Kennwort. Das Kennwort und der Benutzer sind für 48 Stunden gültig. So wie die dynamischen Benutzer in Coturn.
secret=mysecret && \
time=$(date +%s) && \
expiry=8400 && \
username=$(( $time + $expiry )) &&\
echo username:$username && \
echo password : $(echo -n $username | openssl dgst -binary -sha1 -hmac $secret | openssl base64)
Klicken Sie dann auf Server hinzufügen und dann auf die Schaltfläche Kandidaten sammeln. Wenn Sie alles richtig gemacht haben, sollten Sie als Endergebnis "Done" sehen. Wenn Sie keine Antwort erhalten oder wenn Sie Fehlermeldungen sehen, überprüfen Sie bitte, ob Sie diesen Leitfaden so befolgt haben, wie er ist.
Am Schluss muss noch die Firewall eingerichtet werden. Wir verwenden iptables, da diese sehr schnell über Ansible einrichtet werden können.
Freigaben:
Benötigen Sie Unterstützung bei Ihrer Transformation?
Zögern Sie nicht mit uns Kontakt
aufzunehmen.