Guacamole mit Docker
Aus
Guacamole int ein Client-loses Remote Desktop Gateway. Es ist ein HTML5 basierender, auf Tomcat installierter Webserver, mit dem man über einen Webbrowser auf einen VNC/RDP/SSH Server zugreifen kann.
Wer also keinen VNC/RDP-Client installieren darf und/oder hinter einer Firewall sitzt die nur Port 80/443 durchlässt, für den ist Guacamole genau das richtige! Hier zeige ich euch wie Ihr es mittels Docker auf eure DiskStation installiert.
DSM Vorbereitungen
Voraussetzungen
- DSM >= 6.0 (Docker gibt es auch schon ab DSM 5.2. Damit habe ich es aber nicht probiert
- und ich garantiere nicht, das diese Anleitung damit funktioniert!)
- Docker >= 1.11.2 (selbes gilt hier!)
- MySQL/MariaDB >= 5.5 (Entweder über das Paket-Zentrum oder als Docker-Container)
- eure DS sollte mind. 1GB RAM haben (sehr oft empfohlen, beim Installieren von Docker auf der DS)
- empfehlen würde ich aber eher 2GB und davon sollten ca. 400MB frei sein!
- phpMyAdmin >= 4.1 (Nur für die Installation wichtig, kann anschließend entfernt werden)
- ein bisschen Verständnis wie phpMyAdmin und MySQL funktioniert!
- Ich erkläre zwar alles sehr ausführlich, übernehme aber keine Haftung für Leute, die mittels
- phpMyAdmin irgendwelche produktiv Datenbanken zerschießen
Pakete aus dem Paket-Zentrum laden und installieren
- Docker
- phpMyAdmin (Nur für die Installation von Guacamole wichtig, kann dannach wieder deinstalliert werden!)
- MariaDB
Hinweis: Ich nutze MariaDB aus dem Paket-Zentrum, da dieser MySQL Fork nur ca. 15MB RAM verbraucht und äußerst sparsam läuft. Wer MySQL/MariaDB oder dessen Forks mittels Docker installiert benötigt nochmal ca. 150MB bis teilweise weit über 300MB mehr RAM, als die oben genannten 400 MB, je nach Version! Wem das egal ist und weil er evtl. die Datenbank von einer anderen (produktiven) trennen will, der kann auch gerne einen Docker-Container dafür benutzen!" Erklären werde ich bei diesem Weg ganz unten lediglich, auf was man zu achten hat und welche Parameter man für den Docker-Container braucht aber keine vollständige Anleitung dafür schreiben!
MariaDB für Guacamole vorbereiten
- Als erstes gehen wir auf die Offizielle Webseite von Guacamole und laden uns das
- Guacamole Schema für die MySQL-Datenbank herunter.
- https://guacamole.incubator.apache.org/releases/
- Dort auf die Version klicken, die wir später installieren wollen.
- Ich installiere die derzeit neuste Version 1.1.0
- Hier laden wir die Datei "guacamole-auth-jdbc-1.1.0.tar.gz" herunter
- Wir entpacken die heruntergeladene Datei "guacamole-auth-jdbc-1.0.0.tar.gz'"
- Für das weitere Vorgehen benötigen wir die beiden Dateien:
- guacamole-auth-jdbc-1.1.0/mysql/schema/001-create-schema.sql
- guacamole-auth-jdbc-1.1.0/mysql/schema/002-create-admin-user.sql
- Beim installieren von MariaDB über das Paket-Zentrum musstet ihr ein root-Passwort festlegen,
- dass wir hier noch des öfteren brauchen. Wer das vergessen hat kann über die DSM
- MariaDB aufrufen und über "MariaDB-Passwort ändern" und dann "MariaDB-Passwort zurücksetzen"
- ein neues root-Passwort setzen!
- Jetzt öffnen wir phpMyAdmin mit "http: //<IP eurer DS>/phpMyAdmin"
- Dort melden wir uns als Benutzer "root" mit dem MariaDB-root-Passwort an
- Wir klicken oben auf "Benutzerkonten" und anschließend auf "Benutzerkonto hinzufügen"
- Benutzerkonto: guacamole
- Passwort: <neues Passwort für den MariaDB-guacamole-Benutzer ausdenken>
- (Dieses kann ruhig ein komplexes Passwort sein. Es wird lediglich von Guacamole als MariaDB
- Login verwendet, um in die Datenbank zu schreiben. Es wird von uns als Benutzer nie eingegeben!
- Im weiteren Verlauf nenne ich es "guacamole_mariadb_password")
- Hacken setzen bei: "Erstelle eine Datenbank mit gleichem Namen und gewähre alle Rechte."
- Auf OK klicken. Oben erscheint eine grüne Meldung "Der Benutzer wurde hinzugefügt."
- Nun klicken wir auf die neu erstellte Datenbank "guacamole" links und anschließend auf
- "Operationen" oben.
- Hier prüfen wir ob die Kollation auf "utf8_general_ci" steht. Wenn nicht, dann so einstellen!
- Jetzt importieren wir das vorher geladene Guacamole Datenbank Schema
- Wir klicken wieder links auf die Datenbank "guacamole" und oben auf "Importieren"
- Jetzt wählen wir über "Datei auswählen" erst die Datei "001-create-schema.sql" aus.
- Wir lassen an sonnsten alles so wie es ist und klicken OK
- Es sollte eine Meldung "Der Import wurde erfolgreich abgeschlossen..." erscheinen.
- Jetzt importieren wir noch die andere Datei "002-create-admin-user.sql" genauso
- Wir schließen phpMyAdmin und die MariaDB ist nun für Guacamole vorbereitet!
Guacamole mit Docker
- Wir öffnen Docker über das DSM
- links klicken wir auf "Registrierung"
- Hier suchen wir nach "guacamole" und laden uns:
- "guacamole/guacamole" in der Version "latest"
- Ebenfalls suchen wir nach "guacd" und laden uns:
- "guacamole/guacd" in der Version "latest"
- (bei mir entspricht latest derzeit der Version 1.1.0. Wenn Ihr latest wählt müsst Ihr schauen, das die Version auch zum Schema der Datenbank passt !!!)
- Beide Abbilder sollten nun links bei "Abbild" erscheinen
- Hier klicken wir als erstes auf das Abbild "guacamole/guacd:latest" und anschließend oben auf "Starten"
- In dem jetzt sich öffnenden Assistenten stellen wir folgendes ein:
- Containername: guacd
- Erweiterte Einstellungen:
- Automatischen Neustart aktivieren: EIN
- Port-Einstellungen:
- Lokaler Port: von "Automatisch" auf 4822 ändern
Lokaler Port Container Port Typ 4822 4822 tcp
- Der Rest bleibt unverändert
- Ein OK, WEITER und ÜBERNEHMEN erstellt nun den Container
- Jetzt Starten wir als nächstes das Abbild "guacamole/guacamole:latest"
- In dem jetzt sich öffnenden Assistenten stellen wir folgendes ein:
- Containername: guacamole
- Erweiterte Einstellungen:
- Automatischen Neustart aktivieren: EIN
- Port-Einstellungen:
- Lokaler Port: von "Automatisch" auf 8080 ändern
Lokaler Port Container Port Typ 8080 8080 tcp
- Falls dieser Port belegt sein sollte könnt Ihr hier auch einen anderen Lokalen Port wählen!
- Dies wird der Port sein, mit dem Ihr schlussendlich auf Guacamole zugreift.
- Weil unsere DS sowieso noch hinter einem Router steht, können wir diesen später ja noch umleiten, wie
- wir es brauchen! (Zum Beispiel 80 oder 443)
- Links:
Containername Aliasname guacd guacd
- Umwelt:
Variable Wert MYSQL_HOSTNAME <IP eurer DS> MYSQL_PORT 3306 MYSQL_DATABASE guacamole MYSQL_USER guacamole MYSQL_PASSWORD <guacamole_mysql_password>
- (Den MySQL/MariaDB-Port solltet ihr vorher herausfinden. Dieser kann unter Umständen auch 3307 sein!)
- Der Rest bleibt unverändert
- Ein OK, WEITER und ÜBERNEHMEN erstellt nun den Container
- Das wars! Links unter "Container" sollten nun beide Container laufen
- Falls Ihr in eurer DSM die Firewall aktiviert habt, müsst ihr eine Regel auf eurer Schnittstelle
- konfigurieren, die beide Container (beide Ports, also 4822 und 8080) zulässt.
- Anschließend muss der Container "guacamole" neugestartet werden!
- Hinweis: Der Container "guacd" muss immer laufen, bevor Ihr den Container "guacamole" startet,
- ebenso wie die Datenbank, falls ihr diese auch per Container betreibt!
- Jetzt sollte man sich über "http: //<IP eurer DS>:8080/guacamole/"
- an Guacamole anmelden können.
- Der Guacamole Admin und dessen Standard-Passwort lauten jeweils "guacadmin"
- FERTIG! Wie Ihr mit Guacamole umgeht, sollte selbsterklärend, bzw. bekannt sein!
MySQL- bzw. MariaDB als Docker Container
- Erstellt euch äquivalent zu der Anleitung für den Guacamole-Docker-Container einen MySQL- oder MariaDB Container. Version sollte äquivalent zur installierten Paket-Version sein. Aktuell wird die neuste MariaDB 10.3.x empfohlen, da sie der Paket-Version entspricht und neuere (10.5.x) bei mir Fehler verursachten.
- Wenn Ihr parallel noch eine MariaDB über das Paket-Zentrum installiert habt wird der Lokale Port 3306 bereits belegt sein und Ihr müsst einen anderen nehmen, zum Beispiel 3307 oder 3308!
- Einen Link benötigt ihr in diesem Container keinen! Ihr müsst lediglich beim Guacamole-Container dann neben "guacd" noch einen zusätzlichen Link "mariadb" hinzufügen. Der Containername des MySQL-Containers spielt keine Rolle. Nennt Ihn der Einfachheit halber "mariadb".
- Bei Umwelt benötigt ihr eine Variable "MYSQL_ROOT_PASSWORD" mit eurem MySQL-root-Passwort
- Da PhpMyAdmin nicht in eurem MariaDB zugreifen kann bzw. installiert ist muss das Schema manuell importiert werden. Dazu:
- mit admin per SSH auf eure DiskStation verbinden und als root anmelden mit: sudo su
- anschließend alle Docker Container auflisten lassen und sich die ID des MariaDB-Containers merken
- dann eine bash in den MariaDB-Container starten mit: docker exec -it <mariadb container id> /bin/bash
- jetzt auf an der Datenbank mit root anmelden: mysql -u root -p
- dort das per Umgebungsvariable vergebene Passwort eingeben
- Jetzt die Datenbank erstellen mit: CREATE DATABASE guacamole;
- in die soeben erstellte Datenbank wechseln: USE guacamole;
- dann die erste Datei des Schemas mit einem Editor öffnen 001-create-schema.sql, alles markieren, kopieren, und in die geöffnete MariaDB-Console einfügen (dauert dann kurz):
- eventuell am Ende noch einmal ENTER drücken, damit auch die letzte Zeile bearbeitet wird
- selbes mit der 2. Datei 002-create-admin-user.sql wiederholen
- Benutzer erstellen: CREATE USER 'guacamole'@'%' IDENTIFIED BY 'guacamole_pw';
- Rechte vergeben: GRANT ALL PRIVILEGES ON guacamole.* TO 'guacamole'@'%';
- die Datenbank verlassen: exit
- den Container verlassen: exit
- FERTIG!
3x3cut0r 15:23 Uhr, 03. Sept. 2016 (CEST)