Guacamole mit Docker

Aus Synology Wiki
Wechseln zu: Navigation, Suche

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

Vorraussetzungen

  • 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.
Ich installiere die derzeit neuste Version 0.9.9
  • Rechts bei "Compatible extensions" laden wir die "Database Authentication" herunter
  • Wir entpacken die heruntergeladene Datei "guacamole-auth-jdbc-0.9.9.tar"
  • Für das weitere Vorgehen benötigen wir die beiden Dateien:
  • guacamole-auth-jdbc-0.9.9/mysql/schema/001-create-schema.sql
  • guacamole-auth-jdbc-0.9.9/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 "glyptodon" und laden uns:
    • "glyptodon/guacamole" in der Version "latest"
    • "glyptodon/guacd" in der Version "latest"
(bei mir ist die Version derzeit jeweils 0.9.9. Diese gibt es auch als Auswahl, wir wählen dennoch "latest"!)
  • Beide Abbilder sollten nun links bei "Abbild" erscheinen
  • Hier klicken wir als erstes auf das Abbild "glyptodon/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 "glyptodon/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>
  • 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 als Docker Container

  • Erstellt euch äquivalent zu der Anleitung für den Guacamole-Docker-Container einen MySQL
oder MariaDB Container. Version sollte >=5.5 sein. Auch die neue MariaDB Version 10 funktioniert!
  • 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 13306 oder 3307!
  • Einen Link benötigt ihr in diesem Container keinen! Ihr müsst lediglich beim Guacamole-Container
dann neben "guacd" noch einen zusätzlichen Link "mysql" hinzufügen. Der Containername des
MySQL-Containers spielt keine Rolle. Nennt Ihn der Einfachkeit halber "mysql".
Der Aliasname der Link-Verknüpfung muss aber zwingend "mysql" heißen! Auch wenn Ihr einen
MariaDB Fork genommen habt!!!
  • Bei Umwelt benötigt ihr eine Variable "MYSQL_ROOT_PASSWORD" mit eurem MySQL-root-Passwort
  • Jetzt führt Ihr die MySQL Vorbereitung wie oben beschrieben auf dieser Datenbank durch und
macht anschließend mit den anderen beiden Docker Containern weiter!


3x3cut0r 15:23 Uhr, 03. Sept. 2016 (CEST)