diff --git a/online-werkzeuge-admin.pdf b/online-werkzeuge-admin.pdf
index 7b55b5bc15c988ad16d713b83e464190133fd094..9d4d5a728fc3d610ed0385e6f48615d9cdf10123 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 0a690f33421c73e38aa4395a93dc5f3378a7c7ad..c52aa4c6b7211a173f076ee2e402fc7f5f748036 100644
--- a/online-werkzeuge-admin.tex
+++ b/online-werkzeuge-admin.tex
@@ -28,6 +28,13 @@
 \newcommand{\sep}{~$\cdot$~}
 \newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)}
 
+\lstset{basicstyle=\color{blendedblue},
+        language=bash,
+        captionpos=b,
+        gobble=4,
+        xleftmargin=1em,
+        columns=fullflexible,
+        moredelim=**[is][\color{darkred}]{¡}{¿}}
 \lstdefinestyle{terminal}{basicstyle=\small\ttfamily\color{darkgreen},
                           language={},
                           columns=fixed,
@@ -467,7 +474,7 @@
   (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
+  einem NAT befinden, wird dieser so konfiguriert, daß er Zugriff auf
   einen TURN-Server besitzt.
 
   Dies geschieht durch Ergänzen der Zeile
@@ -513,119 +520,149 @@
   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
+  die Lehrenden jeweils automatisch zu Moderatoren ernennen zu lassen,
+  werden diese jeweils über das hier 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.
+  zu Moderatoren jeden Raumes ernannt:
   \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
+       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}
-
-\iffalse
-
-Installation mittels 'apt install novnc'.
-
-## systemd
-
-Um mehrere Räume bereitstellen zu können, wird ein entsprechendes Skript
-für systemd geschrieben. Dies lässt NoVNC dauerhaft laufen, alternativ
-wäre auch eine Aktivierung beim Kontaktaufbau zum entsprechenden
-TCP-Socket denkbar.
-
-root@main-0:~# cat /etc/systemd/system/novnc@.service
-[Unit]
-Description = start noVNC service %i
-After=syslog.target network.target
-
-[Service]
-Type=simple
-User=novnc
-ExecStart = /usr/local/sbin/hsbo_novnc %i
-
-[Install]
-WantedBy=multi-user.target
-
-root@main-0:~# cat /usr/local/sbin/hsbo_novnc
-#!/bin/bash
+  Nach Anwendung ist in der Ubuntu-VM einmalig
+  \lstinline[style=cmd]{/etc/init.d/tomcat3 restart} auszuführen.
 
-i=$1; shift
-exec /usr/share/novnc/utils/launch.sh --listen $((6080 + $i)) --vnc localhost:$((5900 + $i)) $*
+  \section{NoVNC}
 
-Wir wollen 13 Instanzen, diese werden mittels
-root@main-0:~# for i in $(seq 0 12); do systemctl start novnc@$i; systemctl enable novnc@$i;done
-gestartet und dauerhaft aktiviert (sodass sie nach einem Reboot wieder zur Verfügung stehen).
+  Wir installieren zunächst \term{noVNC\/} mittels
+  \lstinline[style=cmd]{apt install novnc}.
 
-## Apache
+  \subsection{systemd}
 
-NoVNC soll hinter einem Apache-Proxy bleiben. Zur Kommunikation werden WSS (secure Websockets) benötigt.
-Daher müssen mittels 'a2enmod proxy_wstunnel proxy_http' die entsprechenden Module aktiviert werden.
+  Um mehrere Räume bereitstellen zu können,
+  wird ein entsprechendes Skript für \file{systemd} geschrieben.
+  Mit dieser Methode läuft \term{noVNC\/} dauerhaft im Hintergrund.
+  (Alternativ wäre auch eine Aktivierung
+  beim Kontaktaufbau zum entsprechenden TCP-Socket denkbar.)
 
-Die entsprechende Apache-Konfiguration sieht so aus, die Verbindungen sollen grundsätzlich verschlüsselt passieren:
+  Das \file{systemd}-Skript wird auf dem Rechner \file{main-0},
+  auf dem \term{noVNC\/} läuft,
+  in der Datei \file{/etc/systemd/system/novnc@.service} abgelegt:
+  \begin{lstlisting}[style=terminal]
+    [Unit]
+    Description = start noVNC service %i
+    After=syslog.target network.target
 
-root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf
-<VirtualHost _default_:80>
-        ServerAdmin webmaster@cvh-server.de
-        ServerName novnc.cvh-server.de
-        ServerAlias www.novnc.cvh-server.de
+    [Service]
+    Type=simple
+    User=novnc
+    ExecStart = /usr/local/sbin/hsbo_novnc %i
 
-        Redirect / https://novnc.cvh-server.de/
+    [Install]
+    WantedBy=multi-user.target
+  \end{lstlisting}
+  Das \file{systemd}-Skript ruft ein Shell-Skript \file{hsbo\_novnc} auf,
+  das sich im Verzeichnis \file{/usr/local/sbin/hsbo\_novnc} befindet
+  und das eigentliche Launch-Skript von \term{noVNC\/} aufruft:
+  \begin{lstlisting}
+    #!/bin/bash
 
-        ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log
-        LogLevel warn
-        CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
+    i=$1; shift
+    exec /usr/share/novnc/utils/launch.sh --listen $((6080 + $i)) \
+         --vnc localhost:$((5900 + $i)) $*
+  \end{lstlisting}
+  In unserem Beispiel starten wir 13 Instanzen von \term{noVNC},
+  durchnumeriert von 0 bis 12.
+  Die Nummern sind gleichzeitig die Nummern der VNC-Server,
+  auf die \term{noVNC\/} als VNC-Client zugreift.
 
-</VirtualHost>
+  Mit dem Shell-Befehl
+  \begin{lstlisting}[style=cmd]
+    for i in $(seq 0 12); do \
+      systemctl start novnc@$i; \
+      systemctl enable novnc@$i; \
+    done
+  \end{lstlisting}
+  starten wir diese 13 Instanzen und aktivieren sie dauerhaft,
+  so daß sie nach einem Reboot wieder zur Verfügung stehen.
 
-<VirtualHost _default_:443 _default_:8443>
-        ServerAdmin webmaster@cvh-server.de
-        ServerName novnc.cvh-server.de
-        ServerAlias www.novnc.cvh-server.de
+  \subsection{Apache}
 
-        ProxyPass /websockify ws://localhost:6080/websockify
-        ProxyPassReverse /websockify ws://localhost:6080/websockify
+  \term{noVNC\/} soll hinter einem Apache-Proxy bleiben.
+  Zur Kommunikation werden WSS (secure Websockets) benötigt.
+  Daher müssen mittels \lstinline[style=cmd]{a2enmod proxy_wstunnel proxy_http}
+  die entsprechenden Module aktiviert werden.
 
-        ProxyPass /websock/0/ ws://localhost:6080/websockify
-        ProxyPassReverse /websock/0/ ws://localhost:6080/websockify
+  Die entsprechende Apache-Konfiguration erfolgt in der Konfigurationsdatei
+  \file{/etc/apache2/sites-enabled/novnc.cvh-server.de.conf}:
+  \begin{lstlisting}[style=terminal]
+    <VirtualHost _default_:80>
+      ServerAdmin webmaster@cvh-server.de
+      ServerName novnc.cvh-server.de
+      ServerAlias www.novnc.cvh-server.de
 
-        ProxyPass /websock/1/ ws://localhost:6081/websockify
-        ProxyPassReverse /websock/1/ ws://localhost:6081/websockify
+      Redirect / https://novnc.cvh-server.de/
 
-…
-        ProxyPass /websock/12/ ws://localhost:6092/websockify
-        ProxyPassReverse /websock/12/ ws://localhost:6092/websockify
+      ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log
+      LogLevel warn
+      CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
+    </VirtualHost>
 
-        ProxyPass / http://localhost:6080/
-	ProxyPassReverse / http://localhost:6080/
+    <VirtualHost _default_:443 _default_:8443>
+      ServerAdmin webmaster@cvh-server.de
+      ServerName novnc.cvh-server.de
+      ServerAlias www.novnc.cvh-server.de
 
-        ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log
-        LogLevel warn
-        CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
-        SSLEngine on
-</VirtualHost>
+      ProxyPass /websockify ws://localhost:6080/websockify
+      ProxyPassReverse /websockify ws://localhost:6080/websockify
 
+      ProxyPass /websock/0/ ws://localhost:6080/websockify
+      ProxyPassReverse /websock/0/ ws://localhost:6080/websockify
 
-Auf die einzelnen Räume kann jetzt über URLs der Form
+      ProxyPass /websock/1/ ws://localhost:6081/websockify
+      ProxyPassReverse /websock/1/ ws://localhost:6081/websockify
+  \end{lstlisting}
+  [\,\dots]
+  \begin{lstlisting}[style=terminal]
+      ProxyPass /websock/12/ ws://localhost:6092/websockify
+      ProxyPassReverse /websock/12/ ws://localhost:6092/websockify
 
-https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/0/&reconnect=1&resize=scale
-https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/1/&reconnect=1&resize=scale
-…
-https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/12/&reconnect=1&resize=scale
+      ProxyPass / http://localhost:6080/
+      ProxyPassReverse / http://localhost:6080/
 
-zugegriffen werden.
+      ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log
+      LogLevel warn
+      CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
+      SSLEngine on
+    </VirtualHost>
+  \end{lstlisting}
+  Dadurch wird sichergestellt, daß grundsätzlich alle Verbindungen
+  verschlüsselt werden.
 
-  \fi
+  Auf die einzelnen VNC-Kanäle kann jetzt über URLs der Form
+  \begin{lstlisting}
+    ¡¿https://novnc.¡$DOMAIN¿/vnc.html?host=novnc.¡$DOMAIN¿&port=443
+      &path=websock/¡$CHANNEL¿/&reconnect=1&resize=scale
+  \end{lstlisting}
+  zugegriffen werden.
+  (\lstinline[style=cmd]{$CHANNEL} steht für die Nummer des VNC-Kanals.
+  Der Umbruch in der URL geschieht hier nur aus Platzgründen
+  und darf natürlich nicht in dieser Form übernommen werden.)
+
+  Die Optionen \lstinline{&reconnect=1&resize=scale}
+  bewirken eine Vorkonfiguration des \term{noVNC\/}-Clients,
+  daß er sich bei Verbindungsabbruch automatisch wiederverbinden soll
+  und daß er das VNC-Bild auf die Größe des Browser-Fensters skalieren soll.
+  Diese Konfiguration läßt sich während der Benutzung von \term{noVNC\/}
+  ändern (Icon: Zahnrad-Symbol).
 
   \emph{(Fortsetzung folgt.)}
 
@@ -641,7 +678,7 @@ zugegriffen werden.
 
     \setlength{\leftskip}{3cm}
 
-    Stand: 12.\ April 2020
+    Stand: 13.\ April 2020
 
     Copyright \copyright\ 2020\quad Peter Gerwinski\\
     Lizenz: \mylicense