Traefik: Container-Labels für den UniFi-Controller via docker-compose

English Deutsch

Für die grundlegende Konfiguration & Einrichtung des UniFi-Controllers via docker-compose siehe Simple Unifi controller setup using docker-compose ! Dieser Beitrag behandelt nur den Traefik-Label-Teil.

Dieses Setup basiert auf unserem vorherigen Beitrag zum UniFi docker-compose-Setup. Darüber hinaus wird unsere Traefik-Konfiguration ausführlicher in unserem Beitrag zu Simple Traefik docker-compose setup with Lets Encrypt Cloudflare DNS-01 & TLS-ALPN-01 & HTTP-01 challenges behandelt.

Für dieses Beispiel verwenden wir ein Wildcard-Let’s-Encrypt-Zertifikat für die Domain *.mydomain.com über den Traefik-Zertifikatsanbieter namens cloudflare, wobei der UniFi-Controller auf unifi.mydomain.com läuft.

Hier ist die Container-Label-Konfiguration:

unifi_traefik_labels.yml
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.unifi.rule=Host(`unifi.mydomain.com`)"
  - "traefik.http.routers.unifi.entrypoints=websecure"
  - "traefik.http.routers.unifi.tls.certresolver=cloudflare"
  - "traefik.http.routers.unifi.tls.domains[0].main=mydomain.com"
  - "traefik.http.routers.unifi.tls.domains[0].sans=*.mydomain.com"
  - "traefik.http.services.unifi.loadbalancer.server.port=8443"
  - "traefik.http.services.unifi.loadbalancer.server.scheme=https"

Beachten Sie insbesondere diese Zeilen, die Traefik dazu bringen, auf den UniFi-Controller via HTTPS zuzugreifen:

unifi_traefik_https_labels.yml
- "traefik.http.services.unifi.loadbalancer.server.port=8443"
- "traefik.http.services.unifi.loadbalancer.server.scheme=https"

Vollständiges Beispiel

unifi_docker_compose_example.yml
services:
  mongo_unifi:
    image: mongo:3.6
    network_mode: host
    restart: always
    volumes:
      - ./mongo_db:/data/db
      - ./mongo/dbcfg:/data/configdb
    command: mongod --port 29718
  controller:
    image: "jacobalberty/unifi:latest"
    depends_on:
      - mongo_unifi
    init: true
    network_mode: host
    restart: always
    volumes:
      - ./unifi_dir:/unifi
      - ./unifi_data:/unifi/data
      - ./unifi_log:/unifi/log
      - ./unifi_cert:/unifi/cert
      - ./unifi_init:/unifi/init.d
      - ./unifi_run:/var/run/unifi
      - ./unifi_backup:/unifi/data/backup
#    sysctls:
#      net.ipv4.ip_unprivileged_port_start: 0
    environment:
      - DB_URI=mongodb://localhost:29718/unifi
      - STATDB_URI=mongodb://localhost:29718/unifi_stat
      - DB_NAME=unifi
      - UNIFI_HTTP_PORT=8090
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.unifi.rule=Host(`unifi.mydomain.com`)"
      - "traefik.http.routers.unifi.entrypoints=websecure"
      - "traefik.http.routers.unifi.tls.certresolver=cloudflare"
      - "traefik.http.routers.unifi.tls.domains[0].main=mydomain.com"
      - "traefik.http.routers.unifi.tls.domains[0].sans=*.mydomain.com"
      - "traefik.http.services.unifi.loadbalancer.server.port=8443"
      - "traefik.http.services.unifi.loadbalancer.server.scheme=https"
# Ports auskommentiert, da der Network-Modus auf "host" gesetzt ist
#    ports:
#      - "3478:3478/udp" # STUN
#      - "6789:6789/tcp" # Speedtest
#      - "8080:8080/tcp" # Geräte-/Controller-Kommunikation
#      - "8443:8443/tcp" # Controller-GUI/API wie im Webbrowser angezeigt
#      - "8880:8880/tcp" # HTTP-Portal-Weiterleitung
#      - "8843:8843/tcp" # HTTPS-Portal-Weiterleitung
#      - "10001:10001/udp" # AP-Discovery
  logs:
    image: bash
    depends_on:
      - controller
    command: bash -c 'tail -F /unifi/log/*.log'
    restart: always
    volumes:
      - ./unifi_log:/unifi/log

Check out similar posts by category: Networking, Traefik