Einfaches Unifi-Controller-Setup mit docker-compose

English Deutsch

Aktualisiert 2022-12-24: --bind_ip 127.0.0.1 hinzugefügt, um Remote-MongoDB-Zugriff im Zusammenhang mit network_mode: host zu verhindern. Danke an Matt Johnson für den Hinweis :-)

Dieses Setup betreibt sowohl MongoDB als auch Unifi mit network_mode: host, deshalb wird MongoDB auf einem nicht-standardmäßigen Port ausgeführt (damit es nicht mit anderen MongoDB-Instanzen kollidiert). Dies hat den großen Vorteil, dass direkter Layer-2-Netzwerkzugriff ermöglicht wird, was die L2-Adoption von Access Points erlaubt.

Ein Verzeichnis wie /opt/unifi erstellen und docker-compose.yml erstellen

docker-compose.yml
services:
  mongo:
    image: mongo:3.6
    network_mode: host
    restart: always
    volumes:
      - ./mongo_db:/data/db
      - ./mongo/dbcfg:/data/configdb
    command: mongod --bind_ip 127.0.0.1 --port 29718
  controller:
    image: "jacobalberty/unifi:latest"
    depends_on:
      - mongo
    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
    environment:
      - DB_URI=mongodb://localhost:29718/unifi
      - STATDB_URI=mongodb://localhost:29718/unifi_stat
      - DB_NAME=unifi
  logs:
    image: bash
    depends_on:
      - controller
    command: bash -c 'tail -F /unifi/log/*.log'
    restart: always
    volumes:
      - ./unifi_log:/unifi/log

Nun die Verzeichnisse mit korrekten Berechtigungen erstellen:

setup_unifi_dirs.sh
mkdir -p unifi_backup unifi_cert unifi_data unifi_dir unifi_init unifi_log unifi_run
chown -R 999:999 unifi_backup unifi_cert unifi_data unifi_dir unifi_init unifi_log unifi_run

Nun kann das Skript aus Systemd-Service für docker-compose-Projekt in 10 Sekunden erstellen verwendet werden, um den Controller automatisch beim Booten zu starten (und sofort zu starten):

install_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

Nun https://<IP des Controllers>:8443 aufrufen, um mit dem Setup zu beginnen oder ein Backup zu importieren.


Check out similar posts by category: Docker, Networking