NEWS
USB in Docker via neuer Container über Compose u.a. andere
-
@glasfaser Ok, danke. Also, nach meinem Tagwerk, gehts jetzt wieder hier weiter mit der Nachtschicht...
Also Network für Container: tatsächlich habe ich mich da im bisherigen Setup gar nicht groß drum gekümmert, weder bzgl. spezieller Config, noch in Bezug auf das tiefere inhaltliche Verständnis, von daher habe ich auch hier noch eine Lernkurve vor mir.- hier mal das bisherige Setup unter Netzwerk (DSM-UI):
Es gibt da also sowohl was mit "host" (iobroker), als auch mit "bridge" (portainer) und noch eine spezielle Sache für influx-grafana... (hab ich wohl aus irgendeinem Youtube tutorial so übernommen)
- Das neue Setup (über Portainer docker compose) ergibt an gleicher Stelle nun dieses Config:
Also meine Fragen:
- was bedeutet jeweils bridge oder host?
- wie mache ich es denn im neuen Setup sinnvollerweise?
Schon mal danke.
- hier mal das bisherige Setup unter Netzwerk (DSM-UI):
-
@glasfaser ok, soll ich neuen aufmachen oder umbenennen?
-
@chrisham sagte in USB Device für IOBroker in Docker:
oder umbenennen?
ist ja schon ein Threadtitel :
Rundum Sorglos Paket
-
@dp20eic said in USB Device für IOBroker in Docker:
- nur wenn Du weißt, was Du machst, solltest Du
latest
beim Image angeben, denn wenn dann die V10 kommt, dann bügelst Du die über Deine V9, nur vielleicht hat sich das Env. verändert, dann fängst Du an zu suchen, bleib erst einmal innerhalb eines Releases.
Mein Wissen erweitert sich täglich :), aber ok, werde ich nochmals überlegen...
- ich sehe, gerade nicht, das Du im
ioBroker
Container das nötigeinfluxDB-cli
mit installierst, brauchst Du aber!
InfluxDB The following is valid for all supported cpu architectures. You need to run ioBroker Image Version v8.1.0 or greater. To fulfill the prerequisites for running an InfluxDB backup/ restore with ioBroker.backitup adapter you need to add the following packages to your containers environment variable PACKAGES:
ok, danke.
Ich denke, Du musst die
""
bei- PACKAGES="ffmpeg lame sox libsox-fmt-mp3 asterisk"
wegnehmen.VG
Berndaha.
Vielen Dank.
- nur wenn Du weißt, was Du machst, solltest Du
-
@oliverio vielen Dank, also so korrekt (schon bei allen services den gleichen netzwerknamen (iobroker-4)?
version: '3' services: iobroker: restart: always image: buanet/iobroker:latest container_name: iobroker-4 hostname: iobroker-4 ports: - "8081:8081" volumes: - /volume1/docker/iobroker-Chrisham:/opt/iobroker - /volume1/docker/userscripts:/opt/userscripts - /volume1/docker/Backup:/opt/backup/ environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - DEBIAN_FRONTEND=teletype - LANG=de_DE.UTF-8 - LANGUAGE=de_DE:de - LC_ALL=de_DE.UTF-8 - SETGID=1000 - SETUID=1000 - TZ=Europe/Berlin - USBDEVICES=/dev/ttyUSB0 - PACKAGES=ffmpeg lame sox libsox-fmt-mp3 asterisk influxdb2-cli devices: - /dev/ttyUSB0:/dev/ttyUSB0 networks: iobroker-4: influxdb: restart: always image: influxdb:latest container_name: influxdb-4 ports: - "8086:8086" volumes: - /volume1/docker/influxdb/config:/etc/influxdb2 - /volume1/docker/influxdb/data:/var/lib/influxdb2 environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - GOSU_VER=1.12 - INFLUXDB_VERSION=2.7.1 - INFLUX_CLI_VERSION=2.7.3 - INFLUX_CONFIGS_PATH=/etc/influxdb2/influx-configs - INFLUXD_INIT_PORT=8086 - INFLUXD_INIT_PING_ATTEMPTS=600 - DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME=default - DOCKER_INFLUXDB_INIT_MODE=setup - DOCKER_INFLUXDB_INIT_USERNAME=iobroker - DOCKER_INFLUXDB_INIT_PASSWORD=*1Xs(QD5gY0!B&XHe1_x - DOCKER_INFLUXDB_INIT_ORG=smarthome - DOCKER_INFLUXDB_INIT_BUCKET=iobroker networks: iobroker-4: grafana: restart: always image: grafana/grafana:latest container_name: grafana-4 ports: - "3000:3000" volumes: - /volume1/docker/grafana:/var/lib/grafana - /volume1/docker/grafana:/var/lib/grafana/plugins environment: - PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - GF_PATHS_CONFIG=/etc/grafana/grafana.ini - GF_PATHS_DATA=/usr/share/grafana - GF_PATHS_HOME=/usr/share/grafana - GF_PATHS_LOGS=/var/log/grafana - GF_PATHS_PLUGINS=/var/lib/grafana/plugins - GF_PATHS_PROVISIONING=/etc/grafana/provisioning - GF_AUTH_access enabled=true - GF_AUTH_org_name=CH_Smart networks: iobroker-4: networks: dockerMACVLAN: external: true iobroker-4:
bei influxdb hatte ich im compose-file nichts mit IP drin, das war nur im DSM-Config, d.h. dann einfach nur den eintrag mit networks...?
Container laufen schon, baut aber noch im Hintergrund, bin gespannt...
Auf DSM-Ebene habe ich beobachtet, dass sich nun der iobroker-name geändert hat (erklärbar...?):
-
@glasfaser gut so?
-
@chrisham Gibt Probleme, Grafana container will nicht so recht:
2023/10/24 23:27:56,stdout,"You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later " 2023/10/24 23:27:56,stdout,GF_PATHS_DATA='/usr/share/grafana' is not writable.
Das sind exakt die Env-Var/Pfade, die ich bisher beim DSM-Docker-config angegeben habe:
Hat sich doch also nichts geändert und das sind doch Pfade innerhalb des Containers.
In der Ref (https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/#migrate-to-v51-or-later) steht noch was drin, dass der Container mit User gestartet werden soll, der ents. Rechte hat:
Use bind mounts
If you plan to use directories on your host for the database or configuration when running Grafana in Docker, you must start the container with a user that has the permission to access and write to the directory you map.Die werden ja durch Portainer gestartet....
In der o.g. Referenz stehen bei dem docker-compose Bsp. gar keine Env-Variablen/Pfade drin, soll ich die auch mal rausnehmen...?Der Weg ist doch etwas beschwerlicher als gedacht, dabei wollte ich doch nur mein USB-Smart-Meter anschließen...
-
@chrisham Es stimmen andere Dinge noch nicht:
-
der "komische" iobroker-Container (heißt aber nur so in DSM) scheint kaputt zu sein, allerdings in Portainer sieht alles ok aus:
-
Portainer:
-
DSM:
--> Kann da auch kein Terminal öffnen.
Hmm, bin mal gespannt ob dieses Vorhaben irgendwann noch konvergiert....
-
-
@chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:
diese beiden Zeilen bitte löschen.das hat mit macvlan zu tun. das hast du nicht
dockerMACVLAN: external: true
dann würde ich den bindestrich im netzwerknamen weglassen iobroker-4:
kann funktionieren, weiß ich nicht. bei solchen namen halte ich mich immer an die regel a-z0-9ansonsten passt das.
du kannst es ja dann selber mal probieren, in dem du die console bspw im iobroker container öffnest (nicht die console auf deinem host system) und dannping grafana
machen. da müsste dann eine ip adresse kommen, aber keine aus deinem normalen lan-adressbereich.. das ist dann die ip unter der grafana innerhalb dieser service definition erreichbar ist. aber wie gesagt. normalerweise musst du dich bei docker nicht um konkrete ip adressen kümmern. das macht docker für dich. du sprichst die services nur über den servicenamen=hostname an
-
@oliverio ok, danke. baut gerade neuen stack mit:
version: '3' services: iobroker: restart: always image: buanet/iobroker:latest container_name: iobroker-6 hostname: iobroker-6 ports: - "8081:8081" volumes: - /volume1/docker/iobroker-Chrisham:/opt/iobroker - /volume1/docker/userscripts:/opt/userscripts - /volume1/docker/Backup:/opt/backup/ environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - DEBIAN_FRONTEND=teletype - LANG=de_DE.UTF-8 - LANGUAGE=de_DE:de - LC_ALL=de_DE.UTF-8 - SETGID=1000 - SETUID=1000 - TZ=Europe/Berlin - USBDEVICES=/dev/ttyUSB0 - PACKAGES=ffmpeg lame sox libsox-fmt-mp3 asterisk influxdb2-cli devices: - /dev/ttyUSB0:/dev/ttyUSB0 networks: iobroker6: influxdb: restart: always image: influxdb:latest container_name: influxdb-6 ports: - "8086:8086" volumes: - /volume1/docker/influxdb/config:/etc/influxdb2 - /volume1/docker/influxdb/data:/var/lib/influxdb2 environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - GOSU_VER=1.12 - INFLUXDB_VERSION=2.7.1 - INFLUX_CLI_VERSION=2.7.3 - INFLUX_CONFIGS_PATH=/etc/influxdb2/influx-configs - INFLUXD_INIT_PORT=8086 - INFLUXD_INIT_PING_ATTEMPTS=600 - DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME=default - DOCKER_INFLUXDB_INIT_MODE=setup - DOCKER_INFLUXDB_INIT_USERNAME=iobroker - DOCKER_INFLUXDB_INIT_PASSWORD=*1Xs(QD5gY0!B&XHe1_x - DOCKER_INFLUXDB_INIT_ORG=smarthome - DOCKER_INFLUXDB_INIT_BUCKET=iobroker networks: iobroker6: grafana: restart: always image: grafana/grafana:latest container_name: grafana-6 ports: - "3000:3000" volumes: - /volume1/docker/grafana:/var/lib/grafana - /volume1/docker/grafana:/var/lib/grafana/plugins networks: iobroker6: networks: iobroker6:
Für heute noch diesen Versuch, sonst gehts morgen weiter....
-
@chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:
Gibt Probleme, Grafana container will nicht so recht
das ist der richtige abschnitt
https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/#use-bind-mounts-1das ist eine berechtigungsgeschichte. viele container laufen intern mit root.
das ändert sich aber, so das auch innen, wie es sein sollte mit dedizierten usern gearbeitet wird. diese benötigen allerdings schreibrechte auf dem gastlaufwerk. diese information muss man dem container mitgeben.
füge im grafana abschnitt noch hinzuuser: '0'
und probiere ob es dann geht.
alternativ
das hier, da weiß ich aber nicht ob shell substitution unter portainer funktioniert.user: $(id -u)
-
@oliverio ok, danke. mach ich morgen dann.
Letzter Versuch mit o.g. Änderungen war leider nicht erfolgreich:- influx connected noch nicht
(auch asterisk install scheint noch nicht zu funktionieren, jedenfalls kann adapter nicht verbinden, oder wird der linux-proc nur nicht automatisch gestartet...? wobei ich die pakete über container-terminal an der üblichen stelle (/etc/init.d) auch nicht gefunden habe....
Nunja, war heute halt nicht so erfolgreich, muss noch paar h schlafen, morgen gehts weiter, dennoch vielen dank für den stetigen support!
- influx connected noch nicht
-
@chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:
In der o.g. Referenz stehen bei dem docker-compose Bsp. gar keine Env-Variablen/Pfade drin, soll ich die auch mal rausnehmen...?
in der container konfiguration immer so sparsam mit angaben umgehen wie möglich.
normalerweise hat ein container meist default werte, so das ein container einfach mal läuft.
daher nur die angaben hinzufügen, die gemäß doku unbedingt gefordert sind. alles andere kann man erst mal weglassen. erst wenn du merkst, das du da was anderes haben wills, dann kannst du ergänzen.hier der abschnitt zu den ganzen pfad angaben.
https://grafana.com/docs/grafana/latest/setup-grafana/configure-docker/#default-paths
wenn du da nix änderst, dann musst du da auch nix angeben,
ich mach mir bspw bei jedem container gedanken, was will ich da sichern und wo stehen diese daten. dann schaue ich, wie ich die da herausbekommen.zum besseren verständnis von docker und dem dateisystem. docker nutzt ein layer dateisystem. jeder darüberliegende layer überdeckt die einzelnen dateien und verzeichnisse des darunterliegenden layers. normalerweise kommt ganz unten der layer mit dem betriebssystem. dann wird darauf die applikation gelegt.
jetzt kommst du und legst darüber nochmal ein named volume oder ein verzeichnis/datei aus deinem dateisystem.
dadurch kannst du bspw einzelne dateien oder ganze verzeichnisse nach aussen legen und die dann wegsichern.
alle daten, die während der laufzeit im container erzeugt werden und nicht in einem volume liegen, sind nach der regeneration des containers wieder weg.
wenn du etwas sichern willst, dann ist sicherlich /var/lib/grafana (data) interessant
wenn du plugins installierst evtl auch den pfad zu den plugins, bin aber in grafana sicht so firm und weiß nicht was in den einzelnen verzeichnissen wirklich etwas abgelegt wird. -
@chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:
influx connected noch nicht
warum steht im protokoll dann immer noch 127.0.0.1?
das ist localhost, also wenn eine applikation zu einer anderen auf der gleichen maschine kontakt aufnehmen will.
influxdb hast du in einem eigenen container. das ist wie ein weiterer rechner mit eigener ip. also musst du dem iobroker-.influx-adapter in der configuration bei ip influxdb eintragen. das ist gemäß deiner konfiguration der servicename und damit auch gleich der hostname unter der der container erreichbar ist. -
@oliverio gut Frage. Ich schwör, ich hab nur das im compose:
version: '3' services: iobroker: restart: always image: buanet/iobroker:latest container_name: iobroker-6 hostname: iobroker-6 ports: - "8081:8081" volumes: - /volume1/docker/iobroker-Chrisham:/opt/iobroker - /volume1/docker/userscripts:/opt/userscripts - /volume1/docker/Backup:/opt/backup/ environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - DEBIAN_FRONTEND=teletype - LANG=de_DE.UTF-8 - LANGUAGE=de_DE:de - LC_ALL=de_DE.UTF-8 - SETGID=1000 - SETUID=1000 - TZ=Europe/Berlin - USBDEVICES=/dev/ttyUSB0 - PACKAGES=ffmpeg lame sox libsox-fmt-mp3 asterisk influxdb2-cli devices: - /dev/ttyUSB0:/dev/ttyUSB0 networks: iobroker6: influxdb: restart: always image: influxdb:latest container_name: influxdb-6 ports: - "8086:8086" volumes: - /volume1/docker/influxdb/config:/etc/influxdb2 - /volume1/docker/influxdb/data:/var/lib/influxdb2 environment: - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - GOSU_VER=1.12 - INFLUXDB_VERSION=2.7.1 - INFLUX_CLI_VERSION=2.7.3 - INFLUX_CONFIGS_PATH=/etc/influxdb2/influx-configs - INFLUXD_INIT_PORT=8086 - INFLUXD_INIT_PING_ATTEMPTS=600 - DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME=default - DOCKER_INFLUXDB_INIT_MODE=setup - DOCKER_INFLUXDB_INIT_USERNAME=iobroker - DOCKER_INFLUXDB_INIT_PASSWORD=*1Xs(QD5gY0!B&XHe1_x - DOCKER_INFLUXDB_INIT_ORG=smarthome - DOCKER_INFLUXDB_INIT_BUCKET=iobroker networks: iobroker6: grafana: restart: always image: grafana/grafana:latest container_name: grafana-6 ports: - "3000:3000" volumes: - /volume1/docker/grafana:/var/lib/grafana - /volume1/docker/grafana:/var/lib/grafana/plugins networks: iobroker6: networks: iobroker6:
Oder ist das dann nicht die IP, die für die interne Bridge zwischen den Containern vergeben wird. Aber ich kenn mich ja selbst nicht damit aus... wo könnte da noch was verkehrt konfiguriert sein?
-
@oliverio Guten Morgen,
gerade kam noch ein Gedanke: Config innerhalb des influx-Adapters, die übernimmt ja dann der neue Container wieder.
Und zwar steht da im influx-Adapter config, innerhalb iobroker, also "localhost":
Kann das sein, dass das dann als 127.0.0.1 aufgelöst wird? Soll ich das rausnehmen? Weiß nur nicht, ob dann Adapter noch in bisheriger Container-Config läuft...
War ne spontane Idee, falls das eine mögliche ursache ist, dann kann ich das heute Abend mal testen (bin jetzt tagsüber erstmal bei der regulären Arbeit...) -
@chrisham
bitte meine posts sorgfältig lesen und bei nicht verstehen nachfragen
ich hatte das schon 2 mal geschriebenhttps://de.wikipedia.org/wiki/Localhost
@oliverio sagte in USB in Docker via neuer Container über Compose u.a. andere:
also musst du dem iobroker-.influx-adapter in der configuration bei ip influxdb eintragen
@oliverio sagte in USB in Docker via neuer Container über Compose u.a. andere:
im adapter steht sicherlich localhost drin, da zuvor influxdb direkt mit iobroker zusammen installiert ist.
siehe oben, einfach die netzwerkkonfiguration in der docker konfiguration vornehmen und im adapter dann influxdb anstatt localhost eintragen -
@oliverio Ah ok, Chef. Sorry, das war jetzt peinlich
(ohne Rechtfertigung: war wohl spät, zu viele Probleme gleichzeitig...)
Now works like a charm- zumindest mal influxdb, jetzt muss ich mich noch um asterisk Linux paket/prozess und KNX kümmern...
Vielen Dank und Sorry nochmals!
-
@oliverio Ich weiß, KNX ist nicht deine Spezialität, nur kurz den Status und ob du hier noch einen Hinweis hättest.
Es geht wohl um diese Einstellung (local iobroker IP):
Da muss lt. Anleitung (https://www.npmjs.com/package/iobroker.knx) eigentlich die IP unter der das KNX-IP-Gateway den IOBroker findet. Das ist natürlich die NAS-Adresse, die ich über DHCP in Fritzbox auf https://10.74.178.99/ vergebe.
Allerdings ist es so, dass dieser Parameter nicht frei eingegeben werden kann, sondern nur ausgewählt werden kann. Im neuen Container-Setup findet der KNX-Adapter nicht diese Adresse bzw. bietet sie nicht zur Auswahl an:
Ich weiß, ich nicht dein Ding, aber vllt. hast ja noch eine Idee...
-
ok
leider weiß ich nicht, wie der knx adapter funktioniert
in den source kann man auch nicht reinschauen,
auf jeden Fall nicht über githubIch interpretiere, das im adapter ein server läuft.
daher schadet es nicht, in der docker konfiguration des iobrokers den port noch hinzuzufügenports: - "8081:8081" - "3671:3671"
dadurch werden anfragen von aussen auf diesem port in den container weitergereicht.
evtl reicht das, das in dem feld dann die ip (der host maschine) deines iobrokers angezeigt wird.
kannst du das feld selber füllen, auch wenn die ip nicht zur auswahl bereit steht?falls der knx-adapter udp-broadcast nutzt, dann muss man leider den network mode ändern.
da gibt es dann nur hostmode. da nutzt dein container dann die gleiche netzwerk schnittstelle wie die host maschine.
oder, was ich empfehlen würde, macvlan. dadurch erhält der iobroker eine komplett eigenständige ip, allerdings ist das zu beginn nicht so einfach zu konfigurieren und man muss sich ein paar gedanken machen, wieviele ip-adressen man in zukunft braucht. dann müssen diese ip-adressen in einer bestimmten range sein. diese range, darf nicht von deinem router anderweitig vergeben werden.aber erst einmal probieren, mit der port-angabe in der konfiguration