Umstieg von Raspberry auf Proxmox/Docker/Thinkcentre

Begonnen von valvak, 18 Januar 2021, 16:31:58

Vorheriges Thema - Nächstes Thema

valvak

Hallo zusammen!

Lange her dass ich das letzte Problem hatte was für mich unlösbar war. Aber jetzt ist es wieder so weit.
Ich habe günstig (gratis :D ) einen ausgemusterten Thinkcentre bekommen und habe mich in dem Zusammenhang mit Docker und Proxmox befasst.

Aber ein paar Probleme habe ich und weiß nicht wie ich sie lösen kann, vielleicht weiß hier wer Rat...

Die Ausgangslage war ein Raspberry mit FHEM auf configDB und DBLog zusammen in MariaDB (Datenbank auf NAS).
Zusatzmodule waren Sonos, Lepresence (mit 4 Zeros zum sammeln), Collectord auf der Zentrale, iBeacon für Geofancy Webhook (auf Zentrale und den 4 Zeros), I2C für Heizungsregelung per Digital-Poti, 1Wire für Temperaturen Warmwasser und Heizung, Homebridge, Alexa, zigbee2MQTT (Xiaomi TempFeuchte), XiaomiBTLESens über einen der Zeros, HMCCU, Tasmotas über MQTT, SML-Stromzähler über OBIS, Gas und Wasserzähler über ESP32 und MQTT.
Das ganze hinter einem Nginx damit die Webhooks gesichert über einen Fail2Ban laufen. FHEM läuft auch auf HTTPS mit Authentifizierung.
Örtlich alles im Heizungskeller am LAN-Port des Routers.

Wie gesagt das ganze ist über 5-6 Jahre gewachsen und lief auch anstandslos. Die gleiche Konfiguration habe ich jetzt quasi auf dem Docker neu aufgesetzt, wobei Exoten wie der I2C für die Heizung auf dem alten Raspi weiterlaufen und Signale über MQTT bekommen, Plan ist aber den Raspi gegen einen ESP32 für Heizung und 1Wire tauschen zu wollen.

Aktuell läuft alles auch wieder soweit, aber wie gesagt ein paar Probleme bestehen noch...

- SSL Handshake Fehler bei der gleichen Config-File (Zertifikate liegen auf Certs im FHEM Container und auf dem NGINX Container)
- Sonos Sprachausgabe klappt nicht, Dateien werden aber erstellt.
- Homebridge findet keine FHEM Geräte, nehme ich die IP vom alten Raspi findet er sofort Geräte.

Ich kann auch gerne Dateien posten, weiß aktuell aber nicht was genau hilft. Ich hoffe hier kann mir wer helfen ... ich bin jetzt bereits 1 Woche mit dem SSL-Handshake zugange und weiß nicht weiter. Ich denke es ist ein Problem mit Container-Container Geschichte, weiß aber nicht wo ich ansetzen muss.

Wie gesagt, direkter Aufruf über https://10.x.x.x:8083 funktioniert. Also an NGINX vorbei kein Problem, nur halt über Port 443 keine Chance.

Danke schon mal im Vorraus

Gruß Mark

valvak

Ich poste doch mal Code, vielleicht weiß jemand direkt wo der Fehler steckt. Ich sehe gerade, Lepresenced auf dem Docker funktioniert auch noch nicht und hatte ich oben vergessen. Ist aber nicht so schlimm weil die 4 Zeros ja eigentlich als Abdeckung reichen.

version: '2.4'

services:
   
    ## GENERAL
    portainer:
        container_name: portainer
        restart: always
        expose:
            - "9000"
        ports:
            - "9000:9000"
        image: portainer/portainer:latest
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        networks:
            - fhem-network
   
    adminer:
        container_name: adminer
        image: adminer
        restart: always
        ports:
            - 8080:8080
        networks:
            - fhem-network

    nginx:
        container_name: nginx
        restart: always
        image: nginx:latest
        volumes:
            - ./nginx/config/nginx.conf:/etc/nginx/nginx.conf
            - ./nginx/config/sites-enabled/:/etc/nginx/sites-enabled/
            - ./nginx/passwd/:/etc/nginx/passwd/
            - ./nginx/data/certs/:/etc/nginx/certs/
            - ./nginx/data/log/:/var/log/nginx/
        ports:
            - 80:80
            - 443:443
            #- 8088:8088
        environment:
            TZ: Europe/Berlin
        networks:
            - fhem-network

    ## FHEM
    fhem:
        container_name: FHEM
        restart: always
        hostname: fhem
        expose:
            - 7411
            - 7420
            - 8083
            - 8084
            - 8088
            - 8091
        ports:
            - "51826:51826"
            - "7411:7411"
            - "7420:7420"
            - "8083:8083"
            - "8084:8084"
            - "8088:8088"
            - "7072:7072"
            - "8091:8091"
        image: fhem/fhem:latest
        volumes:
            - ./fhem/core/:/opt/fhem/
            - ./fhem/core/.ssh/:/opt/fhem/.ssh/:ro
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
        environment:
            FHEM_UID: 1000
            FHEM_GID: 1000
            TIMEOUT: 10
            RESTART: 1
            TELNETPORT: 7072
            TZ: Europe/Berlin
            CONFIGTYPE: configDB
        depends_on:
            - "mysql"
            - "mqtt"
            - "nginx"
        networks:
            - fhem-network

    ## SERVICES
    mysql:
        container_name: mySQL
        restart: always
        expose:
            - "3306"
            - "33060"
        ports:
            - "3306:3306"
            - "33060:33060"
        image: mysql/mysql-server:5.7
        volumes:
            - ./mysql/init.sql:/docker-entrypoint-initdb.d/fhem-init.sql
            - ./mysql/data:/var/lib/mysql
        environment:
            - MYSQL_DATABASE=DBLog
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASS}
            - MYSQL_RANDOM_ROOT_PASSWORD=true
            - MYSQL_ONETIME_PASSWORD=false
        networks:
            - fhem-network

    mysql-cron-backup:
        container_name: mySQL-Backup
        image: fradelg/mysql-cron-backup
        depends_on:
            - mysql
        volumes:
            - ./mysql/backup/:/backup/
        environment:
            - MYSQL_HOST=mySQL
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASS=${MYSQL_PASS}
            - MAX_BACKUPS=15
            - INIT_BACKUP=1
            # Every day at 03:00
            - CRON_TIME=0 3 * * *
            # Make it small
            - GZIP_LEVEL=9
        restart: always
        networks:
            - fhem-network

    sonos:
        container_name: SONOS
        restart: always
        build: sonos
        volumes:
            - ./fhem/core/:/opt/fhem/:ro
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
        network_mode: host

    sonos-smb:
        container_name: SONOS-Samba
        restart: always
        image: dperson/samba
        ports:
            - "139:139"
            - "445:445"
        environment:
            TZ: "Europe/Berlin"
        volumes:
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
        networks:
            - fhem-network
        command: -p -s "SonosSpeak;/mnt/SonosSpeak"

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

    mqtt:
        container_name: MQTT
        restart: always
        expose:
            - "1883"
            - "9001"
        ports:
            - "1883:1883"
            - "9001:9001"
        image: eclipse-mosquitto:1.6.8
        networks:
            - fhem-network
        volumes:
            - ./mqtt/config/:/mosquitto/config/
            - ./mqtt/log/:/mosquitto/log/
            - ./mqtt/data/:/mosquitto/data/

    nodered:
        container_name: NodeRED
        restart: always
        expose:
            - "1880"
        ports:
            - "1880:1880"
        image: nodered/node-red:1.0.3-2
        user: "1000:1000"
        volumes:
            - ./nodered/data/:/data/
        networks:
            - fhem-network
        depends_on:
            - "mqtt"

    zigbee2mqtt:
        container_name: zigbee2MQTT
        image: koenkk/zigbee2mqtt
        restart: always
        depends_on:
            - "mqtt"
        volumes:
            - ./zigbee2mqtt:/app/data
            - /run/udev:/run/udev:ro
        devices:
            - /dev/ttyACM0:/dev/ttyACM0
        environment:
           - TZ=Europe/Amsterdam
        networks:
            - fhem-network

    collectord:
        container_name: collectord
        hostname: collectord
        image: homeautomationstack/fhem-collectord:latest
        restart: always
        volumes:
            - ./collectord:/data/
        network_mode: host


    lepresenced:
        container_name: lepresenced
        image: homeautomationstack/fhem-lepresenced-amd64_linux
        volumes:
            - ./lepresenced:/data/
        restart: always
        network_mode: host

    tasmoadmin:
        container_name: tasmoadmin
        restart: always
        image: raymondmm/tasmoadmin
        ports:
            - "5555:80"
        volumes:
            -  ./TasmoAdmin/data:/data
        networks:
            - fhem-network

networks:
    fhem-network:
        driver: bridge


Und nochmal die Nginx-Config. Wie gesagt, hat so auch auf einer Maschine gelaufen. Durch den Docker sind aber jetzt ja 2 Maschinen.

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name localhost;

    #req-limit
    limit_req zone=one burst=3;

    # check user agent
    if ($http_user_agent ~* '(iPhone|iPod|Opera Mini|Android.*Mobile|NetFront|PSP|BlackBerry|Windows Phone)') {
    set $ua_type "@mobile";
    }

    ssl_certificate           /etc/nginx/certs/server-cert.pem;
    ssl_certificate_key       /etc/nginx/certs/server-key.pem;
#    ssl_certificate           /etc/nginx/certs/nginx.crt;
#    ssl_certificate_key       /etc/nginx/certs/nginx.key;

    ssl on;
    proxy_ssl_verify off;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_protocols  TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/fhem.access.log;


    ##FHEMWEB
    location / {

      allow   10.0.0.0/24;
      # drop rest of the world
      deny    all;
    }

    ##FHEMWEB
    location /fhem {

      allow   10.0.0.0/24;
      # drop rest of the world
      deny    all;

        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
#      proxy_set_header        Host $host;
#      proxy_set_header        X-Real-IP $remote_addr;
#      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
#      proxy_set_header        X-Forwarded-Proto $scheme;
#      proxy_http_version      1.1;


      # Gehe zu FHEMWEB wenn kein mobiler Browser
      if ($ua_type != "@mobile"){
          proxy_pass          https://fhem:8083;
        # proxy_pass          https://rasphome.fritz.box:8083;
      }

      # DatenGrab API
      if ($remote_addr = 10.0.0.2 ){
          proxy_pass          https://fhem:8091;
          #break;
      }


      # Gehe zu FHEMWEB smallscreen wenn mobiler Browser
      if ($ua_type = "@mobile"){
          proxy_pass          https://fhem:8084;
# proxy_pass          https://rasphome.fritz.box:8083;
      }

      proxy_read_timeout  90;
      #proxy_read_timeout  20736000;
      #proxy_buffering     off;

      # User Sickboy's Erweiterung für verschlüsselte Websocket-Kommunikation (siehe Diskussionsseite)
      # Für normale Benutzer derzeit kommentiert, vom Autor Andremotz noch bisher ungetestet
      #  ... daher derzeit auskommentiert
      # Wird für 'longpoll' benötigt (z.B. bei FTUI)
      #set $my_http_upgrade "";
      #set $my_connection "Connection";

      #if ($http_upgrade = "websocket") {
      #  set $my_http_upgrade $http_upgrade;
      #  set $my_connection "upgrade";
      #}
     
      #proxy_set_header Upgrade $my_http_upgrade;
      #proxy_set_header Connection $my_connection;

      auth_basic "Restricted Content";
      auth_basic_user_file /etc/nginx/passwd/.fhem_htpasswd;

      # proxy_redirect      http://localhost:8083 https://localhost;
    }


##ALEXA-FHEM
      location /alexa {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_http_version      1.1;

      proxy_read_timeout  90;
 
      auth_basic "Restricted Content";
      auth_basic_user_file /etc/nginx/passwd/.alexa_htpasswd;

      proxy_pass          https://fhem:3000;
    }


##GEOFENCY
location /geo {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_http_version      1.1;

      proxy_read_timeout  90;
 
      auth_basic "Restricted Content";
      auth_basic_user_file /etc/nginx/passwd/.geo_htpasswd;

      proxy_pass          https://fhem:8088/webhook/geo;
    }
  }

Wernieman

Hast Du FHEM wirklich mit https auf Port 8083?

Wenn Du in den Container nginx gehst, kannst Du den Hostname "fhem" auflösen?
- 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

Otto123

#3
Eine Idee zu Sonos Samba - meines Wissens immer noch  SMB1 und dieser Container unterstützt explizit kein SMB1 https://github.com/dperson/samba
Was erhoffst Du Dir von den ganzen Ports im FHEM Container? Du meinst das normale Sonos Modul läuft dort? Ich denke das wird schwierig mit UPNP im Container. Da würde ich umsteigen auf sonos2mqtt.

Was ist das für ein Container?
Zitatsonos:
        container_name: SONOS
        restart: always
        build: sonos
        volumes:
            - ./fhem/core/:/opt/fhem/:ro
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
        network_mode: host
Sieht für mich aus als versuchst Du jetzt mehrere Container auf die gleichen Ports loszulassen. Das muss schiefgehen?

Ich habe keine Ahnung von Homebridge, habe es aber für einen Kumpel eingerichtet ;) (lief so simpel das ich kaum eine Notiz dazu gemacht habe - homebridge user: admin admin, Homebridge Einrichtung steht im Wiki) in meiner Config steht da aber
    volumes:
      - ./volumes/homebridge:/homebridge
Ich habe auch kaum Ahnung von Docker, aber die Location des Volumes im Container ist doch vom Container vorgegeben?

ich habe nur laut mitgedacht, kein sein das ist alles nicht relevant. ;)

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

valvak

Hallo und erstmal danke für die Antworten.

Also https ist definitiv auf Port 8083, war wie gesagt so bereits auf dem raspberry aktiv. SSL und Authentifizierung funktioniert im Heimnetzwerk auch ohne Probleme, nur eben nicht über Port 443 der irgendwann wieder von der Fritzbox kommen soll.

Die Ports im Fhem Container werden so benötigt 😅
8083 ist meine normale Webinstanz, 8088 die ,,abgespeckte" für Webhook. 8091 die API von der Synology Surveillance Station. 7411 und 7420 die eingehenden von der CCU3 an HMCCU. Oder welche doppelten Ports meinst du Otto?

Sonos läuft wie Loredo es im Docker Thread beschrieben hat in einem extra Container. Die Speaker sind auch ohne Probleme zu steuern. Nur eben ohne Sprachausgabe.

Honebridge war auch eigentlich relativ simpel. Wie gesagt funktioniert der Container eigentlich auch... zumindest wenn ich die Fhem Instanz auf dem externen raspberry anspreche. Nur Fhem im Container mag nicht mit dem Homebridge Container sprechen 🤷🏼‍♂️

Das die gleiche Konfiguration ja eigentlich auf einem System läuft muss es m.M. nach wirklich ein Docker Problem sein.

Aber lepresenced hab ich mittlerweile am laufen...lag am Privileged true

Grüße Mark

Otto123

ok jetzt verstanden ;) mit den ganzen Ports

Dann wird es wohl am SMB1 Thema liegen mit der Sprachausgabe?

Wenn Du eine NAS hast - warum dann der Terz mit dem Samba Container? Machst einen mount von einem NAS Share auf /mnt/SonosSpeak/ ?
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

valvak

Lief vorher so :D
Nene das läuft schon alles auf dem Raspberry bzw. dann in Zukunft auf dem Thinkcentre.

Meine Konfiguration ist schon was älter, bin damals nach dem Sonos Wiki gegangen und da wurde das so benötigt.
Das mit deinem Tip habe ich gerade erst am PC gelsen und schaue gerade ob es daran liegt.

Hatt ich gerade am Handy erst überlesen

Wernieman

ZitatHonebridge war auch eigentlich relativ simpel. Wie gesagt funktioniert der Container eigentlich auch... zumindest wenn ich die Fhem Instanz auf dem externen raspberry anspreche. Nur Fhem im Container mag nicht mit dem Homebridge Container sprechen 🤷🏼‍♂️
Schelle Frage: hast Du IPv6 im Docker aktiviert? Dann deaktiviere es mal, reboot des Docker-Demons und dann testen ....
- 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

valvak

Das kann ich so eigentlich garnicht beantworten. Hab bisher alles mit den Standrad-IP-Adressen gemacht und mich noch null mit IPv6 befasst.

Was ist dein Gedanke dahinter?

Otto123

#9
Hier war auch noch was zum Thema SMB und Sonos. Wie gesagt: mit dem Samba Container wird es auch nicht einfach gehen.
Wenn man kein SMB1 fähiges Share sowieso im Netz hat, wird es wohl am einfachsten sein, das Samba Share einfach auf dem Docker Host zu machen. Ich weiß schon, nicht ganz konsequent, aber warum mehr verbiegen als unbedingt nötig. Der Vorteil der Container geht doch den Bach runter wenn man mehrere Container im Host Modus laufen haben muss wegen jeweils einem kleinen Dienst.
Auch ein extra Container wegen EINEM Bluetooth Script erschließt sich mir noch noch nicht.

Bitte nicht falsch verstehen: ich will nichts kritisieren, sondern nur laut mitdenken. Ich bin gerade bei dem gleichen Thema! ;)

Zusatz: Hier war das Thema nochmal zum Samba Server https://forum.fhem.de/index.php/topic,10033.msg1070021.html#msg1070021 ich bin jetzt wieder verunsichert zum Thema Sonos und SMB Version. Werde das aktuell nochmal testen!
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

ZitatWas ist dein Gedanke dahinter?
Habe vor ?2? Wochen das Problem gehabt beim Aufsetzen eines pihole-Containers der DNS-Server von anderen Containern nicht erreichbar war. Allerdings befanden die sich in verschiedenen Docker-Netzwerken.

Bzw: Gibt es einen Grund, das Du alles in EINER Docker-Compose abfackelst?

Zitatwegen EINEM Bluetooth Script erschließt sich mir noch noch nicht.
Es ist doch mehr als nur ein Script? Also ein dauerlaufendes kann man, wenn es Spezialsoftware hat, sollte (muß) man.

Nur wenn die Kommunikation zwischen den Containern immer schwieriger wird, sollte man sich überlegen, in einem. Auch bei ein von FHEM getrickertes Script .... kenne aber das Bluetooth Script nicht.

Noch etwas:
Was mir aber noch auffällt, auch Ports, die Du nur im Docker verwendest, giebts Du komplett raus. Innerhalb des Docker-Netzwerkes ist aber der Zugriff über Docker-IP (Docker-Name) immer möglich. Damit verspielst Du deutlich die Vorteile der Abschottung.

Nur mal als Erläuterung:
Auf einem der beruflichen Docker-Server läuft ein Spezialystem mit Dtenbank, Redit, memcache etc. und von außen siehst Du nur den Vorgeschalteten nginx-proxy. Also nicht mal der http/https Port ist exposed, da der Reverse-Proxy (Art Firewall) vom Host auch ohne exposed auf den Container zugreifen kann. (Wir haben Ihn mit Absicht nicht in einen Container gesteckt, die Begründung ist etwas tiefer)
- 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

Otto123

@Werner ja das Bluetooth (Perl) Script (es gäbe drei Varianten:presenced, lepresenced, collectord) läuft als Dienst, aber das ist schon alles. Es braucht aber Network im Hostmode - im Docker Netzwerk gibt es kein Bluetooth. Ich meine: man lässt das Script auf dem Host laufen und gut? Was bringt da der Container?
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

Dem kann ich nur Zustimmen!

Selbst hier bei der migration meines "Home-Servers" zu Docker werde ich Hardwarennahe Dienste (z.B. auch mpd,lirc) nicht in Docker sondern auf dem System laufen lassen.
(Wobei ich mir mit lirc noch nicht sicher bin)
- 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

valvak

Meine Idee hinter dem ganzen ist eigentlich nur ein Backup-Gedanke.
Die Tatsache des günstigen Upgrades der Hardware ist eigentlich nur der Auslöser gewesen.

Ich hab lange den Raspberry gehabt der insgesamt im Umfang gewachsen ist. Anfangs noch 1:1 Kopien der SD-Karte, später dann tempFS und rsync auf NAS (die Grundinstallation hat nie schreibend auf die Karte zugegriffen). In der Anfangszeit hatte ich viele SD Karten die sich aufgehangen haben, aber nur einmal musste ich alles neu aufsetzen.

Da ich Loredos Idee mit dem Backup über proxmox und Github sehr interessant finde, und den NAS als Dauerbetrieb eigentlich weg haben möchte, wollte ich soviel wie möglich direkt im docker lauffähig haben.

Einfach weil ich in 2-3 Jahren nicht mehr weiß wie genau ich Dienst XY konfiguriert habe. Quasi ein ,,Plug-and-play" System.

Sonos läuft jetzt übrigens, dein verlinkter Thread war der entscheidende Tipp @Otto. IPv6 habe ich noch nicht geschaut, vielleicht habe ich am WE etwas Zeit.

Grüße
Mark

Wernieman

Hinweis: Ich meinte KEIN Ipv6 in Docker aufsetzen. Es geht zwar auch (sollte gehen), wird abr dann anders konfiguriert. Ohne ist einfacher
- 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

valvak

Oh, jo falsch gelesen.

Ich denke es ist deaktiviert. Ich habe es zumindest nicht bewusst aktiviert. Im Portainer sind jedenfalls keine Hinweise auf IPv6

   Name    Stack   Driver   Attachable   IPAM Driver   IPV4 IPAM Subnet   IPV4 IPAM Gateway   IPV6 IPAM Subnet   IPV6 IPAM
   bridge         -           bridge   false           default           172.17.0.0/16           172.17.0.1            -                            -   
   host          -           host           false           default             -                           -                            -                            -   
   none           -           null           false           default             -                           -                            -                            -   

Wernieman

Gucvke einfach mal, ob in /etc/docker/daemon.json ipv6 gesetzt wurde
grep -i ipv6 /etc/docker/daemon.json
- 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

valvak

Ne, kein ipv6 vorhanden. Also eigentlich noch nicht mal die besagte JSON 😅

Wernieman

Dann hast Du dieses "Problem" nicht ...  ;)

Habe aber aktuell den Überblick verloren, kannst Du bitte  mal Zusammenfassen was jetzt funktioniert und was nicht?
- 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

Otto123

Zitat von: valvak am 22 Januar 2021, 15:11:42
Sonos läuft jetzt übrigens, dein verlinkter Thread war der entscheidende Tipp @Otto.
Hallo Mark,

kannst Du noch sagen wie Du es jetzt gelöst hast? Das Problem war SMBv1 ?

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

valvak

Moin zusammen

Jo also das Sonos bzw. Samba lag wirklich an den SMB1. Allerdings hatte ich meine Probleme die Änderung vernünftig dort rein zu bekommen. Der Container hatte die Config nach jedem Neustart umgeschrieben. Ein RO in der Docker-Compose hat aber dann geholfen. Danke nochmal Otto. Und auch an dieser Stelle nochmal Lob für den Blog :)
Sonos2MQTT sieht interessant aus, hätte an dieser Stelle allerdings das gleiche Problem gehabt. Als ich fast aufgegeben habe hatte ich mich eingelesen und dort wird ja für meinen Anwendungsfall auch Samba benötigt. (z.B. als Wecker per TTS oder als Ansage für z.B. Waschmaschine)

    sonos:
        container_name: SONOS
        restart: always
        build: sonos
        volumes:
            - ./fhem/core/:/opt/fhem/:ro
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
        network_mode: host

    sonos-smb:
        container_name: SONOS-Samba
        restart: always
        image: dperson/samba
        ports:
             - "139:139"
             - "445:445"
        environment:
            TZ: "Europe/Berlin"
        volumes:
            - ./sonos/SonosSpeak/:/mnt/SonosSpeak/
            - ./samba/smb.conf:/etc/samba/smb.conf:ro
        networks:
            - fhem-network
        command: -p -s "SonosSpeak;/mnt/SonosSpeak"


Aktuell nicht funktionell sind:

- NGINX (SSL Handshake trotz gleiche Konfiguration)
2021/01/24 09:33:17 [error] 22#22: *21 peer closed connection in SSL handshake (104: Connection reset by peer) while SSL handshaking to upstream, client: 10.0.0.11,  server: localhost, request: "GET /fhem HTTP/1.1", upstream: "https://172.18.0.5:8083/fhem", host: "10.0.0.9"

- Dadurch auch Geofancy (https://fhem/geo wird nicht an https://172.18.0.5:8088/webhook/geo weitergeleitet)

- Homebridge (suche ich Geräte in der alten FHEM-Konfiguration auf dem Raspberry auf 10.0.0.8 findet er sofort Geräte. Auf einem Container im selben Host wie Homebridge selbst nicht. Also außen ja, innen nein)


Was ich halt nicht verstehe ist dass es vorher funktioniert hat und nur durch Docker nicht funktioniert. Nginx löst fhem ja auch richtig zu der IP 172.18.0.5 auf. Das ist die IP vom Container. Nur was genau der Fehler SSL-Handshake mir sagt verstehe ich halt nicht.

Die Authentifizierung von Nginx wird ebenfalls abgefragt und das Passwort auch gecheckt bzw. abgelehnt wenn es nicht stimmt. (htpasswd)
Nur an der Weiterleitung scheiterts. Wenn ich den Fehler finde sind m.M. nach alle Probleme gelöst da Homebridge auch unter SSL lief.

P.S. SSL ausschalten hat zur Folge dass garnix mehr geht :D irgendwie sucht er dann auf dem localhost vom nginx-Container nach FHEM bzw. nach der Webinstanz

Gruß
Mark

valvak

Nochmal als kleiner Nachtrag:

[1/24/2021, 9:53:36 AM] [FHEM] Fetching FHEM devices...
starting longpoll: https://0.0.0.0:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1611478416242
longpoll error: Error: Client network socket disconnected before secure TLS connection was established, retry in: 10000msec


Das ist der Grund wieso ich denke, das alles ein Problem ist. Homebridge arbeitet, bzw. muss ja als Host arbeiten. Also kann ich hier nicht mit fhem auf die interne Docker-IP linken. 0.0.0.0:8083 wäre ja trotzdem der FHEM Container über Host:8083.

Aber TLS bzw. SSL macht nen Strich durch die Rechnung

Otto123

Zitat von: valvak am 24 Januar 2021, 09:41:32
Sonos2MQTT sieht interessant aus, hätte an dieser Stelle allerdings das gleiche Problem gehabt. Als ich fast aufgegeben habe hatte ich mich eingelesen und dort wird ja für meinen Anwendungsfall auch Samba benötigt. (z.B. als Wecker per TTS oder als Ansage für z.B. Waschmaschine)
Hallo Mark,

da hast Du irgendwie die falschen Stellen gelesen :) der lange Thread ist nach einem guten dreiviertel Jahr nicht mehr zum durcharbeiten geeignet. Ich habe aber versucht alle wesentlichen Stände ins Wiki zu extrahieren. 
https://wiki.fhem.de/wiki/Sonos2mqtt#Speak_Befehl
Die Sprachausgabe habe ich dank dem node sonos2mqtt Modul umgebaut auf HTTP - nix mehr Samba ;) Das erledigt FHEMWEB mit.

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

valvak

So ich kann mitteilen dass jetzt wieder alles funktioniert.

Der SSL-Handshake hat mich da etwas in die falsche Richtung getrieben.
Die Tatsache dass die Docker Umgebung eine ganz andere IP-Range hat war eigentlich der Fehler. Aber sowas in der Art hatte ich ja bereits vermutet.

Internals:
   BYTES_READ 492789
   BYTES_WRITTEN 14783311
   CONNECTS   910
   CSRFTOKEN  csrf_190997871642895
   DEF        8083 global
   FD         5
   FUUID      5c44804f-f33f-55ff-2ccc-f77f472e4001feeb
   NAME       WEB
   NR         4
   NTFY_ORDER 50-WEB
   PORT       8083
   SSL        1
   STATE      Initialized
   TYPE       FHEMWEB
   READINGS:
     2021-01-24 17:15:09   state           Initialized
Attributes:
   HTTPS      1
   JavaScripts codemirror/fhem_codemirror.js
   alias      WEB
   allowfrom  ^10\.0\.0\.([1-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-4]))$|127.0.0.1|^172\.18\.0\.([1-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-4]))$
   longpoll   1
   menuEntries restart,cmd=shutdown+restart,update,cmd=update,updatecheck,cmd=update+check,reloadMyUtils,cmd=reload+99_myUtils.pm
   room       99a_Data
   sslVersion TLSv12:!SSLv3
   styleData  {
"f18": {
  "Pinned.menu": "true",
  "hidePin": "true",
  "cols.bg": "444444",
  "cols.fg": "CCCCCC",
  "cols.link": "3dff1f",
  "cols.evenrow": "333333",
  "cols.oddrow": "111111",
  "cols.header": "222222",
  "cols.menu": "111111",
  "cols.sel": "333333",
  "cols.inpBack": "444444",
  "savePinChanges": true
}
}
   stylesheetPrefix dark
   verbose    0


Meine IP-Range Zuhause liegt im 10.x.x.x Bereich...allowed from der Docker mit angeben und siehe da....jetzt darf auch ein Homebridge auf FHEM zugreifen.

Blöder Fehler..aber naja :D