(Gemeinsamer) Ordner im Docker Container mounten (Zielsystem: Home Assistant)

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
Hallo Zusammen,
ich möchte gerne in Home Assistant (läuft in einem Docker Container) mithilfe der configuration.yaml und automation.yam einen (gemeinsamen) Ordner in einem (im Container) lokalen Ordner mounten.

Dazu habe ich in der configuration.yaml folgendes ergänzt:
Code:
# For mounting SMB Network media
shell_command:
  mount_nas_folder: mkdir -p /media/nasfiles/music;mount -t cifs -o ro,vers=3.0,noserverino,username=<nasuser>,password=<naspassword>,domain=WORKGROUP //192.168.xxx.xxx/music /media/nasfiles/music

In der Datei automations.yaml habe ich ergänzt:
Code:
- id: mount_nas
  alias: Mount Synology Music Folder
  description: Mounts for use with Music Assistant
  trigger:
  - platform: homeassistant
    event: start
  condition: []
  action:
  - service: shell_command.mount_nas_folder
    data: {}

In der Log-Datei von Home Assistant steht folgender Fehler:
Code:
Logger: homeassistant.components.shell_command
Source: /usr/src/homeassistant/homeassistant/components/shell_command/__init__.py:115
Integration: Shell Command (documentation, issues)
First occurred: 14:04:44 (1 occurrences)
Last logged: 14:04:44

Error running command: `mkdir -p /media/nasfiles/music;mount -t cifs -o ro,vers=3.0,noserverino,username=<nasuser>,password=<naspassword>,domain=WORKGROUP //192.168.xxx.xxx/music /media/nasfiles/music`, return code: 255
NoneType: None

Um herauszufinden, was passiert, habe ich das Docker Terminal von Home Assistant geöffnet und die Kommandos von Hand ausgeführt. Mkdir funktioniert, Mount scheitert mit Access Denied! Jetzt weiß ich zwar, dass es an (irgendwelchen) Rechten liegt, aber leider habe ich keine Idee, wem welches Recht fehlt. Der "Gemeinsame Ordner" music ist der von Synology angelegt Ordner für die Audio Station. Rechte hat der Home Assistant user (Lesen und Schreiben). Dieser entspricht dem User mit dem ich ich bei Home Assistant anmelde.

Verstanden habe ich, dass im Docker Container der user root verwendet wird. Die Berechtigung zum mounten wird aber doch über <nasuser> und <naspasswort> geregelt? Wer hat eine Idee für mich? Danke

Ich habe dann über die Anwendung Docker in der Synology in der Containerbeschreibung ein Volume gemountet (über die DSM) mit den Daten Datei/Ordner: music und dem Mount-Pfad: /media/nasfiles/music. In diese "Richtung" (also NAS in Richtung Docker Container) funktioniert es. Das o.g. Kommande aus dem Container um den Ordner des NAS zu mounten nicht.

Grüße
RalfPeter
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Lass mal dieses ",domain=WORKGROUP" weg.
Ich hab das eben mal lokal auf der DS probiert.
Code:
mount -t cifs -o ro,vers=3.0,noserverino,username=<nasuser>,password=<naspassword> //192.168.xxx.xxx/music /mnt
funktioniert. Mit ",domain=..." kommt "-ash: !,domain=...: event not found"

Edit: Es lag am Passwort (hat Sonderzeichen). Mit Passwort in "" funktioniert es auch mit ",domain=..."
 
Zuletzt bearbeitet:

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
Hallo Benares,
das Passwort hat keine Sonderzeichen, das habe ich temporär für diesen Account (der nur für Home Assistant verwendet wird) ausgeschaltet.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Probiere es doch auch mal erst lokal auf der DS aus, dann weiß du, das die Syntax soweit passt.

Mit deinem "Home Assistant" kenne ich mich nicht aus, da kann ich wenig helfen.
 
Zuletzt bearbeitet:

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
Der mount funktioniert nicht aus der Konsole des Docker heraus. Das ist das entscheidende. Es gelten dann die Rechte des Docker Containers? Aber welche müssen für den Ordner (ausserhalb des Containers) gesetzt sein.
Ein mount mit ssh auf der Synology geht ja.

1660751250795.png
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Sorry, weiß ich nicht. Was kommt denn beim Mount aus der Docker-Konsole heraus als Fehlermeldung?
Dein Screenshot zeigt da leider nichts Konkretes.

Probier halt dort einmal dein
Code:
mkdir -p /media/nasfiles/music
mount -t cifs -o ro,vers=3.0,noserverino,username=<nasuser>,password=<naspassword>,domain=WORKGROUP //192.168.xxx.xxx/music /media/nasfiles/music
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Wenn der Container selber mounten soll, dann muss er als privilegierter Container laufen.

Achtung: Wenn die Containerisierte-Anwendung aus dem Internet erreichbar sein soll, dann sollte man sich bewusst sein, dass ein privilegierter Container sehr schwach isoliert ist und sich im Prinzip kaum noch von einer direkt auf dem Host ausgeführten Anwendung unterscheidet. Wenn es für HA Exploits geben sollte, dann können diese unter Umständen bei einem privileged Container genutzt werden, um ohne viel Aufwand erfolgreich aus dem Container auszubrechen....
 
Zuletzt bearbeitet:

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
@Benares: wie ich schon schrieb: Permission denied. Mit dem user und dem password kann ich mich aber z.B. an der DSM anmelden, Audio Station öffnen, File Station benutzen und die Musikdateien sehen.

Screenshot 2022-08-17 205238.jpg

@haydibe : die Gefahren sind mir bekannt, HA ist nicht von extern erreichbar. Was ist ein "Priviligierter Container"? Was muss ich wo einstellen? Danke!
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Die Rechte von /media/nasfiles/music vor dem Mount wären ggf. noch interessant.
Ansonsten warte mal auf Rückmeldung von @haydibe, der ist einer der Docker-Gurus hier.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Haken setzen bei "Execute container using high privilege" beim Anlegen des Containers oder beim Bearbeiten des gestoppten Containers.
Ich war jetzt zu faul meine UI auf deutsch umzustellen, nur um die Deutsche Übersetzung zu sehen. Wird aber bestimmt ähnlich heissen.
 
  • Like
Reaktionen: RalfPeter

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
@Benares : ich danke dir schon mal.
@haydibe : ich habe den "Haken" gefunden und teste noch mal
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
313
Punkte für Reaktionen
22
Punkte
24
@haydibe : das war die Lösung! Danke schön!
Der Eintrag in der deutschen GUI lautet: "Container mit hoher Priorität ausführen". Ich dachte es hätte etwas mit CPU Priorität zu tun.
 
  • Like
Reaktionen: haydibe


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat