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:
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:
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.