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

online-werkzeuge-admin: noVNC

parent 599a9834
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -28,6 +28,13 @@ ...@@ -28,6 +28,13 @@
\newcommand{\sep}{~$\cdot$~} \newcommand{\sep}{~$\cdot$~}
\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)} \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}, \lstdefinestyle{terminal}{basicstyle=\small\ttfamily\color{darkgreen},
language={}, language={},
columns=fixed, columns=fixed,
...@@ -467,7 +474,7 @@ ...@@ -467,7 +474,7 @@
(Audio-, Video- und Screensharing-Streams) notwendig und wird von (Audio-, Video- und Screensharing-Streams) notwendig und wird von
\term{OpenMeetings} verwendet. Damit Medienströme weitergeleitet werden können, \term{OpenMeetings} verwendet. Damit Medienströme weitergeleitet werden können,
obwohl sich sowohl \term{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, daß er Zugriff auf
einen TURN-Server besitzt. einen TURN-Server besitzt.
Dies geschieht durch Ergänzen der Zeile Dies geschieht durch Ergänzen der Zeile
...@@ -513,17 +520,16 @@ ...@@ -513,17 +520,16 @@
erfolgt über die Web-Oberfläche. erfolgt über die Web-Oberfläche.
Da wir keine einfache Möglichkeit gefunden haben, Da wir keine einfache Möglichkeit gefunden haben,
die Lehrenden jeweils automatisch zu Moderatoren zu machen, die Lehrenden jeweils automatisch zu Moderatoren ernennen zu lassen,
wurden diese jeweils über das unten wiedergegebene Shell-Skript werden diese jeweils über das hier wiedergegebene Shell-Skript
\file{/usr/local/sbin/give\_rights\_to\_all\_lecture\_rooms} \file{/usr/local/sbin/give\_rights\_to\_all\_lecture\_rooms}
zu Moderatoren jeden Raumes ernannt. 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] \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} \end{lstlisting}
...@@ -531,20 +537,26 @@ ...@@ -531,20 +537,26 @@
in der SQL-Datenbank von \term{OpenMeetings\/} in der SQL-Datenbank von \term{OpenMeetings\/}
und müssen Ihrer Installation entsprechend angepaßt werden. und müssen Ihrer Installation entsprechend angepaßt werden.
\section{NoVNC} Nach Anwendung ist in der Ubuntu-VM einmalig
\lstinline[style=cmd]{/etc/init.d/tomcat3 restart} auszuführen.
\iffalse \section{NoVNC}
Installation mittels 'apt install novnc'. Wir installieren zunächst \term{noVNC\/} mittels
\lstinline[style=cmd]{apt install novnc}.
## systemd \subsection{systemd}
Um mehrere Räume bereitstellen zu können, wird ein entsprechendes Skript Um mehrere Räume bereitstellen zu können,
für systemd geschrieben. Dies lässt NoVNC dauerhaft laufen, alternativ wird ein entsprechendes Skript für \file{systemd} geschrieben.
wäre auch eine Aktivierung beim Kontaktaufbau zum entsprechenden Mit dieser Methode läuft \term{noVNC\/} dauerhaft im Hintergrund.
TCP-Socket denkbar. (Alternativ wäre auch eine Aktivierung
beim Kontaktaufbau zum entsprechenden TCP-Socket denkbar.)
root@main-0:~# cat /etc/systemd/system/novnc@.service 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] [Unit]
Description = start noVNC service %i Description = start noVNC service %i
After=syslog.target network.target After=syslog.target network.target
...@@ -556,25 +568,42 @@ ExecStart = /usr/local/sbin/hsbo_novnc %i ...@@ -556,25 +568,42 @@ ExecStart = /usr/local/sbin/hsbo_novnc %i
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
\end{lstlisting}
root@main-0:~# cat /usr/local/sbin/hsbo_novnc 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 #!/bin/bash
i=$1; shift i=$1; shift
exec /usr/share/novnc/utils/launch.sh --listen $((6080 + $i)) --vnc localhost:$((5900 + $i)) $* exec /usr/share/novnc/utils/launch.sh --listen $((6080 + $i)) \
--vnc localhost:$((5900 + $i)) $*
Wir wollen 13 Instanzen, diese werden mittels \end{lstlisting}
root@main-0:~# for i in $(seq 0 12); do systemctl start novnc@$i; systemctl enable novnc@$i;done In unserem Beispiel starten wir 13 Instanzen von \term{noVNC},
gestartet und dauerhaft aktiviert (sodass sie nach einem Reboot wieder zur Verfügung stehen). durchnumeriert von 0 bis 12.
Die Nummern sind gleichzeitig die Nummern der VNC-Server,
auf die \term{noVNC\/} als VNC-Client zugreift.
## Apache 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.
NoVNC soll hinter einem Apache-Proxy bleiben. Zur Kommunikation werden WSS (secure Websockets) benötigt. \subsection{Apache}
Daher müssen mittels 'a2enmod proxy_wstunnel proxy_http' die entsprechenden Module aktiviert werden.
Die entsprechende Apache-Konfiguration sieht so aus, die Verbindungen sollen grundsätzlich verschlüsselt passieren: \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.
root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf 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> <VirtualHost _default_:80>
ServerAdmin webmaster@cvh-server.de ServerAdmin webmaster@cvh-server.de
ServerName novnc.cvh-server.de ServerName novnc.cvh-server.de
...@@ -585,7 +614,6 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf ...@@ -585,7 +614,6 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf
ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log ErrorLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-error.log
LogLevel warn LogLevel warn
CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
</VirtualHost> </VirtualHost>
<VirtualHost _default_:443 _default_:8443> <VirtualHost _default_:443 _default_:8443>
...@@ -601,8 +629,9 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf ...@@ -601,8 +629,9 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf
ProxyPass /websock/1/ ws://localhost:6081/websockify ProxyPass /websock/1/ ws://localhost:6081/websockify
ProxyPassReverse /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 ProxyPass /websock/12/ ws://localhost:6092/websockify
ProxyPassReverse /websock/12/ ws://localhost:6092/websockify ProxyPassReverse /websock/12/ ws://localhost:6092/websockify
...@@ -614,18 +643,26 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf ...@@ -614,18 +643,26 @@ root@main-0:~# cat /etc/apache2/sites-enabled/novnc.cvh-server.de.conf
CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined CustomLog ${APACHE_LOG_DIR}/novnc.cvh-server.de-access.log combined
SSLEngine on SSLEngine on
</VirtualHost> </VirtualHost>
\end{lstlisting}
Dadurch wird sichergestellt, daß grundsätzlich alle Verbindungen
verschlüsselt werden.
Auf die einzelnen VNC-Kanäle kann jetzt über URLs der Form
Auf die einzelnen Räume kann jetzt über URLs der Form \begin{lstlisting}
¡¿https://novnc.¡$DOMAIN¿/vnc.html?host=novnc.¡$DOMAIN¿&port=443
https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/0/&reconnect=1&resize=scale &path=websock/¡$CHANNEL¿/&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 \end{lstlisting}
https://novnc.cvh-server.de/vnc.html?host=novnc.cvh-server.de&port=443&path=websock/12/&reconnect=1&resize=scale
zugegriffen werden. 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.)
\fi 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.)} \emph{(Fortsetzung folgt.)}
...@@ -641,7 +678,7 @@ zugegriffen werden. ...@@ -641,7 +678,7 @@ zugegriffen werden.
\setlength{\leftskip}{3cm} \setlength{\leftskip}{3cm}
Stand: 12.\ April 2020 Stand: 13.\ 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