NEWS
[gelöst] Pi4 - bookworm, docker, portainer, iobroker, influx
-
@homoran Puh, zum Glück habe ich auch nicht behauptet, dass das ein Bug ist
Es lief unter Bullseye in gleicher Konstellation problemlos, auch wenn Portainer auf 9000 registriert war. Wo ist mein Fehler?
PS: Hätte ich in ein anderes Forum gemusst? Ich fand "Error/Bug" eigentlich ganz passend. Falls dem so ist, bitte ich um Verzeihung und -schiebung.
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
zum Glück habe ich auch nicht behauptet, dass das ein Bug ist
aber in ebendieser Kategorie gepostet
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Es lief unter Bullseye in gleicher Konstellation problemlos, auch wenn Portainer auf 9000 registriert war.
sollte es nicht gekonnt haben!
Aber it Docker kenn ich mich nicht aus -
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Wo ist mein Fehler?
Wie schon erwähnt, ist es völlig normal, das sich Portainer und ioBroker um den Port 9000 streiten, wenn iobroker im Host-Modus betrieben wird. Also Port 9000 bei Portainer nicht mappen und per https verbinden.
Starte dann mal nur Portainer und zeig mal den Output von
netstat -plte
-
@marc-berg
Das ist aktuell der Fall, Portainer nur mit 8000 und 9443Output:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN root 5611 - tcp 0 0 0.0.0.0:9443 0.0.0.0:* LISTEN root 174298 - tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN root 174296 - tcp6 0 0 [::]:ssh [::]:* LISTEN root 5613 - tcp6 0 0 [::]:9443 [::]:* LISTEN root 174299 - tcp6 0 0 [::]:8000 [::]:* LISTEN root 174297 - tcp6 0 0 [::]:8086 [::]:* LISTEN pi 175638 49641/influxd
Starte ich jetzt ioBroker, kommt das, was ich oben bereits erwähnt habe:
-------------------------------------------------------------------------------- ----- Step 3 of 5: Checking ioBroker Installation ----- -------------------------------------------------------------------------------- (Re)setting permissions (This might take a while! Please be patient!)... Done. Checking database connection... Failed. [ERROR] Error: no UUID found Please check your configuration and try again. For more information see ioBroker Docker image docs (https://docs.buanet.de/iobroker-docker-image/docs). This Script will exit now.
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Starte ich jetzt ioBroker, kommt das, was ich oben bereits erwähnt habe:
Startet ioBroker, wenn du vorher das Verzeichnis
/home/pi/docker_binds/iobroker_data/opt/iobroker
löschst? Du hast doch ein Backitup-Backup, oder?Welche Version des js-controllers hast du vorher gefahren?
-
@marc-berg Uff, ok, ioBroker startet.
Danke! Dass ich das nicht selbst ausprobiert hab
Nun, jetzt kommt das "aber"...
So richtig warm bin ich mit der Lösung nicht, auch wenn es so funktioniert. Jetzt meckern die Browser rum, HTTPS, mimimi. Gibt es eine "simple und narrensichere" Möglichkeit, Multicast-Pakete in einem bridged-Netzwerk zu empfangen? Könnte ich den Stack dann wieder nebst Portainer inkl. Port 9000 laufne lassen?
Oder gibt es gar einen besseren Ansatz?
PS: Ja, ich habe ein Backitup-Backup von Influx, ioBroker und NodeRed.
PPS: Die vorherige js-controller-Version weiß ich leider nicht, sorry. Brauche ich das Wissen? -
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Möglichkeit, Multicast-Pakete in einem bridged-Netzwerk zu empfangen?
Nein. Entweder Host oder alternativ MACVLAN. Anders geht es nicht.
Alternativ kannst du den Portainer HTTP Port ja auf 9999 oder so mappen. Dann hast du den SSL Trouble nicht.
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
PPS: Die vorherige js-controller-Version weiß ich leider nicht, sorry. Brauche ich das Wissen?
Das wäre nur relevant beim Zurückspielen des Backups. Wenn die Versionen nicht passen, wird das nichts.
-
@marc-berg Hm, schade, das MACVLAN ist für meinen Geschmack leider nicht so das Gelbe vom Ei.
Dann werde ich jetzt erst einmal versuchen, die Backups wieder einzuspielen. Entweder die Binds komplett oder nur Backitup, das entscheidet gleich mein Bauch. Leider hat sich die docker GID bei Bookworm von 994 auf 992 geändert und ich habe mittels tar ohne --numeric-owner gesichert
994 ist nun leider i2c, den ich eigentlich nicht brauche....
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
MACVLAN ist für meinen Geschmack leider nicht so das Gelbe vom Ei.
Warum? Leidest du an IP-Address-Knappheit in deinem Netzwerk?
-
@marc-berg Weil sich die Container dann gegenseitig nicht mehr sehen. Oder?
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Weil sich die Container dann gegenseitig nicht mehr sehen. Oder?
Erstmal ja, korrekt. Darum könntest du einen der Container, die miteinander reden sollen, AUCH in das zweite Netzwerk stecken. Fertig.
In dem Beispiel also den ioBroker in das MACVLAN und in das Bridge-Netzwerk, in welchem auch die InfluxDB steckt.
-
@marc-berg Oh warte, da eröffnen sich neue Welten. Container in mehreren Netzwerken. Jetzt ergibt das alles einen Sinn. Gibt es bei solchen Konstellationen etwas bestimmtes zu beachten oder regelt docker den Zugriff, wann es wohin geht?
-
@sleepwalker sagte in Pi4 - bookworm, docker, portainer, iobroker, influx:
Gibt es bei solchen Konstellationen etwas bestimmtes zu beachten oder regelt docker den Zugriff, wann es wohin geht?
Es ist (weiterhin) zu beachten, dass man keine IP-Adressen zum Ansprechen des jeweils anderen Containers nutzt, sondern den Namen. Dann wird automatisch der richtige Container (also hier z.B. "influx") angesprochen.
-
@marc-berg Holla, das gefällt mir! Ich glaube, das wird in Angriff genommen, bevor ich mit dem Wiederherstellen weitermache.
Uh, ich bin aufgeregt, werde hier auf jeden Fall Ergebnisse posten, ggf. noch die ein oder andere Frage.
Herzlichen Dank bis hierhin erst einmal! Das war super aufschlussreich (wie schon beim letzten Mal
)
-
@sleepwalker sagte in [gelöst] Pi4 - bookworm, docker, portainer, iobroker, influx:
Ich glaube, das wird in Angriff genommen
Vielleicht noch ein Tipp. Ich bin ein Fan davon, auch die Netzwerke komplett im Stack mit anzulegen. Dann hat man die gesamte Konfig in einer Datei und muss nicht noch manuell in Portainer rumwurschteln.
Beispiel mit Container in zwei Netzwerken:
services: ##### SERVIIO ##### serviio: container_name: serviio image: soerentsch/serviio hostname: serviio domainname: fritz.box restart: unless-stopped volumes: - /opt/docker/serviio/library:/opt/serviio/library - /opt/docker/serviio/config:/opt/serviio/config - /opt/docker/serviio/plugins:/opt/serviio/plugins - /opt/docker/serviio/log:/opt/serviio/log - /media/serviio:/media/serviio environment: - TZ=Europe/Berlin networks: mvl1: ipv4_address: 192.168.1.32 serviio_net: ##### NETWORKS ##### networks: mvl1: driver: macvlan name: mvl1 driver_opts: parent: eno1 ipam: config: - subnet: 192.168.1.0/24 gateway: 192.168.1.1 ip_range: 192.168.1.32/27 serviio_net: driver: bridge name: serviio_net
-
Leider hatte das Backup doch Vorrang, nachdem ich mein DHCP erstmal aufräumen musste.
Ich habe jetzt
192.168.100.64/29 Netzadresse: 192.168.100.64 Broadcast: 192.168.100.71 Host-IPs: 192.168.100.65 bis 192.168.100.70
aus meinem IP-Pool genommen. Soweit, so gut.
Nun möchte ich die Netzwerke ebenfalls in der "compose file" mit anlegen. Das sollte für ioBroker mit influx ungefähr so aussehen (noch nicht getestet):
services: iobroker: image: iobroker/iobroker:latest container_name: iobroker hostname: iobroker networks: - vlan_network ipv4_address: 192.168.100.65 - iobroker_network restart: always # ports: # - 8081:8081 # Admin # - 8082:8082 # VIS # - 1880:1880 # NodeRed # - 1882:1882 # Shelly Adapter MQTT # - 8091:8091 # Backitup Restore Webinterface # - 9081:9081 # Backitup Fileserver fur Downloads von Backitup # - 9082:9082 # Backitup Fileserver fur Uploads von Backitup # - 34103:34103 # Alexa Adapter Cookie volumes: - type: bind source: /home/pi/docker_binds/iobroker_data/opt/iobroker target: /opt/iobroker environment: - IOB_BACKITUP_EXTDB=true - PACKAGES=influxdb2-cli influx: image: influxdb:latest container_name: influx hostname: influx networks: - iobroker_network restart: always ports: - 8086:8086 # Admin volumes: - type: bind source: /home/pi/docker_binds/influx_data/var/lib/influxdb2 target: /var/lib/influxdb2 networks: vlan_network: driver: macvlan name: vlan_network driver_opts: parent: eth0 ipam: config: - subnet: 192.168.100.0/24 gateway: 192.168.100.1 ip_range: 192.168.64/29 iobroker_network: driver: bridge name: iobroker_network
Jetzt habe ich noch drei Fragen:
- Sieht das so i.O. aus?
- Die Portweiterleitungen beim ioBroker brauche ich nicht, wenn ich über die .65 gehe, oder?
- Die schwierigste Frage: Ich würde das gleiche MACVLAN gerne in einem anderen Stack nutzen, dann aber für einen Container mit der IP .66. Geht das? Ist das so, dass der erste Stack, der ein Netzwerk nutzt, es erstellt und alle anderen Stacks mit dem gleichen Netzwerknamen das Netz dann mitnutzen, sollte es schon existieren?
Sorry, etwas umständlich, aber bevor ich das kaputtfrickel...im Netz habe ich da so direkt nichts zu gefunden.
-
@sleepwalker sagte in [gelöst] Pi4 - bookworm, docker, portainer, iobroker, influx:
Sieht das so i.O. aus?
- die Einrückungen passen nicht überall. Es müssen für eine untergeordnete Ebene immer zwei Zeichen eingerückt werden.
- ip_range ist falsch, da fehlt ein Oktett
Die Portweiterleitungen beim ioBroker brauche ich nicht, wenn ich über die .65 gehe, oder?
Korrekt, bei Host oder MACVLAN sind Weiterleitungen sinnfrei. Die kann man zwar ohne Fehlermeldungen im Stack definieren, haben aber keine Funktion.
Die schwierigste Frage: Ich würde das gleiche MACVLAN gerne in einem anderen Stack nutzen, dann aber für einen Container mit der IP .66. Geht das? Ist das so, dass der erste Stack, der ein Netzwerk nutzt, es erstellt und alle anderen Stacks mit dem gleichen Netzwerknamen das Netz dann mitnutzen, sollte es schon existieren?
Das geht, hat aber ein paar kleine Randerscheinungen:
Du kannst im zweiten Stack das erste Netzwerk mit dem Schlüsselwort "external: true" mitnutzen. Das hat aber den Nachteil, dass der zweite Stack nur startbar ist, wenn der erste schon läuft.
networks: vlan_network: external: true
Oder du definierst im zweiten Stack das Netzwerk wie im ersten 1:1 nochmal. Dann ist die Startreihenfolge egal. Kleiner Nachteil: Wenn beide Stacks beendet sind, wird in diesem Fall das Netzwerk nicht mitgelöscht.
Kommt auf den konkreten Anwendungfall an, ob das sinnvoll ist.
-
@marc-berg
Herzlichen Dank, wie immerZu 1: Ja, natürlich, die 100 fehlt, Flüchtigkeitsfehler. Die Einrückungen zerschießt mir Notepad++ immer, danke für den Hinweis.
Zu 3: Lösung 1 wäre unschön, eine Startreihenfolge oder auch eine Voraussetzung für den 2. Stack geht nicht. Lösung 2 klingt jetzt nicht wild. Das Netzwerk wird ja dann beim nächsten Start wiederverwendet, nehme ich an. Oder würde das Netz als Leiche herumliegen, auch wenn ein Stack wieder gestartet wird?
Alternativ würde ich das MACVLAN halbieren oder gar vierteln. Dann gehen zwar viele Broadcasts und Netzadressen dabei drauf, aber mehr als 2 bis 3 würde ich auf dem Raspi4 eh nicht machen wollen. Mir fällt außer den beiden geplanten auch kein 3. Anwendungsfall mehr ein.
Gibt's da eine Art Best Practice?
-
@sleepwalker sagte in [gelöst] Pi4 - bookworm, docker, portainer, iobroker, influx:
Oder würde das Netz als Leiche herumliegen, auch wenn ein Stack wieder gestartet wird?
Nein, das wird dann wieder aktiv genutzt.
Alternativ würde ich das MACVLAN halbieren oder gar vierteln. Dann gehen zwar viele Broadcasts und Netzadressen dabei drauf, aber mehr als 2 bis 3 würde ich auf dem Raspi4 eh nicht machen wollen. Mir fällt außer den beiden geplanten auch kein 3. Anwendungsfall mehr ein.
Gibt's da eine Art Best Practice?Keine Ahnung. Mir fällt auf Anhieb auch kein Anwendungsfall ein, in welchem man mehrere Stacks mit MACVLAN haben sollte. Aus meiner Sicht könnte man alle Container, die einen stabilen Zustand erreicht haben und an denen man nicht mehr ständig rumfummelt, in einen Stack werfen.
Meine persönliche best practice besteht darin, dass ich einen Stack mit zwei Bridge-Netzwerken habe, in welchem alle produktiven Container (ca. 20) stecken, und einen weiteren Stack mit einem MACVLAN mit zwei Containern. Dies aber auch nur noch aus historischen Gründen.
Dann gibt es einen dritten Stack mit meiner gesamten ioBroker-Testumgebung (InfluxDB 1+2, Grafana, Redis, MQTT Broker) in einem separaten Bridge-Netzwerk.