Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

antonwinden

bei mir lauter das:
    devices:
       - /dev/bus/usb/001/002

ganz ohne :....
gruß sirdus
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

debu

versuche ich gleich mal. Danke!

Ganz vergessen zu erwähnen wie der HMLAN definiert ist: 127.0.0.1:1000
Muss ich die ip evtl. anpassen sobald fhem aus docker heraus betrieben wird? host.docker.internal:1000?

Beste Gruesse,
DeBu

Otto123

#1367
Hallo Debu,

konsequenterweise würde ich dafür einen eigenen docker container nehmen. Gegoogelt und gefunden:
https://github.com/djusHa/hmland-docker

Oder alternativ das Ding nicht im fhem Container betreiben sondern "normal" auf dem Host.
https://wiki.fhem.de/wiki/HM-CFG-USB_USB_Konfigurations-Adapter

Und natürlich ist dann die IP Adresse für FHEM dann nicht mehr 127.0.0.1 - das passt nur wenn alles auf dem gleichen Host läuft.

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

Wernieman

Sehe bitte docker nicht wie eine VM ... das ist es erstes technisch nicht und zweitens widerspricht es der Idee von Microsservice und drittens, machst Du dir das leben nur schwer.

Wie Otto schrieb, packe HMLAN (wirklich HMLAN??) in einen eigenen Container. Jeder Serverdienst sollte (muß) seinen eigenen Container bekommen. Nur so hast Du den Vorteil, das Du einzelne Dienste einzeln updaten kannst. Und ja, nach dem Update ist vor dem nächsten Update
- 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

debu

Hi zusammen,

vielen Dank! Habe es über einen seperaten docker gelöst wie von Otto vorgeschlagen. Mir war nicht mehr bewusst dass hmland als eigener service eingerichtet werden muss. Das kommt davon wenn das zeug immer problemlos funktioniert und man es nur alle 3-4 Jahre anfasst ;-)

Meine docker-compose schaut jetzt so aus:

version: '3.8'

networks:
  fhem-net:
    driver: bridge
    name: fhem-net
services:
  hmland:
    container_name: hmland
    restart: unless-stopped
    image: hmland
    network_mode: "host"
    expose:
      - "1000"
    privileged: true
    build: /hmland

  fhem:
    image: fhem/fhem:latest
    container_name: fhem
    restart: unless-stopped
    networks:
      - fhem-net
    ports:
      - "8083:8083"
      - "1883:1883"
      - "7072:7072"
    volumes:
      - "/fhem/:/opt/fhem/"
    environment:
      FHEM_UID: 6061
      FHEM_GID: 6061
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Berlin
    depends_on:
      - "hmland"

  zigbee2mqtt:
    container_name: zigbee2mqtt
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    networks:
      - fhem-net
    volumes:
      - "/zigbee2mqtt/data:/app/data"
      - "/run/udev:/run/udev:ro"
    ports:
      - "8080:8080"
    environment:
      - TZ=Europe/Berlin
    devices:
      - /dev/ttyACM0:/dev/ttyACM0
    depends_on:
      - "fhem"

  npresenced:
    container_name: npresenced
    image: npresenced
    restart: unless-stopped
    expose:
      - "5333"
    volumes:
      - "/npresenced:/npresenced"
    build: /npresenced
    privileged: true
    network_mode: "host"


Danke und beste Gruesse,
DeBu

maddhin

Hi,

ich wollte heute meine FHEM Installation um Alexa erweitern, scheitere aber an einem
Zitatstopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
als state...

Hat jemand eine Idee, was ich falsch mache? Bei mir läft Fhem auf dem RPI, hier meine Docker-compose.yml:
version: '2'

services:
    ## GENERAL
    portainer:
        restart: always
        image: portainer/portainer:latest
        command: -H unix:///var/run/docker.sock --no-auth
        ports:
            - "9000:9000"
        environment:
            - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/portainer.crt
            - REGISTRY_HTTP_TLS_KEY=/certs/portainer.key
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - portainer_data:/data
            - /home/pirate/certs/portainer.key:/certs/portainer.key
            - /home/pirate/certs/portainer.crt:/certs/portainer.crt
        networks:
            - fhem-network
    ##FHEM
    fhem:
        image: fhem/fhem:latest
        restart: always
        ports:
            - "8083:8083"
            - "7072:7072"
        volumes:
            - ./fhem/core/:/opt/fhem/
        networks:
            - fhem-network
        #devices:
        #    - "/dev/ttyUSB0:/dev/ttyUSB0"
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7072
            TZ: Europe/Berlin
        depends_on:
            - "mysql"
            - "mqtt"

    #habridge:
    #    restart: always
    #    image: habridge/ha-bridge-raspberrypi3
    #    volumes:
    #        - ./habridge/data/:/ha-bridge/data
    #        - /etc/localtime:/etc/localtime:ro
    #       - /etc/timezone:/etc/timezone:ro
    #    network_mode: host

    homebridge:
        restart: always
        image: oznu/homebridge:raspberry-pi
        volumes:
            - ./homebridge:/homebridge
        environment:
            - TZ=Europe/Berlin
            - PGID=1000
            - PUID=1000
            - HOMEBRIDGE_CONFIG_UI=1
            - HOMEBRIDGE_CONFIG_UI_PORT=8081
        network_mode: host
        depends_on:
            - "fhem"

    mysql:
        restart: always
        expose:
            - "3306"
            - "33060"
        ports:
            - "3306:3306"
            - "33060:33060"
        image: hypriot/rpi-mysql
        volumes:
            - ./mysql/init.sql:/docker-entrypoint-initdb.d/fhem-init.sql
            - ./mysql/data:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=XXX
            - MYSQL_DATABASE=fhem
            - MYSQL_USER=fhemuser
            - MYSQL_PASSWORD=XXX
        networks:
            - fhem-network

    mqtt:
        restart: always
        expose:
            - "1883"
            - "9001"
        ports:
            - "1883:1883"
            - "9001:9001"
        image: pascaldevink/rpi-mosquitto
        networks:
            - fhem-network
        volumes:
            - ./mqtt/config/:/mqtt/config/
            - ./mqtt/log/:/mqtt/log/
            - ./mqtt/data/:/mqtt/data/

    nodered:
        restart: always
        expose:
            - "1880"
        ports:
            - "1880:1880"
        image: elzekool/rpi-nodered
        volumes:
            - ./nodered/data/:/root/.node-red/
        networks:
            - fhem-network
        depends_on:
            - "mqtt"

    alexa-fhem:
        #image: fhem/alexa-fhem:latest
        image: ghcr.io/fhem/fhem/alexa-fhem:latest
        restart: always
        networks:
            - fhem-network
        ports:
            - "3000:3000"
        volumes:
            - ./alexa-fhem/:/alexa-fhem/
        environment:
           ALEXAFHEM_UID: 1000 #6062
           ALEXAFHEM_GID: 1000 #6062
           TZ: Europe/Berlin


volumes:
    portainer_data:

networks:
    fhem-network:
        driver: bridge


Lieben Dank im Voraus!

Wernieman

Siehe Doku im ersten Post:
z.B.
Zitat/pre-init.sh - Wird beim allerersten Start des Containers noch vor der FHEM Installation ausgeführt.

Allerdings gibt es auch eine Möglichkeit, npm Module automatisch installieren zu lassen, nur kenne ich mich mit diesem Container nicht gut aus ...
- 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

passibe

#1372
Zitat von: maddhin am 27 Dezember 2021, 20:49:10
hier meine Docker-compose.yml:

Dort beim fhem-container folgende environment-variable einfügen:


[...]
        environment:
            NPM_PKGS: "alexa-fhem"
[...]


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


Edit: Achso, ups, sorry. Habe erst jetzt gesehen, dass du alexa-fhem als eigenen container hast. Den brauchst du, wenn du es über "NPM_PGKS" machst, nicht mehr. Wenn du alexa-fhem unbedingt in einem eigenen Container haben willst bräuchten wir vermutlich (mindestens) ein list deines alexa-devices.

Ist aber mE nicht notwendig, dass das in einem eigenen Container läuft, einfach als package installieren und gut ist.

maddhin

Zitat von: passibe am 28 Dezember 2021, 13:53:08
Ist aber mE nicht notwendig, dass das in einem eigenen Container läuft, einfach als package installieren und gut ist.

Ok, eigentlich sollte das mit dem npm-package einfacher sein. Dann muss ich so auch Node installieren, oder? Oder ist das als Voraussetzung bei alexa-fhem schon hinterlegt?

Ich kenne mich mit Docker nicht gut aus - kennt jemand einen Vorteil, Alexa in einem eigenen Container laufen zu lassen?

passibe


maddhin

komisch - die Fehlermeldung ist die gleich... Nachdem ich den Alexa-Container installiert habe und via environment npm etc Alexa installiert haben, ist der State ist immer noch "stopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'."

Oh, Mann, jemand noch eine gute Idee?

maddhin

Hi,

ich wollte mal prüfen, ob das Alexa-Fhem npm package installiert ist und habe mich in den Fhem-Container eingeloggt. Es scheint, dass weder npm noch node bei mir installiert sind!! Ein node -v oder npm -v geben nur "bash: npm: command not found" zurück.

Als ich das Alexa package in der docker-compose.yml angegeben habe, wurde der Container neu erstellt bzw. geändert (keine Fehlermeldung!)

Versteht hier jemand, was passiert? Hier nochmal meine docker-compose.yml.

version: '2'

services:
    ## GENERAL
    portainer:
        restart: always
        image: portainer/portainer:latest
        command: -H unix:///var/run/docker.sock --no-auth
        ports:
            - "9000:9000"
        environment:
            - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/portainer.crt
            - REGISTRY_HTTP_TLS_KEY=/certs/portainer.key
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - portainer_data:/data
            - /home/pirate/certs/portainer.key:/certs/portainer.key
            - /home/pirate/certs/portainer.crt:/certs/portainer.crt
        networks:
            - fhem-network
   
##FHEM
    fhem:
        image: fhem/fhem:latest
        restart: always
        ports:
            - "8083:8083"
            - "7072:7072"
        volumes:
            - ./fhem/core/:/opt/fhem/
        networks:
            - fhem-network
        #devices:
        #    - "/dev/ttyUSB0:/dev/ttyUSB0"
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7072
            TZ: Europe/Berlin
            NPM_PKGS: "alexa-fhem"
        depends_on:
            - "mysql"
            - "mqtt"

    #habridge:
    #    restart: always
    #    image: habridge/ha-bridge-raspberrypi3
    #    volumes:
    #        - ./habridge/data/:/ha-bridge/data
    #        - /etc/localtime:/etc/localtime:ro
    #       - /etc/timezone:/etc/timezone:ro
    #    network_mode: host

    homebridge:
        restart: always
        image: oznu/homebridge:raspberry-pi
        volumes:
            - ./homebridge:/homebridge
        environment:
            - TZ=Europe/Berlin
            - PGID=1000
            - PUID=1000
            - HOMEBRIDGE_CONFIG_UI=1
            - HOMEBRIDGE_CONFIG_UI_PORT=8081
        network_mode: host
        depends_on:
            - "fhem"

    mysql:
        restart: always
        expose:
            - "3306"
            - "33060"
        ports:
            - "3306:3306"
            - "33060:33060"
        image: hypriot/rpi-mysql
        volumes:
            - ./mysql/init.sql:/docker-entrypoint-initdb.d/fhem-init.sql
            - ./mysql/data:/var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=xxx
            - MYSQL_DATABASE=fhem
            - MYSQL_USER=fhemuser
            - MYSQL_PASSWORD=xxx
        networks:
            - fhem-network

    mqtt:
        restart: always
        expose:
            - "1883"
            - "9001"
        ports:
            - "1883:1883"
            - "9001:9001"
        image: pascaldevink/rpi-mosquitto
        networks:
            - fhem-network
        volumes:
            - ./mqtt/config/:/mqtt/config/
            - ./mqtt/log/:/mqtt/log/
            - ./mqtt/data/:/mqtt/data/

    nodered:
        restart: always
        expose:
            - "1880"
        ports:
            - "1880:1880"
        image: elzekool/rpi-nodered
        volumes:
            - ./nodered/data/:/root/.node-red/
        networks:
            - fhem-network
        depends_on:
            - "mqtt"

    #alexa-fhem:
    #    #image: fhem/alexa-fhem:latest
    #    image: ghcr.io/fhem/fhem/alexa-fhem:latest
    #    restart: always
    #    networks:
    #        - fhem-network
    #    ports:
    #        - "3000:3000"
    #    volumes:
    #        - ./alexa-fhem/:/alexa-fhem/
    #    environment:
    #       ALEXAFHEM_UID: 1000 #6062
    #       ALEXAFHEM_GID: 1000 #6062
    #       TZ: Europe/Berlin

    duplicati:
         image: duplicati/duplicati:latest
         #container_name: duplicati
         hostname: duplicati
         restart: always
         # Recommendation: Duplicati needs root user to get access to all files
         #user: "ROOTPUID:1000:ROOTPGID:1000"
         network_mode: bridge
         ports:
             - "8200:8200"
         volumes:
             - ./duplicati_data:/data:rw
             - /docker/backups:/backups:rw
             - ./:/source:ro
         environment:
             - TZ=Europe/Berlin


volumes:
    portainer_data:

networks:
    fhem-network:
        driver: bridge


Mache ich was falsch? 

kadettilac89

Zitat von: maddhin am 29 Dezember 2021, 15:25:55

Mache ich was falsch?

keine Ahnung. Alexa-fhem wird im docker container schon eingebaut. Ist im Dockerfile enthalten. Nimm die Zeile NPM erstmal wieder raus.

Teste mal das Image von Cooltux .. s. u. Wenn das auch nicht geht, mache ein docker-compose file nur mit fhem und lass alles andere erstmal raus, keine eigene Netzwerke, keinerlei Abhängigkeit zu was anderem.


image: ghcr.io/fhem/fhem-experimental:dev


Ansonsten mehr Input. Auf welcher Hardware läuft Docker? Ist die Weboberfläche erreichbar?

Otto123

Zitat von: maddhin am 29 Dezember 2021, 15:25:55
ich wollte mal prüfen, ob das Alexa-Fhem npm package installiert ist und habe mich in den Fhem-Container eingeloggt. Es scheint, dass weder npm noch node bei mir installiert sind!! Ein node -v oder npm -v geben nur "bash: npm: command not found" zurück.
Das Original Docker Basis Image ist "kaputt", steht auf den vielen Seiten zuvor auch mehrfach beschrieben. Wenn man da npm aktualisiert ist es irgendwann weg. Entweder zerstörst Du den Container, und machst ihn neu und dann KEIN npm Update, oder Du nimmst wie kadettilac89 schrieb gleich das Image von cooltux ;)

Viel Erfolg
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

kjmEjfu

Hat eigentlich irgendwer FHEM in einem Docker Swarm laufen (inkl. Multicast)? Wenn ja, dann wäre ich da sehr dran interessiert.
Migriere derzeit zu Home Assistant