[gelöst]FHEM mit dblog in Docker

Begonnen von fhemjan, 23 August 2022, 22:59:53

Vorheriges Thema - Nächstes Thema

Otto123

Hallo fhemjan,

Du wirst immer in Schwierigkeiten laufen wenn Du eine bunte Mischung an Tools verwendest - aber keines konsequent ;)
docker exec -it ist quasi der kleine "Knopf" in der Portainer UI wie im ersten Bild gezeigt.  :D

Den Speicherort für das Volume siehst Du in der Portainer UI im linken Menüpunkt Volumes - dann Volume Details und dann Mountpath.
Wenn Du den kopierst und das Terminal zum Docker Host aufmachst solltest Du mit sudo ls -lha Dein MountPath den Inhalt deines FHEM Ordners sehen.
Wenn das funktioniert, kannst Du relativ leicht dein System von A nach B umziehen um es weiter zu nutzen und besser zu beherrschen :) versuch das mal dann reden wir weiter ;)

Das mit den IDs und wie man das umgeht, hast Du ja selbst schon festgestellt ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DS_Starter

#16
@fhemjan,

Zitat
Auf der Synology hab ich in der Firewall den Port 3306 freigegeben.
Prüfe den Port nochmal genau. MariaDB 10 installiert sich bei meiner Synology automatisch auf Port 3307 ! wenn man ihn nicht manuell ändert.
Dann checke das MariaDB Paket ob der Haken bei TCP-Verbindung aktivieren gesetzt ist.


Wenn das so ist, auf dem FHEM Server testen:


heiko@fhemtest:~$ mysql -h 192.168.2.10 --port=3307 -u root -p
Enter password:
ERROR 1130 (HY000): Host 'fhemtest.myds.me' is not allowed to connect to this MariaDB server
heiko@fhemtest:~$


Du solltest bis zu PW-Abfrage kommen. Bei einer frischen Installation (wie ich es testweise gerade gemacht habe) geht der Zugriff von einer remoten Maschine nicht, weil der User nur für den lokalen Zugriff freigegeben ist. Dann mit phpMyAdmin schauen den User auch für remote Verbindungen freizugeben. Natürlich nicht root wie bei meinem Test sondern den richtigen User den du verwenden willst.

Man braucht erstmal keinerlei Volumes von der Synology bzgl. MariaDB zu mounten. Die DB läuft auf der Synono und alle Kommunikationen laufen über das Netz (DbLog genauso wie DbRep oder SVG-Plots etc.)
Für Backup kann man dann z.B. phpMyAdmin bemühen, eigene Scripts anlegen oder DbRep (hier braucht man je nach Szenario Mounts) nutzen.

Grüße,
Heiko




Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

fhemjan

@Otto123:
Es hat geklappt, ich habe nun einen FHEM Container mit bind an einen Container meiner Wahl mit dem Inhalt meines alten Volumes. D.h. alle Einstellungen sind mit umgezogen :) Vielen vielen Dank für die Hilfe und die Geduld!

Es hakt jedoch weiterhin an der Verbindung zu MySQL auf der Syno. Ein guter Hinweis kam von DS_Starter --> TCP war beim MariaDB Paket auf der Syno noch nicht aktiviert. Port ist dort von Anfang an auf 3306 eingestellt. Ebenso in der Firewall.

Zitat von: kadettilac89 am 26 August 2022, 09:55:40
wenn du 400 als Fehler bekommst ist das ein Netzwerk Problem oder Zugriff nur von localhost. Prüf mal im Eingabefeld oben einen Ping.
Das ist interessant. Mit der IP der Syno gibt es die Meldung PING 192.168.xxx.xxx (192.168.xxx.xxx): 56 data bytes
--- 192.168.xxx.xxx ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss


Wenn ich das Ganze mit meiner DDNS Adresse teste funktioniert es. Ich möchte aber die MariaDB nicht nach draußen öffnen.. Habt ihr eine Idee wie ich herausbekomme warum er meine Syno per IP nicht findet? Wenn ich die IP über die shell anpinge passiert gar nichts. Hängt quasi.

fhemjan

Kann es sein, dass ich an der Firewall der Synology noch etwas ändern muss? Ich werde den Ping bei nächster Gelegenheit mal mit deaktivierter Firewall testen.

kadettilac89

Zitat von: fhemjan am 29 August 2022, 21:11:53
Wenn ich das Ganze mit meiner DDNS Adresse teste funktioniert es. Ich möchte aber die MariaDB nicht nach draußen öffnen.. Habt ihr eine Idee wie ich herausbekomme warum er meine Syno per IP nicht findet? Wenn ich die IP über die shell anpinge passiert gar nichts. Hängt quasi.

Ich würde jetzt mal 2-Gleisig testen.

1) Du hast ein DNS-Problem, kannst du die Synology per Name anpingen. Ich weiß nicht wie die bei dir heißt. "diskstation" sollte der defaultname sein wenn du den nicht geändert hast. Den Namen siehst du auch in deinem Router, z. B. Fritzbox.

2) Du sagst, dass die Syno über den DDNS-Namen erreichbar wäre. Gib mal kurz nach außen frei und teste ob der configCheck vom dblog erfolgreich ist wenn du diesen hostamen nutzt. Nur um die DB-Config abzuschließen. Wenn das geht kannst du DB erstmal beiseite legen. Verigiss nicht die Freigabe nach außen sofort wieder zu schließen

Interessehalber, welches Syno hast du?

Du nutzt deinen Screenshot nach portainer. Hast du da individuell irgend welche Netzwerke angelegt, oder manuell dns, ip, irgend was vom Netzwerk abweichend konfiguriert? Bride Mode? Poste mal die Netzwerkinformation aus Portainer. Um weitere Tips zu geben, nutzt du noch weitere Container neben Fhem?

kadettilac89

Zitat von: fhemjan am 30 August 2022, 09:19:56
Kann es sein, dass ich an der Firewall der Synology noch etwas ändern muss? Ich werde den Ping bei nächster Gelegenheit mal mit deaktivierter Firewall testen.

Ping sollte nicht durch Firewall blockiert werden. Teste den Ping von einem anderen Rechner, z. B. deinen Winodws Rechner dann hast du Gewissheit.

Edit: Du kannst ja die Syno mal rebooten, für den Fall das sich was "verkantet" hat.

fhemjan

#21
Zitat von: kadettilac89 am 30 August 2022, 09:24:12
1) Du hast ein DNS-Problem, kannst du die Synology per Name anpingen.
Habe ich ausprobiert, klappt nicht. Unter Windows klappt es auch mit der IP nicht. edit: hatte mich vertippt, sie heißt bei mir "Diskstation". Wenn ich Diskstation anpinge zeigt er die richtige IP, hat aber immer Zeitüberschreitungen. Wenn ich unter Windows den Raspberry per IP anpinge geht es auf anhieb.[/quote]

Zitat von: kadettilac89 am 30 August 2022, 09:24:12
2) Du sagst, dass die Syno über den DDNS-Namen erreichbar wäre. Gib mal kurz nach außen frei und teste ob der configCheck vom dblog erfolgreich ist wenn du diesen hostamen nutzt. Nur um die DB-Config abzuschließen. Wenn das geht kannst du DB erstmal beiseite legen. Verigiss nicht die Freigabe nach außen sofort wieder zu schließen
Also, habe den Port 3306 in der Fritzbox geöffnet und in der db.conf auf den DDNS der Synology gewechselt. Dann wieder define logdb DbLog ./db.conf .*:.*
Kein Erfolg --> "could not read connection"[/quote]

Zitat von: kadettilac89 am 30 August 2022, 09:24:12
Interessehalber, welches Syno hast du?
Ist eine DS920+

Zitat von: kadettilac89 am 30 August 2022, 09:24:12
Du nutzt deinen Screenshot nach portainer. Hast du da individuell irgend welche Netzwerke angelegt, oder manuell dns, ip, irgend was vom Netzwerk abweichend konfiguriert? Bride Mode? Poste mal die Netzwerkinformation aus Portainer. Um weitere Tips zu geben, nutzt du noch weitere Container neben Fhem?
Korrekt, nutze Portainer.
Habe pihole/unbound, fhem und watchtower am laufen.
FHEM läuft in einem neu angelegten Bridge-Netzwerk
Pihole/unbound nutzt ein Macvlan und ist in der Fritzbox als DNS-Server angelegt. Tatsächlich ist es so, dass die Fritzbox seit ich pihole aktiviert habe, nicht mehr über fritz.box erreichbar ist... Evtl. ein Hinweis? Öffne sie jetzt immer über die IP. Diese lässt sich übrigens in Windows anpingen.
Ich probiere mal kurz wie sich alles verhält wenn ich pihole deaktiviere.

Und noch interessant(!!!): Der Synology Assistant findet die Synology nicht! Habe bei der Syno die Standardports 5000 und 5001 geändert, kann das der Grund sein?

Ich habe im Anhang je einen Screenshot von den Netzwerken und den Containern hochgeladen.

EDIT!!!!! --> Wenn ich die Firewall ausschalte bekomme ich einen Ping von der Diskstation! Wie kann das sein?!
Bekomme jedoch auch mit ausgeschalteter Firewall den gleichen Fehler bei FHEM: could not read connection
Ich wette es hängt mit einem Thema zusammen, das ich im Synology Forum offen habe: Ich kann, wenn ich mich über OpenVPN per Handy mit der Synology verbinde, nicht auf die anderen Geräte im Netzwerk zugreifen. Aber über alles was sich auf der Synology befindet, auch Container im Docker auf der Syno. Wenn ich aber die Firewall deaktiviere habe ich auf einmal Zugriff auf alles.

kadettilac89

Zitat von: fhemjan am 30 August 2022, 22:20:34
EDIT!!!!! --> Wenn ich die Firewall ausschalte bekomme ich einen Ping von der Diskstation! Wie kann das sein?!
Bekomme jedoch auch mit ausgeschalteter Firewall den gleichen Fehler bei FHEM: could not read connection
Ich wette es hängt mit einem Thema zusammen, das ich im Synology Forum offen habe: Ich kann, wenn ich mich über OpenVPN per Handy mit der Synology verbinde, nicht auf die anderen Geräte im Netzwerk zugreifen. Aber über alles was sich auf der Synology befindet, auch Container im Docker auf der Syno. Wenn ich aber die Firewall deaktiviere habe ich auf einmal Zugriff auf alles.

Es wird hier ziemlich off topic hier. Das Forum ist für fhem. Das Problem besteht scheinbar auf deiner Synology und ggf. auch noch im Portainer Setup. Ich würde hier schrittweise vorgehen.

Synology fixen, das hast ja auch mit dem Post im Syno-Forum begonnen.

Sicherstellen, dass du die DB auf der Synology erreichen und verbinden kannst. Dazu würde ich ein DB-Tool auf einem Windows Rechner (einem normalem Arbeitsrechner) der funktioniert installieren. Zum Beispiel HeidiSQL, das nutze ich lange. https://www.heidisql.com/

Wenn du mit dem Arbeitsrechner die DB erreichen und auch beschreiben, lesen, ... kannst, erst dann, zurück zu Portainer, Docker und fhem. Sonst hast du zu viele Baustellen. Wenn du überall schraubst geht am Schluss auch ncihts, aber du weißt dann auch nicht ob es an gemachten Änderungen liegt.

Auch offtopic, nur als Randbemerkung. Ich kenne dein Setup und deine Pläne nicht. Nur weil überall irgend welche Firewalls und separate Netze sind bedeutet das nicht, dass die Sicherheit steigt. Es steigert die Komplexität und auch das Risiko, dass ein Loch aufgerissen wird.

fhemjan

Da ist was dran. Besten Dank für die Hilfe soweit!

fhemjan

#24
So, ich habe mich entschieden einen anderen Weg einzuschlagen. Ich installiere MariaDB und phpmyadmin auch auf dem Raspberry.
So geschehen: habe beides über Portainer installiert und kann über die Portainer Console auf die mysql mit dem fhemuser zugreifen (s. Anhang).
Über phpmyadmin habe ich über das .sql skript die Datenbank fhem, dn fhemuser und die Tabellen angelegt. fhemuser hat alle Rechte bekommen.
Die db.conf habe ich auf die IP des Raspberrys angepasst und entsprechend das Passwort vom fhemuser eingetragen.
Ich kann nun in FHEM das dblog device anlegen, aber der fhemuser kann sich nicht verbinden.
Angehängt hab ich die kKonfiguration vom device in fhem, die Ausgabe von configCheck (könnt ihr mir vielleicht sagen welches Log-File da gemeint ist?) und die Ausgabe vom Eventmonitor.

Kann jemand helfen? Das muss doch irgendwie zu schaffen sein mit der Datenbank

edit: Dateianhänge gelöscht, da offtopic

Otto123

ZitatDie db.conf habe ich auf die IP des Raspberrys angepasst
Welche IP? Der Maria Container läuft in welchem Netzwerk?

Mir ist nicht klar was Du wirklich getan hast. Wenn Du jetzt so vorgehen willst, solltest Du FHEM und die Datenbank im gleichen (docker) Netzwerk betreiben.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

fhemjan

#26
Hallo Otto,
ich habe fhem, MariaDB und phpmyadmin in einem gemeinsamen Netzwerk in Docker (Portainer) laufen.
Sieht aus wie im Anhang.

Für die db.conf habe die IP des Raspberrys im Heimnetz genommen: 192.168.178.210
Habe eben auch mal die IP in Docker versucht: 172.18.0.3

Hatte mit beiden keinen Erfolg.
Wenn ich stattdessen localhost nehme, kann fhem nicht auf den mysql sock zugreifen (Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock').

edit: db.conf screenshot hochgeladen (befindet sich direkt auf erster Ebene auf dem bind volume)

edit: Dateianhänge gelöscht, da offtopic

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: fhemjan am 31 August 2022, 21:52:11
Hallo Otto,
ich habe fhem, MariaDB und phpmyadmin in einem gemeinsamen Netzwerk in Docker (Portainer) laufen.
Sieht aus wie im Anhang.

Für die db.conf habe die IP des Raspberrys im Heimnetz genommen: 192.168.178.210
Habe eben auch mal die IP in Docker versucht: 172.18.0.3

Hatte mit beiden keinen Erfolg.
Wenn ich stattdessen localhost nehme, kann fhem nicht auf den mysql sock zugreifen (Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock').

kannst du von phpmyadmin auf die datenbank fhem zugreifen?

Auf welche Host hat fhemuser Zugriff? Darf er '%'?


SELECT host, user FROM mysql.user;

fhemjan

#29
Hallo @kadettilac89
ja. Habe über phpmyadmin die Datenbank fhem inkl. current und history über das sql skript angelegt. Kann mich mit root und mit fhemuser anmelden. fhemuser hat alle Rechte bekommen (s. Screenshots im Anhang).

Ich habe mich spaßeshalber auch mal über die console in Portainer im fhem container in die Datenbank mit dem fhemuser eingeloggt. Funktioniert, s. Screenshot

Habe noch mal Screenshots von allen Container-Einstellungen von fhem, maria und phpmyadmin gemacht.

edit: Dateianhänge gelöscht, da offtopic