Commit 19aa689d authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

online-werkzeuge-admin.pdf: Mumble, OpenMeetings

parent bf98e986
......@@ -41,6 +41,8 @@
moredelim=**[is][\color{blendedblue}]{°}{¿},
moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
\newcommand{\shorttextarrow}{{\boldmath $\rightarrow$}}
\begin{document}
\makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill
......@@ -363,198 +365,175 @@
\begin{lstlisting}[style=cmd]
iptables -I INPUT -p udp --dport 53 -j ACCEPT
\end{lstlisting}
kurzzeitig die Abfrage von \file{bind} von außen erlaubt.
die Abfrage von \file{bind} von außen erlaubt.
\section{Mumble}
\iffalse
Der Rechner, auf dem der \term{Mumble\/}-Server läuft,\\
ist in diesem Beispiel ebenfalls \file{main-1.\$DOMAIN}.
Die Installation erfolgt mittels:
\lstinline[style=cmd]{apt install mumble-server}
\term{Mumble\/} besetzt (standardmäßig) den Port 64738.\\
Diesen müssen wir auf der Firewall freigeben.
Der \term{Mumble\/}-Servers ist vorkonfiguriert (Datei: \file{/etc/mumble-server.ini}).
Sofern Sie keine speziellen Anforderungen haben
(z.\,B.\ mehrere Instanzen von \term{Mumble\/} auf derselben Hardware),
können Sie diese Konfiguration direkt übernehmen.
\subsection{Server-Zertifikat}
Standardmäßig läuft \term{Mumble\/} mit einem selbst-signierten Zertifikat.
Dies führt zu einem Verlust an Sicherheit und zu Warnmeldungen beim ersten Verbinden.
Um optimale Sicherheit zu gewährleisten,
installieren wir stattdessen das mit \term{Let's Encrypt} erzeugte Zertifikat (siehe oben)
zusammen mit dem Schlüssel für \term{Mumble}.
Dies geschieht mit Hilfe eines Shell-Skripts
\file{/usr/local/sbin/letsencrypt-install-new-keys}:
\begin{lstlisting}[style=terminal]
#!/bin/sh
install -m 644 -o root -g mumble-server \
/etc/letsencrypt/live/mumble.¡DOMAIN¿/fullchain.pem \
/var/lib/mumble-server/cert.pem
install -m 640 -o root -g mumble-server \
/etc/letsencrypt/live/mumble.¡DOMAIN¿/privkey.pem \
/var/lib/mumble-server/privkey.pem
systemctl force-reload mumble-server
\end{lstlisting}
(Wir verwenden hier den Server-Namen \file{mumble}
als \lstinline[style=terminal]{CNAME} für \file{main-1}.\\
\lstinline[style=cmd]{$DOMAIN} steht wieder für die
Internet-Domain des Servers.)
\subsection{Benutzerverwaltung}
Die Benutzerverwaltung in \term{Mumble\/} erfolgt
komplett innerhalb der Client-Software.
Zu Beginn existiert lediglich der Benutzer-Zugang \file{SuperUser}.
Neue Benutzer*innen können sich direkt mit dem \term{Mumble\/}-Server verbinden
und dann mittels des Menüpunktes "`Self"'\,\shorttextarrow\,"`Register"'
ihr beim Starten des \term{Mumble\/}-Clients erzeugtes
(oder von einem anderen Rechner importiertes)
Zertifikat mit dem aktuell verwendeten Benutzernamen verknüpfen.
Mit dem \term{Mumble\/}-Client kann der \file{SuperUser}-Zugang dann genutzt werden,
um die entsprechenden registrierten Personen
in eine neu erstellte privilegierte Gruppe (z.\,B.\ "`Lehrende"')
aufzunemen und diesen Rechte zu geben, die es ihnen z.\,B.\ ermöglichen,
störende Teilnehmer*innen eines Gesprächs ggf.\ stummzuschalten
oder auszuschließen.
\section{OpenMeetings}
Da die Installationsanleitungen für \term{OpenMeetings\/}
von der Installation auf einem Ubuntu-System ausgehen
und wir von anderen Software-Paketen her wissen,
daß für Ubuntu vorgesehene Software u.\,U.\ nur problematisch
auf einem Debian GNU/Linux zum Laufen zu bringen ist,
installieren wir \term{OpenMeetings\/} in einer eigens dafür erzeugten
virtuellen Maschine (VM), in unserem Fall auf Basis von \newterm{Xen}.
Die Erzeugung der virtuellen Maschine geschieht auf dem äußeren System
mittels:
\begin{lstlisting}[style=terminal]
xen-create-image --size=15Gb --swap=4096Mb --memory=4096Mb \
--maxmem=4096Mb --dist=bionic --ip=¡$IP¿ --no-pygrub \
--hostname=ubuntu-0$DOMAIN¿ --mirror=¡$UBUNTU_MIRROR¿
\end{lstlisting}
(\lstinline[style=cmd]{$UBUNTU_MIRROR} steht für die URL des
\file{packages}-Verzeichnisses eines Ubuntu-Spiegels;
\lstinline[style=cmd]{$IP} steht für die interne IP-Adresse der VM.)
Die hier beschriebene Installation folgt weitgehend der Anleitung
\begin{quote}
\vspace{-\bigskipamount}
\href{https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools?preview=/27838216/140774282/Installation%20OpenMeetings%205.0.0-M3%20on%20Ubuntu%2018.04%20LTS.pdf}%
{\nolinkurl{https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+}\\
\nolinkurl{installing+OpenMeetings+and+Tools?preview=/27838216/140774282/Installation}\hspace*{-1em}\\
\nolinkurl{\%20OpenMeetings\%205.0.0-M3\%20on\%20Ubuntu\%2018.04\%20LTS.pdf}}
\vspace{-\bigskipamount}
\end{quote}
mit dem Unterschied, daß \file{ffmpeg} nicht selbst kompiliert,
sondern aus den Paketquellen installiert wird.
\subsection{Kurento Media Server}
Der \newterm{Kurento-Media-Server\/} ist für die Verarbeitung von Medienströmen
(Audio-, Video- und Screensharing-Streams) notwendig und wird von
\term{OpenMeetings} verwendet. Damit Medienströme weitergeleitet werden können,
obwohl sich sowohl \term{OpenMeetings} als auch i.\,d.\,R.\ die Teilnehmenden hinter
einem NAT befinden, wird dieser so konfiguriert, dass er Zugriff auf
einen TURN-Server besitzt.
Dies geschieht durch Ergänzen der Zeile
\begin{lstlisting}[style=terminal]
turnURL=kurento:$TURN_PASSWORT@88.99.194.201:3478
\end{lstlisting}
in der Konfigurationsdatei \file{/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini}
auf dem Rechner, auf dem \term{OpenMeetings\/} läuft (hier: VM mit Ubuntu).
\subsection{Coturn}
Der für die Verwendung des \term{Kurento Media Server\/} hinter einem NAT
notwendige \newterm{TURN-Server\/} wird außerhalb einer VM direkt auf \file{dom0}
(siehe \url{https://en.wikipedia.org/wiki/Xen}) mittels
\lstinline[style=cmd]{apt install coturn} installiert.
Die verwendete Konfiguration befindet sich dort in der Datei
\file{/etc/turnserver.conf}:
\begin{lstlisting}[style=terminal]
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
user=kurento:¡$TURN_PASSWORT¿
realm=root-0.cvh-server.de
total-quota=100
stale-nonce
cert=/etc/ssl/le/fullchain.pem
pkey=/etc/ssl/le/privkey.pem
cipher-list="ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:
DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5"
no-loopback-peers
no-multicast-peers
verbose
\end{lstlisting}
(Der Wert von \lstinline[style=terminal]{cipher-list} ist ein durchgehender String
und darf in der Datei nicht umbrochen werden.
Dies geschieht hier nur notgedrungen aus Platzgründen.
\lstinline[style=cmd]{$TURN_PASSWORT} steht für das gewählte Passwort.)
\subsection{Raumkonfiguration}
Das Anlegen von Räumen und Benutzerkonten in \term{OpenMeetings}
erfolgt über die Web-Oberfläche.
Da wir keine einfache Möglichkeit gefunden haben,
die Lehrenden jeweils automatisch zu Moderatoren zu machen,
wurden diese jeweils über das unten wiedergegebene Shell-Skript
\file{/usr/local/sbin/give\_rights\_to\_all\_lecture\_rooms}
zu Moderatoren jeden Raumes ernannt.
Nach Anwendung ist in der Ubuntu-VM einmalig
\lstinline[style=cmd]{/etc/init.d/tomcat3 restart} auszuführen.
\begin{lstlisting}[style=terminal]
#!/bin/sh
(for user in ¡2 5 6 7 8 12 30 31 32 33 34 35¿; do
for room in ¡$(seq 21 32)¿; do
echo "insert into room_moderator (roomId, user_id) values ($room, $user);"
done
done) | mysql --database=open503 -B
\end{lstlisting}
Die Zahlen sind die Benutzer- bzw.\ Raum-IDs
in der SQL-Datenbank von \term{OpenMeetings\/}
und müssen Ihrer Installation entsprechend angepaßt werden.
\section{NoVNC}
Läuft auf main-1.cvh-server.de.
apt install mumble-server
Standardmäßig besetzt Mumble den Port 64738. Da ich zwei unabhängige
Server haben wollte, läuft auf der VM eine zweite Instanz auf Port
64739. Die Hardware auf der die VM läuft, hat zwei offizielle
IP-Adressen, dort wird das jeweils wieder nach außen unter Port 64738 angeboten.
## root-0:
root@jitsi:~# grep mumble /etc/iptables.rules
-A PREROUTING -d 88.99.194.201/32 -p tcp -m multiport --dports 1191,1935,8888,64738 -m comment --comment main-1,..,fex,mumble -j DNAT --to-destination 192.168.137.11
-A PREROUTING -s 130.180.23.228/30 -d 88.99.194.201/32 -p udp -m multiport --dports 5060,64738 -m comment --comment sip,mumble -j DNAT --to-destination 192.168.137.11
-A PREROUTING -d 88.99.194.245/32 -p tcp -m tcp --dport 64738 -m comment --comment second-0-mumble -j DNAT --to-destination 192.168.137.11:64739
-A PREROUTING -d 88.99.194.245/32 -p udp -m udp --dport 64738 -m comment --comment second-0-mumble -j DNAT --to-destination 192.168.137.11:64739
## Konfiguration auf main-0
Konfiguration der vorkonfigurierten Instanz geschieht durch /etc/mumble-server.ini.
Die Zweit-Instanz wird durch /etc/mumble-server2.ini konfiguriert. Ich habe zum Starten das Init-Skript kopiert und angepasst:
root@main-1:~# diff --unified /etc/init.d/mumble-server{,2}
--- /etc/init.d/mumble-server 2019-02-28 17:36:21.000000000 +0100
+++ /etc/init.d/mumble-server2 2020-03-17 13:59:37.916856121 +0100
@@ -1,7 +1,7 @@
#! /bin/sh
#
### BEGIN INIT INFO
-# Provides: mumble-server
+# Provides: mumble-server2
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $mysql dbus
@@ -13,7 +13,7 @@
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
-NAME=mumble-server
+NAME=mumble-server2
DESC="Mumble VoIP Server"
PIDDIR=/run/$NAME
PIDFILE=$PIDDIR/$NAME.pid
@@ -23,7 +23,7 @@
test -x $DAEMON || exit 0
-INIFILE=/etc/mumble-server.ini
+INIFILE=/etc/mumble-server2.ini
DAEMON_OPTS="-ini $INIFILE"
MURMUR_USE_CAPABILITIES=0
MURMUR_LIMIT_NOFILE=0
Wichtig: Es reicht nicht, die Angabe des PIDFILE dort anzupassen. Dies
muss auch in der ini-Datei passieren, wichtig ist es auch eine getrennte
Datenbank zu benutzen:
--- /etc/mumble-server.ini 2020-03-15 23:45:20.694309575 +0100
+++ /etc/mumble-server2.ini 2020-03-15 23:44:17.324835415 +0100
@@ -13,7 +13,7 @@
; Path to database. If blank, will search for
; murmur.sqlite in default locations or create it if not found.
-database=/var/lib/mumble-server/mumble-server.sqlite
+database=/var/lib/mumble-server/mumble-server2.sqlite
; Murmur defaults to using SQLite with its default rollback journal.
; In some situations, using SQLite's write-ahead log (WAL) can be
@@ -102,13 +102,13 @@
; logs to the file 'murmur.log'. If you leave this field blank
; on Unix-like systems, Murmur will force itself into foreground
; mode which logs to the console.
-logfile=/var/log/mumble-server/mumble-server.log
+logfile=/var/log/mumble-server/mumble-server2.log
; If set, Murmur will write its process ID to this file
; when running in daemon mode (when the -fg flag is not
; specified on the command line). Only available on
; Unix-like systems.
-pidfile=/run/mumble-server/mumble-server.pid
+pidfile=/run/mumble-server2/mumble-server2.pid
; The below will be used as defaults for new configured servers.
; If you're just running one server (the default), it's easier to
@@ -120,7 +120,7 @@
welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />"
; Port to bind TCP and UDP sockets to.
-port=64738
+port=64739
## Letsencrypt
Standardmäßig läuft Mumble mit einem selbst-signiertem Zertifikat, was
zu Warnmeldungen beim ersten Verbinden führt und dem damit verbundenen
Sicherheitsverlust. Die Erlangung eines entsprechenden Zertifikats wurde
bereits oben beschrieben. Um das Zertifikat und den Schlüssel für Mumble
zu nutzen, wird es mit dem folgenden Skript installiert:
root@main-1:~# cat /usr/local/sbin/letsencrypt-install-new-keys
#!/bin/sh
install -m 644 -o root -g mumble-server /etc/letsencrypt/live/mumble.cvh-server.de/fullchain.pem /var/lib/mumble-server/cert.pem
install -m 640 -o root -g mumble-server /etc/letsencrypt/live/mumble.cvh-server.de/privkey.pem /var/lib/mumble-server/privkey.pem
systemctl force-reload mumble-server
## Benutzerverwaltung
Zu Beginn existiert in Mumble lediglich der Benutzer SuperUser. Neue
Benutzer*innen können sich direkt mit dem Mumble-Server verbinden und
dann mittels des Menüpunktes Self->Register ihr beim Starten des
Mumble-Clients erzeugtes (oder von einem anderen Rechner importiertes)
Zertifikat mit dem aktuell verwendeten Benutzernamen verknüpfen.
Mit dem Mumble-Client kann der SuperUser dann genutzt werden, um die
entsprechenden Personen in eine neu erstellte privilegierte Gruppe
"lehrende" aufzunemen und diesen Rechte zu geben, die es z.B.
ermöglichen, störende Teilnehmer*innen eines Gesprächs ggf.
stummzuschalten oder auszuschließen.
# OpenMeetings
Da die Installationsanleitungen für OpenMeetings von der Installation
auf einem Ubuntu-System ausgehen und andere Softwarepakete (insb. ros)
gezeigt haben, dass für Ubuntu vorgesehene Software u.U. nur
problematisch auf einem Debian GNU/Linux zum Laufen zu bringen ist,
wurde hierfür eine VM auf Ubuntu-Basis installiert:
root@root-1:~# xen-create-image --size=15Gb --swap=4096Mb --memory=4096Mb --maxmem=4096Mb --dist=bionic --ip=192.168.137.90 --no-pygrub --hostname=ubuntu-0.cvh-server.de --mirror=http://mirror.hetzner.de/ubuntu/packages
Bei der Anleitung wurde im Wesentlichen
https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools?preview=/27838216/140774282/Installation%20OpenMeetings%205.0.0-M3%20on%20Ubuntu%2018.04%20LTS.pdf
gefolgt, allerdings wurde ffmpeg nicht selbst kompiliert, sondern aus
den Paketquellen installiert.
## Kurento Media Server
Der Kurento-Media-Server ist für die Verarbeitung von Medienströmen
(Audio-, Video- und Screensharing-Streams) notwendig und wird von
OpenMeetings verwendet. Damit Medienströme weitergeleitet werden können,
obwohl sich sowohl OpenMeetings als auch i.d.R. die Teilnehmenden hinter
einem NAT befinden, wird dieser so konfiguriert, dass er Zugriff auf
einen TURN-Server besitzt.
root@ubuntu-0:~# grep ^turnURL /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
turnURL=kurento:$TURN_PASSWORT@88.99.194.201:3478
### Coturn
Dieser TURN-Server wird außerhalb einer VM direkt auf dom0 (siehe
https://en.wikipedia.org/wiki/Xen) mittels 'apt install coturn'
installiert, die verwendete Konfiguration lautet:
root@root-1:~# cat /etc/turnserver.conf
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
user=kurento:$TURN_PASSWORT
realm=root-0.cvh-server.de
total-quota=100
stale-nonce
cert=/etc/ssl/le/fullchain.pem
pkey=/etc/ssl/le/privkey.pem
cipher-list="ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5"
no-loopback-peers
no-multicast-peers
verbose
## Raumkonfiguration
Räume und Benutzer wurden über die Weboberfläche angelegt, da keine
einfache Möglichkeit gefunden wurde, die Lehrenden jeweils automatisch
zu Moderatoren zu machen, wurden diese jeweils über ein Shellskript zu
Moderatoren jeden Raumes ernannt. Nach Anwendung ist einmalig
root@ubuntu-0:~# /etc/init.d/tomcat3 restart
auszuführen.
root@ubuntu-0:~# cat /usr/local/sbin/give_rights_to_all_lecture_rooms
#!/bin/sh
(for user in 2 5 6 7 8 12 30 31 32 33 34 35; do
for room in $(seq 21 32); do
echo "insert into room_moderator (roomId, user_id) values ($room, $user);"
done
done) | mysql --database=open503 -B
# NoVNC
\iffalse
Installation mittels 'apt install novnc'.
......@@ -662,7 +641,7 @@ zugegriffen werden.
\setlength{\leftskip}{3cm}
Stand: 11.\ April 2020
Stand: 12.\ April 2020
Copyright \copyright\ 2020\quad Peter Gerwinski\\
Lizenz: \mylicense
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment