NEWS
Rundumglücklichsupport für @thorkillar ;-)
-
mein Docker "iobroker" verhält sich immer merkwürdiger. Ich habe mich jetzt entschieden, den iobroker neu aufzusetzen. Gern möchte ich das Step by Step machen.
Ich habe mir jetzt einen neuen Container mit Portweiterleitung 18081 > 8081 und 18082 > 8082 (im Docker Container) erstellt.
Sie laufen beide parallel.
Jetzt zu meiner Frage, gibt es Probleme, wenn ich zwei iobroker laufen lasse, die gleichzeitig auf die verschiedenen Adapter zugreifen möchten? (Alexa, iot, Homematic).
Und noch eine Nachfrage an die Docker-Experten: Die Portweiterleitungen sind ja "nur" im Container. Wenn ich später einen neuen Container baue, ohne Portweiterleitungen, dürfte das funktionieren?
-
@thorkillar sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
Oder bekomme ich das anders hin. (ohne VPN)?
Die Frage ist eher: Ist das wirklich nötig?
So praktisch das auch ist: Jeder offene Port ist wie ein offenes Scheunentor.Ohne VPN wohl kaum.
-
@thorkillar sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
Ich habe mir jetzt einen neuen Container mit Portweiterleitung 18081 > 8081 und 18082 > 8082 (im Docker Container) erstellt.
Bedenke: Du wirst mit diesen Ports nicht auskommen.
Je nachdem über welchen Port die diversen Adapter mit ihrer jeweiligen Gegenstelle kommunizieren, wirst Du noch eine Reihe weiterer Ports mappen müssen. -
mein Gedanke war, den neuen mit 18081 + 18082 aufbauen.
Dann den alten (defekten) abschalten.
Den neuen Container löschen und neu erstellen. Jedoch ohne Portweiterleitungen.So kann ich im Parallelbetrieb vergleichen, wie gewisse Einstellungen sind...
-
@thorkillar sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
Und noch eine Nachfrage an die Docker-Experten: Die Portweiterleitungen sind ja "nur" im Container. Wenn ich später einen neuen Container baue, ohne Portweiterleitungen, dürfte das funktionieren?
das beste wäre, wenn du macvlan benützt.
dann erhält der container eine eigene IP.
ich sehe du verwendest synology, da weiß ich leider nicht wie es geht.
ich selbst verwende portainer. das ist eine management gui für docker, welche einem vieles einfacher macht.
buanet hat für portainer eine anleitung geschriebenm wie man dort das macvlan einrichtetEvtl nochmal zur Terminologie
Bei Docker spricht man von Portmapping. Also Ports innerhalb des Containers werden auf Ports des Host-Systems gemappt.Portweiterleitung macht man im Router. Da werden Anfragen, die über bestimmte Ports eingehen auf Rechner im internen Netz weitergeleitet.
-
@oliverio sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
Portweiterleitung macht man im Router. Da werden Anfragen, die über bestimmte Ports eingehen auf Rechner im internen Netz weitergeleitet.
Danke. Wieder was gelernt.
Dann werde ich mich dem Portainer mal beschäftigen.
-
@thorkillar
portainer verwendet zum aufruf von container den selben syntax wie
docker-compose. es nennt sich dort nur stacksso sieht aktuell mein produktions iobroker container mit redis mit docker-compose/stacks aus
version: '3' services: iobrokerprod4: restart: always image: buanet/iobroker:latest container_name: iobrokerprod4 hostname: iobrokerprod4 ports: - "8081:8081" environment: SETGID: 1001 SETUID: 1001 volumes: - /home/iobroker/docker/volume/iobroker_prod4:/opt/iobroker - /home/iobroker/docker/volume/iobroker_prod4_nodemodules:/usr/lib/node_modules - /media/iobroker_backup/:/opt/iobroker/backup networks: dockerMACVLAN: ipv4_address: 192.168.1.85 iobrokerprod4: redis4: image: "redis:alpine" volumes: - /home/iobroker/docker/volume/redis_prod4:/data networks: iobrokerprod4: networks: dockerMACVLAN: external: true iobrokerprod4:
die macvlan definition lief aber ausserhalb, da ich mehrere container mit eigenen ip-adressen habe. sehr schön ist bspw auch, das der redis container keine ip-adresse benötigt, sondern auf einem 2.netz (iobrokerprod4) mit dem iobroker verbunden ist.
man sollte tunlichst darauf achten, das die ip-adressen nicht auch noch vom dhcp des routers vergeben werden.
-
@oliverio Danke Dir. Portainer habe ich zum laufen bekommen. MACVLAN leider nicht.
Eine Verständnisfrage: in der Anleitung hat er unter Gateway 192.168.0.1 angegeben. => Das ist der Router (FritzBox)
Wenn mein Router die 192.168.0.4 hat, muss ich die da eintragen? -
warum hat dein router die 192.168.0.4 ?
normalerweise haben die router eigentlich immer die 1?bei subnet trägst du den ganzen adressierbaren adressbereich ein.
wenn du bei netzwerkmaske immer 255.255.255.0 einträgst, dann wäre es- subnet: 192.168.0.0/24
wenn dein router die adresse 192.168.0.4 hat, dann trägst du das bei gateway ein.
bei ip_range kommt es darauf an, wie einfach du es haben möchtest.
Ganz einfach wäre dort auch 192.168.0.0/24 einzutragen.
Dann musst du aber aufpassen wie der Fuchs, das du bei jedem MACVLAN Container auch explizit eine IP-Adresse angibt die nicht noch einmal vergeben ist. Gibst du keine an, dan wähl docker aus diesem Bereich eine aus.
Wenn du einen eingeschränkten Bereich wählst, der am DHCP deines Routers auch definitiv ausgeklammert ist, dann bist du save. Aber ich habe und würde IMMER explizit eine IP-Adresse angeben. Ich habe mir das auch in einer separaten Datei dokumentiert.
Je nachdem wieviele Adressen du vergeben möchtest, kannst du die Range aber nicht frei wählen. Diese folgt gewissen regeln, die man unter der folgenden Adresse selbst berechnen kann
https://www.heise.de/netze/tools/netzwerkrechner/
Dort trägst du bspw im ersten Feld (IP-Adresse eine Wunschadresse ein bspw 192.168.0.85
Danach kannst du über die Pfeilbuttons den CIDR-Wert erhöhen (dadurch wird die IP-Range-kleiner) bis im Feld Anzahl Hosts eine für dich annehmbare Anzahl von Hosts drin steht. sagen wir mal 14 IP-Adressen (es sind am Ende allerdings 3 weniger verfügbar). Das müsste dann der CIDR Wert 28 sein.
Dann kannst du im unteren Bereich die Netzadresse sehen: 192.168.0.80. Diese könntest du dann zusammen mit dem CIDR Wert in die Docker konfiguration als IP-Range eintragen >192.168.080/28
Nutzbare IP-Adressen sind aber nur 192.168.0.81 bis 192.168.0.94, da 80 sozusagen als Gateway dieses Segments fungiert. das brauchst aber nicht zu beachten und die letzte Adresse agiert immer als Broadcast-Adresse.
Ich könnte jetzt noch ein paar Details zu den auswirkungen erzählen, aber das wäre aktuell zuviel Infos für dich.Den aux_adresses-Abschnitt kannst du eigentlich löschen. Leider ist die Doku da etwas spärlich. Ich habe es so verstanden, das ich in dieses Segment noch IP-Adressen aus ganz anderen Segmenten mit berücksichtigen kann. Aber das müsste irgendein Spezialfall sein, den brauchst du nicht. Ich hab das auch nicht.
config: - subnet: 192.168.0.0/24 gateway: 192.168.0.4 ip_range: 192.168.0.80/28
Noch ne Info was ist ein Gateway
Ein Netzgerät sendet an den Gateway immer die Päckchen, die nicht im gleichen Netzwerksegemt sind. Nur das Gateway weiß wohin es die Päckchen sonst noch routen kann. -
@thorkillar
noch eine kleine ergänzung
macvlan hat einen kleinen nachteil.
container die mit macvlan laufen können die ip-adresse des docker hosts nicht erreichen.
das lässt sich aber beheben, in dem man auf dem host eine route einrichtet.dazu habe ich die folgende datei erstellt (bei debian artigen betriebssystemen. bei anderen weiß ich nicht)
/etc/network/if-up.d/dockermacvlan
und folgenden inhalt reinkopiert,
anzupassen wäre enp3s0 mit der bezeichnung deiner ethernetschnittstelle
und 192.168.1.80/28 mit der angabe, wie du die iprange im docker angegeben hast.
dann werden nämlich alle päckchen aus diesem netzwerksegment auch an deine netzwerkschnittstelle weitergereicht und der host ist erreichbar.
ich hatte ein mysql direkt auf dem host installiert und wollte mit phpmyadmin welches ich als container laufen gelassen habe drauf zugreifen. das ging aber bis zu diesem zeitpunkt nicht#!/bin/sh if [ "$IFACE" = "enp3s0" ]; then ip link add macvlan0 link enp3s0 type macvlan mode bridge ip addr add 192.168.1.80/28 dev macvlan0 ip link set macvlan0 up fi
@andre
evtl willst du das noch in deinen macvlan Artikel mit einbauen -
@oliverio Danke für den Tipp, aber es gibt eine einfachere Möglichkeit die Kommunikation zum Host zu ermöglichen, die ich jeder anderen Bastellösung über routen und Manipulation des MACVLAN vorziehen würde...
Meine Empfehlung wäre die Zuweisung eines internen Bridge Netzwerks zusätzlich zum MACVLAN. In einem Docker Bridge Netzwerk stellt der Host in der Regel das Gateway dar und kann darüber erreicht werden. Der Vorteil: Die Kommunikation zwischen Container und Host läuft zu 100% intern und abgeschottet. Außerdem muss man sich nichts merken was man an Konfiguration am Host verbogen hat...Beispiel-Konfig aus meinem Testsystem.
Netzwerkzuweisung meines ioBroker Containers:networks: macvlan: ipv4_address: 192.168.11.41 bridge: ipv4_address: 172.18.0.2
Definition der Netzwerke:
networks: macvlan: driver: macvlan driver_opts: parent: eth0 ipam: config: - subnet: 192.168.11.0/24 gateway: 192.168.11.1 ip_range: 192.168.11.40/29 aux_addresses: net-address: 192.168.11.40 bridge: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1 ip_range: 172.18.0.1/24
Spreche ich aus meinem Container jetzt die IP-Adresse 172.18.0.1 erreiche ich meinen Host.
MfG,
André -
@andre
Ah ok.
Benötigt man bei Bridge dann die ganzen Zusatzangaben?
Da Bridge der default ist müsste es dann reichen einfach nur den Namen zu definieren. -
@oliverio Die default bridge würde ich nicht verwenden. M.W. gibt es da ein paar Einschränkungen (z.B. kein DNS). Natürlich kann man die Netzwerke (sowohl MACVLAN als auch Bridge) auch manuell definieren und dann, wie bei dir oben, einfach als external einbinden...
-
@oliverio sagte
warum hat dein router die 192.168.0.4 ?
normalerweise haben die router eigentlich immer die 1?
Das ist aus Zeiten, als wir via openVPN ein Netzwerk zum Zocken aufgebaut hatten. Wir waren zu viert und ich hatte dann die 192.168.0.4 bekommen. Auch wenn wir es nicht nutzen, ich war immer zu faul, dass zu ändernbei subnet trägst du den ganzen adressierbaren adressbereich ein.
wenn du bei netzwerkmaske immer 255.255.255.0 einträgst, dann wäre es- subnet: 192.168.0.0/24
wenn dein router die adresse 192.168.0.4 hat, dann trägst du das bei gateway ein.
bei ip_range kommt es darauf an, wie einfach du es haben möchtest.
Ganz einfach wäre dort auch 192.168.0.0/24 einzutragen.Dann musst du aber aufpassen wie der Fuchs, das du bei jedem MACVLAN Container auch explizit eine IP-Adresse angibt die nicht noch einmal vergeben ist. Gibst du keine an, dan wähl docker aus diesem Bereich eine aus.
Mein DHCP Bereich fängt bei 0.200 an. Und die 192.168.0.100 habe ich nicht vergeben.
Ich möchte gern 2 iobroker Docker laufen lassen. Ein Live- und ein Testsystem. Und da von vorn anfangen muss/möchte, dachte ich mir, dann mach ich es gleich so, wie es von euch empfohlen wird.
Als Anleitung habe ich die von Buanet genutzt.
https://smarthome.buanet.de/2020/09/macvlan-ueber-portainer-einrichten/Ich hab es mehrfach versucht, und Schritt für Schritt mich an die Anleitung gehalten. Aber irgendwas mach ich falsch ...
-
hm, besser wäre es ein größeres Netz zu nehmen.
Ansonsten hast du da genau nur eine einzige Adresse drin.
Ein netz mit 14 IPs welche die 100 mit einschließt wäre dannconfig: - subnet: 192.168.0.0/24 gateway: 192.168.0.4 ip_range: 192.168.0.96/28
Nutzbare IPs .97-.110
-
Ganz bescheidene Moderatorenfrage:
worum geht es hier jetzt eigentlich?
üblicherweise soll für jedes neue Thema ein neuer Thread aufgemacht werden.
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1Dann mit aussagekräftigem Titel und in der richtigen Kategorie.
von dem Inhalt zum Threadtitel sind wir mittlerweile meilenweit weg, inzwischen scheint es mir um Aufbau einer Containerumgebung/Docker oder gar aufbau von Netzwerken zu gehen.
ich tue mich hier mit dem Thread wirklich schwer diesen in verschiedene Themen und Kategorien zu spalten.
ich will jetzt aber auch nicht den gsnzen Thread umbenennen zu "Aufbau eines Containers" und in offTopic verschieben.
Ich bitte im praktikable Vorschläge.
-
@homoran
Schieb nach off topic und benenne es
Support thorkillar
Wenn jemand sucht bspw docker
Dann findet er diesen thread dennoch -
@homoran sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
worum geht es hier jetzt eigentlich?
Sorry erstmal, daran hab ich gar nicht gedacht.
@oliverio sagte in Benötige Hilfe: Viele Adapter stürzen regelmäßige ab:
hm, besser wäre es ein größeres Netz zu nehmen.
Ansonsten hast du da genau nur eine einzige Adresse drin.
Ein netz mit 14 IPs welche die 100 mit einschließt wäre dannOkay, ich habe mir mal einen IP Bereich rausgesucht, der auch frei ist. Ab 101 sind die IPs belegt.
Ich habe mal in kurzen Videos aufgenommen, was ich gemacht habe. Vielleicht besser, als zu beschreiben.
https://smarthome.buanet.de/2020/09/macvlan-ueber-portainer-einrichten/
- iob_public_conf erstellen
- iob_public erstellen
- Container erstellen, der dann mit einem Fehler nicht erstellt wird.
Danke für den Support.
Nachtrag: im Docker der Synology taucht der Container kurz auf, mit der folgenden Fehlermeldung:
-
Also macvlan im 1. video ist nicht korrekt.
du musst schon den netzwerk rechner von heise verwenden, das du die richtige netzwerkadresse findest. du kannst die nicht beliebig verwenden. eine detaillierte beschreibung wie du vorgehst habe ich oben beschriebenvideo2: keine ahnung was du da machst. wenn es der versuch ist ein weiteres netz anzulegen. dann lass das erst mal. ist erstmal nicht wichtig. kann man später noch machen
video 3: erzeugung des containers bist du auf der falschen seite. du must nicht nach container sondern nach stacks. dort kannst du oben auf web editor wechseln und trägst dann die docker-compose config ein. die die ich oben schon geposted habe musst du natürlich noch anpassen.
- richtige ip adresse
- die richtige netzwerknamen
- die richtigen volume pfade auf deiner festplatte
aber das müsste doch eigentlich auch in der beschreibung von buanet so drin stehen.
https://smarthome.buanet.de/2021/01/arbeiten-mit-portainer-stacks/
-
@oliverio danke für die Deine Antwort.
ich habe noch etwas gegooglet, und mir ein paar youtube Videos angeschaut. Und dann erneut versucht, leider mit dem gleichen Problem.
config: - subnet: 192.168.0.0/24 gateway: 192.168.0.4 ip_range: 192.168.0.96/28
das hattest Du vorgeschlagen. Da ich im Bereich 102-199 keinen Platz mehr habe, habe ich jetzt das so angepasst:
config: - subnet: 192.168.0.0/24 gateway: 192.168.0.4 ip_range: 192.168.0.32/28
@oliverio sagte in Ruddumglücklichsupport für @thorkillar
:
Also macvlan im 1. video ist nicht korrekt.
Meinst Du damit, dass als Driver nicht macvlan genommen werden soll?
Ich habe es anhand der Anleitung von buanet erneut, jetzt mit folgenden Einstellungen versucht:
video2: => ich hatte mich auch hier an die Anleitung gehalten.
erzeugung des containers bist du auf der falschen seite.
auch hier hatte ich mich an die Anleitung gehalten :'-(
Auch habe ich es wie im https://www.youtube.com/watch?v=GZ_EqUcBiN8&ab_channel=Navigio-JürgenBarth Video beschrieben versucht, mit der gleichen Fehlermeldung.Kannst Du mir sagen, was ich falsch mache? Und vor alle, wie ich es richtig mache?
Eckdaten:
IP der Fritzbox 192.168.0.4
DHCP Bereich 192.168.0.200-250
Im Bereich 192.168.0.30-50 dürfte es keine IP Konflikte geben.
Ich brauche eigentlich nur eine IP, um das Testsystem nicht mit Ports zu betreiben.Das Livesystem kann ich ja direkt per host laufen lassen.
Ich hoffe, das geht nicht zu weit ins OT.
Danke für Eure Hilfe.
Edit: Tippfehler korrigiert.