Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

kadettilac89

Zitat von: Dirk070 am 25 März 2021, 12:03:36
Zweite Idee: Ändern FHEM_UID und FHEM_GID von "6061" auf einen existierenden User und Gruppe.
Keine gute Idee, der Container startet nicht mehr. Also Kommando zurück.

Am besten erstmal den Ordner sichern / kopieren damit du dir nichts löscht oder komplett zerstörst.

Die Idee ist nciht so schlecht. FHEM_UID und FHEM_GID meinst du sicher die Parameter im Docker-Container (env-parameter). Du kannst dich per ssh auf dein Nas einloggen. Ggf. musst du dir SSH noch freischalten. Lt. Google .... Synology NAS: DSM Control Panel > Terminal & SNMP > Terminal ... wenn das veraltet ist mussst du mal suchen und Google fragen.

Per ssh einloggen und dann per  ....  sudo chown -R <user>:<group> <folder>  .... den neuen User und Gruppe setzen. Ich vermute dein Docker statet nicht weil der neue Benutzer nicht alle nötigen Rechte hat.

Da du auf der Kopie arbeitest ... :)  .... machst du nichts kaputt. Wenn der Test erfolgreich ist kannst den Ordner umbennenen und als Orginal weiter nutzen.

Dirk070

Vielen Dank, genau die Idee hatte ich auch und war schon in der Umsetzung  :D
Im Protokoll des Containers kommt es aber zu diesem Fehler:

Preparing configuration ... done

Starting FHEM ...

su: user fhem does not exist

Unable to start FHEM process - errorcode 1


Existiert der User fhem (den ich auf der Syno angelegt habe) nicht im Container?

kadettilac89

vielleicht sind im start (creation-script) routinen drin die jetzt bei der änderung des GUID / GID nicht mehr durchlaufen werdne. Erstelle mal einen komplett neuen container mit dem den neuen GUID / GID. Keine vorhandenen Dateien verwenden. Vermutlich wird beim komplett neu erzeugen des Containers ein user fhem mit entsprechenden GUID / GID angelegt. Da bei dir der fhem-User schon besteht geht das hier scheinbar nicht mehr.

Wenn das funktioneirt siehst du auch welche Rechte die neu angelegten Verzeichnisse / Dateien haben. Damit kannst du schon mal testen, ob die Zugriffe überhaupt funktionieren würden. Dein ursprüngliches Proble bzw. deine Anforderung.

Dann im Anschluss den vorhandenen Ordner mit den neuen Rechten präparieren und entsprechend umbennen oder in der Docker-Config den Pfad anpassen.

Dirk070

#1158
Danke für die Unterstützung.

Ich hatte den Container kopiert, ebenso wie das Verzeichnis.
UPDATE/ERGÄNZUNG: selbes Ergebnis, wenn ein komplett neuer Container aus dem Abbild erzeugt wird und ein leeres Verzeichnis gemountet wird. Die FHEM-Files werden im Verzeichnis erzeugt, haben als Besitzer aber ROOT.

Hier mal das komplette Protokoll, zu Anfang (ganz unten) wird versucht, den User und die Gruppe anzulegen:

2021-03-25 12:34:16,stdout,Unable to start FHEM process - errorcode 1

2021-03-25 12:34:16,stdout,su: user fhem does not exist

2021-03-25 12:34:16,stdout,Starting FHEM ...

2021-03-25 12:34:16,stdout,

2021-03-25 12:34:16,stdout,Preparing configuration ... done

2021-03-25 12:34:16,stdout,

2021-03-25 12:34:16,stdout,

2021-03-25 12:34:16,stdout,

2021-03-25 12:34:16,stdout,chown: invalid user: 'fhem.fhem'

2021-03-25 12:34:16,stdout,14. Updating SSH key pinning and SSH client permissions for user 'fhem' ...

2021-03-25 12:34:16,stdout,13. Pre-authorizing SSH to Docker host for user 'fhem' ...

2021-03-25 12:34:16,stdout,12. Adding host.docker.internal to /etc/hosts ...

2021-03-25 12:34:15,stdout,11. Adding gateway.docker.internal to /etc/hosts ...

2021-03-25 12:34:15,stdout,10. Updating /etc/sudoers.d/fhem-docker ...

2021-03-25 12:34:15,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:15,stdout,9. Found I2C: Correcting group permissions in /dev to 'i2c' with GID 6003 ...

2021-03-25 12:34:15,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:15,stdout,8. Found GPIO: Correcting group permissions in /dev and /sys to 'gpio' with GID 6002 ...

2021-03-25 12:34:15,stdout,7. Correcting group ownership for /dev/tty* ...

2021-03-25 12:34:09,stdout,6. Enforcing file and directory permissions for /opt/fhem ...

2021-03-25 12:34:09,stdout,chown: invalid user: 'fhem:users'

2021-03-25 12:34:09,stdout,chown: invalid user: 'fhem:users'

2021-03-25 12:34:09,stdout,5. Enforcing user and group ownership for /opt/fhem to fhem:fhem ...

2021-03-25 12:34:09,stdout,4. Creating log directory /opt/fhem//opt/fhem/log ...

2021-03-25 12:34:09,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,usermod: user 'fhem' does not exist

2021-03-25 12:34:08,stdout,useradd: invalid user ID 'fhem'

2021-03-25 12:34:07,stdout,3. Creating user 'fhem' with UID fhem ...

2021-03-25 12:34:07,stdout,2. Enforcing GID for group 'bluetooth' to 6001 ...

2021-03-25 12:34:07,stdout,groupadd: invalid group ID 'users'

2021-03-25 12:34:07,stdout,1. Creating group 'fhem' with GID users ...

2021-03-25 12:34:07,stdout,Preparing user environment ...

2021-03-25 12:34:07,stdout,

2021-03-25 12:34:07,stdout,

2021-03-25 12:34:07,stdout,

2021-03-25 12:34:07,stdout,1. Updating existing FHEM installation in /opt/fhem

kadettilac89

welche uid / gid gibst du an? versuche mal das leere verzeichins mit dem uid / gid anzulegen bzw. den owner entsprechend zu setzen. dann erst den container neu erstellen lassen. wenn das leere verzeichnis root "gehört" dann kann der normale user den du verwenden willst vermutlich die reche nicht ändern.


Dirk070

Angegeben war User (UID) "fhem" und Group (GID) "users". Der User und die Gruppe existieren auf der Syno.

Im Log sieht das für mich so aus, als wenn die Anlage des Users (adduser) schon im Image scheitert.

2021-03-25 12:34:09,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,adduser: The user `fhem' does not exist.

2021-03-25 12:34:08,stdout,usermod: user 'fhem' does not exist

2021-03-25 12:34:08,stdout,useradd: invalid user ID 'fhem'

2021-03-25 12:34:07,stdout,3. Creating user 'fhem' with UID fhem ...

2021-03-25 12:34:07,stdout,2. Enforcing GID for group 'bluetooth' to 6001 ...

2021-03-25 12:34:07,stdout,groupadd: invalid group ID 'users'

2021-03-25 12:34:07,stdout,1. Creating group 'fhem' with GID users ...

2021-03-25 12:34:07,stdout,Preparing user environment ...

kadettilac89

ich habe eine Vermutung ...

Zitat von: kadettilac89 am 25 März 2021, 14:57:04
welche uid / gid gibst du an?

Ich habe getestet:
1) bestehender Container user/group geändert. Funktionert, neue Reche auf Verzeichnis
2) komplett neuer Container

Meine Config:


    fhemtest:
        image: fhem/fhem
        container_name: fhemtest
        restart: always   
        volumes:
            - ./fhemtest:/opt/fhem
        environment:
            FHEM_UID: 1001
            FHEM_GID: 1001
            LANG: "de_DE.UTF-8"



Poste mal deine Parameter. Hast du die UID + GID (Zahl zwischen 1000 und 9999) oder den Namen des User und Gruppe? Ich vermute da liegt das Missverständis.

Wernieman

Wobei übrigens bei Standard-Docker die UserID extern nicht gleich der UserID intern sein muß ... (kann, aber nicht muß)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

kadettilac89

Zitat von: Wernieman am 26 März 2021, 08:34:46
Wobei übrigens bei Standard-Docker die UserID extern nicht gleich der UserID intern sein muß ... (kann, aber nicht muß)

Um hier nicht mehr Verwirrung zu stiften ... Wording

UID = numerische Kennung des Users. Default Docker 6061
GID = numerische Kennung der Gruppe. Default Docker 6061

Real User ID / Name = der Name des uers, z. B. fhem, root, testuser
Real Group ID / Name = der Name der Gruppe, z. B. Dialout, ...

Beispiel / vermutete Fehler von Dirk zumindest lt. Log, er gibt die Real User Namen + Real Gruppen Namen statt deren UID/GID an .... fhem:users mit statt deren UID/GID.

Beispiel
Real UID im Container fhem mit ID 1001
Real UID auf Synology fhemsyn mit ID 1001

Der User fhem im Docker hat UID 1001 (da so konfiguriert). Der User auf der syn heißt fhemsyn und hat definitiv auch UID 1001. Die UID im Container und der Synology ist identisch, der Real User Name jedoch unterschiedlich je nachdem wo du schaust, fhem vs. fhemsyn.

Dirk070

#1164
Vielen Dank an Euch.
Ja, ich habe tatsächlich mit den realnames gearbeitet.
Da die 6061 auch in der Syno als Besitzer angezeigt wurde, hatte ich das garnicht hinterfragt.  ::)

Ich teste jetzt nochmal mit uid und gid, die Infos habe ich aus der Konsole per "id fhem" gezogen.
Ich melde mich wieder, Euch nochmals vielen Dank.

UPDATE:
VIELEN DANK!!!!

Mit den ermittelten UID und GID klappt jetzt alles.
Ich habe das produktive Verzeichnis kopiert und als Besitzer den Syno-User gesetzt.
Danach im Docker die uid und gid dazu passend gesetzt. Alles top, die Bilder/Videos aus dem DoorBird-Modul werden mit dem gewünschten User angelegt.
TOP!

Nochmals Danke für Eure Zeit und Hilfe.

Viele Grüße und ein schönes Wochenende
Dirk

antonwinden

#1165
Nachdem es jetzt seit Monaten ohne ein problem gelaufen ist will mein Docker Image nicht mehr.
Mit der Meldung:
2021.03.28 08:52:36.705 2: Calendar NCKalender: error (data not in ICal format; even not gzip data),
Error parsing time at /usr/lib/x86_64-linux-gnu/perl/5.28/Time/Piece.pm line 583.,
/entry.sh: line 621: kill: (13661) - No such process,
,
,
Abrupt daemon termination, starting 10s countdown .../entry.sh: line 625: kill: (13661) - No such process,
10/entry.sh: line 625: kill: (13661) - No such process,
9/entry.sh: line 625: kill: (13661) - No such process,
8/entry.sh: line 625: kill: (13661) - No such process,
7/entry.sh: line 625: kill: (13661) - No such process,
6/entry.sh: line 625: kill: (13661) - No such process,
5/entry.sh: line 625: kill: (13661) - No such process,
4/entry.sh: line 625: kill: (13661) - No such process,

geht es in eine Endlosschleife ohne das ich was geändert hätte. Was kann ich machen? Bzw woran liegt es und wie kannich das ändern?
Es laufen 2 Container auf der Maschine wobei der 1 ohne Probleme will der andere ist jetzt in einer Endlosschleife...
Hab den Ordner .config im Fhem Ordner gelöscht und jetzt startet der Container wieder und ist auch "healthy" - warum auch immer.
gruß Anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

kadettilac89

Zitat von: antonwinden am 28 März 2021, 09:05:11
Es laufen 2 Container auf der Maschine wobei der 1 ohne Probleme will der andere ist jetzt in einer Endlosschleife...
Hab den Ordner .config im Fhem Ordner gelöscht und jetzt startet der Container wieder und ist auch "healthy" - warum auch immer.
gruß Anton

Verstehe den Post nicht. Container läuft, es gab Logeinträge. Was ist nun die Frage?

antonwinden

#1167
einer der beiden Container restarted mit Fehlermeldung ständig:
/entry.sh: line 621: kill: (12799) - No such process
Error parsing time at /usr/lib/x86_64-linux-gnu/perl/5.28/Time/Piece.pm line 583.
Abrupt daemon termination, starting 10s countdown .../entry.sh: line 625: kill: (12799) - No such process
10/entry.sh: line 625: kill: (12799) - No such process
9/entry.sh: line 625: kill: (12799) - No such process
8/entry.sh: line 625: kill: (12799) - No such process


7/entry.sh: line 625: kill: (12799) - No such process

der andere Container läuft in einem anderen Ordner auf der gleichen Maschine ohne Probleme...
1 Container geht der andere auf einmal ohne Änderung nicht mehr... kurz hat es mit dem löschen von .config geholfen war allerdings nur von kurzer Dauer und seither restart bis er in "unhealthy" geht
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

kadettilac89

fhem mit demo-config starten ... immer noch?
container löschen, neu anlegen, demo config starten ... immer noch?
nach re-creation backup einspielen ... immer noch?

dann kann man weiter schaun ... SD-Karte? Welche "ohne Änderungen"-Änderungen wurden gemacht, updates, Karte/HDD voll ....

antonwinden

1: geht
2: geht
3: nein geht nicht - geht wieder in endlosschleife.

ist mir schon klar das da was schief läuft nur war die letzte Änderung die ich gemacht habe 12h her (DOIF geändert) und ich kann mir schwer vorstellen das es daran liegt.
4: alle Änderungen die ich gestern gemacht habe rausgeworfen - kein Änderung geht wieder in die Endlosschleife

5: die demo-config geändert und die aktuelle config eingespielt -> läuft

6: alles was fehlt (diverse Module wie fronius, denon und ein paar andere) installieren -> nachdem ich das Modul für Renault ZOE installiert habe gab es wieder eine Endlosschleife - und das ist schon über 1 Woche ohne Änderung gelaufen...

Also ich denke ich hab den Fehler gefunden...

aber was tut man sonst an einem Sonntag Vormittag im Lockdown...
gruß Anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...