Skip to content
Snippets Groups Projects
Commit 19aa689d authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

online-werkzeuge-admin.pdf: Mumble, OpenMeetings

parent bf98e986
Branches
No related tags found
No related merge requests found
No preview for this file type
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
moredelim=**[is][\color{blendedblue}]{°}{¿}, moredelim=**[is][\color{blendedblue}]{°}{¿},
moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}} moredelim=**[is][\sffamily\it\lstset{columns=fullflexible}]{²}{¿}}
\newcommand{\shorttextarrow}{{\boldmath $\rightarrow$}}
\begin{document} \begin{document}
\makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill \makebox(0,0.005)[tl]{\includegraphics[scale=0.72]{logo-hochschule-bochum-cvh-text-v2.pdf}}\hfill
...@@ -363,198 +365,175 @@ ...@@ -363,198 +365,175 @@
\begin{lstlisting}[style=cmd] \begin{lstlisting}[style=cmd]
iptables -I INPUT -p udp --dport 53 -j ACCEPT iptables -I INPUT -p udp --dport 53 -j ACCEPT
\end{lstlisting} \end{lstlisting}
kurzzeitig die Abfrage von \file{bind} von außen erlaubt. die Abfrage von \file{bind} von außen erlaubt.
\section{Mumble} \section{Mumble}
\iffalse Der Rechner, auf dem der \term{Mumble\/}-Server läuft,\\
ist in diesem Beispiel ebenfalls \file{main-1.\$DOMAIN}.
Läuft auf main-1.cvh-server.de.
apt install mumble-server
Standardmäßig besetzt Mumble den Port 64738. Da ich zwei unabhängige Die Installation erfolgt mittels:
Server haben wollte, läuft auf der VM eine zweite Instanz auf Port \lstinline[style=cmd]{apt install mumble-server}
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: \term{Mumble\/} besetzt (standardmäßig) den Port 64738.\\
root@jitsi:~# grep mumble /etc/iptables.rules Diesen müssen wir auf der Firewall freigeben.
-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 Der \term{Mumble\/}-Servers ist vorkonfiguriert (Datei: \file{/etc/mumble-server.ini}).
Konfiguration der vorkonfigurierten Instanz geschieht durch /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.
Die Zweit-Instanz wird durch /etc/mumble-server2.ini konfiguriert. Ich habe zum Starten das Init-Skript kopiert und angepasst: \subsection{Server-Zertifikat}
root@main-1:~# diff --unified /etc/init.d/mumble-server{,2} Standardmäßig läuft \term{Mumble\/} mit einem selbst-signierten Zertifikat.
--- /etc/init.d/mumble-server 2019-02-28 17:36:21.000000000 +0100 Dies führt zu einem Verlust an Sicherheit und zu Warnmeldungen beim ersten Verbinden.
+++ /etc/init.d/mumble-server2 2020-03-17 13:59:37.916856121 +0100 Um optimale Sicherheit zu gewährleisten,
@@ -1,7 +1,7 @@ installieren wir stattdessen das mit \term{Let's Encrypt} erzeugte Zertifikat (siehe oben)
#! /bin/sh zusammen mit dem Schlüssel für \term{Mumble}.
# Dies geschieht mit Hilfe eines Shell-Skripts
### BEGIN INIT INFO \file{/usr/local/sbin/letsencrypt-install-new-keys}:
-# Provides: mumble-server \begin{lstlisting}[style=terminal]
+# 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 #!/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 644 -o root -g mumble-server \
install -m 640 -o root -g mumble-server /etc/letsencrypt/live/mumble.cvh-server.de/privkey.pem /var/lib/mumble-server/privkey.pem /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 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.)
## Benutzerverwaltung \subsection{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 Die Benutzerverwaltung in \term{Mumble\/} erfolgt
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 komplett innerhalb der Client-Software.
gefolgt, allerdings wurde ffmpeg nicht selbst kompiliert, sondern aus
den Paketquellen installiert.
## Kurento Media Server 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.
Der Kurento-Media-Server ist für die Verarbeitung von Medienströmen 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 (Audio-, Video- und Screensharing-Streams) notwendig und wird von
OpenMeetings verwendet. Damit Medienströme weitergeleitet werden können, \term{OpenMeetings} verwendet. Damit Medienströme weitergeleitet werden können,
obwohl sich sowohl OpenMeetings als auch i.d.R. die Teilnehmenden hinter obwohl sich sowohl \term{OpenMeetings} als auch i.\,d.\,R.\ die Teilnehmenden hinter
einem NAT befinden, wird dieser so konfiguriert, dass er Zugriff auf einem NAT befinden, wird dieser so konfiguriert, dass er Zugriff auf
einen TURN-Server besitzt. einen TURN-Server besitzt.
root@ubuntu-0:~# grep ^turnURL /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini Dies geschieht durch Ergänzen der Zeile
\begin{lstlisting}[style=terminal]
turnURL=kurento:$TURN_PASSWORT@88.99.194.201:3478 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).
### Coturn \subsection{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 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 listening-port=3478
tls-listening-port=5349 tls-listening-port=5349
fingerprint fingerprint
lt-cred-mech lt-cred-mech
user=kurento:$TURN_PASSWORT user=kurento:¡$TURN_PASSWORT¿
realm=root-0.cvh-server.de realm=root-0.cvh-server.de
total-quota=100 total-quota=100
stale-nonce stale-nonce
cert=/etc/ssl/le/fullchain.pem cert=/etc/ssl/le/fullchain.pem
pkey=/etc/ssl/le/privkey.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" 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-loopback-peers
no-multicast-peers no-multicast-peers
verbose verbose
\end{lstlisting}
## Raumkonfiguration (Der Wert von \lstinline[style=terminal]{cipher-list} ist ein durchgehender String
und darf in der Datei nicht umbrochen werden.
Räume und Benutzer wurden über die Weboberfläche angelegt, da keine Dies geschieht hier nur notgedrungen aus Platzgründen.
einfache Möglichkeit gefunden wurde, die Lehrenden jeweils automatisch \lstinline[style=cmd]{$TURN_PASSWORT} steht für das gewählte Passwort.)
zu Moderatoren zu machen, wurden diese jeweils über ein Shellskript zu
Moderatoren jeden Raumes ernannt. Nach Anwendung ist einmalig \subsection{Raumkonfiguration}
root@ubuntu-0:~# /etc/init.d/tomcat3 restart
auszuführen. Das Anlegen von Räumen und Benutzerkonten in \term{OpenMeetings}
erfolgt über die Web-Oberfläche.
root@ubuntu-0:~# cat /usr/local/sbin/give_rights_to_all_lecture_rooms
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 #!/bin/sh
(for user in 2 5 6 7 8 12 30 31 32 33 34 35; do (for user in ¡2 5 6 7 8 12 30 31 32 33 34 35¿; do
for room in $(seq 21 32); do for room in ¡$(seq 21 32)¿; do
echo "insert into room_moderator (roomId, user_id) values ($room, $user);" echo "insert into room_moderator (roomId, user_id) values ($room, $user);"
done done
done) | mysql --database=open503 -B 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}
# NoVNC \iffalse
Installation mittels 'apt install novnc'. Installation mittels 'apt install novnc'.
...@@ -662,7 +641,7 @@ zugegriffen werden. ...@@ -662,7 +641,7 @@ zugegriffen werden.
\setlength{\leftskip}{3cm} \setlength{\leftskip}{3cm}
Stand: 11.\ April 2020 Stand: 12.\ April 2020
Copyright \copyright\ 2020\quad Peter Gerwinski\\ Copyright \copyright\ 2020\quad Peter Gerwinski\\
Lizenz: \mylicense Lizenz: \mylicense
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment