Home » Allgemein » Synology » ioBroker im Docker auf der Synology DiskStation im gleichen Subnet

ioBroker im Docker auf der Synology DiskStation im gleichen Subnet

eingetragen in: Docker, ioBroker, Synology 3

Um Docker auf der Synology NAS zu installieren gibt es von Andre Buanet ein Docker Paket. Die Installation habe ich wie hier auf https://buanet.de/2017/09/iobroker-unter-docker-auf-der-synology-diskstation/ beschrieben vorgenommen.  Ich habe aber ein paar kleine Änderungen vorgenommen damit ich den Bonjour Dienst im Docker Container parallel zu dem auf der Synology NAS laufen lassen kann.  Auch kann man mit der Lösung unten, mehrere ioBroker Instanzen laufen lassen, die alle dann unter Apple Homekit sichtbar sind.

Dafür darf der ioBroker Container nicht im Host Modus gestartet werden. Der NET (Bridge) Modus geht leider auch nicht, da die vergebene IP Adresse aus einem anderen Subnet ist (172.17.0.0) ist. Damit funktioniert Apple Homekit / Bonjour nicht mehr.
Aus diesem Grund muss ein MACVLAN angelegt werden (Mit Macvlan ist es möglich einer Netzwerkschnittstelle mehrere virtuelle Schnittstellen mit einer eigenen MAC Adresse zuzuweisen). Leider bietet Synology diese Option über die Docker Oberfläche nicht an.
Also mit SSH auf der NAS als root anmelden und folgenden Befehl ausführen:

docker network create -d macvlan --subnet=192.168.20.0/24 --gateway=192.168.20.40 --ip-range=192.168.20.80/28 --aux-address 'host=192.168.20.80' -o parent=eth0 mac0

Die IP Adresse meiner NAS ist 192.168.20.30 das dazugehörige Subnetz ist 192.168.20.0/24. Mit dem Befehl oben habe ich eine „MACVLAN Schnittstelle“ in Docker im Subnet 192.168.20.80/28 angelegt. In diesem Subnet werden IP Adressen von 192.168.20.80 bis 192.168.20.95 vergeben (http://www.subnet-calculator.com/cidr.php).

Dieser Bereich sollte beim eigenen DHCP Server ausgeschlossen werden um nicht doppelte IP Adressen zu vergeben.
In Docker sehe ich jetzt nun den Eintrag mac0 unter Netzwerk.

 

Also nächstes den Docker Container buanet/iobroker installieren und anders als in der Anleitung beschrieben in den erweiterten Einstellungen unter Netzwerk den Netzwerknamen mac0 auswählen.

Jetzt kann der Container gestartet werden und sollte eine IP Adressen zwischen 192.168.20.81 bis 192.168.20.95 erhalten. (Die IP Adresse 192.168.20.80 wurde mit dem Parameter –aux-address ‚host=192.168.20.80‘ ausgeschlossen).
Nun solle man ioBroker mit http://192.168.20.x:8081 von außen erreichen. Jetzt gibt es leider noch 2 Probleme. Einmal ist der DNS Server im Docker Container verkehrt und keine Namen auflösen und man kann aus dem Docker Container nicht die NAS erreichen und umgekehrt.
Folgendermaßen kann man das Problem lösen! Dafür wieder mit SSH auf der NAS als root anmelden und folgende Befehle ausführen:

# Virtuelles Netzwerk Device mac1 anlegen
ip link add mac1 link eth0 type macvlan mode bridge
ip addr add 192.168.20.80/32 dev mac1
ip link set mac1 up
ip route add 192.168.20.80/28 dev mac1

Somit ist der Docker ioBroker Container nun auch von der NAS aus ansprechbar. Aus dem Docker Container ist die NAS über die zusätzliche IP Adresse 192.168.20.80 zu erreichen. Leider sind die Einstellungen nach jedem reboot der NAS weg und müssen neu angelegt werden. Ich habe mir ein kleines sh Skript erstellt, welches bei jedem Start der NAS über den Synology Aufgabenplaner ausgeführt wird.

Nun noch das Problem mit dem DNS Server bereinigen. Dafür im ioBroker Docker Container ein Terminal öffnen. Nun als erstes einmal folgenden Befehl durchführen:

echo "nameserver 8.8.8.8 "> /etc/resolv.conf

Damit wurde der DNS Server mit der IP-Adresse 8.8.8.8 eingerichtet. Leider wird der Eintrag beim jedem reboot des ioBroker Docker Containers überschrieben. Nun schnell noch folgende Befehle ausführen um das System auf den neusten Stand zu bringen und den Editor vi zu installieren.

apt-get update
apt-get upgrade
# Editor VI installieren
apt-get install vim
apt-get install net-tools
apt-get install dnsutils
# Für Webcam Einbindung bei iobroker.yahka
apt-get install ffmpeg

# Zeitzone geradeziehen
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime

So jetzt nun noch das Startskript anpassen, damit der Nameserver bei jedem Neustart des Container überschrieben wird. Dafür im Docker Container mit dem Editor vi das Skript /opt/scripts/iobroker_startup.sh um folgende Einträge am Anfang ergänzen:

#!/bin/sh

# Ergänzung - Anfang
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "192.168.20.80 nas nas.mydomain.local" >> /etc/hosts
# Ergänzung - Ende

cd /opt/iobroker

# ...

Jetzt den Container neu starten. Übrigens die Migration der „alten“ ioBroker Docker Installation in den neuen Container war total unproblematisch. Dafür habe ich das /opt/iobroker Verzeichnis kopiert. Vorher hatte ich die ioBroker / ioBroker Admin Versionen auf die gleiche Versionsnummern hochgezogen.

Falls Ihr ein Bond am Laufen habt oder Open vSwitch nutzt dann müsst Ihr als Device bondX (X = 0,1,2,…), oder ovs_ethX (X = 0,1,2,…) statt ethX nutzen.

Leider muss das MACVLAN bei jedem Neustart der Synology NAS neu eingerichtet werden. Aus diesem Grund habe ich eine kleines Skript erstellt, Dieses rufe ich im Aufgabenplaner (Systemsteuerung -> Aufgabenplaner) alle 5 Minuten als Benutzer root auf:

#!/bin/sh

if ip link | grep "mac1@eth0" > /dev/null; then

 echo "Device mac1 existiert"

else

 echo "Device mac1 anlegen"
 ip link del mac1
 ip link add mac1 link eth0 type macvlan mode bridge
 ip addr add 192.168.20.80/32 dev mac1
 ip link set mac1 up
 ip route add 192.168.20.80/28 dev mac1

fi

 

3 Responses

  1. Nano
    | Antworten

    Danke für die Anleitung!
    Kleiner Hinweis für andere User, die das evtl. auch mit Hilfe von Portainer (bei mir 1.22.0) nachstellen wollen:
    Das Hinzufügen der „aux-address“ über das Portainer Web-Interface funktioniert (bei mir) nicht.
    Beim überprüfen des erzeugten Netzwerks mit „docker network inspect mac0“ erscheint kein Eintrag „AuxiliaryAddresses“: {
    „host“: „192.168.10.80“
    }
    Meine Synology Docker-Version: 17.05.0-0401.
    Es ging bei mir nur über die Kommandozeile so wie Du es aber auch beschrieben hattest.
    Ich vermute einen Bug in Portainer in der Kombination mit der Synology Docker Version.

  2. […] zu MACVLANs den findet Du hier. Das Thema ist nicht ganz […]

  3. […] intenal webserver.This article is all about solving this issue. I found part of the solution here. But my German is not sufficient enough so I ran it through Google translate, and wrote this […]

Schreibe einen Kommentar zu Nano Antworten abbrechen

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