Autor Thema: Offizielles FHEM Docker Basis Image für verschiedene Plattformen  (Gelesen 132289 mal)

Offline BAfH

  • New Member
  • *
  • Beiträge: 23
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #930 am: 04 Juni 2020, 09:02:23 »
Ich habe einfach eine Datei mit dem Namen fhem-2020-06-00.log mittels WinSCP als User pi hochgeladen.
Folgende Rechte hat die Datei
-rw-r--r-- 1 pi pi 3,1K Aug 15  2019 fhem-docker/fhem/core/log/fhem-2020-06-00.logFhem kann diese lesen zeiht mir die Datei unter System Logfile Filelog an.

Zitat
Ich dachte die Rechteänderungen willst du verhindern.
Ja, nur die Veränderung das ich als pi komplett ausgesperrt wurde. Das ist jetzt nicht mehr der Fall.
Gruß Thorben
mit sonnige Grüße aus Schönow

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6379
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #931 am: 04 Juni 2020, 09:04:21 »
Fehm sollte die Datei mit den Rechten aber nicht schreiben dürfen .....
- 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

Offline BAfH

  • New Member
  • *
  • Beiträge: 23
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #932 am: 04 Juni 2020, 10:06:31 »
das mag sein, muss fhem auch nicht.  :-\denke ich.
Eine Log Datei hat folgende Rechte
-rw-r----- 1 pi pi 21K Jun  4 09:35 fhem-docker/fhem/core/log/Velux_2-2020.loghier schreibt aber fhem fleißig rein. ???
Gruß Thorben
mit sonnige Grüße aus Schönow

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1147
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #933 am: 04 Juni 2020, 11:53:28 »
komisch, läuft dein Fhem unter User pi? Welche Rechte haben jetzt Dateien die Fhem selber angelegt hat, z. B. Plotfiles? Ist die UID im Docker identisch zu der von pi?

Solange alles funktioneirt was du dir vorstellst ist es gut. Um die Dateirechte zu verstehen fehlen ein paar Informationen.

Du hast das im docker-compose stehen? Dann läuft fehm unter der UID von pi.
FHEM_UID: 1000
FHEM_GID: 1000

Offline BAfH

  • New Member
  • *
  • Beiträge: 23
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #934 am: 04 Juni 2020, 16:29:33 »
Im Docker als User fhem
fhem@FHEM:~$ id
uid=1000(fhem) gid=1000(fhem) groups=1000(fhem),5(tty),8(mail),20(dialout),29(audio),44(video),6001(bluetooth),6002(gpio),6003(i2c)
auf dem Host als User pi
uid=1000(pi) gid=1000(pi) Gruppen=1000(pi),4(adm),5(tty),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),995(docker),997(gpio),998(i2c),999(spi)In der Docker-compose
FHEM_UID: 1000
FHEM_GID: 1000
 
Ich sag mal so, mir gefällt es so ;)
Gruß Thorben
mit sonnige Grüße aus Schönow

Offline zimb0

  • Jr. Member
  • **
  • Beiträge: 90
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #935 am: 03 Juli 2020, 08:56:55 »
Hallo zusammen,
habe in dem anderen Docker-Thread bereits eine Frage gestellt, poste sie jetzt nochmal hier, da der Thread doch etwas länger ist:

Ich bin gerade dabei die ersten Schritte mit Docker zu gehen und möchte mir ein docker-compose für fhem bauen.

Eine Sache verstehe ich hierbei noch nicht ganz: Ich möchte erreichen, dass eigentlich nur die fhem.cfg, 99_myUtils.pm, /log, /www/gplot und /www/tablet auf den host umgeleitet wird.
(Wenn ich die Docker-Logik richtig verstanden habe sollte der Rest ja "dynamisch" aktualisiert werden könne, ohne dass meine Config verändert wird, deshalb diese Trennung ?).

Nun habe ich in meinem docker-compose folgende Einträge erfasst:
volumes:
      - /opt/docker/fhem/log:/opt/fhem/log
      - /opt/docker/fhem/www/gplot:/opt/fhem/www/gplot
      - /opt/docker/fhem/www/tablet:/opt/fhem/www/tablet
      - type: bind
        source: /opt/docker/fhem/fhem.cfg
        target: /opt/fhem/fhem.cfg
      - type: bind
        source: /opt/docker/fhem/99_myUtils.pm
        target: /opt/fhem/FHEM/99_myUtils.pm
Die Dateien / Ordner werden auch entsprechend umgeleitet, allerdings ist es so, dass der Container nach der Umleitung der myUtils wohl den kompletten fhem/FHEM - Ordner nicht mehr lesen kann.
Ich tippe hier auf falsch konfigurierte Rechte.

Fehlermeldung beim initialisieren dann z.B:
Zitat
Can't locate RTypes.pm in @INC (you may need to install the RTypes module)
Ebenso tritt auf: Wenn der /opt/fhem/www/tablet umgeleitet ist wird keinerlei CSS im Webinterface dargestellt, was denke ich das gleiche Problem ist.

Könnt ihr mir hier etwas weiterhelfen?
THZ504

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6379
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #936 am: 04 Juli 2020, 09:20:49 »
Dir ist klar:
1. Das Doppelbosten einer Frage in Unterschiedliche Threads wird in den meisten Forum als Negativ angesehene
2. Die Länge einen Threads ist nicht bedeutend mit der Aufmerksamkeit
- 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

Offline TWART016

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #937 am: 23 Juli 2020, 02:01:10 »
Ich möchte nun FHEM mit configDB nutzen.

  fhem:
    container_name: fhem
    image: fhem/fhem:latest
    restart: always
    ports:
      - "8083:8083"
    volumes:
      - "./fhem/:/opt/fhem/"
      - "./fhem/contrib/configDB/configDB.conf:/opt/fhem/configDB.conf"
    environment:
      FHEM_UID: 1000
      FHEM_GID: 1000
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Berlin
      CONFIGTYPE: configDB
      LOGFILE: ./log/fhem-%Y-%m-%d.log
    depends_on:
      - "mysql"
      - "mqtt"

Mit configDB info erhalte ich folgendes:
-----------------------------------------------------------------
 configDB Database Information
-----------------------------------------------------------------
 d:$Id: configDB.pm 21571 2020-04-01 11:09:00Z betateilchen $
 c:$Id: 98_configdb.pm 21558 2020-03-31 12:24:00Z betateilchen $
-----------------------------------------------------------------
 dbconn: SQLite:dbname=/opt/fhem/configDB.db
 dbtype: SQLITE
 dbsize: 24.00 KB
-----------------------------------------------------------------
 lastReorg:   
 config:       27 entries

 Ver 0 saved: Thu Jul 23 01:49:10 2020 def: 3 attr: 10
 Ver 1 saved: by cfgDB_Init  def: 3 attr: 6
-----------------------------------------------------------------
 state: 5 entries saved: Thu Jul 23 01:49:14 2020
-----------------------------------------------------------------
 filesave: 1 file stored in database
-----------------------------------------------------------------

Eigentlich sollte da mysql stehen. Die Datei /var/lib/docker/volumes/fhem/contrib/configDB/configDB.conf habe ich nach meinen Wünschen angepasst.
Muss bei configDB nicht die configDB.conf direkt in /opt/fhem liegen?
Edit: Auch wenn die configDB.conf in /var/lib/docker/volumes/fhem liegt, bekomme ich die gleiche Meldung.

Gibt es die Möglichkeit zu prüfen, ob die DB bereits existiert? Wenn nicht, soll eine automatisch angelegt werden.
« Letzte Änderung: 23 Juli 2020, 02:19:03 von TWART016 »
Intel NUC, Raspberry Pi,CUL 433+868, JeeLink, Uniroll, LD382/LD686 + WifiLight, Eventghost, Tablet UI, Homekit/Homebridge/Siri, Alexa, Squeezebox, Onkyo, MAX, Harmony, KODI, Winconnect, Geofancy, Nmap, Sysmon, Telegram

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1147
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #938 am: 25 Juli 2020, 14:14:29 »
Eigentlich sollte da mysql stehen. Die Datei /var/lib/docker/volumes/fhem/contrib/configDB/configDB.conf habe ich nach meinen Wünschen angepasst.
Muss bei configDB nicht die configDB.conf direkt in /opt/fhem liegen?
Edit: Auch wenn die configDB.conf in /var/lib/docker/volumes/fhem liegt, bekomme ich die gleiche Meldung.

Gibt es die Möglichkeit zu prüfen, ob die DB bereits existiert? Wenn nicht, soll eine automatisch angelegt werden.
ConfigDB kann ich dir nicht helfen. Mounten von einzelnen Files gibt in docker-compose manchmal Probleme. Ist die configDB.conf im Container sichtbar und lesbar?

Wenn du IM CONTAINER die Befehle unten ausführst, siehst du  dann die Konfiguration die du angelegt hast? Mit MySQL als Datenbank mit User / Passwort?

su fhem
cat /opt/fhem/configDB.conf

Wenn dass funktioniert teste mal die Config ... auch IM Container

mysql -u <mysql_fhem_username> -h <mysql_host> -p

welche Datenbanken schon bestehen kannst du dann so prüfen wenn du per Konsole auf der Datenbank bist:        show databases;

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| fhem               |
| information_schema |
+--------------------+

Wenn das alles funktioniert scheint es eine configDB-spezifische Frage / Problem zu sein.
« Letzte Änderung: 25 Juli 2020, 14:17:16 von kadettilac89 »

Offline TWART016

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #939 am: 25 Juli 2020, 16:12:31 »
Ich hatte das falsche Volumen. Jetzt kommt jedoch der Fehler:
Starting FHEM ...


DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory at configDB.pm line 704.


Unable to start FHEM process - errorcode 11


Bei Zeile 704 steht:
# connect do database
sub _cfgDB_Connect {
my $fhem_dbh = DBI->connect(
"dbi:$cfgDB_dbconn",
$cfgDB_dbuser,
$cfgDB_dbpass,
{ AutoCommit => 0, RaiseError => 1 },
) or die $DBI::errstr;
return $fhem_dbh;
}
Intel NUC, Raspberry Pi,CUL 433+868, JeeLink, Uniroll, LD382/LD686 + WifiLight, Eventghost, Tablet UI, Homekit/Homebridge/Siri, Alexa, Squeezebox, Onkyo, MAX, Harmony, KODI, Winconnect, Geofancy, Nmap, Sysmon, Telegram

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1147
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #940 am: 25 Juli 2020, 16:25:47 »
Ich hatte das falsche Volumen. Jetzt kommt jedoch der Fehler:


google sagt das hier ... ich selber nutze MariaDB, und kann mich nicht erinnern, das schon mal gesehen zu haben. Wenn du hier mit User rummachst am besten den Docker-MySQL-Ordner sichern wenn was schief geht. Wenn du sowieso neu beginnst, kannst auch mal MariaDB als Container laden, wahrscheinlich mussst nur in der MySQL-Definition statt MySQL das MariaDB Image angeben.

https://stackoverflow.com/questions/49963383/authentication-plugin-caching-sha2-password
https://github.com/docker-library/mysql/issues/454

Möglichkeit 1, Link1, ... User löschen und mit
CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Möglichkei 2, Link2, .. Docker MySQL ändern, docer-compose folgende Zeile hinzufügen
    command: --default-authentication-plugin=mysql_native_password

Offline TWART016

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #941 am: 26 Juli 2020, 01:49:40 »
google sagt das hier ... ich selber nutze MariaDB, und kann mich nicht erinnern, das schon mal gesehen zu haben. Wenn du hier mit User rummachst am besten den Docker-MySQL-Ordner sichern wenn was schief geht. Wenn du sowieso neu beginnst, kannst auch mal MariaDB als Container laden, wahrscheinlich mussst nur in der MySQL-Definition statt MySQL das MariaDB Image angeben.

https://stackoverflow.com/questions/49963383/authentication-plugin-caching-sha2-password
https://github.com/docker-library/mysql/issues/454

Möglichkeit 1, Link1, ... User löschen und mit
CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Möglichkei 2, Link2, .. Docker MySQL ändern, docer-compose folgende Zeile hinzufügen
    command: --default-authentication-plugin=mysql_native_password

Es lag tatsächlich am Image. mysql:latest hat nicht funktioniert, mysql hingegen schon.
Intel NUC, Raspberry Pi,CUL 433+868, JeeLink, Uniroll, LD382/LD686 + WifiLight, Eventghost, Tablet UI, Homekit/Homebridge/Siri, Alexa, Squeezebox, Onkyo, MAX, Harmony, KODI, Winconnect, Geofancy, Nmap, Sysmon, Telegram

Offline TWART016

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #942 am: 26 Juli 2020, 02:07:29 »
Bezieht sich das auf meine Frage bzgl. CPAN_PKGS="Crypt::Rijndael_PP"?

Ich habe die Container mittels docker-compose up erstellt. Beim beenden werden die Container gelöscht und anschließend neu erstellt, daher gehe ich davon aus, dass auch jedes Mal die Container-Option CPAN_PKGS neu ausgewertet wird, richtig?

Crypt::Random und seine Abhängigkeiten brauchen leider zu lange, als dass sie im Build direkt installiert werden können. Die Build-Zeit ist bereits auf Kante (50 Minuten Maximum).
Die Lösung über die Umgebungsvariable CPAN_PKGS ist deshalb der richtige Weg. Die Installation findet auch nur beim ersten Start eines frischen Containers statt, nicht bei weiteren Starts. Einen Container ständig neu frisch zu erstellen macht wenig Sinn, man kann ihn problemlos mit den vorhandenen FHEM Modulen AptToDate, npmjs und dem Installer aktuell halten (das Ergebnis ist exakt das selbe).

Ich wäre aktuell bei dem gleichen Punkt. Diese Pakete brauche ich, um einen Xiaomi Luftreiniger betreiben zu können:
CPAN_PKGS: "Crypt::Rijndael Crypt::Random Crypt::Cipher::AES"
APT_PKGS: "libjson-perl libdigest-md5-perl libcrypt-cbc-perl libcrypt-ecb-perl"

Allerdings werden bei jedem docker-compose up (und Änderung am FHEM Container) die Pakete installiert, was mehrere Minuten braucht. Richte ich ein neues Modul ein, welches andere Pakete benötigt, füge ich diese zur compose hinzu.
Bei jedem zusätzlichen Paket muss ich den Containers neu erstellen. Selbst bei den wenigen Paketen derzeit benötigt das mehrere Minuten. Und ich werde noch mehrere Paketen verwenden und dann braucht jede Containererstellung vermutlich über 15 Minuten. Wie ist das gedacht?
Intel NUC, Raspberry Pi,CUL 433+868, JeeLink, Uniroll, LD382/LD686 + WifiLight, Eventghost, Tablet UI, Homekit/Homebridge/Siri, Alexa, Squeezebox, Onkyo, MAX, Harmony, KODI, Winconnect, Geofancy, Nmap, Sysmon, Telegram

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1147
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #943 am: 26 Juli 2020, 08:53:38 »
Es lag tatsächlich am Image. mysql:latest hat nicht funktioniert, mysql hingegen schon.
erstmal gelöst, vermutlich kommt das Problem wieder wenn latest in das normale Image einfließt


Allerdings werden bei jedem docker-compose up (und Änderung am FHEM Container) die Pakete installiert, was mehrere Minuten braucht. Richte ich ein neues Modul ein, welches andere Pakete benötigt, füge ich diese zur compose hinzu.
Bei jedem zusätzlichen Paket muss ich den Containers neu erstellen. Selbst bei den wenigen Paketen derzeit benötigt das mehrere Minuten. Und ich werde noch mehrere Paketen verwenden und dann braucht jede Containererstellung vermutlich über 15 Minuten. Wie ist das gedacht?
Warum musst du so oft docker-compose up ausführen? Wenn es zum Testen ist dann leg dir doch einen Testcontainer ohne die Abhängigkeit an und das Modul mit der hohen Laufzeit nur im produktiven Container.

Offline TWART016

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:Offizielles FHEM Docker Basis Image für verschiedene Plattformen
« Antwort #944 am: 26 Juli 2020, 11:49:03 »
erstmal gelöst, vermutlich kommt das Problem wieder wenn latest in das normale Image einfließt
Dann schaue ich nochmal das latest an.

Warum musst du so oft docker-compose up ausführen? Wenn es zum Testen ist dann leg dir doch einen Testcontainer ohne die Abhängigkeit an und das Modul mit der hohen Laufzeit nur im produktiven Container.
Das mit dem Testcontainer ist finde ich was anderes. Würde ich ein Xiaomi Gerät einrichten wollen, teste ich es im Test Container. Ist dies erfolgreich möchte ich dies aber im Produktiven einsetzen. Dann muss ich die Pakete in die compose hinzufügen und starten. Dann möchte ich später SNMP einrichten und muss das gleiche machen. Nach ein paar mal summiert sich das ganze und mit jedem weiteren Modul verlängert sich die Zeit bis der Container erstellt ist.
Nur weil ich ein neues Modul produktiv nehmen möchte, habe ich eine fhem Downtime von 15-30 min.
Intel NUC, Raspberry Pi,CUL 433+868, JeeLink, Uniroll, LD382/LD686 + WifiLight, Eventghost, Tablet UI, Homekit/Homebridge/Siri, Alexa, Squeezebox, Onkyo, MAX, Harmony, KODI, Winconnect, Geofancy, Nmap, Sysmon, Telegram