NEWS
IoBroker im Multihost Setup im Docker unter Ubuntu 18.04 LTS
-
Hallo,
ich bin neu hier und habe mich die letzten Tage mal damit beschäftigt neben meine openhab Installation gegen ioBroker auszutauschen. Da das ganze nicht so geradlinig wie erhofft lief hilft meine Lösung vielleicht dem einen oder anderen.
Mein Ziel war es einen ioBroker Docker Container mit mutlthost support unter ubuntu laufen lassen.
Das Dockerfile ist unter https://github.com/castorlighting/docker-iobroker zu finden.
das ganze ist ein Fork von https://github.com/buanet/docker-iobroker
somit musste ich nicht ganz von 0 starten. Vielen Dank an dieser Stelle.
Meine ersten Versuche waren leider wenig von Erfolg gekrönt. Daher hier meine Lösung:
Ubuntu 18.04 LTS installiert
- feste IP vergeben
$ sudo nano /etc/netplan/01-netcfg.yaml# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: enp0s3: addresses: [192.168.41.14/24] gateway4: 192.168.41.1 nameservers: addresses: [192.168.41.1,8.8.8.8] dhcp4: noDanach folgende Pakete installiert:
# Install Docker Comunity Edition $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ sudo apt-get update $ sudo apt-get install docker-ce # Install Local Persist Login $ curl -fsSL https://raw.githubusercontent.com/CWSpear/local-persist/master/scripts/install.sh | sudo bash #Compose $ sudo apt-get install docker-composeUm das ganze per gui überwachen zu können und ein termial zur Verfügung zu haben habe ich mit noch einen Portainer zur Hilfe genommen.
Die erleuchtende Lösung hier, um den ioBroker Container am laufen zu halten kam hier aus dem Forum.
Hier meine docker-compose.yml
version: '2' services: portainer: image: portainer/portainer ports: - "9010:9000" command: -H unix:///var/run/docker.sock volumes: - /var/run/docker.sock:/var/run/docker.sock - ./portainer_data:/data #iobroker iobroker: privileged: true stdin_open: true tty: true depends_on: - portainer ports: - "1880:1880" #node-red - "1883:1883" #mqtt - "2001:2001" #homematic - "8081:8081" #iobroker admin - "8282:8282" #flot - "8088:8088" #terminal - "8284:8284" #socketIO - "8123:8123" #homekit - "50005:50005" #Multihost - "9000:9000" #Multihost - "9001:9001" #Multihost volumes: - /var/run/docker.sock:/var/run/docker.sock - iobroker:/opt/iobroker - /dev/:/dev/ hostname: iobroker container_name: iobroker restart: always image: castorio/iobroker volumes: iobroker: driver: local-persist driver_opts: mountpoint: /path/to/mount/iobrokerDas Volume innerhalb des Containers zu mounten hat bei mir nur mit dem local-perstist plugin funktionert. Warum habe ich leider nicht heraus gefunden. Vielleicht har da noch jemand eine Idee.
Um dem Ganzen Multihost funktionalität zu geben habe ich das buanet image noch um ein Script erweitert. Einfach per portainer in die Console der iobroker Maschine und folgendes Komando eingeben:
# /opt/maintance_scripts/enable-multihost.sh YOURSECRETBisher bin ich ganz Happy damit. Ich hoffe damit jemandem helfen zu können.
Gruß Christoph
-
Coole Sache!
Allerdings gibt es in der .yml noch ein Problem, woran ich nicht ganz unschuldig bin:viewtopic.php?f=17&t=18105#p189318
Da ist mir ein Fehler unterlaufen.
1. Wenn man devices: einsetzen will muss (sollte?)
privileged: falsesein, oder ganz weggelassen werden.
Und dann muss das device komplett angegeben sein
devices: - "/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018xxxxxx-if00:/dev/TI_CC2531"In der Adaperkonfiguration kommt dann als Com-Anschlussname (im Beispiel)
/dev/TI_CC2531rein.
Die Alternative ist natürlich auf devices: zu verzichten und stattdessen den Volume-mount. Dann aber muss der privileged: true drin sein:
... privileged: true ... volumes: - /dev/:/dev/ ...Gruß