diff --git a/online-werkzeuge-admin.pdf b/online-werkzeuge-admin.pdf index 81888affd280014df863e3b3b2444bba9e60ed2a..7b55b5bc15c988ad16d713b83e464190133fd094 100644 Binary files a/online-werkzeuge-admin.pdf and b/online-werkzeuge-admin.pdf differ diff --git a/online-werkzeuge-admin.tex b/online-werkzeuge-admin.tex index 4c4ee8462dd9081ab462213035fbb40dcc720c6a..0a690f33421c73e38aa4395a93dc5f3378a7c7ad 100644 --- a/online-werkzeuge-admin.tex +++ b/online-werkzeuge-admin.tex @@ -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