Schon seit einigen Jahren nutze ich Unifi Access Points, die über die Unifi-Controller verwaltet werden können. Nachdem ich meinen neuen Server in Betrieb genommen hatte, wollte ich auch diese Software als Docker-Container nutzen anstatt sie auf Bare-Metal zu installieren. Das erwies sich aber als deutlich komplizierter als erwartet.

Als erstes Problem erwies sich, die Entscheidung ein Docker-Image auszuwählen. Hier gibt es die folgenden Möglichkeiten:

Nach einiger Recherche entschied ich mich für den Container von jacobalberty, da dieser regelmäßig aktualisiert wird und die wichtigsten Informationen direkt in der Beschreibung enthalten waren. Leider machte dieser nach einiger Zeit Probleme und ließ sich nicht mehr starten, worauf ich Unifi mit dem Container von goofball222 erneut aufsetzte. Dieser läuft seither problemlos.

Anhand der Beispiel docker-compose Konfiguration konnte ich mir folgende Konfiguration erstellen. Unterschiede zur Vorlage sind benannte Volumens anstatt des lokalen Pfad-Mappings im Original. Zudem habe ich den Port 10001 deaktiviert, da die Access Points in einem anderen Subnetz sind als der Unifi-Server. Die AP-Discovery funktioniert daher sowieso nicht.

version: '2.2'
services:
  db:
    image: mongo
    restart: always
    volumes:
      - db:/data/db
  app:
    image: goofball222/unifi:latest-alpine
    container_name: unifi
    depends_on:
      - db
    init: true
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - data:/usr/lib/unifi/data
      - log:/usr/lib/unifi/log
      - cert:/usr/lib/unifi/cert
    environment:
      DB_MONGO_LOCAL: "false"
      DB_MONGO_URI: mongodb://db/unifi
      STATDB_MONGO_URI: mongodb://db/unifi_stat
      TZ: UTC
      UNIFI_DB_NAME: unifi
    ports:
      - "3478:3478/udp" # STUN
      - "6789:6789/tcp" # Speed test
      - "8080:8080/tcp" # Device/ controller comm.
      - "8443:8443/tcp" # Controller GUI/API as seen in a web browser
      - "8880:8880/tcp" # HTTP portal redirection
      - "8843:8843/tcp" # HTTPS portal redirection
    # - "10001:10001/udp" # AP discovery
 
volumes:
  db:
  data:
  log:
  cert:

Nach dem Start kann über https://SERVER-IP:8443 das Webinterface aufgerufen werden.