Hallo, ich bin kürzlich auf iobroker gestoßen und habe das aktuelle docker image von buanet gefunden, dieses ist wohl mehr auf die Verwendung aus einem NAS / dedizierter hardware optimiert.
Ich habe jedenfalls beim Einrichten ein paar Probleme gehabt es in meine bestehende docker compose Umgebung zu integrieren.
Ich verwende momentan in meinem docker-compose setup den reverse proxy traefik, hier arbeite ich mit verschiedenen subdomains, z.B. iobroker.domain.tld der reverse proxy verwaltet das ssl Zertifikat und sendet die Anfragen an den richtigen docker container und Port.
das sieht dann zum Beispiel so aus:
iobroker:
restart: always
build: ./iobroker
container_name: iobroker
hostname: iobroker
environment:
- SETUID=${PUID}
- SETGID=${PGID}
- TZ=${TZ}
#- IOB_ADMINPORT=8081
- PACKAGES=vim
ports:
- "1880:1880" #node-red
- "1883:1883" #mqtt
- "2001:2001" #homematic
- "8081:8081" #iobroker admin
- "8282:8282" #flot
- "8088:8088" #terminal
- "8284:8284" #socketIO
privileged: true
stdin_open: true
tty: true
devices:
- "/dev:/dev"
networks:
- discovery
volumes:
- iobrokerdata:/opt/iobroker
depends_on:
- traefik
labels:
- "traefik.enable=true"
- "traefik.docker.network=discovery"
- "traefik.http.services.iobroker.loadbalancer.server.port=8081"
### Middleware configuration
- "traefik.http.routers.iobroker-secure.middlewares=oo-header@docker,iobroker-auth@docker"
### Basic configuration
- "traefik.http.routers.iobroker-secure.entrypoints=websecure"
#- "traefik.http.routers.iobroker.entrypoints=web"
- "traefik.http.routers.iobroker-secure.rule=Host(`iobroker.${DOMAINNAME}`)"
- "traefik.http.routers.iobroker-secure.tls.certresolver=mytlschallenge"
### TLS configuration
- "traefik.http.middlewares.oo-header.headers.referrerPolicy=no-referrer"
- "traefik.http.middlewares.oo-header.headers.stsSeconds=31536000"
- "traefik.http.middlewares.oo-header.headers.forceSTSHeader=true"
- "traefik.http.middlewares.oo-header.headers.stsPreload=true"
- "traefik.http.middlewares.oo-header.headers.stsIncludeSubdomains=true"
- "traefik.http.middlewares.oo-header.headers.browserXssFilter=true"
- "traefik.http.middlewares.oo-header.headers.customRequestHeaders.X-Forwarded-Proto=https"
### Basic authentication
- "traefik.http.middlewares.iobroker-auth.basicauth.users=${HTTP_USERNAME}:${HTTP_PASSWORD}"
Ich verwende in diesem Fall als SETUID / SETGID 1002 anfangs wollte er nie starten, ich habe dann das Dockerfile direkt angepasst:
# Setting up iobroker-user (shell and home directory)
RUN chsh -s /bin/bash iobroker \
&& usermod --home /opt/iobroker iobroker \
&& usermod -u 1002 iobroker \
&& groupmod -g 1002 iobroker
# Setting up ENVs
ENV DEBIAN_FRONTEND="teletype" \
LANG="de_DE.UTF-8" \
LANGUAGE="de_DE:de" \
LC_ALL="de_DE.UTF-8" \
SETGID=1002 \
SETUID=1002 \
TZ="Europe/Zurich"
Mit der Version hat es dann mit dem setzen der Rechte geklappt und der iobroker startet und das admin interface ist dann über https://iobroker.domain.tld erreichbar.
Es wird mit aber auf der Hauptseite der Link nach https://iobroker.domain.tld:8081 angezeigt, der Aufruf funktioniert dann nicht.
Das gleiche Problem habe ich wenn ich dann node-red zum beispiel hinzufüge.
Gibt es eine Option die urls subdomain und nicht port basiert zu definieren?
Ggf. wäre es interessant für das docker image das Format von linuxserver.io zu verwenden, dies ist recht weit verbeitet und standardisiert.