Posted

in

,

Updated

Portainer als Docker-Container auf der Synology Diskstation installieren

Die Synology Diskstation kann neben der Dateisynchronisierung auch als Heimserver zum Ausführen verschiedener Webapps als Docker-Container genutzt werden. Zur Verwaltung der Docker-Container kann man entweder das Synology-Paket „Docker“ (bis einschließlich DSM 7.1) bzw. „Container Manager“ (ab DSM 7.2) oder die Open-Source Software „Portainer“ verwenden. In diesem Artikel wird erklärt, wie man Portainer auf der Diskstation installiert.

NEU Container Manager ab DSM 7.2

Inhalt

    Projekt erstellen

    Ordner anlegen

    Öffne die „File Station“ in der DSM-Oberfläche.

    • Lege im Hauptverzeichnis im Ordner docker einen Unterordner portainer an.
    • Im Ordner portainer legst du zwei weitere Unterordner an:
      • data: Hier wird Portainer später seine eigenen Daten und Konfigurationen ablegen.
      • docker_compose_file: Diesen Ordner werden wir gleich im „Container Manager“ als Speicherort für die von uns genutzte docker-compose.yml angeben. Damit kannst du Portainer bei Bedarf unkompliziert neu aufsetzen.

    Neues Projekt erstellen

    Öffne die Anwendung „Container Manager“ auf deiner Synology Diskstation.

    • (1) Klicke links auf den Menüpunkt „Projekt“.
    • (2) Wähle im rechten Bereich den Button „Erstellen“, um ein neues Projekt zu beginnen.

    Projekt – Allgemeine Einstellungen

    Konfiguriere das neue Projekt folgendermaßen:

    • (1) Gib im Feld „Projektname“ den Namen des Projekts (auch „Stack“ genannt) ein, z. B. portainer.
    • (2) Wähle mit dem Button „Pfad festlegen“ den eben erstellen Ordner /docker/portainer/docker_compose_file als Ablageort für die Konfigurationsdatei aus.
    • (3) Im Dropdownfeld „Quelle“ wählst du die Option docker-compose.yml erstellen.
    • (4) Dann fügst du im großen Textfeld folgende Docker-Konfiguration hinzu, die du folgendermaßen anpasst:
      • Zeile 7: Vergib für das Hostsystem einen beliebigen Port oder nimm den hier gezeigten Beispiel-Port 39351. Der Docker-Port ist fest und wird vom Docker-Image vorgegeben. Beachte folgendes Schema:
        - hostsystem_port:docker_port
        Beispiel:
        - 39351:9443
      • Zeile 10: Gib den Ordnerpfad für die Verzeichnisbindung (bind mount) aus Schritt 1 in dieser Form ein:
        - /pfad/zum/ordner:/data
        Wenn du die Ordnerbenennung genau wie in Schritt 1 gemacht hast, dann also:
        - /volume1/docker/portainer/data:/data
    services:
      portainer-ce:
        image: portainer/portainer-ce:latest
        container_name: portainer
        restart: always
        ports:
          - 39351:9443
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /volume1/docker/portainer/data:/data
    • (5) Klicke auf „Weiter“.

    Überschrift

    Überschrift

    Überschrift

    Der Container-Manager lädt das Image herunter und startet den Portainer-Dienst.

    Download des Image abwarten

    Überschrift

    Überschrift

    Status checken

    Anschließend wird dir das neu angelegte Projekt und der Status in der Projekt-Liste angezeigt:

    Info: Überschrift

    Info:

    Reverse-Proxy Einstellungen

    Reverse Proxy aufrufen

    Öffne in der DSM-Oberfläche die Systemsteuerung.

    • Klick auf Anmeldeportal (1) -> Erweitert (2) -> Reverse Proxy (3)

    Neue Reverse-Proxy-Regel erstellen

    • Lege dann mit Klick auf „Erstellen“ (1) eine neue Reverse Proxy-Regel an.

    Quelle und Ziel festlegen

    Nimm im Tab „Allgemein“ folgende Einstellungen vor:

    • Reverse-Proxy-Name (1): Der Name für die Regel; in diesem Fall z. B. Portainer.
    • Quelle:
      • Protokoll (2): Da die Verbindung zum Reverse Proxy, der die Anfrage an Wekan (unsere Ziel-Anwendung) weiter gibt, verschlüsselt erfolgen soll, wählen wir als Protokoll HTTPS aus.
      • Hostname (3): Trage hier den (Sub-)Domainnamen ein, über den du die Webapp im Browser aufrufen möchtest, beispielsweise portainer.name.synology.me.
      • Port (4): Damit wir beim Aufrufen der gerade angegebenen Domain nicht noch zusätzlich eine Portnummer angeben müssen, nehmen wir den Standard-HTTPS-Port 443.
      • HSTS aktivieren (5): Mit dem Haken wird HSTS aktiviert, um sicherzustellen, dass der Browser nur verschlüsselte Verbindungen akzeptiert.
    • Ziel:
      • Protokoll (6): Da der Portainer-Container für den Aufruf des Webinterfaces einen HTTPS-Port öffnet (9443), erfolgt die interne Kommunikation auf der Diskstation (zwischen Portainer und dem Reverse Proxy) über HTTPS.
      • Hostname (7): Betreibst du den Docker-Container auf der selben DiskStation (was der Normalfall sein sollte), dann gibst du hier mit localhost an, dass die von außen kommende Anfrage an die DiskStation selbst weitergeleitet werden soll.
      • Port (8): Hier trägst du die interne Portnummer ein, unter der der Docker-Container „Portainer“ erreichbar ist. Das ist derselbe Port, den du oben im Schritt „Projekt – Allgemeine Einstellungen“ in das Textfeld zur docker-compose.yml eingetragen hast; in unserem Beispiel also der interne Port 39351.

    WebSocket Kopfzeilen hinzufügen

    Klicke im Tab „Benutzerdefinierte Kopfzeile“ (1) auf „Erstellen“ (2) und anschließend auf „WebSocket“ (3).

    Regel mit angelegten WebSocket Headern

    Dadurch werden automatisch die zwei Header „Upgrade“ und „Connection“ hinzugefügt.

    Proxy Lese-Timeout erhöhen

    Proxy Lese-Timeout auf 300 Sekunden setzen (entspricht 5 Minuten), damit „Recreate“ in Portainer auch mit großen Images funktioniert.

    [siehe DOK]

    Setze ein Proxy-Timeout:

    • Im gleichen Menü kannst du das Proxy-Lese-Timeout auf 300 Sekunden (5 Minuten) erhöhen.
    • Diese Einstellung stellt sicher, dass umfangreiche Aktionen wie „Recreate“ in Portainer problemlos funktionieren.

    Docker/Container Manager-Paket in DSM installieren

    Möchte man Docker-Container auf der Synology Diskstation laufen lassen, muss man zuallererst in der Weboberfläche (DSM) über das Paket-Zentrum das Paket „Docker“ bzw. seit DSM 7.2 „Container Manager“ installieren.

    „Docker“ (bis einschließlich DSM 7.1)
    „Container Manager“ (ab DSM 7.2)

    Portainer ist als Docker-Container verfügbar. Daher können wir es in der DSM-Oberfläche über „Docker“ bzw. „Container Manager“ installieren. Alle weiteren Docker-Container werden wir zukünftig über Portainer verwalten und installieren. Gut zu wissen: Beide Methoden – Docker über DSM oder in der Portainer Webapp – funktionieren parallel, das heißt man sieht alle über Portainer angelegten und laufenden Container auch in der DSM Oberfläche und kann sie mit beiden Methoden beispielsweise stoppen, neustarten oder deren Status einsehen.

    Ordner anlegen

    In DSM klicke auf „File Station“ und lege im Ordner „docker“ einen Ordner namens „portainer“ an.

    Portainer Docker-Container installieren

    Image herunterladen

    • In DSM öffne „Docker“ bzw. „Container Manager“
    • Klick auf Registrierung
    • Suche nach „Portainer“
    • Rechtsklick auf „portainer/portainer-ce“ und auf „Dieses Image herunterladen“
    • Auswahl von „latest“ und Klick auf „Auswählen“

    Docker-Container anlegen

    Nachdem das Image heruntergeladen wurde:

    • Klick auf Container -> Erstellen
    • Image „portainer/portainer-ce:latest“ auswählen, Klick auf „Weiter“
    • „bridge“ auswählen und „Weiter“
    • Containername „portainer“ und „Automatischen Neustart aktivieren auswählen“, Klick auf „Weiter“
    • Unter „Port-Einstellungen“
      • Zeile 1: löschen
      • Zeile 2:
        • Lokaler Port: 39351
          • beliebigen freien Port wählen, beispielsweise 39351
          • diese Portnummer benötigst du erneut im Abschnitt „Sub-Subdomain für Portainer anlegen“
        • Container-Port: 9000
        • Typ: TCP
      • Zeile 3: löschen
    • Unter „Volume-Einstellungen“ -> Ordner hinzufügen -> docker/portainer auswählen, anschließend Mount-Pfad „/data“ eintragen und Klick auf „Weiter“ und „Fertig“

    Der Docker-Container ist jetzt angelegt und sollte automatisch starten.

    Sub-Subdomain für Portainer anlegen

    Um per (Sub-)Subdomain auf Portainer zugreifen zu können, musst du zuerst ein Wildcard-Zertifikat anlegen.

    Anschließend richtest du den Reverse Proxy-Server der Diskstation ein, unter Verwendung folgender Angaben:

    • Quelle
      • Protokoll: HTTPS
      • Hostname: portainer.name.synology.me
        • statt „name“ verwendest du hier deine selbst gewählte Synology-Subdomain
      • Port: 443
    • Ziel
      • Protokoll: HTTP
      • Hostname: localhost
      • Port: 39351
        • hast du im Abschnitt „Docker-Container anlegen“ unter „Lokaler Port“ eine andere Portnummer eingetragen, musst du diese hier entsprechend ändern

    Zugriff auf Portainer und Benutzer anlegen

    Jetzt kannst du im Browser https://portainer.name.synology.me („name“ durch deine Synology-Subdomain ersetzen) aufrufen und landest auf der Portainer-Weboberfläche.

    Beim ersten Start von Portainer musst du einen Administrator-Account anlegen. Nachdem du Benutzername und Passwort festgelegt und den Benutzer erstellt hast, erscheint das „Quick Setup“. Hier wählst du „Get Started“. Die Docker-Umgebung auf deiner Diskstation wird automatisch erkannt und angezeigt. Mit einem Klick auf die Kachel mit der Bezeichnung „local“ verbindest du dich und dir werden die Details der Umgebung angezeigt. Sollte das nicht klappen, schaue zur Fehlerbehebung in den nächsten Abschnitt.

    Hast du neben Portainer keine weiteren Docker-Container über die DSM-Oberfläche erstellt, wird unter „Containers“ und „Images“ jeweils eine 1 stehen.

    Weitere Infos zur Einrichtung von Portainer findest du unter https://docs.portainer.io/start/install-ce/server/setup

    Problem: Lokale Docker-Umgebung wird nicht gefunden

    Einer unserer Leser berichtete in den Kommentaren, dass bei ihm in Portainer im Abschnitt „Environments“ nichts angezeigt wird, also die lokale Docker-Umgebung „local“ von Portainer nicht gefunden wird. Das geht einher mit folgender Fehlermeldung:

    failed to retrieve docker info | error=“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?“

    Das deutet darauf hin, dass in der Konfiguration des Portainer Docker-Containers ein „volume binding“ zum Pfad „/var/run/docker.sock“ fehlt. Teilweise wird dieser automatisch hinzugefügt oder auch nicht – wie in diesem Fall. Der Eintrag kann aber leider nicht direkt über Docker/Container Manager in der DSM-Oberfläche bei den Volume-Einstellungen hinzugefügt werden, da das Dialogfenster nur entsprechende Ordner oder Dateien auf dem Festplatten-Volume (also alles innerhalb des Ordners „volume1“) zur Auswahl anbietet. Für „/var/run/docker.sock“ müssten wir aber einen absoluten Pfad angeben. Als Workaround exportieren wir die aktuelle Konfiguration, fügen den Eintrag in der Konfig-Datei hinzu und importieren diese anschließend wieder.

    Export der Docker-Container-Konfiguration

    • Öffne Docker/Container Manager in der DSM-Oberfläche
    • Klicke links auf „Container“
    • Im rechten Bereich Rechtsklick auf den Eintrag „portainer“ -> Einstellungen -> Exportieren
    • Wähle „Typ: Containereinstellungen exportieren“ und „Ziel: Auf lokalen Computer exportieren“ -> Klick auf Button „Exportieren“. Es wird eine JSON-Datei heruntergeladen, die die Docker-Container-Konfiguration enthält.

    Konfigurationsdatei anpassen

    • Öffne die heruntergeladene JSON-Datei mit einem Texteditor, z. B. Notepad++
    • Hat man mit dem oben geschilderten Problem zu kämpfen, steht in der Konfig-Datei unter „volume_bindings“ nur ein Eintrag – es sollten aber zwei sein. Ergänze den Eintrag so, wie im folgenden Code bzw. Screenshot ersichtlich: Der markierte Teil muss hinzugefügt werden.
    • Speichere die JSON-Datei anschließend.
    "volume_bindings" : [
      {
    	 "host_absolute_path" : "/var/run/docker.sock",
    	 "mount_point" : "/var/run/docker.sock",
    	 "type" : "rw"
      },
      {
    	 "host_volume_file" : "/docker/portainer",
    	 "mount_point" : "/data",
    	 "type" : "rw"
      }
    ]

    Bisherigen Portainer Docker-Container löschen

    Lösche den (nicht funktionierenden) Docker-Container über die DSM-Oberfläche, damit es nachher beim Importieren nicht zu einem Namenskonflikt oder doppelt belegten Ports kommt.

    • Stoppe den Docker-Container „portainer“ mit dem Schiebeschalter.
    • Anschließend mit Rechtsklick auf den entsprechenden Eintrag -> Aktion -> Löschen
    • Dann mit Klick auf „Löschen“ bestätigen.

    Importieren der JSON-Konfig für den Docker-Container

    • Gehe in Docker/Container Manager in der DSM-Oberfläche links auf „Container“.
    • Klicke rechts auf das Menü Einstellungen -> Importieren
    • Klicke im sich öffnenden Dialogfenster auf Hochladen -> Durchsuchen. Wähle dann die eben veränderte JSON-Datei aus und bestätige jeweils mit Klick auf „Öffnen“ und „Auswählen“.

    Mit diesem Workaround sollte Portainer jetzt auch deine lokale Docker-Umgebung finden.

    Fazit

    Ab jetzt kannst du alle (weiteren) Docker-Container über Portainer managen, sodass du dich nicht mehr mit Docker/Container Manager in der DSM-Oberfläche „herumplagen“ musst. Portainer bietet deutlich mehr Flexibilität und kann beispielsweise auch Standard Docker Compose files einlesen.


    Beitragsbild erstellt mit Hilfe von DALL-E und ChatGPT.

    Disclaimer:
    Die hier bereitgestellten Anleitungen und Informationen wurden mit größter Sorgfalt erstellt. Dennoch übernehmen wir keinerlei Haftung für etwaige Schäden, Datenverluste oder andere Probleme, die durch das Befolgen dieser Anleitungen entstehen können. Jede*r handelt auf eigene Verantwortung. Bitte prüfe sorgfältig, ob die beschriebenen Schritte für dich, dein Gerät und dein System passen und erstelle vorab immer ein vollständiges Backup deiner Daten.

    Kommentare

    8 Antworten zu „Portainer als Docker-Container auf der Synology Diskstation installieren“

    1. AF

      Hallo!
      Danke für die Anleitung. Portainer startet und Benutzer wurde angelegt. Leider findet er aber LOCAL nicht bzw zeigt nix an dort. Kann also meinen lokalen Docker nicht verbinden. Eine Idee?

      Danke
      AF

    2. AF

      Update: Fehlermeldung im Protokoll „failed to retrieve docker info | error=“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?“ “

      Irgendwie findet er meinen Docker nicht.

      1. Thing King

        Danke für das Lob 🙂

        Schade, dass es bei dir noch nicht komplett läuft.
        Du könntest folgendes überprüfen:
        Öffne Docker/Container Manager in der DSM-Oberfläche, klicke auf „Container“ -> Rechtsklick auf den Eintrag „portainer“ -> Einstellungen -> Exportieren -> wähle „Typ: Containereinstellungen exportieren“ und „Ziel: Auf lokalen Computer exportieren“ -> Klick auf Button „Exportieren“. Es wird eine JSON-Datei heruntergeladen, die du mit einem Texteditor öffnen kannst.
        Stehen dort unter „volume_bindings“ zwei Einträge?
        Bei mir sieht es so aus:

        "volume_bindings" : [
          {
        	 "host_absolute_path" : "/var/run/docker.sock",
        	 "mount_point" : "/var/run/docker.sock",
        	 "type" : "rw"
          },
          {
        	 "host_volume_file" : "/docker/portainer",
        	 "mount_point" : "/data",
        	 "type" : "rw"
          }
        ]

        Der Eintrag mit „/var/run/docker.sock“ wurde also bei mir anscheinend beim Anlegen des Portainer Docker-Containers automatisch hinzugefügt. Sollte dieser bei dir fehlen, könnte es vielleicht daran liegen.

    3. AF

      Ach danke für Deine schnelle Antwort! m.E. die einzige Anleitung, welche ohne Console auskommt (zumindest fand ich nix) 😉

      Bei mir steht:

      "volume_bindings" : [
          {
             "host_volume_file" : "/docker/portainer",
             "mount_point" : "/data",
             "type" : "rw"
          }

      Der erste Teil ist wohl leer und der Grund. Wie bekomme ich das in die Config? – In den Volume Einstellungen bei Docker vermutlich?

      Dort Einträge anlegen? wie „host_absolute_path“?

      Danke nochmals
      AF

      1. Thing King

        Theoretisch ja, allerdings kann man leider über Docker/Container Manager in der DSM-Oberfläche bei den Volume-Einstellungen über das Dialogfenster nur entsprechende Ordner oder Dateien auf dem Festplatten-Volume (also alles innerhalb des Ordners „volume1“) auswählen. Für „/var/run/docker.sock“ müssten wir aber einen absoluten Pfad angeben. Das wird anscheinend in der grafischen Oberfläche nicht unterstützt.

        Ich habe im Artikel oben einen neuen Abschnitt mit einem Lösungsvorschlag hinzugefügt: „Problem: Lokale Docker-Umgebung wird nicht gefunden“
        Hoffentlich hilft das weiter 🙂

    4. AF

      DANKE! Werde es gleich probieren!

    5. AF

      Update: Es klappt! DANKE DANKE! Habe mir nun Deine Seite fest gebookmarked… auch wegen der 3D Prints…

      1. Thing King

        Super, das freut mich 👍☺️

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert