Im Terminal des Docker keine Sudo-Befehle

Begonnen von Superposchi, 16 November 2020, 13:58:27

Vorheriges Thema - Nächstes Thema

Superposchi

Hallo, ich kann im Container über den Button Terminal keine sudo-Befehle absetzen.
Es kommt beispielsweise nur folgendes zurück:
sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"                                                                                                                                                                                                                                                       
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner                                                                                                                                                                                                                                                                   
sudo: fatal error, unable to load plugins


Da soweit ich es gesehen habe, andere Befehle funktionieren und die Rückmeldung es ja indirekt auch sagt, hat das Terminal offenbar keinen Schreibzugriff.
Frage ist nun, was muss ich tun, damit ich auch Sudo-Befehle über dieses Terminal absetzen kann.

Und bitte keine Verweise auf Portainer, damit komme ich überhaupt nicht klar. Sollte wirklich die allerletzte Notlösung sein und dann auch nur mit einer Schritt-für-Schritt-Anleitung.

Eisix

Hallo,

musst du da überhaupt sudo Befehle absetzen? Bis du da nicht root?
Tipp mal id

Gruß
Eisix

Wernieman

Innerhalb eines Containes bist Du root ... es sei denn, in der Config wurde anders gearbeitet
- 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

Superposchi

#3
Ich will den gassistant installieren und alle Quellen geben immer einen sudo-Befehl dafür an.

Rückmeldung von id:
uid=0(root) gid=0(root) groups=0(root)

Hab schon probiert den Befehl sudo npm install -g gassistant-fhem --unsafe-perm ohne sudo davor einzugeben, auch in anderen Variationen habe ich es probiert, folge bei allen Variationen war ein Abbruch mit einer Fehlermeldung, das entweder gassistant nicht gefunden wird oder ein Befehlsteil des installbefehls falsch ist bzw. fehlt


Wernieman

sudo brauchst Du,m um root zu werden ... aber laut "uid=0(root) gid=0(root) groups=0(root)" bist Du root. Mache es also einfach mal ohne sudo.

Hinweis:
Bitte versuche mal zu verstehen, was Du machst. Das blinde apptippen von irgendwelchen Anleitungen im Netz bringt Dein System gleich in Probleme ....
- 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

Superposchi

Wie cih im Post darüber geschrieben habe, habe ich alle möglichen Kobinationen probiert, darunter selbstverständlich auch einfach ohne das sudo

Aber damit mir das auch geglaubt wird, habe ich es gerade eben noch mal gemacht. Hier das Ergebnis:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown

Wird statt mit Code 0 wie bei einer erfolgreichen Prozedur mit Code 126 beendet.

Eisix

npm ist installiert und in der PATH variable?
Tipp mal

which npm

Gruß
Eisix

Superposchi

Wird mit Code 1 beendet ohne eine Ausgabe zu erzeugen

Eisix

Ist npm installiert?

Was wird angezeigt wenn du nur

npm

ausführst.

Superposchi

Wird mit Code 126 beendet und gibt folgendes zurück:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"npm\": executable file not found in $PATH": unknown

Wernieman

Was ist das für ein Container?
Der "offizieller" FHEM Container?
- 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

Superposchi

Ja, der offizielle Fhem-Container auf einem QNAP NAS mit ARM-Achitektur.

kadettilac89

#12
Frage 1:
Welches Image genau? docker pull fhem/fhem (wie empfohlen) oder docker pull fhem/fhem-arm64v8_linux??

Frage 2:
Hast du mal die empfohlene Installationsoption getestet? Du willst Package "gassistant-fhem" installieren wie ich das verstehe.

https://github.com/fhem/fhem-docker/#add-custom-packages


Add custom packages
You may define several different types of packages to be installed automatically during initial start of the container by adding one of the following parameters to your container run command:

-e NPM_PKGS="package1 package2"


Frage 3: hast du mal die Definition von gassistant im Docker getestet? Ich dachte gassistant ist im Docker-Image sowieso drin. Ich nutze es, kann mich aber nicht erinnern, das installiert zu haben.

S. Code Zeile 400 ff

# Add nodejs app layer
RUN if ( [ "${NPM_PKGS}" != "" ] || [ "${IMAGE_LAYER_NODEJS}" != "0" ] || [ "${IMAGE_LAYER_NODEJS_EXT}" != "0" ] ) && [ "${ARCH}" != "arm32v5" ]; then \
      LC_ALL=C curl --retry 3 --retry-connrefused --retry-delay 2 -fsSL https://deb.nodesource.com/setup_10.x | LC_ALL=C bash - \
      && LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends \
           nodejs \
      && if [ ! -e /usr/bin/npm ]; then \
           LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends \
             npm \
      ; fi \
      && npm install -g --unsafe-perm --production \
          npm \
      && if [ "${NPM_PKGS}" != "" ]; then \
          npm install -g --unsafe-perm --production \
           ${NPM_PKGS} \
         ; fi \
      && if [ "${IMAGE_LAYER_NODEJS_EXT}" != "0" ]; then \
           npm install -g --unsafe-perm --production \
            alexa-cookie2 \
            alexa-fhem \
            gassistant-fhem \     <<<-----------------
            homebridge \
            homebridge-fhem \
            tradfri-fhem \
        ; fi \
      && LC_ALL=C apt-get autoremove -qqy && LC_ALL=C apt-get clean \
      && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.[^.] ~/.??* ~/* \
    ; fi


Edit: Nachtrag, welche CPU + OS hast du? 32bit installiert kein NPM wenn ich den Code im Dockerfile richtig interpretiere. 

Superposchi

Also zu 1) soweit ich mich erinnern kann habe ich einfach pull fhem/fhem genommen. Kann man das irgendwie kontrollieren?
Zu 2) ich will eigentlich Fhem-Connect nutzen, dafür ist dieses gassistant-fhem wohl Voraussetzung. Doch der Befehl zum installieren funktioniert halt nicht bei mir. Mehr kann ich dazu nicht sagen, da es meinen Horizont aktuell übersteigt.
Zu 3) nein habe ich nicht, da ich auch gar nicht wüsste wie man das macht. Ich sehe nur, dass im erstellten fhem-connect-Device eine Meldung steht, die anzeigt, das gassistant-fhem fehlt. Entsprechendes List kann ich gerne nachreichen wenn gewünscht.

Zum Nachtrag:
Ich habe eine QNAP TS-431 X2 mit Annapuna Labs Alpine AL314 Quad-Core ARM Cortex-A15 CPU mit 1,7 GHz und nutze die aktuellste Firmwareversion vom NAS (QTS 4.5.1.1.480 Build 20201108)
Denke mal das sich die Frage auf das NAS bezieht, oder?

kadettilac89

vermutlich wird für 32bit arm-CPU kein NPM im Docker installiert. Sehe zwar nur die Einschränkung auf arm32v5, deine CPU müsste arm32v7 sein. Kann aber sein, dass auch dafür die npm nicht installiert werden. Entweder wegen geringer Verbreitung generell 32bit nicht mehr, oder weil benötigte Pakete nicht (mehr) in 32 bit verfügbar sind.

Du kannst:
1) mal zum Test das Image "docker pull fhem/fhem-arm32v7_linux" testen. Vielleicht ist die Behandlung mit drin. Obwohl ich davon ausgehe, dass per Default Image sowieso der richtige Build ausgewählt wird

2) npm manuell installieren, Anleitung müsste diese hier passen ..... https://www.instructables.com/Install-Nodejs-and-Npm-on-Raspberry-Pi/

3) Das Thema im Docker Thread ansprechen

Ach ja ... mach ein Backup bevor du rumspielst damit du keine Daten verlierst.

Superposchi

#15
Backups werden gott sei dank täglich gemacht.
Hab gerade noch mal nach geschaut, im Contaier under dem dazugehörigen Image steht immer fhem/fhem als Quelle.

Kannst du mir eventuell kurz den Unterschied zwischen arm32v5 und arm32v7 erklären

Habe gerade mal die Installationsanleitung angefangen durchzuschauen und kann schon mal sagen das die Rückmeldung auf das uname -m "armv7l" lautet.

Superposchi

Runterladen und Entpacken hat geklappt, aber ich bekommen das Archive nicht verschoben mit den Befehlen
cd node-v6.11.1-linux-armv7l/
sudo cp -R * /usr/local/


Ich kann im docker immer nur einen Einzelbefehl absetzen und keine direkte ssh-Verbindung aufbauen.
Der erste Befehl wird mit Code 126 und der zweite mit Code 2 Beendet.

Kann ich das irgendwie auch direkt über einen Explorer-Zugang kopieren?

kadettilac89

Zitat von: Superposchi am 18 November 2020, 10:29:34
Runterladen und Entpacken hat geklappt, aber ich bekommen das Archive nicht verschoben mit den Befehlen
cd node-v6.11.1-linux-armv7l/
sudo cp -R * /usr/local/


Ich kann im docker immer nur einen Einzelbefehl absetzen und keine direkte ssh-Verbindung aufbauen.
Der erste Befehl wird mit Code 126 und der zweite mit Code 2 Beendet.

Kann ich das irgendwie auch direkt über einen Explorer-Zugang kopieren?

Ich weiß nicht was du mit Explorer-Zugang meinst. Wenn du direkt im Docker schreiben kannst ... ja. Achte nur darauf, die richtigen Rechte zu setzen.

Du erhälst den Fehler weil du vermutlich im Falschen Verzeichnis "sitzt" wenn der Befehl ausgeführt wird.

Tipp;: Installiere dir Portainer, damit kannst du direkt im Docker per Shell arbeiten statt Files rumzuschaufeln

https://hub.docker.com/r/portainer/portainer

Ist ein grafisches "Docker-Verwaltungs Tool". Minimalinstallation:   
- docker pull portainer/portainer
- Port 8000 - 8000  und Port 9000 - 9000 mappen.

Die Weboberfläche ist dann unter Port 9000 erreichbar.

kadettilac89

... du hast ja 32bit, ich glaube Portainer gibt es nur 64bit. Teste es mal ...

Superposchi

#19
Portainer habe ich installiert, komme ich aber nicht mit zurecht.
Mir ist es jedenfalls bislang noch nicht gelungen über Portainer auf den Fhem Docker zuzugreifen.
Im Image wird nur Portainer/Portainer angezeigt. Kann nicht erkennen ob es eine 32bit oder 64bot Version ist.

Mit explorer-Zugang meinte ich, dass ich das Startverzeichnis /opt/fhem auf ein pysisches Laufwerk gemappt habe und darauf ganz normal mit dem Windows-Explorer zugreifen kann.

Wernieman

Zitat von: Superposchi am 18 November 2020, 10:50:39
Mit explorer-Zugang meinte ich, dass ich das Startverzeichnis /opt/fhem auf ein pysisches Laufwerk gemappt habe und darauf ganz normal mit dem Windows-Explorer zugreifen kann.

Davor würde ich Dir sofort abraten. Gibt "nur" Berechtigungsprobleme .... und aktuell solltest Du die Problemfälle minimieren anstatt Dir zusätzliche Probleme reinzuholen.

ZitatIch kann im docker immer nur einen Einzelbefehl absetzen ...
Verstehe Dich nicht. Wie greifst Du überhaupt darauf zu?

Zitatund keine direkte ssh-Verbindung aufbauen.
Docker IST NICHT eine VM. Innenhalt eines Docker-Containers sollte nur ein Programm laufen, hier also FHEM. ssh ist dagegen ein 2. Deamon ...
- 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

#21
explorerverzeichnis ... das bringt sowieso nichts, da die npm-files nicht in das Fhem-verzeicnnis kommen. Wie Wernieman schon sagte, spiele da nicht weiter rum. du holst dir (vor allem als Anfänger) mehr Probleme als Lösungen.

Nur einzelne Befehle ... du machst docker exec für jeden einzelnen Befehl, richtig?

Damit du shell-Befehle sauber ausführen kannst solltest du erstmal direkt in den Container


docker exec -it <container name> /bin/bash

Damit hast du dann eine "saubere" shell und da sind die Befehle dann auch erfolgreich ... ansonsten, Fehlermeldungen posten mit mehr input was du genau gemacht hast / machen willst

Du brauchst erstmal keine SSH, sonsten einen shell. Die bekommst du mit dem docker exec command oben

Wernieman

@kadettilac89

Leider Wissen wir nicht, wie er überhaupt auf seine NAS kommt. Eventuell geht er nicht über eine shell, sondern eine http-Verbindung .. deshalb meine Grundsätzliche Frage, wie er sich überhaupt verbindet.
- 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

Superposchi

Wie ich darauf zugreife ist einfach erklärt.
Ich rufe in der NAS-Oberfläche die Container-Station auf in der die Docker verwaltet werden (Screenshot #1).
Dort rufe ich den Fhem-Docker (roter Kreis) auf worauf sich der Dialog auf screenshot #2 öffnet.
hier habe ich die Möglichkeit mit dem Butten "Terminal" (roter Kreis) das auf dem screenshot eingeblendete Dialogfenster aufzurufen.
Damit befinde ich mich als root-Benutzer quasi in einer Tunnelverbindung wie beim ssh- oder telnet-Protokoll.

In diesem Dialogfenster kann ich immer einzelne Befehle absetzen. Der Befehl wird direkt in die Aufgabeaufforderung hineingeschrieben und in einem neuen Browserfenster abgearbeitet.
Allerdings wird hier kein sudo oder npm akzeptiert.

Der Befehl "docker exec -it <container name> /bin/bash" wird mit Fehlercode 126 und folgender Ausgabe abgebrochen:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"docker\": executable file not found in $PATH": unknown   

Wernieman

Genau das dachte ich mir ....... und "docker exec" wird nicht funktionieren, da Du schon direkt im Container bist ...

Eine echte ssh-Verbindung zur NAS hast Du nicht? Dort würde dann (eigentlich) "docker exec" funktionieren ...

Mir fallen da mehrere Lösungsmöglichkeiten ein, aber die möchte ich einem Anfänger (nicht negativ gemeint) nicht zumuten.

Hast Du folgendes, von kadettilac89 Vorgeschlagen, mal gemacht?
Zitat von: kadettilac89 am 18 November 2020, 07:56:42
Frage 2:
Hast du mal die empfohlene Installationsoption getestet? Du willst Package "gassistant-fhem" installieren wie ich das verstehe.

https://github.com/fhem/fhem-docker/#add-custom-packages


Add custom packages
You may define several different types of packages to be installed automatically during initial start of the container by adding one of the following parameters to your container run command:

-e NPM_PKGS="package1 package2"

- 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

Superposchi

Nein, habe ich bisher noch nicht, da ich nicht verstanden habe wie und wo ich die Commandos absetzen muss.
Da wollte ich noch nachfragen, aber der Chat hat sich zu schnell entwickelt.

Sind das Befehle für das Terminal-Fenster?

P.S. Eine echte ssh-Verbindung habe ich nicht. Habe mit Putty versucht auf den Container zu kommen, aber das funktioniert nicht. Komme lediglich auf das NAS direkt, aber das nützt mir ja nicht viel.

kadettilac89

Zitat von: Superposchi am 18 November 2020, 12:31:46
Nein, habe ich bisher noch nicht, da ich nicht verstanden habe wie und wo ich die Commandos absetzen muss.
Da wollte ich noch nachfragen, aber der Chat hat sich zu schnell entwickelt.

Sind das Befehle für das Terminal-Fenster?

P.S. Eine echte ssh-Verbindung habe ich nicht. Habe mit Putty versucht auf den Container zu kommen, aber das funktioniert nicht. Komme lediglich auf das NAS direkt, aber das nützt mir ja nicht viel.

welche befehle? "-e NPM_PKGS="package1 package2"" ??? Nein, das sind Parameter für deinen Docker Container. (-e = environment). Das musst du irgendwo in deiner grafischen Oberlfäche eintragen. In dem Zuge kannst auch mal das Image "fhem/fhem-arm32v7_linux" eintragen statt dem default. Mit neuen -e Parameter wird der Containder sowieso neu aus dem Image gezogen.

Ansonsteten, ssh auf NAS-Host reicht, ist nur die Frage ob default docker libraries verwendet werden, oder was eigenes.

Wenn das andere Image mit dem -e Parameter nichts hilft dann zeige mal der Befehl unten auf dem Host (dem NAS) ausgibt

docker -ps

Superposchi

Das einzige wo ich was am Docker einstellen kann sind Umgebungsvariablen (siehe Screenshot #3).
Dort kann ich aber weder das Image wechseln, noch irgendwelche Parameter hinzufügen.

Das einzige wo ich aktiv etwas hinzufügen kann ist der Reiter Gerät (Screenshot #4).
Doch dort lässt sich nur aus der Liste auswählen und keine Parameter hinzufügen.

docker -psKann ich erst probieren wenn ich direkten Zugriff auf das NAS habe.

kadettilac89

#28
Zitat von: Superposchi am 18 November 2020, 13:15:51
Das einzige wo ich was am Docker einstellen kann sind Umgebungsvariablen (siehe Screenshot #3).


Environment englisch für Umfeld / Umwelt / Umgebung. Das ist die Stelle wo das rein muss.

Das Image musstest du ggf. beim Neuerstellen irgendwo angeben. Da musst du die Doku prüfen. Kann sein, dass du es später nicht mehr ändern kannst (auch wenn das blöd ist). In dem Fall musst du löschen + neu anlegen.

Superposchi

Stimmt, das kann ich nur beim Erstellen, aber das geht nicht zwischen Tür und Angel. Muss ja dann auch alle Device entsprechend neu anlegen, zumindest die, die gebraucht werden.

Hab inzwischen auch das Image von arm32v7 gezogen. Soll ich dann direkt davon den neuen Container erstellen, oder sind sonst keine Vergleichsmöglichkeiten gegeben?

Muss ich bestimmte Namen bei den jeweiligen Parametern angeben oder spielt die Benennung keine Rolle?

Wernieman

Maches Dir einfach un definiere zum Testen erstmal einen 2. Container. Dort definieren und Testen. Wenn es läuft, das GLEICHE, wie AUFGESCHRIEBEN im ersten nachvollziehen ...
- 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

Superposchi

Einen komplett neuen Container aufzusetzen ist mit einiger Arbeit verbunden, da doch schon eine erhebliche Anzahl an Devices existiert und ich teilweise erstmal schauen müsste wie ich diese angelegt habe.
Die Arbeit würde ich mir natürlich gerne sparen wenn es eine Alternative gibt.

Wernieman

Nicht komplett ... nur die nötigen Teile. Also wirklich ein reins Testsystem für diese eine Anwendung.

Um den Spruch zu verwenden: "Nicht das Kind mit dem Bade ausschütten".
Step by Step
- 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

Superposchi

Ja, aber wenn das in dem Testsystem dann funktioniert, muss ich ALLE Devices dorthin übertragen. Wir gehen ja davon aus, dass es funktioniert, oder?

kadettilac89

erstmal soll es funktionieren. Dann die nächsten Schritte .... wenn es funktioniert machst es sicher gerne, wenn nicht, ... dann schaun wir weiter.

Wernieman

Hier sind (aktuell) 2, die Dir gerne Helfen würden. Der Klassische Weg geht aber, wegen fehlender echten Shell, nicht.

Wenn der neue Container funktioniert, kannst DU natürlich versuchen, Ihn so aufzubohren, das er den "alten" ersetzt. Aber DAS währe der nächste Step. Erstmal eine funktionsfähige Basis nehmen.
- 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

Eisix

Hallo,

auf das QNAP System kommt man normalerweise mit ssh (falls der service nicht aktiv ist, kann man über GUI aktivieren), ist der gleiche Account wie beim Webinterface. Danach kann man die normalen Docker Kommandos anwenden.

Gruß
Eisix

Superposchi

Ja klar, dauert wohl etwas bis ich einen neuen Container aufgesetzt habe.

Da ich die Parameter aber nur beim Erstellen angebe, frage ich lieber jetzt ob es da noch mehr gibt die Sinnvoll sind oder ob die genannten ausreichend sind. Mache beim neuen Container lieber etwas mehr rein, als das nachher wieder irgendwas fehlt und ich es dann neu machen muss.

Zum Beispiel geht über die Commandozeile des Terminals ja auch sudo nicht. Kann man das auch per Parameter irgendwie mit reinbekommen?

Wernieman

- 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

Superposchi

So, hat etwas gedauert, aber ich wollte nicht zwischen Tür und Angel damit anfangen.
Habe jetzt einen neuen docker mit arm32V7 und den Parametern erstellt. Hat soweit funktionit.
Dann wollte ich testweise den gassistant installieren, weil dabei ja mit dem alten docker Probleme existiert haben.

Der Befehl sudo npm install -g gassistant-fhem --unsafe-perm ohne das sudo wurde im Terminal ausgeführt und mit Code 0 Beenden. Ausgabe lautet:
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142                                                                                                                                                             
npm WARN deprecated request-promise@4.2.6: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142                                                                                       
npm WARN deprecated har-validator@5.1.5: this library is no longer supported                                                                                                                                                                                                   
/usr/bin/gassistant-fhem -> /usr/lib/node_modules/gassistant-fhem/bin/gassistant-fhem                                                                                                                                                                                           
                                                                                                                                                                                                                                                                               
> protobufjs@6.10.2 postinstall /usr/lib/node_modules/gassistant-fhem/node_modules/protobufjs                                                                                                                                                                                   
> node scripts/postinstall                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                               
+ gassistant-fhem@3.0.3                                                                                                                                                                                                                                                         
updated 10 packages in 71.95s 


Allerdings scheitert es jetzt beim Befehl:curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
Ausgabe mit Code 2:
curl: option -: is unknown                                                                                                                                                                                                                                                     
curl: try 'curl --help' or 'curl --manual' for more information


Also ein kleines Stück weiter, doch noch nicht am Ziel wie es scheint.
Wie bekomme ich den curl-Befehl ans laufen?
Gibt es dafür auch einen Parameter bei der containererstellung?

kadettilac89

bevor du jetzt irgend was installierts ...

hast du den Parameter "-e NPM_PKGS="gassistant-fhem"  angegeben? Damit sollte eigentlich gassistant-fhem schon beim erstellen des Containers angelegt werden. Das war Ziel der Aufgabe.

Nun hast du gassistant-fhem. Was bezweckst du nun weiter, was fehlt noch? Kannst du die fehlenden Module nicht mit den -e (umgebungsvariablen) einfach angeben?

Mit dem Befehl mit curl willst du die Version 13 von nodejs installieren. Ist das nötig?

Was geben die Befehle unten aus?


node -v
nodejs -v

Superposchi

Nein, "-e NPM_PKGS="gassistant-fhem" habe ich nicht angegeben. Habe lediglich wie gefordert den neuen Docker mit den erweiterten Parametern aus https://github.com/fhem/fhem-docker/#add-custom-packages erstellt. Das war die Aufgabe, soweit ich es verstanden habe.
Add custom packages
You may define several different types of packages to be installed automatically during initial start of the container by adding one of the following parameters to your container run command:
    Debian APT packages:
    -e APT_PKGS="package1 package2"
    Perl CPAN modules:
    -e CPAN_PKGS="App::Name1 App::Name2"
    Python PIP packages:
    -e PIP_PKGS="package1 package2"
    Node.js NPM packages:
    -e NPM_PKGS="package1 package2"


Ich will zwei Sachen erledigen:
1) Fhemconnect installieren - zum Steuerung von Fhem mit meinen Google Nest / Google Assistant
2) Text2speech - Zur Sprachausgabe über meine Google Nest

Beides scheiterte bisher daran, dass ich über meine Configuration bestimmte Befehle nicht ausführen konnte.

Ob dafür die Version 13 von Nodejs notwendig ist, weiß ich nicht. Ich folge nur der Anleitung von https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect aus dem Fhem-Wiki.

node -v:
v10.23.0

nodejs -v:
v10.23.0

kadettilac89

ok, wenn du mit node -v die NodeJS version siehst wurde vermutlich beim Docker erstellen schon gassistant-fhem installiert. Dann musst du die ganzen Befehle die auf Fehler laufen überhaupt nicht ausführen.

Das meine ich mit überflüssig

sudo npm install -g gassistant-fhem --unsafe-perm


Ich kenne die Umgebung  nicht. Kannst du den Container nochmal neu erstellen, dann nichts weiter ausführen und mal testen ob du in FHEM gassistant definieren kannst. Wenn das funktioniert ist das Thema hier durch das Erstellen des Containers gelöst.

Superposchi

Soll ich den Parameter "-e NPM_PKGS="gassistant-fhem" dann mit aufnehmen beim Erstellen oder nicht?

Und nur aus Neugier gefragt, gibt es auch einen Parameter für die curl-Befehle und macht es sinn die dann auch mit einzufügen um den Docker nicht irgendwann doch wieder neu aufsetzen zu müssen wenn diese dann doch mal gebraucht werden?

kadettilac89

nein, mach einen komplett neuen container ohne zusätzliche pakete. gassistant-fhem sollte im default schon installiert sein mit npm (nodejs). Wenn das so ist, hat es beim ursprünglichen container beim Erstellen ein Problem gegeben. Lasse curl erstmal außen vor.

curl an sich sollte im default schon mit drin sein.

Superposchi

#45
Also soweit ich das sehe äuft der gassistant.
Es wird zumindest running angezeigt und nichts mehr von nicht installiertem gassistant.

Hier das List:
Internals:
   CFGFN     
   FD         9
   FUUID      5fb98d4d-f33f-793a-6fe3-777b685e41bd6f9b
   LAST_START 2020-11-21 22:57:33
   NAME       gassistant
   NOTIFYDEV  global,global:npmjs.*gassistant-fhem.*
   NR         34
   NTFY_ORDER 50-gassistant
   PID        4940
   STARTS     1
   STATE      login required
   TYPE       gassistant
   currentlogfile ./log/gassistant-2020-11-21.log
   logfile    ./log/gassistant-%Y-%m-%d.log
   CoProcess:
     cmdFn      gassistant_getCMD
     name       gassistant-fhem
     state      running /usr/bin/gassistant-fhem
   READINGS:
     2020-11-21 22:57:33   gassistant-fhem running /usr/bin/gassistant-fhem
     2020-11-21 22:57:38   gassistant-fhem-connection login required
     2020-11-21 22:57:38   gassistant-fhem-lastServerError none
     2020-11-21 22:57:38   gassistant-fhem-lasterror none
     2020-11-21 22:57:38   gassistant-fhem-version 3.0.3
     2020-11-21 22:57:38   gassistantFHEM.loginURL <html><a href="https://fhemconnector.eu.auth0.com/authorize?audience=https://europe-west1-fhem-ga-connector.cloudfunctions.net/&scope=offline_access%20openid%20profile&response_type=code&client_id=EI0TI2Y0W1743Ico53Nvsg1FsmoZniCC&code_challenge=DpfBW9QsoAQ7OhcFM11sJVJyXX5I86j1Y5SrfQAA1Xo&code_challenge_method=S256&redirect_uri=https://europe-west1-fhem-ga-connector.cloudfunctions.net/codelanding/start" target="_blank">Click here to login (new window/tab)</a><br></html>
Attributes:
   devStateIcon { my $error = ReadingsVal($name,"gassistant-fhem-lastServerError","none") eq "none"?"10px-kreis-gruen":"10px-kreis-rot";; my $onoff = substr(ReadingsVal($name, "gassistant-fhem", "running"),0,7) eq "running"?"control_on_off\@green":"control_on_off\@red";; my $reload = ReadingsVal($name, "gassistant-fhem-connection", "connected") eq "connected"?"audio_repeat\@green":"audio_repeat\@orange";;"<div><a>".FW_makeImage($error)."</a> <a href=\"/fhem?cmd.dummy=set $name reload&XHR=1\">".FW_makeImage($reload, "reload")."</a><a href=\"/fhem?cmd.dummy=set $name restart&XHR=1\">&nbsp;&nbsp;".FW_makeImage($onoff, "restart")."</a></div>"}
   gassistantFHEM-config ./gassistant-fhem.cfg
   gassistantFHEM-log ./log/gassistant-%Y-%m-%d.log
   icon       gassistant
   nrarchive  10
   room       GoogleAssistant
   stateFormat gassistant-fhem-connection


Sehe ich das richtig?

Die Kommuniktion funktioniert jedenfalls einseitig.
Ich kann wie beschrieben das Testlight per Google assistant ein- und ausschalten, auch von der App her. Nur aus Fhem heraus wird eine Statusänderung nicht in Google Home angezeigt.
Hängt das eventuell mit einem Polling Interval zusammen?

kadettilac89

bei mir wird das sofort gesetzt. Du kannst im Logfile nachsehen ob da was drin steht ... ./log/gassistant-2020-11-21.log

Hast du im Fhem Log Fehlermeldungen? Das Thema ist dann am besten im Thread zu gassistant aufgehoben. Dominik ist auch ganz fix im Antworten. Ich weiß aber auch nicht welchen Testlight du meinst.

Zu diesem Thread hier, hast du nun nur mit dem komplett neu erstellten Docker Image das zum Laufen gekriegt, oder hast du noch was nachinstalliert?

Superposchi

Nein, ich habe nichts weiter installiert und auch keine weiteren Parameter mitgegeben.

Sorry wegen der Frage, aber lest ihr selber eure Anleitungen?
Frage nur weil du meinst du weißt nicht welches Testlight gemeint ist.
Ich richte mich da nach der Anleitung aus dem wiki unter https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect. Und da steht es ja recht eindeutig drin.  ;)

Würde als nächstes dann text2speech und Googlecast aufspielen wollen um die Nest für Audioausgaben nutzen zu können.
Dabei gehe ich auch nach den vorhandenen Anleitungen unter https://fhem.de/commandref_DE.html#GOOGLECAST und https://github.com/dominikkarall/fhem_pythonbinding vor.

kadettilac89

Zitat von: Superposchi am 22 November 2020, 14:18:23
Nein, ich habe nichts weiter installiert und auch keine weiteren Parameter mitgegeben.
OK, die wichtige Frage ob im Log was steht ist weiterhin offen ... wenn da ein Netzwerkproblem, nicht erreichbare Ports ... angemeckert werden könnte da noch was zu tun sein. Aber OK, weitere FRagen im gassistant Thread wenn nötig ....

Das ursprüngliche SUDO Problem ist gelöst. Thread kann auf gelöst gesetzt werden .... optional Titel updaten.

Ansonsten sieht es gut aus wenn der Docker Container nun ohne weiter Parameter alles beinhaltet. Entweder hat das Defaultimage die Armv7 Architektur nicht enthalten, oder beim initialen Erzeugen gab es einen Fehler.

Im Hinterkopf behalten, dass Apt oder PIP-Module über die Environment-Variablen gesetzt werden können, damit überdauert es auch ein Container Update.

Zitat von: Superposchi am 22 November 2020, 14:18:23
Sorry wegen der Frage, aber lest ihr selber eure Anleitungen?
Frage nur weil du meinst du weißt nicht welches Testlight gemeint ist.
Ich richte mich da nach der Anleitung aus dem wiki unter https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect. Und da steht es ja recht eindeutig drin.  ;)

1) Wer ist "eure"? Es ist nicht meine Anleitung.
2) Ich weiß dass es ein Wiki gibt, kenne aber den Inahlt nicht auswendig. Bin Beta-Tester von Anfang an, schon bevor es ein Fhem-Modul wurde. Als ich es eingerichtet habe war der Wiki-Eintrag keine halbe Seite lang. Seitdem funktioniert es und hatte keinen Bedarf es zu lesen.
3) Dass mit Testlight ein Testdevice aus der Wiki-Anleitung gemeint ist, kann man erahnen wenn man den Inhalt kennt. Das ist aus o.g. Gründen bei mir nicht der Fall.

Zitat von: Superposchi am 22 November 2020, 14:18:23
Würde als nächstes dann text2speech und Googlecast aufspielen wollen um die Nest für Audioausgaben nutzen zu können.
Dabei gehe ich auch nach den vorhandenen Anleitungen unter https://fhem.de/commandref_DE.html#GOOGLECAST und https://github.com/dominikkarall/fhem_pythonbinding vor.
Sollte es da noch Probleme geben kannst ggf. mit angeben, dass im gassistant der Status in der App (Home Assistant) nicht gesetzt wird, für alle Module ist dominik der Entwickler, könnte zusammen hängen und ihm beim Support helfen. Wie gesagt, könnte es an Netzwerk Probleme hindeuten.

Superposchi

Du must mir schon sagen von welchem Log du redest. Es gibt ja schließlich einige im Fhem. Und auch ob du vom alten oder neuen Container sprichst.
Das rätseln nach solchen Informationen macht es so schwer für mich die gewünschten Informationen zu liefern. Für mich ist es halt nicht alles selbstverständlich.

Das mit dem Testlight sollte ein Witz sein, darum auch der Smiley. Aber anscheinend ist es echt schwer hier einen Witz zu machen den jemand versteht.

Wenn sonst kein Bedarf an weiteren Informationen besteht bzw. eine andere Rückmeldung von dir oder jemand andrem kommt, werde ich den Threat Übermorgen entsprechend als gelöst kennzeichnen.