Spreed.me ist eine Open Source Lösung für private Videokonferenzen, Screensharing und Chats auf WebRTC Basis. Nextcloud bietet als kollaboratives Werkzeug Spreed.me als Erweiterung an.
Die Installation erscheint zwar laut der Entwicklerdoku als relativ simpel, allerdings fehlen mal wieder die genauen Angaben für eine funktionierende Konfiguration. Andere Tutorials auf diesem Gebiet starten mit der Nextcloud Installation und es gibt auch ein paar Threads mit Bash Skripten, die die gesamte Installation auf einem Server übernehmen. Ich würde davon abraten!
Gehen wir davon aus, dass Nextcloud mit nginx installiert wurde (Apache2 funktioniert analog – nur eben mit einem anderen Vhost Eintrag). Da ich Debian einsetze, gibt es leider kein Repository für Spreed.me. Ubuntu Nutzer sollten die Installation über das Repo probieren, aber Vorsicht unstable! Ich habe mich für die Installation über Docker entschieden, da einfacher zu verwalten. Bitte installiert als erstes Docker. In diesem Fall wird Spreed.me übrigens auf der gleichen Maschine installiert wie Nextcloud selbst. Das wird auch vom Hersteller empfohlen, da anderenfalls das Screensharing nicht funktioniert.
Nach der Installation wird Spreed.me für Docker installiert:
docker pull spreed/webrtc
Als nächstes die Spreed.me App in Nextcloud installieren und aktivieren. Benennt im App-Ordner (/apps/spreedme) die Datei extra/static/config/OwnCloudConfig.js.in zu extra/static/config/OwnCloudConfig.js um. Geht dann in den Verwaltungsbereich von Nextcloud zu Zusätzliche Einstellungen. Klickt dort bei Spreed.me auf Show Advanced settings und überprüft, ob der SPREED_WEBRTC_BASEPATH auf /webrtc/ gesetzt ist. Zusätzlich könnt ihr den Haken bei SPREED_WEBRTC_IS_SHARED_INSTANCE (wenn ihr die App bei mehreren Nextcloud Installationen verwenden möchtet – aber nur auf der selben Maschine wie Nextcloud!) oder SPREED_WEBRTC_UPLOAD_FILE_TRANSFERS setzen. Die weiteren Einstellungen nach Bedarf setzen. Abschließend auf Save Settings klicken.
Damit Spreed.me mit Nextcloud kommunizieren kann, brauchen wir eine Konfiguration, mit der wir Spreed.me starten. Die erhalten wir ebenfalls in der Nextcloud Verwaltung. Klickt nun auf Generate Spreed WebRTC Config und kopiert den Text. Der erste Eintrag listen muss allerdings zu 0.0.0.0:8080 abgeändert werden – so sähe eine Beispielkonfiguration aus:
; Minimal Spreed WebRTC configuration for Nextcloud [http] listen = 0.0.0.0:8080 basePath = /webrtc/ ;root = /usr/share/spreed-webrtc-server/www [app] sessionSecret = xxx encryptionSecret = xxxx authorizeRoomJoin = true serverToken = xxx serverRealm = local extra = /var/www/nextcloud/httpdocs/nextcloud/apps/spreedme/extra plugin = extra/static/owncloud.js [users] enabled = true mode = sharedsecret sharedsecret_secret = xxxx
Speichert diese generierte Konfiguration mit der Abänderung nun unter /etc/spreedme/spreed-webrtc-nextcloud.conf ab. Bitte nicht nochmal auf den Generate Config Button klicken, da sich dann die Keys ändern! Nun müssen wir Spreed.me mit der Konfiguration starten. Da Spreedme immer im Vordergrund läuft, bitte z.B. screen installieren, damit ihr den Server als Backgroundprozess laufen lassen könnt. Andere Varianten statt screen gerne in die Kommentare. Für den fertigen Befehl braucht ihr einerseits den Pfad von der Einstellung extra und den Pfad der Konfigurationsdatei. Der Befehl zum Starten lautet anhand meines Beispiels oben wie folgt:
screen -AmdS spreedme docker run --rm --name my-spreed-webrtc \ -p 127.0.0.1:8080:8080 -p 127.0.0.1:8443:8443 \ -v /etc/spreed:/etc/spreed \ -v /var/www/nextcloud/httpdocs/nextcloud/apps/spreedme/extra:/var/www/nextcloud/httpdocs/nextcloud/apps/spreedme/extra \ -i -t spreed/webrtc \ -c /etc/spreed/spreed-webrtc-nextcloud.conf
Die localhost Angabe bei p würde ich unbedingt mit angeben, damit der Prozess nur auf localhost lauscht. So erspart man sich eine lästige iptable Konfiguration mit Docker. Wenn ihr diesen Befehl auf einer VM ausführt, dupliziert das Fenster und führt parallel dazu für einen kurzen Moment folgenden Befehl aus, damit die Erstellung der Keys schneller abläuft:
rngd -f -r /dev/urandom
Um sicher zu gehen, dass die Applikation sauber hochfährt, sollte man anfangs screen weglassen und den Output prüfen. netstat -tulpn sollte nun u.a. folgende Einträge haben:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2222/docker-proxy
tcp 0 0 127.0.0.1:8443 0.0.0.0:* LISTEN 3333/docker-proxy
Wir sind aber noch nicht fertig. Nginx bzw. Apache2 brauchen nun einen Proxy innerhalb der Nextcloud Vhost Konfiguration, damit wir die App nutzen können. Für nginx einfach die vorgeschlagene Konfiguration verwenden:
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { .... # Spreed WebRTC location ^~ /webrtc { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering on; proxy_ignore_client_abort off; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_next_upstream error timeout invalid_header http_502 http_503 http_504; } }
Für professionelles Nextcloud Hosting hier entlang: www.speibox.de.