Seite 1 von 1

TLS und lockaler DNS

Verfasst: 5. Mär 2025 10:12
von Oekel
Moin,

ich habe mir bei duckDNS eine Domain besort und einen lokalen dns-Server im Docker aufgesetzt (Mit *.duckDNS wildcard) damit ich die nervigen Warnungen im Browser loswerde.

Nun bin dabei die compose vom ganzen smartHome mittels traefik labels zu ergängen, um via subdomains dieses Ziel zu erreichen.
Bei etlichen wie zwave2mqtt, zigbee2mqtt, unifi, frontail bekomme ich es nach diesem Schema hin. Nur ObenHab selber will sich nicht drauf einlassen.

Da ich mir schon die Blöße gegeben habe die KI zu befragen und zu keinem Ergebnis gekommen bin, hoffe ich dass ihr vielleicht mal etwas dazu anmerken könnt?

Code: Alles auswählen

version: '3.8'

services:
  openhab:
    image: "openhab/openhab:4.3.2"
    container_name: openhab-x
    restart: unless-stopped
    labels:
      - "docker-volume-backup.stop-during-backup=openhab-x-service"
      - traefik.enable=true
      #- traefik.http.routers.openhab-x-http.rule=Host(`openhab.hb.x.duckdns.org`)
      #- traefik.http.routers.openhab-x-http.entrypoints=web
      #- traefik.http.services.openhab-x-http.loadbalancer.server.port=8080
      - traefik.http.routers.openhab-x-https.rule=Host(`openhab.hb.x.duckdns.org`)
      - traefik.http.routers.openhab-x-https.tls=true
      - traefik.http.routers.openhab-x-https.tls.certresolver=duckdns
      - traefik.http.routers.openhab-x-https.entrypoints=websecure
      - traefik.http.services.openhab-x-https.loadbalancer.server.port=8443
      - traefik.http.services.openhab-x-https.loadbalancer.server.scheme=https
      - traefik.http.routers.openhab-x-http.middlewares=redirect-to-https
      #- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https

    ports:
    #  - "8081:8080"
      - "8444:8443"
    #  - "9004:9001"
    #network_mode: host
    networks:
      vlan50:
        ipv4_address: 192.168.5.201
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "openhab_addons:/openhab/addons"
      - "openhab_conf:/openhab/conf"
      - "openhab_userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"

  frontail:
    image: welteki/frontail-openhab:latest
    container_name: frontail-openhab-x
    labels:
      - traefik.enable=true
      - traefik.http.routers.frontail-x.rule=Host(`log.openhab.hb.x.duckdns.org`)
      - traefik.http.routers.frontail-x.tls=true
      - traefik.http.routers.frontail-x.tls.certresolver=duckdns
      - traefik.http.routers.frontail-x.entrypoints=websecure
      - traefik.http.services.frontail-x.loadbalancer.server.port=9001
    volumes:
      - "openhab_userdata:/openhab/userdata:ro"
    #ports:
    #  - 9001:9001
    networks:
      vlan50:
        ipv4_address: 192.168.5.209

  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto-x
    labels:
      - "docker-volume-backup.stop-during-backup=openhab-x-service"
      - traefik.enable=true
      - traefik.http.routers.mosquitto-x.rule=Host(`mqtt.hb.x.duckdns.org`)
      - traefik.http.routers.mosquitto-x.entrypoints=web
      - traefik.http.services.mosquitto-x.loadbalancer.server.port=1883
    volumes:
      - /var/lib/docker/custom/mosquitto/config:/mosquitto/config
      - mosquitto_data:/mosquitto/data
      - mosquitto_log:/mosquitto/log
    ports:
      - 1883:1883
      - 9001:9001
    networks:
      vlan50:
        ipv4_address: 192.168.5.202

  zwave-js-ui:
    container_name: zwave-js-ui-x
    image: zwavejs/zwave-js-ui:9.25.0
    restart: unless-stopped
    labels:
      - "docker-volume-backup.stop-during-backup=zwave-js-ui-x-service"
      - traefik.enable=true
      - traefik.http.routers.zwave-x.rule=Host(`zwave.mqtt.hb.x.duckdns.org`)
      - traefik.http.routers.zwave-x.tls=true
      - traefik.http.routers.zwave-x.tls.certresolver=duckdns
      - traefik.http.routers.zwave-x.entrypoints=websecure
      - traefik.http.services.zwave-x.loadbalancer.server.port=8091
    networks:
      vlan50:
        ipv4_address: 192.168.5.203
    volumes:
      - zwave-config:/usr/src/app/store
    #ports:
      #- '8091:8091' # port for web interface
      #- '3000:3000' # port for Z-Wave JS websocket server

  zigbee2mqtt:
    container_name: zigbee2mqtt-x
    image: koenkk/zigbee2mqtt:1.40.2
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.zigbee-x.rule=Host(`zigbee.mqtt.hb.x.duckdns.org`)
      - traefik.http.routers.zigbee-x.tls=true
      - traefik.http.routers.zigbee-x.tls.certresolver=duckdns
      - traefik.http.routers.zigbee-x.entrypoints=websecure
      - traefik.http.services.zigbee-x.loadbalancer.server.port=8080
    volumes:
        #- ./data:/app/data
        - zigbee2mqtt_data:/app/data
        #- /run/udev:/run/udev:ro #detects shanges like /dev/ttyUSB0
    #ports:
        # Frontend port
        #- 8081:8080
    environment:
        - TZ=Europe/Berlin
    #group_add:
    #    - dialout
    #user: 1000:1000
    networks:
      vlan50:
        ipv4_address: 192.168.5.205


volumes:
  openhab_addons:
    driver: local
  openhab_conf:
    driver: local
  openhab_userdata:
    driver: local

  mosquitto_data:
    driver: local
  mosquitto_log:
    driver: local

  zwave-config:
    name: zwave-config

  zigbee2mqtt_data:

networks:
  vlan50:
    external: true

Liebe Grüße

Re: TLS und lockaler DNS

Verfasst: 5. Mär 2025 13:13
von udo1toni
Mit dem eigentlichen Problem kann ich Dir leider nicht helfen, aber eine Anmerkung bezüglich Deines Containers:
openHAB sollte ganz dringend im Host-Netz laufen, sonst funktionieren ZeroConf, mDNS, Avahi usw. nicht (letztlich alles was auf Multicast aufsetzt).
Da die Ports über die Environment Variablen frei gesetzt werden können, kannst Du die Ports dennoch auf Dir genehme Ports verschieben.

Re: TLS und lockaler DNS

Verfasst: 8. Mär 2025 16:30
von Oekel
Musste lange hin und her überlegen bezüglich deines Kommentares...

Aber ich verwende im meinem vlan50 den Treibertypen "ipvlan", welcher ähnlich wie "macvlan" eine eigene IP nach außen liefert.
Somit sollte OpenHAB keine Probleme mit Avahi, ZeroConf, SSDP und anderen Multicast-Protokollen haben, da es sich ja so verhällt, als wäre es ein physisches Gerät.

Und da ich bewusst ALLE SmartHome-Geräte genau in dieses vlan50 stecke, passt es doch ebenfalls.

Einwände?

(Mir geht es auch darum, dass ich RuckZuck bei einem unbekannten Hersteller das ganze vlan ohne Internet schalten kann)

Re: TLS und lockaler DNS

Verfasst: 9. Mär 2025 02:06
von udo1toni
Wenn das sichergestellt ist, prima. Mit VLAN habe ich in Docker noch nicht gearbeitet :)

Re: TLS und lockaler DNS

Verfasst: 19. Mär 2025 08:52
von Oekel
Möchte eucb natürlich eine funktionierende Konfiguration nicht vorenthalten:

Code: Alles auswählen

services:
  openhab:
    image: "openhab/openhab:4.3.2"
    container_name: openhab-test
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.openhab-test.rule=Host(`openhab.test.myName.duckdns.org`)
      - traefik.http.routers.openhab-test.tls=true
      - traefik.http.routers.openhab-test.tls.certresolver=duckdns
      - traefik.http.routers.openhab-test.entrypoints=websecure
      - traefik.http.services.openhab-test.loadbalancer.server.port=8080
      # Middleware für den Redirect von HTTP auf HTTPS
      - traefik.http.routers.openhab-test-http.entrypoints=web
      - traefik.http.routers.openhab-test-http.rule=Host(`openhab.test.myName.duckdns.org`)
      - traefik.http.routers.openhab-test-http.middlewares=openhab-test-https-redirect
      - traefik.http.middlewares.openhab-test-https-redirect.redirectscheme.scheme=https
      - traefik.http.middlewares.openhab-test-https-redirect.redirectscheme.permanent=true
    ports:
      - "8080:8080"
      - "8443:8443"
      - "9001:9001"
    #network_mode: host
    networks:
      vlan50:
        ipv4_address: 192.168.5.221
    volumes:
Und ja ich lasse bewusst traefik nun das TSL Handling machen.

myName.duckdns.org ist öffentlich registriet und sorgt dafür, dass ich ein gültiges Zertifkat von Lets Encrypt bekomme. Intern läuft noch ein bind9 DNS, der Mittels Wildcast alls *.myName.duckdns.org auf den Container mit traefik linkt und damit geht es dann weiter.

Wenn ich es richtig verstanden habe, bräuchte ich (außnahme OH) nicht mals mehr ein netzwer nach außen sondern lediglich ein pseudonetzwerk, indem traefik und der entsprechende Container, welcher mit den Labels gefunden werden soll enthalten sind. PS: man kann Container wie traefik auch in mehreren Netzwerken bekannt machen (So vermeide ich dass ich ihn für jedes VLAN aufsetzen muss)

Re: Traefik und frontail

Verfasst: 19. Mär 2025 08:57
von Oekel

Code: Alles auswählen

  frontail:
    image: welteki/frontail-openhab:latest
    container_name: frontail-openhab-test
    labels:
      - traefik.enable=true
      - traefik.http.routers.frontail-test.rule=Host(`log.openhab.test.myName.duckdns.org`)
      - traefik.http.routers.frontail-test.tls=true
      - traefik.http.routers.frontail-test.tls.certresolver=duckdns
      - traefik.http.routers.frontail-test.entrypoints=websecure
      - traefik.http.services.frontail-test.loadbalancer.server.port=9001
      # Middleware für den Redirect von HTTP auf HTTPS
      - traefik.http.routers.frontail-test-http.entrypoints=web
      - traefik.http.routers.frontail-test-http.rule=Host(`log.openhab.test.myName.duckdns.org`)
      - traefik.http.routers.frontail-test-http.middlewares=frontail-test-https-redirect
      - traefik.http.middlewares.frontail-test-https-redirect.redirectscheme.scheme=https
    volumes:
      - "openhab_userdata:/openhab/userdata:ro"
    ports:
      - 9001:9001

läuft auch...

Re: Traefik und MQTT

Verfasst: 19. Mär 2025 08:59
von Oekel

Code: Alles auswählen

  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto-hb
    labels:
      - "docker-volume-backup.stop-during-backup=openhab-hb-service"
      - traefik.enable=true
      - traefik.tcp.routers.mosquitto-hb.rule=HostSNI(`mqtt.hb.myName.duckdns.org`)
      - traefik.tcp.routers.mosquitto-hb.entrypoints=websecure
      - traefik.tcp.services.mosquitto-hb.loadbalancer.server.port=1883
Der Läuft leider noch nicht. Ich vermute man muss traefik erst mal den MQTT Entpoint beibringen, denn mittels http oder tcp kommt man hier nicht weiter....