Docker in 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, mit dieser Tausende von Containern erstellt und ausgeführt werden können, die von Entwicklern aus der ganzen Welt entwickelt wurden und auf dem bekannten Image-Repository, Docker Hub publiziert sind. 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.

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 Packete vorinstalliert, weitere zusätzliche Packete können aus dem DSM Packet 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 Packet, 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 Dienstpackete wie gewohnt aus dem DSM Packet-Zentrum zu installieren.

Pre-Installation

Die Packete 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

 

Digital Signage selber gemacht

Unter dem Begriff Digital Signage wird der Empfangsbildschirm und Begrüßungsbildschirm verstanden. An den Stellen, an denen sich Informationen tagtäglich mehrmals ändern, sind digitale Lösungen für Info- und Begrüßungsbildschirme bei Unternehmen, in der Hotel Lobby oder öffentlichen Veranstaltungen anzutreffen.

Informationsbildschirme zur Besucherbegrüßung

bieten vielseitige Möglichkeiten und vermitteln einen professionellen Eindruck. Denn gerade hier gilt: „Der erste Eindruck zählt!“ Es soll Besucher Faszinieren und dem Kunden gleich beim ersten Kontakt eine optimale Atmosphäre verschaffen.

Auf dem Markt bieten sich diverse Produkte an, als Software oder als Cloud-Lösung. Es werden zeitgesteuerte Begrüßungen, Raumbelegungen, Veranstaltungen, Mitarbeiter-Infos und Zeitpläne vom eignen Computer oder Tablet aus, auf entfernten Bildschirmen angezeigt.

In diesem Beitrag wird beschrieben, wie ein Digital Signage selber umgesetzt werden kann, als Basis dazu dient die Software FrontFace von Mirabyte, die Hardware besteht aus einem Intel NUC Barebone PC, es wird also kein Cloud Dienst in Anspruch genommen.

Warum kompliziert, wenn es auch einfach geht?

FrontFace for Public Displays kann auf jedem Windows PC (Windows 7, 8.1 oder 10) eingesetzt werden und kann beliebige Flachbildschirme, Fernseher oder Monitore ansteuern! So braucht man keine proprietäre und teure Hardware anzuschaffen. Die Einrichtung eines Servers oder Änderungen an der Firewall ist nicht erforderlich. Die Installation und Inbetriebnahme von FrontFace ist in 15 Minuten erledigt!

Der Player PC

Die Systemkomponenten des Player PC bestehen aus einem Intel NUC mit 4 GB DDR4 Memory und 120 GB M.2 SSD Speicher.




Player-PC mit Bildschirm verbinden

Die meisten Flachbild-TV und Bildschirme verwenden HDMI. In diesem Fall braucht es also ein HDMI-Kabel. Weitere Standards sind VGA, DVI, DisplayPort und Mini DisplayPort. Es gibt auch Adapter mit denen die Anschlüsse eines Kabels umgewandelt werden können (z.B. HDMI zu DisplayPort).



Für die Wandmontage eignet sich die bewegliche TV-Wandhalterung WALL 3145, diese trägt Fernseher mit einem Gewicht von bis zu 15 kg. Mit der WALL 3145 lässt sich nahezu jeder Fernseher zwischen 19″ und 40″ (48-102 cm) an der Wand montieren.

Präsentationssystem

FrontFace for Public Displays ist ein leistungsfähiges Präsentationssystem mit integriertem Content Management, welches es ermöglicht, auf einfache weise Bildschirme und Großbildschirme, zentral und zeitgesteuert mit beliebigen Informationen, Inhalten und Medien zu versorgen. Egal ob mit Bildern, Videos, Texten, PDF-Dateien, RSS (Nachrichten-Schlagzeilen), Wetterinformationen oder Webseiten im HTML-Format – mit FrontFace geht das ganz einfach! Dank der genialen Print2Screen-Funktion können Inhalte sogar aus beliebigen Anwendungen (PowerPoint, Word, Excel, etc.), die über eine Druckfunktion verfügen, in erstklassiger HD-Qualität mit nur einem Klick erstellt und eingebunden werden.

Das Software Paket besteht aus FrontFace Assistent und FrontFace Player, der Player wird auf dem Intel Barebone PC installiert, dieser über das HDMI Kabel mit dem Flachbild-TV verbunden ist. Der FrontFace Assistent kann auf beliebig vielen Computer installiert werden, wo die Präsentation zusammengestellt, und anschließend zum Player übertragen wird.

Quellen Link: https://www.mirabyte.com

 

Windows Blickpunkt Reparieren

Windows Blickpunkt ist eine in Windows 10 enthaltene Funktion, die Bing das automatische Herunterladen von Hintergrundbilder verwendet, damit hat man gelegentlich bei der Anmeldung ein neues Hintergrundbild beim Sperrbildschirm.

Der einzige Nachteil von Windows Blickpunkt besteht darin, dass es manchmal nicht mehr funktioniert, oder man konnte feststellen, dass es auf demselben Bild stehen bleibt. Leider enthält Windows 10 keine Option zum Zurücksetzen dieser Funktion. Es ist jedoch möglich, die Windows Blickpunkt-Einstellungen mit dieser einfachen Problemumgehung zu beheben.

  Einstellungen öffnen, klicke -> Personalisierung und dann -> Sperrbildschirm, hier Hintergrund auf Bild umstellen.

Dann mit Rechtsklick auf Desktop  -> Neu -> Textdokument und den folgenden Inhalt einfügen:

Auf Datei -> Speichern unter, und als Dateiname Blickpunkt.bat Speichern.  Über der Datei mit Rechtsklick öffnet sich das Kontextmenü, hier als Administrator ausführen wählen.

Nun den Computer neu Starten. Danach wieder die Einstellungen öffnen und unter Personalisierung -> Sperrbildschirm auf Windows-Blickpunkt umstellen.

Sobald diese Schritte ausgeführt sind, kann man den Computer mit L sperren, jetzt sollte der Sperrbildschirm neue Bing-Bilder anzeigen.

  Tip  Möchte man weiterhin die von Bing heruntergeladenen Hintergrundbilder behalten und als Desktop Hintergrund verwenden, kann man die Bilder in einen Ordner kopieren, dazu öffnet man Ausführen   + R und fügt folgende Zeile ein, mit OK ist man im Ordner:

Den Inhalt in einen zuvor erstellten Ordner kopieren, beispielsweise unter:

Die von Bing heruntergeladenen Dateien haben kryptische Namen und bestehen aus Zahlen und Buchstaben (Hexadezimal), diese Dateien werden umbenannt, in dem wir eine Eingabeaufforderung öffnen mit + R und cmd eingeben und mit OK bestätigen, dann im Ordner mit den kopierten Dateien folgenden Befehl ausführen:

Jetzt haben die Dateien .jpg als Endung, und können somit in der Windows-Explorer vorschau betrachtet werden, unter Einstellungen -> Personalisierung -> Hintergrund lassen sich nun diese Bilder aus dem Ordner Hintergrundbilder wählen, oder als Diashow automatisch anzeigen lassen.

 

FortiClient SSL-VPN Failed

Failed to establish the VPN connection. This may be caused by a mismatch in the TLS version. Please check the TLS version settings in the Advanced of the Internet options. (-5029)

Beim FortiClient kann der aufbau einer SSL-VPN Verbindung zur FortiGate folgende Warnung ausgeben.

Symptom

Ursache

Das mittlerweile veraltete kryptografische Protokoll TLS 1.0 ist ab FortiOS 6.0 per default nicht mehr aktiviert. Es wird empfohlen mindestens TLS 1.1 (Cipher Suites) für Authentifizierung und Datenverschlüsselung  zu verwenden. Wir sind derzeit bei TLS 1.3, das von der IETF (Internet Engineering Task Force) genehmigt wurde.

Lösung

Möchte man ältere Clients weiter verwenden, die man im verlauf einer Migration über Update Rollout erst später mit TLS 1.2 oder höher einsatzbereit hat, kann auf der FortiGate das TLS 1.0 aktiviert werden.

Überprüfen der aktuellen TLS Einstellung, aus der FortiGate Console mit CLI Command:

Im CLI die Cipher Suite TLS 1.0 aktivieren.


Auch kann beim Client die TLS Version aus dem Windows Snapin (inetcpl) Internet Option angepasst werden.

+ R und der Eingabe von inetcpl.cpl

Im Fenster Eigenschaften von Internet – Erweitert, die TLS Version 1.0, 1.1 und 1.2 aktivieren.

Weitere Problemlösungen

Bei älteren Windows Versionen, oder bei Router mit PPPoE Internet Anbindung, können Fehler beim aufbau von SSL-VPN Verbindungen wie folgt behoben werden.

Es erscheint im FortiClient die Fehlermeldung:

Unable to establish the VPN connection. The VPN server may be unreachable (-5)

Dazu überprüft man die MTU grösse der Netzwerkschnittstellen, mit folgendem Befehl aus einer geöffneten Eingabeaufforderung

Die Ausgabe kann in etwa wie folgt aussehen:

Die MTU Size überprüfen und ggf. auf 1400 anpassen. In einer als Administrator geöffneten Eingabeaufforderung, mit ausführen von netsh.

Alternativ dazu Regedit aufrufen und zu folgendem Schlüssel navigieren.

unter dem entsprechenden Interface mit der passenden IP Adresse, hier {222e135b-d09c-47a3-9236-63a041a02ea6} den Schlüssel MTU mit Wert 578 Hexadecimal ändern.

Nach einem Computer neustart kann die SSL-VPN Verbindung aufgebaut werden.

Python Loops mit Break- Continue- Pass


 for- und while-Loops auf effiziente Weise für zyklische und automatisierte Aufgaben nutzen.

Synopsis

Manchmal bestimmen externe Faktoren wie Schleifen in einem Programm durchlaufen werden. Wenn dies eintrifft, möchte man möglicherweise dass die Schleife in einer Routine vollständig beendet wird, oder einen Teil der Schleife überspringt, bevor sie fortfährt, oder es soll ein externer Faktor ignorieren werden. Diese Aktionen können mit der Anweisung breakcontinue und pass durchgeführt werden.

Anweisung break

In Python bietet die break Anweisung die Möglichkeit, eine Schleife zu verlassen, wenn eine externe Bedingung ausgelöst wird. Hierzu setzen wir die break Anweisung in den Codeblock unterhalb der Schleife, normalerweise nach einer bedingten if-Anweisung.

Schauen wir uns ein Beispiel an, das die break Anweisung in einer for-Schleife anwendet:

In diesem kleinen Programm wird die Variable zahl auf 0 initialisiert. Dann wird eine for-Anweisung in die Schleife gelegt, diese durchläuft solange die Variable zahl kleiner als 10 ist.

Innerhalb der for-Schleife erhöht sich die Zahl bei jedem Durchlauf bedingt um inkrementell 1 zahl = zahl + 1.

Dann bei der if-Anweisung die den Zustand zeigt, wenn die Variable zahl der ganzen Zahl 5 entspricht, wird die Schleife abgebrochen.

Innerhalb der Schleife befindet sich auch eine print() Anweisung, die bei jeder Iteration der for-Schleife ausgeführt wird, bis die Schleife bei der break Anweisung abbricht.

Um zu sehen, wann wir außerhalb der Schleife sind, haben wir eine abschließende print() Ausgabe außerhalb der for-Schleife eingefügt.

Wenn wir diesen Code ausführen, erscheint unsere Ausgabe wie folgt:

Es zeigt sich, sobald die Ganzzahl zahl als äquivalent zu 5 bewertet wurde, die Schleife abbricht, da das Programm dies durch die break-Anweisung tun soll.

Die break-Anweisung bewirkt also, dass ein Programm aus einer Schleife ausbricht.

Anweisung continue

Die continue-Anweisung gibt uns die Möglichkeit, den Teil einer Schleife zu überspringen, in diesem eine externe Bedingung ausgelöst wird, aber bis zum Rest der Schleife beendet wird. Das heißt, die aktuelle Iteration der Schleife wird unterbrochen, aber das Programm kehrt zum Anfang der Schleife zurück.

Die continue-Anweisung befindet sich innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Wenn wir das selbe in einem for-Loop wie oben mit der Break-Anweisung anwenden, verwenden wir einfach eine continue-Anweisung anstelle der break-Anweisung:

Der Unterschied bei der Verwendung der continue-Anweisung anstelle einer break-Anweisung besteht darin, dass unser Code trotz der Störung weiter durchläuft, wenn die Variable zahl gleich 5 bewertet wird. Schauen wir uns unsere Ausgabe an:

Hier sehen wir, dass die Linie „Zahl ist 5“ nie in der Ausgabe erscheint, aber die Schleife fährt nach diesem Punkt fort, und die Zahlen 6-10 werden ausgegeben, bevor die Schleife verlassen wird.

Mit der continue-Anweisung können in tief verschachtelten Code Fehler vermeiden werden, auch könne hierdurch Loops optimiert werden, indem man häufig auftretende Fälle, die man ablehnen möchten, eliminiert.

Die continue-Anweisung bewirkt, dass ein Programm bestimmte Faktoren überspringt, die innerhalb einer Schleife auftreten, und dann den Rest der Schleife fortsetzt.

Anweisung pass

Wenn eine externe Bedingung ausgelöst wird, kann mit der pass-Anweisung die Bedingung verarbeitet werden, ohne dass die Schleife in irgendeiner Weise beeinträchtigt wird. Der gesamte Code wird weiterhin gelesen, sofern keine break oder eine andere Anweisung auftritt.

Wie bei den anderen Anweisungen befindet sich die pass-Anweisung innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Verwenden wir den gleichen Codeblock wie oben, ersetzen jedoch die Anweisung break oder continue durch eine pass-Anweisung:

Die pass-Anweisung, die nach der if-bedingten Anweisung auftritt, teilt dem Programm mit, die Schleife weiterhin auszuführen und ignoriert die Tatsache, dass die Variable zahl während einer ihrer Iterationen als äquivalent zu 5 bewertet wird.

Wir werden das Programm ausführen und uns die Ausgabe ansehen:

Bei Verwendung der pass-Anweisung in diesem Programm stellen wir fest, dass das Programm genauso ausgeführt wird, als wenn es keine bedingte Anweisung im Programm gäbe. Die pass-Anweisung weist das Programm an, diese Bedingung zu ignorieren und das Programm wie gewohnt weiter auszuführen.

Die pass-Anweisung kann minimale Klassen erstellen oder als Platzhalter fungieren, wenn an neuem Code gearbeitet wird und auf einer algorithmischen Ebene gedacht wird, bevor Details herausgearbeitet werden.

Fazit

Durch die break, continue und pass-Aussagen in Python ermöglicht es uns, for– und while-Loops im Code effektiver anwenden zu können.