Docker Container mit Synology DSM

Wie benutzt man Docker mit Synology

Synology ab DSM 6.0 kommt mit der Docker Engine. Zu finden ist die Docker App im Paket-Zentrum mit Eingabe docker im Suchfeld.

Docker ist eine schlanke Virtualisierungsanwendung, Tausende von Container erstellt von Entwickler aus der ganzen Welt können ausgeführt werden und sind auf dem bekannten Image-Repository, Docker Hub publiziert. Container Images können aus der Synology integrierten Docker App geladen und ausgeführt werden.

  Wenn die Docker App im Paketzentrum nicht erscheint, wird die Synology DSM Version höchstwahrscheinlich nicht unterstützt.

  Aufgrund der Hardware-Anforderungen wird Docker nur für Modelle mit Virtualisierungstechnik (VT-x) angeboten. Die in dieser Anleitung verwendeten Modelle sind RS818RP+, RS4018xs+ und DS218+ auf diesen Docker ausführbar ist.




Wie benutzt man Docker

Mit dem öffnen des Hauptmenu Symbol aus DSM findet sich das Icon für die Docker Engine die jetzt gestartet werden kann.

Docker öffnet den Überblick, hier sind die laufenden Container aufgeführt, die Anwendungen einschließlich zugewiesenem Speicher und CPU-Ressourcen, es ist jetzt noch kein Container gestartet.

Zusätzlich wird hier im folgenden die Docker Befehlszeile erläutert, diese alternativ für die Docker Console.

CLI   Docker Command Running Container auflisten:

Im Abschnitt Registrierung kann nach neuen Images gesucht werden (wie auf der offiziellen Website). Es können auch neue Repositories (zusätzlich zu den offiziellen) unter Einstellungen hinzugefügt werden.

CLI   Das original Docker Command ist:

Nachdem ein passendes Image (Abbild) gefunden wurde, in diesem Fall ein kleines Ubuntu 18.04 Dockerized SSH service Image, wird es mit einem Rechtsklick auf das Synology NAS herunterladen, am besten immer latest wählen. Alle Images sind schreibgeschützt und können mehrfach für weitere Container verwenden werden.

Das herunterladen kann einige Minuten in Anspruch nehmen, je nach grösse und download Bandbreite. Der Status beim herunterladen wird mit einem animierten Symbol dargestellt.

CLI   Das Docker Command ist:

Unter Abbild befinden sich die heruntergeladenen Images die auf dem Synology NAS verfügbar sind. Es können neue Container mit dem Assistenten Angedockt, gestartet werden. Hinweis: über das Link Symbol öffnet sich die Docker Hub Seite zum Container mit nützlichen Informationen.

CLI   Das Docker Command ist:

Nun auf Starten gehen um den Assistenten zu öffnen.

Auf Weiter um den Assistenten abzuschließen, und mit übernehmen den Container starten.

CLI   Das Docker Command ist:

Der laufende Container ist jetzt im Abschnitt Container zu finden.

CLI   Die vollständige Docker Ausgabe wie folgt:

Zurück in der Docker Übersicht sehen wir nun die Resourcen der gestarteten Container.

CLI   Das Docker Command ist:

Nun versuchen wir ein SSH-Terminal zum Container herzustellen. Dazu sehen wir im Abschnitt Container mit klick auf Details, auf welchem Port der SSH-Dienst horcht.

Im Überblick unter Port-Einstellungen finden wir bei Lokaler Port den gesuchten Wert, in diesem Fall ist es der Port 32789, die Port Adresse wird automatisch zugewiesen.

CLI   Ermitteln der Port Adresse

Jetzt können wir PuTTY oder KiTTY öffnen und Verbinden uns mit der IP des Synology NAS und dem Port 32789 zum Container, für CLI   Das Command wie folgt:

Anmelden mit root und dem Passwort root.

Die Docker Engine kann auch aus der Console genutzt werden, sofern das SSH Terminal unter DSM Systemsteuerung – SSH-Dienst aktiviert wurde.

Die in diesem Artikel gezeigte Anwendung von Docker soll als einfaches Beispiel darstellen, wie Docker auf einem Synology NAS anwendbar ist, natürlich gibt es nützlichere Container Anwendungen, wie Websever für das Entwickeln von Webanwendungen bis hin zu kompletten Entwicklungsumgebungen, es existieren bereits unzählige Docker Images auf Docker Hub https://hub.docker.com, und weiteren Docker Registraren. Dabei fragt mach sich schon, ob der Aufwand zur Installation seiner Entwicklerumgebung wie Xamp oder LAMP überhaupt noch zweckmäßig ist. An dieser stelle sein noch erwähnt, das alle Daten die im Container gespeichert werden, auf einem persistenten Volumen gespeichert werden müssen, denn mit beenden des Containers sind sämtliche arbeiten verloren.

Auch gibt es weitere Artikel zur Anwendung von Docker hier im Think Tank Blog, am besten einfach docker ins Suchfeld oben eingeben.

 

Nextcloud Installation auf Synology

Mit der Synology Diskstation kommen viele Pakete vorinstalliert, weitere zusätzliche Pakete können aus dem DSM Paket Manager installiert werden. Möchte man Nextcloud auf der Synology NAS haben, muss man derzeit noch manuell vorgehen. Hier wird beschrieben wie auf einer DS215 mit DSM 6 in wenigen schritten das Open Source Paket, Nextcloud 12 installiert werden kann. Das vorgehen sollte mit jeder Synology DS oder RS möglich sein.

Pre-Installation
Installation
CalDAV Integration
Absicherung und Konfiguration

Zur Vorbereitung sind einige Dienstpakete wie gewohnt aus dem DSM Paket-Zentrum zu installieren.

Pre-Installation

Die Pakete PHP 5.6 und PHP 7.0, Apache 2.4, phpMyAdmin, MariaDB und Web Station werden installiert.

Es wird der Terminal Zugang zur Synology DS benötigt, wie der SSH Daemon aktiviert wird, steht im Beitrag hier.

Um sich mit PuTTY gleich als root bei der Diskstation einloggen zu können, braucht es folgenden Befehl um root Zugang zu aktivieren. Oder man führt jeweils sudo aus.

Download von Nextcloud und entpacken des ZIP-Archives mit anschließender Besitzer und rechte Vergabe. Die Document_Root ist hier /volume1/web/nextcloud.

Es muss ein MySQL root-Passwort vergeben werden.

Das MySQL-root Passwort kann natürlich auch aus dem DSM geändert werden.

Nun wird die DSM Web Station geöffnet um die Webserver Konfiguration und ein Virtueller Host zu erstellen.

Web Station Allgemeine Einstellungen

Web Station PHP-Einstellungen. Im Feld PHP open_basedir muss none stehen.

Web Station Virtueller Host erstellen.

Installation

Nun kann im Bowser die URL geöffnet werden https://ip_adresse_od_hostname/nextcloud

Das Administrator-Konto kann ein beliebiger Name sein, dieser steht nicht im Zusammenhang mit den Synology Benutzer. Es wird MySQL/MariaDB gewählt, das MySQL-root Kennwort ist das zuvor vergebene Passwort.

Nach ca. 2 min. ist die Installation abschlossen und es erscheint die Intro-Seite.

Soll nun unsere eigene Nextcloud aus dem Internet erreichbar sein, muss eine statische NAT Port Weiterleitung zur internen Synology Diskstation auf der Firewall gemacht werden. Ferner muss die unter nextcloud/config liegende Datei config.php angepasst werden. Im array wird eine weitere Zeile mit unserem FQDN hinzugefügt, dieser zuvor in der DNS Zone foo.io eingetragen wurde.


CalDAV Integration

Mit CalDAV Synchronizer for Outlook ist es möglich den Outlook Kalender, das Adressbuch und die Aufgaben einfach zu synchronisieren, damit ist jeder Desktop und Mobile Client über die private Nextcloud integriert.

Das freie Outlook Plugin von der Fachhochschule Technikum Wien, das zwischen Outlook und CalDAV Server synchronisiert, unterstützt die Outlook-Versionen 2016, 2013, 2010 und 2007. Der Download gibt es auf Github und bei Sourceforge.

Absicherung und Konfiguration

Zur Absicherung der Synology DS die aus dem Internet erreichbar ist, sollten die Zugriffsrechte  eingeschränkt werden, mit folgendem chmod command:

Desweiteren sollte HTTPS verwendet werden, Nextcloud empfiehlt folgende Einstellung an der Apache Webserver Konfiguration vorzunehmen:

Hierdurch wird der Aufruf der Webseite von http auf https (SSL) umgeleitet, in der Virtuellen Host Konfiguration unter ServerName hinzufügen:

Damit beim versuch eine HTTP Verbindung aufzubauen diese abgewiesen wird, kann das Module mod_headers.c hinzugefügt  werden.

Den Suchmachinen Crawler soll mitgeteilt werden, das unsere Nextcloud Webseite nicht indiziert werden soll. Die Textdatei robots.txt kommt dabei in die Document Root, im Verzeichnis /volume1/web/nextcloud zu stehen.

Mit  Copy  Paste die Textdatei robots.txt erstellen.

Zur Performance Optimierung kann der PHP opcache konfiguriert werden. Die Werte wie folgt in die PHP Konfiguration user-settungs.ini hinzufügen:

Durch   Copy Paste in der Datei user-settings.ini anfügen.

Nun muss die Synology DS nur noch neu gestartet werden damit die Konfiguration aktiv ist.

Anhang

Mit Apache 2.4 und PHP 7 läuft Nextcloud einiges performanter, daher empfiehlt sich die Web Station für den Virtual Host von Nextcloud mit den aktuellen Web Services zu betreiben.

Abbildung: Synology Web Station

 

VNC-Verbindung mit SSH absichern

SSH-Tunnel zu Linux VNC-Server

VNC-Verbindungen gelten als unsicher, denn sie sind nicht verschlüsselt. VNC-Sitzungen können mit OpenSSH verschlüsselt werden, hierbei wird der Datenverkehr durch ein sicheren SSH-Tunnel geroutet und ist abgesichert.

Der SSH-Tunnel benötigt Benutzeranmeldung und den VNC Port. Der Client Befehl wird im Linux CLI wie folgt ausgeführt:

Bei Benutzer USER diesen durch den tatsächlichen Benutzername ersetzen, ein Passwort wird zur Ausführung des Tunnels aufgefordert. Bitte beachte, dass es sich dabei um das Passwort für den SSH-Login handelt, die Benutzeranmeldung zum VNC kann idealerweise die selbe UID sein, dann ist das Passwort das selbe. Der Port der getunnelt werden muss ist 5901. Der Befehl wird auf dem Computer des VNC-Viewer ausgeführt. Die Anmeldung findet wie gewohnt statt:

Mit dem VNC-Viewer kann nun die virtuelle Desktop Sitzung zur Loopback Adresse ausgeführt werden:

Hinweis: Beim OpenSSH-Server müssen die Optionen aktiviert sein, in der Konfigurationsdatei /etc/ssh/sshd_config.

 

SSH-Tunnel auf Windows zum VNC-Server

Unter Windows kann mittels PuTTY oder KiTTY ein SSH-Tunnel zum VNC-Server geöffnet werden, dabei wird über das Loopback Interface und Port 5901 getunnelt.

Abbildung: KiTTY Configuration

Unter der Category, Connection – SSH – Tunnels, bei Source Port wird 5901 eingetragen, Destination ist 127.0.0.1:5901, dann mit klick auf Add wird der Tunnel hinzugefügt.

Abbildung: KiTTY SSH Tunnel Configuration

Mit klick auf Open wird der Tunnel gestartet, indem man sich beim VNC-Host anmeldet.

Die sichere SSH-Verbindung zum VNC-Server kann nun initialisiert werden. Es wird bei Remote Host die Loopback Adresse 127.0.0.1 mit Port 5901 im TightVNC-Viewer eingetragen: 127.0.0.1:5901

Abbildung: TightVNC Connection

Nach der Anmeldung gibt Connection Information Auskunft über die aktuelle Verbindung, mit klick auf das Symbol    im Menübalken.

 




vncserver Installation auf Fedora 28

vncserver ist ein Dienstprogramm, das einen VNC-Desktop (Virtual Network Computing) startet. Es führt Xvnc mit entsprechenden Optionen aus und startet ein Fenstermanager. Der VNC-Desktop vncserver ermöglicht es Benutzern, Sitzungen parallel auf einer Maschine auszuführen, auf die dann von einer beliebigen Anzahl von Clients von überall zugegriffen werden kann.

GNOME Desktop Umgebung Installieren

Der vncserver kann den Unity Desktop nicht virtualisieren, deshalb wir erst ein alternativen Window Manager installieren, es eignet sich der xfce oder Mate Desktop, letzter wir hier verwenden. Wir führen die folgenden zwei Befehle aus, wobei wir erst root werden:

VNC-Server installieren

Um den TigerVNC Server zu installieren, führt man folgenden Befehl aus:

VNC-Servers Konfigurieren

Die Konfigurationsdatei /etc/systemd/system/vncserver@.service wird für den VNC-Server erforderlich. Um die Datei zu erstellen, kopieren wir die Datei /lib/systemd/system/vncserver@.service wie folgt als root:

Wir bearbeiten /etc/systemd/system/vncserver@.service, und ersetzen bei jedem USER diesen durch den tatsächlichen Benutzernamen. Lasse die restlichen Zeilen der Datei unverändert. Das Argument -geometry gibt die Größe des zu erstellenden VNC-Desktops an. Standardmäßig ist auf 1024×768 eingestellt.

Um die Bildschirmauflösung auf die des Clients anzupassen, wird die Datei mit vi ~/.vnc/config editiert.

Nach dem Speichern, den folgenden Befehl ausführen, damit werden die Änderungen sofort wirksam:

Lege das Passwort für den Benutzer fest, dieser in der Konfigurationsdatei definiert ist. Beachte dass man zuerst von root zu USER wechseln muss.

Die Mate Desktop Umgebung in die VNC-Konfiguration ~/.xinitrc übernehmen:

Die Konfigurationsdatei ~/.vnc/xstartup ist für den VNC-Daemon nicht erforderlich, sollte jedoch angepasst werden:

Firewall Konfigurieren

Damit der VNC-Client sich zum VNC-Server verbinden kann, wird die Firewall konfiguriert:

VNC-Server starten

Um den Dienst zu starten und zu aktivieren, geben wir die Display Nummer direkt im Befehl ein. Die unter der ersten VNC-Verbindung konfigurierte Datei funktioniert als Vorlage, in der %i durch systemd mit der display_number in der regel mit 1 ersetzt wird. Führe dazu folgenden Befehl aus:
systemctl start vncserver@:display_number.service

Der Dienst soll beim Systemstart automatisch starten. Dazu gibt man als root den Befehl wie folgt ein:

Jetzt können Benutzer vom Client mit VNC-Viewer-Programm eine Verbindung zum VNC-Server herstellen, über die Display Nummer und dem Passwort, dieses wir zuvor mit vncpasswd vergeben haben.

Für Windows gibt es die Freeware TightVNC-Viewer, um ein virtuellen Desktop herzustellen, hier ist die Display Nummer 1, welche beim VNC-Viewer im Feld Remote Host eingetragen wird, mit der IP und Port 5901, mit Doppelpunkt dazwischen.

Abbildung: TightVNC-Viewer Windows

Download TightVNC: http://www.tightvnc.com/

Weitere VNC-Viewer für Mac OS X, iOS, Android, Chrome OS und Raspberry Pi gibt es von RealVNC, ebenfalls als Freeware, damit ist die VNC-Desktop (Virtual Desktop) Anwendung von jedem Gerät aus möglich.

Troubleshooting

Die vncserver Log-Datei ist unter $HOME/.vnc/hostname:1.log

Der hostname fedora.localdomain durch den tatsächlichen ersetzen.

Überprüfen ob der VNC-Server gestartet ist:

Die Ausgabe des laufenden vncserver Prozess in etwa wie folgt:

Mit netstat wird überprüft, ob der VNC Port 5901 LISTEN ist:

Tunneln der VNC-Server Verbindung über SSH

VNC-Verbindungen gelten als unsicher, da sie nicht verschlüsselt sind. Im letzten Schritt tunneln wir die VNC-Verbindung mit SSH, um den VNC-Verkehr zu verschlüsseln und zu sichern. Um den Tunnel auszuführen, benötigen wir den Login-Benutzer, sein Passwort und den Port. Führe auf dem Client folgenden Befehl aus:

Das Passwort wird zur Ausführung des Tunnels aufgefordert. Bitte beachte, dass es sich dabei um das Passwort für den SSH-Login handelt, die Benutzeranmeldung zum VNC kann idealerweise die selbe UID sein, dann ist das VNC-Passwort das selbe. Der Port der getunnelt werden muss ist 5901, wie oben gezeigt. Der Befehl wird auf dem Computer des VNC-Viewer ausgeführt.

Unter Windows kann mittels PuTTY oder KiTTY ein SSH-Tunnel zum VNC-Server geöffnet werden, dabei wird das Loopback Interface über Port 5901 getunnelt.

Abbildung: KiTTY Configuration

Unter der der Category, Connection – SSH – Tunnels, bei Source Port wird 5901 eingetragen, Destination ist 127.0.0.1:5901, dann mit klick auf Add wird der Tunnel hinzugefügt.

Mit klick auf Open wird der Tunnel gestartet, indem man sich beim VNC-Host anmeldet.

Die sichere SSH-Verbindung zum VNC-Server kann nun initialisiert werden. Es wird bei Remote Host die Loopback Adresse 127.0.0.1 mit Port 5901 im TightVNC-Viewer eingetragen.

Nach der Anmeldung gibt Connection Information Auskunft über die aktuelle Verbindung.

 

Registry Key Jumper

Der Registry Key Jumper von sordum.org hilft beim bearbeiten der Registry. Das kleine Freeware Tool hilft beim aufsuchen eines Registrierungsschlüssel und springt automatisch zum Registrierungspfad, in dem Regedit.exe mit Parameter Übergabe geöffnet wird, als beispiel hier zum Schlüssel Run.

Abbildung: Registry Key Jumper

Im Registry Key Jumper lassen sich über das Menü ListeSchlüssel einfügen, neue Einträge erstellen, die Schüssel werden direkt aus der Zwischenablage hinzugefügt, die Schlüssel können editiert werden und bleiben gespeichert, so das diese bei erneutem bearbeiten rasch und einfach im Microsoft Corporation 108,66 +0,16 +0,15% Registry Editor wieder geöffnet werden.

Quellen Link: https://www.sordum.org/