NEWS
USB in Docker via neuer Container über Compose u.a. andere
-
aber nach dem Deploy wird diese Änderung nicht übernommen,
Kommt mir igendwie bekannt vor ..
Versuche es mit dieser Version , wie im Thread beschrieben !
-
@glasfaser Danke für den Hinweis, jetzt habe ich es gemäß
Dazu einfach als Image portainer/portainer-ce:2.15.1 nutzen und nicht das latest
mit Image portainer/portainer-ce:2.15.1 nutzen und nicht das latest, allerdings läuft diese portainer-version bei mir gar nicht.Eine Idee?
-
@chrisham sagte in USB Device für IOBroker in Docker:
nicht
und wie wirkt sich das aus?
Fehlermeldung?
was steht im log-tab des containers?du hast in den kommentaren auf der smarthomejetz-erklärung gesehen, das
bei DSM7 die Befehle etwas anders aussehen um die usb auf der synology verfügbar zu machen?
Da ist ein Link zu einer weiteren Erklärung.auch würde ich die container einstellungen nicht über duplicate/edit machen, sondern alles über eine docker-compose (bei portainer=stacks) machen. da hast du alles übersichtlich in einer datei konfiguriert und kannst leicht ändern. allerdings wird bei jeder änderung der container neu generiert. daher sollten alle flüchtigen bestandteile sich entweder in der datei befinden oder in gemappten volumes. man kann auch named volumes machen, aber dann befinden sich die dateien ganz tief bei docker, da kommst du so ohne weiteres dann nicht mehr ran, falls du einen backup machen willst.
ich habe alle gemappten volumes aller meiner docker-container in einem verzeichnis. je container ein unterverzeichnis und darin , je gemappten volume ein weiteres verzeichnis. dieser pfad wird dann in docker compose gesetzt.iobroker sieht dann bei mir so aus. auf basis dieses docker-compose werden 2 container generiert, ein iobroker, ein redis, die dann netzwerktechnisch zusammengeschaltet sind.
wenn du kein macvlan nutzt, dann müssen die netzwerk einträge gegen dein bridge netzwerk getauscht werden.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:
-
@oliverio Vielen Dank.
1.) Portainer version: portainer-ce:2.15.1
Das ist die Fehlermeldung:portainer-portainer-ce-1
date,stream,content
2023/10/23 11:59:33,stdout,"[36mINFO[0m[0006] 2023/10/23 09:59:33 [INFO] [http,server] [message: starting HTTP server on port :9000]
"
2023/10/23 11:59:33,stdout,"[36mINFO[0m[0006] 2023/10/23 09:59:33 [INFO] [http,server] [message: starting HTTPS server on port :9443]
"
2023/10/23 11:59:33,stdout,"[36mINFO[0m[0006] 2023/10/23 09:59:33 [DEBUG] [internal,init] [message: start initialization monitor ]
"
2023/10/23 11:59:33,stdout,"[36mINFO[0m[0006] 2023/10/23 09:59:33 [DEBUG] [chisel, monitoring] [check_interval_seconds: 10.000000] [message: starting tunnel management process]
"
2023/10/23 11:59:33,stdout,"[36mINFO[0m[0006] [INFO] [cmd,main] Starting Portainer [36mBuildNumber[0m=22936 [36mGoVersion[0m=1.18.3 [36mImageTag[0m=linux-amd64-2.15.1 [36mNodejsVersion[0m=14.20.0 [36mVersion[0m=2.15.1 [36mWebpackVersion[0m=5.68.0 [36mYarnVersion[0m=1.22.19
"
2023/10/23 11:59:33,stdout,2023/10/23 09:59:33 server: Listening on 0.0.0.0:8000...2023/10/23 11:59:33,stdout,2023/10/23 09:59:33 server: Fingerprint 5c:86:b2:8e:6b:59:21:a8:7f:68:12:86:76:1a:d3:0a
2023/10/23 11:59:33,stdout,2023/10/23 09:59:33 server: Reverse tunnelling enabled
2023/10/23 11:59:32,stdout,[36mINFO[0m[0005] Opened existing store [36mversion[0m=61
2023/10/23 11:59:27,stdout,[36mINFO[0m[0000] Loading PortainerDB: portainer.db
2023/10/23 11:59:27,stdout,[36mINFO[0m[0000] Proceeding without encryption key
2023/10/23 11:59:27,stdout,[36mINFO[0m[0000] Encryption key file
portainer
not present2.) Docker compose: ja, das war auch mein Ansatz zwischendurch, allerdings bin ich auch da nicht weitergekommen.
Und zwar gibt es Fehlermeldung bzgl. dem USB-Device-Eintrag (das ist ja aktuell meine Hauptmotivation einen neuen IOBroker-Container zu erstellen).compose-file:
version: '3'
services:
iobroker:
restart: always
image: buanet/iobroker:latest
container_name: iobroker-4
hostname: iobroker-4
ports:
- "8081:8081"
volumes:
- /docker/iobroker-Chrisham:/opt/iobroker
- /docker/userscripts:/opt/userscripts
- /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"
devices:
- /dev/ttyUSB0=/dev/ttyUSB0Fehlermeldung:
Error Deployment error
failed to deploy a stack: Network mychrisham-stack-1_default Creating Network mychrisham-stack-1_default Created Container iobroker-4 Creating Container iobroker-4 Created Container iobroker-4 Starting Error response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0=/dev/ttyUSB0": no such file or directoryDann hab ich ggf. auch das Problem, dass ich dann alle anderen verbundenen Container auch gleich über docker-compose machen muss...? Ich hab da noch influxdb und grafana. Oder geht das auch gemischt (IOBroker über Compose und grafana/influx über DSM-UI bzw. Portainer-UI)?
-
@chrisham
als alles erstes vorweg. wenn du das in code tags packst, ist es vieeeeel lesbarer ( der knopf </>)-
log file portainer
da ist keine fehlermeldung enthalten, also müsste portainer auch unter port 8000 erreichbar sein
grundsätzlich sieht das schon mal gut aus.
die fehlermeldungError response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0=/dev/ttyUSB0": no such file or directory
sagt, das das gerät mit diesem namen auf dem host nicht vorhanden ist.
kannst du den von der synology auf das usb zugreifen? das gerät muss erst mal auf dem host verfügbar sein, bevor man versuchen kann es in einen container weiterzureichen.
evtl ist auch die bezeichnung einfach falsch. das hängt immer auch vom gerät ab.
was für ein gerät hast du den da?
die fehlermeldung mit datei oder directory wirkt hier etwas seltsam bei einem gerät. aber einer der linux grundsätze ist: "alles ist eine datei" https://en.wikipedia.org/wiki/Everything_is_a_file@chrisham sagte in USB Device für IOBroker in Docker:
Dann hab ich ggf. auch das Problem, dass ich dann alle anderen verbundenen Container auch gleich über docker-compose machen muss...?
das kommt drauf an. docker separiert intern jeden einzelnen container netzwerktechnisch.
bei bridge ist die einzige möglichkeit, das die container miteinander kommunizieren können über die gemappten ports.jetzt kannst du allerdings mehrere container zu einem service zusammenfassen. sieh dazu mein beispiel mit dem redis-container. diese sind dann intern netzwerktechnisch verschaltet und können sich sehen. der jeweilige servicename (sofern kein extra hostname angegeben) ist dann der hostname des containers. am beispiel redis muss ich nicht mühevoll die ip adresse herausfinden, sondern gebe in der iobroker konfiguration bzw den environments einfach nur redis4 an und schon finden die sich.
-
-
@oliverio Vielen Dank.
-
Code-Schnipsel: ja, sry, ist bekannt, war zu schludrig, das nächste mal werd ich drauf achten
-
Portainer: ja container startet, ist allerdings über IP und entsprechenden Port nicht erreichbar, bei der aktuellen Portainer-version funktioniert es, muss ich mir nochmals anschauen
-
ich bin gemäß https://smarthome.buanet.de/2020/02/usb-devices-im-iobroker-docker-container-nutzen/ vorgegangen.
Und auf meinem Host (Synology) sieht es so aus:
Oder muss da noch ein /tty/ vorangestellt werden...?
-
-
@chrisham sagte in USB Device für IOBroker in Docker:
Hallo,
ich habe schon diverse Anleitungen gelesen wie USB-Port an IOBroker durchgereicht werden soll:Was ich mich die ganze Zeit Frage ... wundere bzw. nirgends erlesen kann .
Was für ein USB Stick und wofür !So sieht meins aus :
bineinUser@DS:~# lsusb |__usb1 1d6b:0002:0404 09 2.00 480MBit/s 0mA 1IF (Linux 4.4.302+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub |__1-1 0bda:5411:0127 09 2.10 480MBit/s 0mA 1IF (Generic 4-Port USB 2.1 Hub ffffffd6ffffffa3ffffffebffffffcb) hub |__1-1.1 051d:0002:0090 00 2.00 12MBit/s 2mA 1IF (American Power Conversion Back-UPS RS 1200G FW:877.L5 .I USB FW:L5 4B2021P32400 ) |__1-1.2 1a40:0101:0111 09 2.00 480MBit/s 100mA 1IF ( ffffffd6ffffffa3ffffffebffffffc5) hub |__1-1.2.3 10c4:8c07:0101 00 2.00 12MBit/s 150mA 1IF (Alexander Reinert HB-RF-USB-2 fae17ff40dc1e811829a6a713b0549ec) |__1-1.2.4 0451:16c8:0100 02 2.00 12MBit/s 50mA 2IFs (Texas Instruments CC2538 USB CDC fffffff7ffffffb3fffffff0ffffffd0) |__1-1.3 0bda:5411:0127 09 2.10 480MBit/s 0mA 1IF (Generic 4-Port USB 2.1 Hub ffffffd6ffffffa3ffffffebffffffc1) hub |__1-1.4 0bda:5411:0127 09 2.10 480MBit/s 0mA 1IF (Generic 4-Port USB 2.1 Hub ffffffd6ffffffa3ffffffebffffffc3) hub |__1-1.4.1 0403:6001:0600 00 2.00 12MBit/s 90mA 1IF (EService-Online eBus Coupler Iso 21001 A5WHQ9VE) |__1-1.4.2 0403:6015:1000 00 2.00 12MBit/s 90mA 1IF (FTDI FT230X Basic UART D30AB5U3) |__1-1.4.3 2a07:0102:0201 00 2.00 12MBit/s 100mA 1IF (KNX License Stick KNX-1C01BC41 42D7B0C00604) |__1-4 f400:f400:0100 00 2.00 480MBit/s 200mA 1IF (Synology DiskStation 65007C9F15DA5A98) |__usb2 1d6b:0003:0404 09 3.00 5000MBit/s 0mA 1IF (Linux 4.4.302+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub |__2-1 174c:55aa:0100 00 3.00 5000MBit/s 0mA 1IF (Inateck ASM1153E 12345678910B) |__2-2 0bda:0411:0127 09 3.20 5000MBit/s 0mA 1IF (Generic 4-Port USB 3.1 Hub ffffffd6ffffffa3ffffffebffffffc0) hub |__2-2.3 0bda:0411:0127 09 3.20 5000MBit/s 0mA 1IF (Generic 4-Port USB 3.1 Hub ffffffd6ffffffa3ffffffebffffffc2) hub |__2-2.3.4 0bda:8156:3104 00 3.20 5000MBit/s 256mA 1IF (Realtek USB 10/100/1G/2.5G LAN 401000001) |__2-2.4 0bda:0411:0127 09 3.20 5000MBit/s 0mA 1IF (Generic 4-Port USB 3.1 Hub ffffffd6ffffffa3ffffffebffffffc4) hub
.
denn in deiner Ausgabe :Und auf meinem Host (Synology) sieht es so aus:
sehe ich nichts davon , also wird er nicht erkannt !
-
@glasfaser sagte in USB Device für IOBroker in Docker:
bineinUser@DS:~
Ist schon wieder Karneval und es wird sich verkleidet?
-
@chrisham sagte in USB Device für IOBroker in Docker:
Und auf meinem Host (Synology) sieht es so aus:
Im Host :
Schau damit ..
bineinUser@DS:~# ls -la /dev/ttyUSB* crwxrwxrwx 1 root root 188, 1 Oct 23 13:41 /dev/ttyUSB1 bineinUser@DS:~# ls -la /dev/ttyA* crwxrwxrwx 1 root root 166, 0 Oct 23 13:41 /dev/ttyACM0 bineinUser@DS:~#
USB1 ist bei mir ein Lesekopf / Smartmeter
ACM0 ist bei mir ein Zigbee-Stick -
@glasfaser Ist bei mir auch ein Smartmeter-Device über USB. Und ich denke, der wird schon erkannt: Hier einmal mit USB angesteckt und einmal ohne:
-
@chrisham sagte in USB Device für IOBroker in Docker:
devices:
- /dev/ttyUSB0=/dev/ttyUSB0
Warte mal ...
du hast ein = Zeichen da kommt ein Doppeltpunkt : rein/dev/ttyUSB0:/dev/ttyUSB0
EDIT :
##siehe auch einen Thread dazu : -
@glasfaser Ok, das scheints wohl gewesen zu sein bzgl. dem Device, nun bekomme ich:
Error Deployment error
failed to deploy a stack: Network mychrisham-stack-1_default Creating Network mychrisham-stack-1_default Created Container iobroker-4 Creating Container iobroker-4 Created Container iobroker-4 Starting Error response from daemon: driver failed programming external connectivity on endpoint iobroker-4 (b296cdd0b681210f465c58b15c5a14641f21c53268c353595d8a3624d0f11b99): Error starting userland proxy: listen tcp4 0.0.0.0:8081: bind: address already in useAllerdings habe ich den bisherigen IOBroker-Container gestoppt, also sollte der Port 8081 doch wieder frei sein, sry, vermutlich basics....
-
@chrisham sagte in USB Device für IOBroker in Docker:
Allerdings habe ich den bisherigen IOBroker-Container gestoppt, also sollte der Port 8081 doch wieder frei sein,
gib ihm einen anderen Port .
-
@chrisham sagte in USB Device für IOBroker in Docker:
ports:
- "8081:8081"
oder ..
das ist dein neuer Container ... dann soports:
- "8089:8081"
Dann mit 8089 aufrufen !
-
@glasfaser ok, das gelöst, jetzt aber das:
Deployment error
failed to deploy a stack: Network mychrisham-stack-2-a_default Creating Network mychrisham-stack-2-a_default Created Container iobroker-4 Creating Container iobroker-4 Created Container iobroker-4 Starting Error response from daemon: Bind mount failed: '/docker/iobroker-Chrisham' does not existsdas volume "/docker/iobroker-Chrisham" existiert aber, jedenfalls im File-Manager der NAS angelegt und in Container-Manager der NAS auch sichtbar... muss ich das im Portainer unter Volumes auch nochmals anlegen?
volumes: - /docker/iobroker-Chrisham:/opt/iobroker - /docker/userscripts:/opt/userscripts - /docker/Backup:/opt/backup/
-
@chrisham sagte in USB Device für IOBroker in Docker:
muss ich das im Portainer unter Volumes auch nochmals anlegen?
Nimm das ertmal raus volumes , das kannst du auch später per Syn Docker oberfläche zuweisen !
-
@glasfaser ok, versuch ich, oder muss da noch sowas mit rein: "/volume1/@docker/volumes", also volume1...?
-
@chrisham ok, ohne volumes hats jetzt geklappt, ist aber umständlich, wenn ich jetzt noch auf Synology rumkonfigurieren muss, eigentlich hätte ich jetzt dann wirklich gerne alles über docker compose gemacht...
- USB geht in Syn nicht
- volumes geht in portainer nicht....
-
@chrisham sagte in USB Device für IOBroker in Docker:
ok, das gelöst, jetzt aber das
ne gelöst ist es nicht. irgendein container hat noch seinen finger auf 8081 drauf. das findest du über die container-übersicht in portainer heraus. in spalte published ports müsste irgendwo der 8081 drin stehen
-
@Chrisham
@glasfaser sagte in USB Device für IOBroker in Docker:Nimm das ertmal raus volumes , das kannst du auch später per Syn Docker oberfläche zuweisen !
Ich würde die Konfigurationen nicht mischen. das ergibt chaos.
aber zum ausprobieren kannst die volumes erst einmal weglassen.
dann legt docker für dich ersteinmal eigene named columes an.
wenn dann das alles funktioniert, dann füge eigene mappings hinzu und lösche dieses named volumes. die findest du in portainer in der volumes auflistung mit unused (sobald du neue zuordnungen gemacht hast)