Autor Thema: Linux-Befehle auf einem Docker-Container auf dem NAS  (Gelesen 4581 mal)

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Linux-Befehle auf einem Docker-Container auf dem NAS
« am: 18 August 2020, 15:11:50 »
Hallo,

ich habe den Fhem-Server in einem Docker-Container auf einem QNAP-NAS laufen.
Dabei stoße ich immer wieder auf das gleiche Problem.

In vielen Anleitungen und Tips wird z.B. der Linux-Befehl sudo verwendet, wo genau muss dieser wie eingegeben werden.
Beim Raspi wählt man sich ja per Telnet ein, aber das funktioniert bei dem Docker-Container nicht, da er die gleiche IP-Adresse wie das NAS selbst hat und nur durch einen anderen Port angesprochen wird.
Ich kann im Container ein Terminal öffnet, doch da führt der Befehl immer zu einem Fehler.

Kann mir jemand der eine gleiche Konfiguration hat wie ich vielleicht helfen?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #1 am: 19 August 2020, 19:16:48 »
Wirklich keiner der mir helfen kann?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1148
    • Cyanide & Happiness
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #2 am: 25 August 2020, 14:28:49 »
In vielen Anleitungen und Tips wird z.B. der Linux-Befehl sudo verwendet, wo genau muss dieser wie eingegeben werden.
Beim Raspi wählt man sich ja per Telnet ein, aber das funktioniert bei dem Docker-Container nicht, da er die gleiche IP-Adresse wie das NAS selbst hat und nur durch einen anderen Port angesprochen wird.
Ich kann im Container ein Terminal öffnet, doch da führt der Befehl immer zu einem Fehler.
1. ssh ist besser als telnet
2. beschäftige dich mal mit port forwarding: du musst den ssh-port des containers nach 'Außen' auf eine andere portnummer führen; dann solltest du per ssh über den anderen port auf das Terminal des containers zugreifen können.
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@aculfw | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #3 am: 25 August 2020, 14:32:35 »
Theoretisch ja, praktisch besteht aber das Problem, dass der ssh-Port des NAS und des Fhem-Servers identisch sind.
Und wenn ich einen Port nach Außen öffne, geht er immer auf das NAS.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1148
    • Cyanide & Happiness
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #4 am: 25 August 2020, 15:02:43 »
Theoretisch ja, praktisch besteht aber das Problem, dass der ssh-Port des NAS und des Fhem-Servers identisch sind.
Und wenn ich einen Port nach Außen öffne, geht er immer auf das NAS.
2. beschäftige dich mal mit port forwarding: du musst den ssh-port des containers nach 'Außen' auf eine andere portnummer führen; dann solltest du per ssh über den anderen port auf das Terminal des containers zugreifen können.
Alternativ den ssh port des Containers ändern, aber das wirst du ohne Terminal im container wohl kaum schaffen.
« Letzte Änderung: 25 August 2020, 15:11:31 von yersinia »
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@aculfw | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #5 am: 25 August 2020, 15:29:46 »
Hey, kurze Begriffsklärung.
Außen bedeutet für mich extern hinter der Fritzbox.

Das ist dann nicht das Problem, das Problem ist, dass der fhem-Server keine eigene IP hat, sondern mit der IP des NAS und einer zusätzlichen Portnummer aufgerufen wird.
Dadurch hat der Fhem-server und das NAS die gleiche interne Portnummer für ssh-Zugriffe und somit landet ein ssh-Zugriff beispielsweise über Putty immer auf dem NAS.

Falls Außen für dich was anderes bedeutet:
Ein Terminnal wird über die Container-Oberfläche als einfache Befehlszeileneingabe zur Verfügung gestellt, doch macht es Sinn den internen Port für ssh-Zugriffe zu verändern?
Ich habe so schon genug Probleme die ganzen Ports zuzuordnen und auseinander zu halten.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1148
    • Cyanide & Happiness
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #6 am: 25 August 2020, 15:44:18 »
Ja, das war unglücklich gewählt. Mit Außen meine ich den Netzwerk-Port der QNAP. Nicht den WAN-Port der Fritte.

Wahrscheinlich ist der ssh port 22 für die QNAP belegt. Demnach müsste NAT/Port forwarding durch die QNAP geschehen.
Der fhem-ssh-standard-port 22 muss auf den QNAP Port auf einen anderen wie zB 22022 gelegt werden und dann kannst du darauf via ssh oder putty zugreifen.
Oder du änderst den Standard ssh port entweder beim FHEM-Container oder der QNAP auf was anderes als 22.

Ein Terminnal wird über die Container-Oberfläche als einfache Befehlszeileneingabe zur Verfügung gestellt, doch macht es Sinn den internen Port für ssh-Zugriffe zu verändern?
Ich habe so schon genug Probleme die ganzen Ports zuzuordnen und auseinander zu halten.
Wahrscheinlich ist das kein richtiges Terminal, was dir QNAP da zur Verfügung stellt.
Möglicherweise ist das Gesamtsetup für dich erstmal zu komplex? Warum nicht mit einem RasPi3 oder 4 (sprich: dediziertes System) probieren?
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@aculfw | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #7 am: 25 August 2020, 15:48:33 »
Zitat
Warum nicht mit einem RasPi3 oder 4 (sprich: dediziertes System) probieren?
Naja, extra Kosten, extra Gerät. Habe das NAS ja bewusst unter der Annahme angeschafft, dass dort auch Server für entsprechende Dienste laufen können.
Als reines Speichermedium gäbe es deutlich billigere Lösungen.

Ärgere mich ja schon genug, dass ich mich fälschlicherweise für ein armh-System entschieden habe statt für ein x86-System.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline t1me2die

  • Sr. Member
  • ****
  • Beiträge: 528
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #8 am: 25 August 2020, 15:51:49 »
Genau, was yersinia schrieb bzgl. Portforwarding hättest du glaub ich bei der Erstellung des Containers eingeben müssen.
Unter Advanced Settings -> Network -> Portforwarding kann / muss man sowas angeben.
Wie du sonst schon richtig beschrieben hast, wären die SSH Ports von deinem QNAP und deinem Container ja identisch, da der Container + QNAP dieselbe IP haben.

Gruß
Mathze

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #9 am: 25 August 2020, 15:56:35 »
Ich weiß was du meinst, da habe ich lediglich den 8083 (als fürs Frontend) umgeleitet.
Müsste sich aber auch nachträglich noch eintragen lassen.

Wollte aber eh von NAT auf Bridge umstellen, dann hätte der Server ja eine eigene IP.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1148
    • Cyanide & Happiness
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #10 am: 25 August 2020, 16:03:00 »
dann löst sich ggf auch dein httpmod/Netzwerkproblem, weil der angefragte Server dann auch richtig antworten kann...
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@aculfw | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #11 am: 25 August 2020, 21:31:43 »
Mag sein, aber die Frage ist ja welche Ports dann freigegeben werden müssen.
Kann ja nicht pauschal alle freigeben.

Ergänzung:
Muss mich korrigieren. Bei der Einstellung Bridge mit eigener IP kann man keine Ports einstellen, das geht nur bei der Einstellung NAT, dann ist aber die IP die gleiche wie die des NAS.
« Letzte Änderung: 25 August 2020, 21:40:22 von MarkoP »
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1148
    • Cyanide & Happiness
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #12 am: 26 August 2020, 09:36:36 »
Mag sein, aber die Frage ist ja welche Ports dann freigegeben werden müssen.
Kann ja nicht pauschal alle freigeben.
Warum nicht? Die Ports gibst du doch nur an der QNAP frei und nicht ins Internet (jenseits der Fritte).

Ergänzung:
Muss mich korrigieren. Bei der Einstellung Bridge mit eigener IP kann man keine Ports einstellen, das geht nur bei der Einstellung NAT, dann ist aber die IP die gleiche wie die des NAS.
Ja, klar, bei Bridge bekommt der Container eine eigene IP und damit müsstest du den Container direkt ansprechen können. Die IP sollte dann eine andere als des Hosts (QNAP) sein.

Mit NAT tritt der Container immer mit der QNAP IP auf, natürlich.
Da musst du den Port 22 des Containers auf einen andere, freien Port der QNAP mappen. Ich würde auch einen Port >65535 nehmen.
Aber anscheinend schreib ich mir die Finger wund:
Wahrscheinlich ist der ssh port 22 für die QNAP belegt. Demnach müsste NAT/Port forwarding durch die QNAP geschehen.
Der fhem-ssh-standard-port 22 muss auf den QNAP Port auf einen anderen wie zB 22022 gelegt werden und dann kannst du darauf via ssh oder putty zugreifen.
Oder du änderst den Standard ssh port entweder beim FHEM-Container oder der QNAP auf was anderes als 22.
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@aculfw | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Offline t1me2die

  • Sr. Member
  • ****
  • Beiträge: 528
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #13 am: 26 August 2020, 09:36:55 »
Kannst du im Nachhinein von NAT auf Bridge umstellen oder musst du dazu den Container neu aufsetzen?
Früher musste man dazu immer einen neuen Container aufsetzen.
Stelle um auf Bridge, entweder managt deine Fritte die DHCP Vergabe oder du vergibst direkt eine Wunsch-IP.
Um die Ports brauchst du Dir keine Gedanken zu machen, du befindest Dich in deinem Netzwerk, eine Freigabe von Ports ist nur nach Außen relevant.
Ansonsten kannst du problemlos danach per 192.168.178.xxx:8083 dein FHEM erreichen.
Ich vermute auch, dass dies Probleme mit HTTPMOD beheben könnte!

Aber ich muss noch einmal nachfragen, wie groß ist dein FHEM?
Beginnst du gerade neu?
Ich bezweifel weiterhin, dass du mit dieser Lösung glücklich wirst!
Wenn du später ioDevices wie z.B. nanoCUL, Jeelink, SignalDuino o.ä. per USB an den Container weitergeben willst, könnte das zu Problemen führen!
Ich meine gesehen zu haben, dass du einen HMUART als WLAN Variante betreibst oder? Dieser sollte nach der Umstellung auf Bridge hoffentlich auch korrekt funktionieren.

Gruß
Mathze

Offline MarkoP

  • Full Member
  • ***
  • Beiträge: 288
Antw:Linux-Befehle auf einem Docker-Container auf dem NAS
« Antwort #14 am: 26 August 2020, 11:50:48 »
Zitat von: yersinia
Warum nicht? Die Ports gibst du doch nur an der QNAP frei und nicht ins Internet (jenseits der Fritte).
Ich kann im QNAP keine Ports freigeben, zumindest ist mir keine Möglichkeit dafür bekannt. Einzig im Container bei einer NAT-Einstellung ließen sich Ports freigaben, aber immer nur einer pro Eingabezeile, es müsste also eine unendliche Zahl von Zeilen eingetragen werden.

Zitat von: yersinia
Ja, klar, bei Bridge bekommt der Container eine eigene IP und damit müsstest du den Container direkt ansprechen können. Die IP sollte dann eine andere als des Hosts (QNAP) sein.
Deshalb hatte ich das ja von NAT aus umgestellt. Leider bringt es mich nicht weiter, da bei einem ssh-Zugriff per Putty auf 192.168.178.155:22 (IP des Fhem-Servers) keine Eingabeaufforderung im cmd-Fenster kommt. Ich kann also nichts machen.

Zitat von: yersinia
Mit NAT tritt der Container immer mit der QNAP IP auf, natürlich.
Da musst du den Port 22 des Containers auf einen andere, freien Port der QNAP mappen. Ich würde auch einen Port >65535 nehmen.
Als du das geschrieben hast, hatte ich bereits auf Bridge umgestellt, also war es hinfällig, da ich bei Bridge keine Ports mappen kann. Leider funktioniert wie oben geschrieben der Zugriff über die separate IP per ssh dennoch nicht.

@t1me2die
Ja kann ich hin und her Wechseln - in beide Richtungen. Derzeitige Einstellung ist auf Bridge mit fester IP 192.168.178.155.
Die Fhem-Oberfläche kann ich über den Port 8083 erreichen. Leider funktioniert dies aber offenbar nicht mit ssh auf Port 22 - siehe oben.
Auch sind die HTTPMOD-Probleme bei Einstellung auf Bridge genauso vorhanden.

Mein Fhem ist noch sehr klein, beginne gerade erst. 2 Hue Lampen, 1 von 4 Shelly2.5 aktiv im Betrieb, 1 Rolladenaktor, und ein Türkontakt von Homematic, dazu noch einen Saugroboter, der aber auch noch nicht eingebunden ist. ich habe derzeit nicht vor irgendwelche Geräte per USB anzuschließen, da ich schon beim CUL gesehen habe, dass dies nicht einfach ist.
Ich nutze für die Homematic-Devices ein Lan-Gateway, dass per Netzwerkkabel angeschlossen ist und per Funk mit den Devices kommuniziert. Ob man bei der Frequenz von WLan reden kann, weiß ich nicht. Das ist ja norm. entweder 2,4 GHz oder 5GHz.

Ganz dumm gefragt, macht es Sinn in der Fritzbox den Port 8083 für die Fhem-IP nach Außen freizugeben? Kann es sein, dass die Befehle zwar rausgehen, aber die Rückmeldung von der Fritzbox abgefangen werden?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

 

decade-submarginal