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