So installierst du Apache Guacamole als Docker Container unter Ubuntu

Apache Guacamole ist eine kostenlose, quelloffene Remote-Desktop-Anwendung, mit der du über einen Webbrowser auf entfernte Desktop- und Server-Rechner zugreifen kannst. Sie unterstützt Standardprotokolle wie VNC, RDP und SSH und nutzt HTML5 für die Fernverbindung. Sie läuft auf den meisten Linux-Distributionen, und der Client läuft auf jedem modernen Webbrowser. Du brauchst keine Software auf deinem System zu installieren. Du kannst dich einfach mit jedem auf deinem Server definierten Remote-Server verbinden.

In diesem Beitrag zeigen wir dir, wie du den Apache Guacamole Server und Client mit Docker auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein Root-Passwort ist auf dem Server eingerichtet.

Installiere die Docker-Engine

Es ist immer empfehlenswert, die neueste Version von Docker auf deinem Server zu installieren.

Installiere zunächst die erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt install ca-certificates curl gnupg lsb-release -y

Nach der Installation aller Abhängigkeiten fügst du den Docker GPG-Schlüssel mit curl herunter laden und das Repository mit dem folgenden Befehl hinzu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Als Nächstes aktualisierst du das Repository und installierst das Docker-Engine-Paket mit dem folgenden Befehl:

apt update -y
apt install docker-ce docker-ce-cli containerd.io -y

Sobald die Installation abgeschlossen ist, überprüfe die Docker-Version mit folgendem Befehl:

docker --version

Du solltest die folgende Ausgabe erhalten:

Docker version 20.10.18, build b40c2f6

Docker Compose installieren

Du musst auch Docker Compose auf deinem Server installieren. Du kannst es mit dem folgenden Befehl installieren:

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Als Nächstes überprüfst du die Docker Compose Version mit dem folgenden Befehl:

docker-compose --version

Du erhältst die folgende Ausgabe:

docker-compose version 1.29.2, build 5becea4c

Apache Guacamole Server und Client herunterladen

Zuerst musst du das Apache Guacamole Server- und Client-Image von der Docker-Registry herunterladen.

Lade zunächst das Server-Image mit dem folgenden Befehl herunter:

docker pull guacamole/guacd

Du solltest die folgende Ausgabe sehen:

Using default tag: latest
latest: Pulling from guacamole/guacd
4b7b4a8876e2: Pull complete 
4e542e9cf89d: Pull complete 
9741340fbbb2: Pull complete 
96fa725029d6: Pull complete 
0f0a6df13f2a: Pull complete 
a4fa6e99a790: Pull complete 
07365dfaa371: Pull complete 
Digest: sha256:efdc09beba21e2c5d7c8c77e8c6b95ffd173d75645c9c41b6024f5b835d2a034
Status: Downloaded newer image for guacamole/guacd:latest
docker.io/guacamole/guacd:latest

Lade zunächst das Client-Image mit dem folgenden Befehl herunter:

docker pull guacamole/guacamole

Du solltest die folgende Ausgabe sehen:

Using default tag: latest
latest: Pulling from guacamole/guacamole
2b55860d4c66: Pull complete 
2ca45fc4c4ca: Pull complete 
0cd32add6672: Pull complete 
ac52cbbb8ca2: Pull complete 
7f7dc3a9f4cc: Pull complete 
5d7996a24402: Pull complete 
4819d3e4118d: Pull complete 
055afbac1f72: Pull complete 
23ee772344b7: Pull complete 
e44569de6126: Pull complete 
f7d7e8014b18: Pull complete 
Digest: sha256:8a8db8cf9f5359aa20547382213a42a720ea1c5fe86460ded727061e1995d9f2
Status: Downloaded newer image for guacamole/guacamole:latest
docker.io/guacamole/guacamole:latest

Als Nächstes überprüfst du die heruntergeladenen Images mit dem folgenden Befehl:

docker images

Du erhältst die folgende Ausgabe:

REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
guacamole/guacd       latest    4086ac9e35a7   9 hours ago    271MB
guacamole/guacamole   latest    959856a45436   10 hours ago   432MB

Apache Guacamole MySQL Container starten

Zunächst brauchst du mindestens einen Datenbankcontainer für die Apache Guacamole-Authentifizierung. Du kannst den MySQL-Container mit dem folgenden Befehl herunterladen und starten:

docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server

Du erhältst die folgende Ausgabe:

latest: Pulling from mysql/mysql-server
cdd8b07c6082: Pull complete 
c2f1720beca1: Pull complete 
39f143a8d6de: Pull complete 
118a8285b641: Pull complete 
b45cbcaf75c7: Pull complete 
d4574372e600: Pull complete 
1f565a3cbc52: Pull complete 
Digest: sha256:e30a0320f2e3c7b7ee18ab903986ada6eb1ce8e5ef29941b36ec331fae5f10b2
Status: Downloaded newer image for mysql/mysql-server:latest
c7a9309eac20a7d0bb6f0a16460bf2b678aae741c201efae8974ea64a3736595

Als Nächstes erstellst du ein Verzeichnis, in dem die Datenbank gespeichert wird:

mkdir -p /opt/guacamole/mysql

Erstelle das MySQL-Initialisierungsskript mit dem folgenden Befehl:

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql

Kopiere das Initialisierungsskript für die MySQL-Datenbank Guacamole in den MySQL-Docker-Container:

docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d

Als Nächstes verbindest du dich mit folgendem Befehl mit dem MySQL-Datenbankcontainer:

docker exec -it guacamoledb bash

Sobald du verbunden bist, erhältst du die folgende Shell:

bash-4.4# 

Als Nächstes listest du das MySQL-Initialisierungsskript mit dem folgenden Befehl auf:

cd /docker-entrypoint-initdb.d/
ls

Ausgabe:

01-initdb.sql

Als Nächstes verbindest du dich mit folgendem Befehl mit der MySQL-Shell:

mysql -u root -p

Als Nächstes wechselst du die Datenbank zu guacd und initialisierst die Guacamole-Datenbank:

use guacdb;
source 01-initdb.sql;

Als Nächstes überprüfst du alle Tabellen mit dem folgenden Befehl:

show tables;

Du erhältst die folgende Ausgabe:

+---------------------------------------+
| Tables_in_guacdb                      |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+

Als Nächstes erstellst du einen Benutzer admin und legst ein Passwort mit folgendem Befehl fest:

create user guacadmin@'%' identified by 'password';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';

Als Nächstes löschst du die Berechtigungen und verlässt die MySQL-Shell mit dem folgenden Befehl:

flush privileges;
exit;

Als Nächstes beendest du den MySQL-Container mit folgendem Befehl:

exit

Jetzt kannst du den laufenden Container mit folgendem Befehl überprüfen:

docker ps

Du solltest den MySQL-Container in der folgenden Ausgabe sehen:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS                   PORTS                       NAMES
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   2 minutes ago   Up 2 minutes (healthy)   3306/tcp, 33060-33061/tcp   guacamoledb

Du kannst auch die Logs des Containers mit dem folgenden Befehl überprüfen:

docker logs guacamoledb

Du erhältst die folgende Ausgabe:

[Entrypoint] Starting MySQL 8.0.30-1.2.9-server
2022-10-02T11:31:52.589985Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2022-10-02T11:31:52.592352Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 1
2022-10-02T11:31:52.602604Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-02T11:31:52.875859Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-02T11:31:53.131572Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-10-02T11:31:53.131639Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-10-02T11:31:53.163561Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-10-02T11:31:53.163648Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.30'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.

Guacamole Server Container starten

Führe nun den folgenden Befehl aus, um den Guacamole-Server-Container zu starten:

docker run --name guacamole-server -d guacamole/guacd

Du kannst die Containerprotokolle mit folgendem Befehl überprüfen:

docker logs --tail 10 guacamole-server

Du erhältst die folgende Ausgabe:

guacd[7]: INFO:	Guacamole proxy daemon (guacd) version 1.4.0 started
guacd[7]: INFO:	Listening on host 0.0.0.0, port 4822

Um den laufenden Container zu überprüfen, verwende den folgenden Befehl:

docker ps

Du erhältst die folgende Ausgabe:

CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                             PORTS                       NAMES
51b2efdab0db   guacamole/guacd      "/bin/sh -c '/usr/lo…"   26 seconds ago   Up 25 seconds (health: starting)   4822/tcp                    guacamole-server
c7a9309eac20   mysql/mysql-server   "/entrypoint.sh mysq…"   3 minutes ago    Up 3 minutes (healthy)             3306/tcp, 33060-33061/tcp   guacamoledb

Guacamole Client Container starten

Du kannst den Guacamole-Client-Container auch mit dem folgenden Befehl starten:

docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password -d -p 80:8080 guacamole/guacamole

Als Nächstes überprüfst du den laufenden Container mit dem folgenden Befehl:

docker ps

Du solltest die folgende Ausgabe sehen:

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                                 PORTS                                   NAMES
d4034a72bb69   guacamole/guacamole   "/opt/guacamole/bin/…"   58 seconds ago       Up 57 seconds                          0.0.0.0:80->8080/tcp, :::80->8080/tcp   guacamole-client
51b2efdab0db   guacamole/guacd       "/bin/sh -c '/usr/lo…"   About a minute ago   Up About a minute (health: starting)   4822/tcp                                guacamole-server
c7a9309eac20   mysql/mysql-server    "/entrypoint.sh mysq…"   5 minutes ago        Up 5 minutes (healthy)                 3306/tcp, 33060-33061/tcp               guacamoledb

Zu diesem Zeitpunkt ist der Guacamole-Container gestartet und lauscht auf Port 80. Du kannst das mit dem folgenden Befehl überprüfen:

ss -altnp | grep :80

Du erhältst die folgende Ausgabe:

LISTEN 0      4096         0.0.0.0:80        0.0.0.0:*    users:(("docker-proxy",pid=4006,fd=4))   
LISTEN 0      4096            [::]:80           [::]:*    users:(("docker-proxy",pid=4013,fd=4))   

Zugriff auf Apache Guacamole Dashboard

Du kannst jetzt auf die Apache Guacamole-Weboberfläche zugreifen, indem du die URL http://your-server-ip/guacamole verwendest . Du solltest den Anmeldebildschirm von Guacamole sehen:

Apacje Guacamole Remote Desktop

Gib die Standard-Anmeldedaten ein:

Benutzer: guacadmin

Passwort: guacadmin

Klicke dann auf die Schaltfläche Login. Auf dem folgenden Bildschirm solltest du das Guacamole-Dashboard sehen:

Verbindungsmanager

Fazit

Herzlichen Glückwunsch! Du hast den Apache Guacamole Server und Client mit Docker erfolgreich auf dem Ubuntu 22.04 Server installiert. Du kannst jetzt eine neue Verbindung erstellen und über einen Webbrowser auf den Remote-Server zugreifen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …