Unifi Network Application Docker?

Ich verstehe die grundlegende Funktionsweise von Container Station und habe bereits ein paar Container bereitgestellt. Allerdings benötigt die Unifi Network Application (aktuell Version 10.0.162) MongoDB sowie die Initialisierung der Datenbank, damit die Unifi Network Application sie nutzen kann, einschließlich Benutzername und Passwort. Mein aktuelles Setup besteht aus einem Raspberry PI4B und ich habe ein vollständiges Backup.

Mein Setup ist ein TVS-H1688 und ich nutze die vier 2,5GB/s-Schnittstellen als LACP-LAG-Gruppe, die mit zwei VLANs gebündelt sind: VLAN 250, das ich hierfür in Virtual Switch 1 verwenden möchte. Das andere VLAN (Virtual Switch 5) ist mein IoT-VLAN, da ich plane, meinen Home Assistant irgendwann von seinem Raspberry PI4B darauf zu migrieren.

Ich habe Schwierigkeiten herauszufinden, wo ich die YAML-Datei ablegen muss, um den Container zu erstellen, und wie ich am besten festlege, wo der Speicherort sein soll und wie ich Virtual Switch 1 zuweise sowie die statische IP, Subnetzmaske, Standard-Gateway und DNS-Server einrichte.

Ich kann mir vorstellen, dass das schon jemand versucht hat. Vielen Dank im Voraus.

Ich habe eine einfachere Lösung für dich. Wenn du MyQNAP.org zum App Center-Repository hinzufügst, gibt es eine native Unifi-Anwendung, die direkt auf dem QNAP läuft. Es ist nicht nötig, sie in einem Container auszuführen.

Gehe in die Einstellungen im App Center und füge den MyQNAP.org-Repository-Link hinzu:

Unter „System Administration“ findest du dann die UniFi Controller-App.

Sie funktioniert hervorragend.

Hallo @kahilzinger

Ich habe ein Docker-Image für UniFi auf DockerHub gefunden.

Ich weiß nicht, ob das deinen Anforderungen entspricht, aber ich habe diese YAML-Datei ausprobiert und sie hat bei mir problemlos funktioniert.

Du kannst sie dir anschauen. Ersetze die Variablen mit $ durch deine NAS-Einstellungen.

version: "3.8"

services:
  unifi:
    image: jacobalberty/unifi:latest
    container_name: unifi-controller
    restart: unless-stopped

    networks:
      qnet-network:
        ipv4_address: ${QNET_STATIC_IP}

    environment:
      TZ: ${TZ}

    volumes:
      - ${SHARE_FOLDER}/unifi:/unifi

networks:
  qnet-network:
    driver_opts:
      iface: ${QNET_INTERFACE}
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: ${QNET_INTERFACE}
      config:
        - subnet: ${QNET_SUBNET}
          gateway: ${QNET_GATEWAY}

Du kannst das ${QNET_INTERFACE} per SSH und mit dem ifconfig-Befehl herausfinden.

Beachte jedoch bitte, dass dieser Container / das Docker-Image eine Drittanbieteranwendung ist und kein QNAP-Produkt, daher solltest du auf Datensicherung und Stabilität achten.

====

version: "3.8"

services:
  unifi:
    image: jacobalberty/unifi:latest
    container_name: unifi-controller
    restart: unless-stopped

    networks:
      qnet-network:
        ipv4_address: 10.20.80.54

    environment:
      TZ: ${TZ}

    volumes:
      - /share/Container/unifi:/unifi

networks:
  qnet-network:
    driver_opts:
      iface: bond0
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: bond0
      config:
        - subnet: 10.20.80.0/23
          gateway: 10.20.80.254

Ich habe dies versucht, jedoch war tcp/8080 durch die Konsole belegt (kürzlich auf einen anderen Port geändert) und ich weiß nicht, welcher Port für die /inform-Webseite verwendet wird und wie ich diesen jetzt auf 8080 ändern könnte, da ich diesen Port nicht mehr benutze.

Gibt es eine Möglichkeit, diese Anwendung auf mein anderes Adapter-Team/virtuellen Switch zu verschieben?

Ich würde diese Methode gerne verwenden, wenn ich könnte. Es sieht so aus, als wäre der virtuelle Switch, den ich verwenden möchte, „qvs0“. Allerdings sehe ich zwei Dinge, die ich tun möchte:

1.) Wie bestimme ich den Speicherort des Volumes?
2.) Du musst MongoDB installieren und initialisieren.

Wenn ich jemanden finden könnte, der mir dabei hilft, würde ich ihn gerne bezahlen, weil ich lernen möchte und ein absoluter Anfänger im Umgang mit Docker bin. Aber ich könnte mir vorstellen, das viel öfter zu nutzen, besonders im Bereich Heimautomatisierung.

Hier ist das Skript, das ich gefunden habe und zu verstehen versuche:


version: „2.1“
services:
unifi-network-application:
image: lscr.io/linuxserver/unifi-network-application:latest
container_name: unifi-network-application
environment:

  • PUID=1000
  • PGID=1000
  • TZ=America/Chicago
  • MONGO_USER=unifi
  • MONGO_PASS=[[password]]
  • MONGO_HOST=unifi-db
  • MONGO_PORT=27017
  • MONGO_DBNAME=unifi
  • MEM_LIMIT=1024 #optional
  • MEM_STARTUP=1024 #optional

- MONGO_TLS= #optional

- MONGO_AUTHSOURCE= #optional

volumes:
  - /home/ubuntu/docker/unifi-controller:/config  <--Muss herausfinden, wo.
ports:
  - 8443:8443
  - 3478:3478/udp
  - 10001:10001/udp
  - 8080:8080
  - 1900:1900/udp #optional
  - 8843:8843 #optional
  - 8880:8880 #optional
  - 6789:6789 #optional
  - 5514:5514/udp #optional
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.unifi.entrypoints=http"
  - "traefik.http.routers.unifi.rule=Host(`unifi.jimsgarage.co.uk`)"
  - "traefik.http.middlewares.unifi-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.unifi.middlewares=unifi-https-redirect"
  - "traefik.http.routers.unifi-secure.entrypoints=https"
  - "traefik.http.routers.unifi-secure.rule=Host(`unifi.jimsgarage.co.uk`)"
  - "traefik.http.routers.unifi-secure.tls=true"
  - "traefik.http.routers.unifi-secure.service=unifi"
  - "traefik.http.services.unifi.loadbalancer.server.port=8443"
  - "traefik.http.services.unifi.loadbalancer.server.scheme=https"
  - "traefik.docker.network=proxy"
networks:  <--Wo würde ich den virtuellen Switch und die statische IP hier zuweisen?
  proxy:
  unifi:
restart: unless-stopped

unifi-db:
image: docker.io/mongo:4.4
container_name: unifi-db
volumes:

  • /home/ubuntu/docker/unifi-controller-db:/data/db <–Muss herausfinden, wo.
  • /home/ubuntu/docker-compose/unifi-controller/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro <–Muss herausfinden, wo.
    networks: <–Brauche ich hier eine statische IP und einen virtuellen Switch?
    unifi:
    restart: unless-stopped

networks:
proxy:
external: true
unifi:

! Das Folgende ist das JavaScript zur Initialisierung der MongoDB-Datenbank
!
! init-mongo.js
! db.getSiblingDB(„unifi“).createUser({user: „unifi“, pwd: „[[password]]“, roles: [{role: „dbOwner“, db: „unifi“}]});
! db.getSiblingDB(„unifi_stat“).createUser({user: „unifi“, pwd: „[[password]]“, roles: [{role: „dbOwner“, db: „unifi_stat“}]});

Du solltest unbedingt den vorformatierten Textblock verwenden.

Du musst den Reiter „Application“ nutzen, um deine compose.yaml zu exportieren.

volumes: entspricht hostPath:containerMountPoint

Ich habe den Dateibrowser verwendet, um ein docker/-Share zu erstellen, daher sieht bei mir alles so aus:

[admin@TheVault arcane]# ls /share/docker/*
/share/docker/appdata:
NUTCase         jellyfin        portical-upnpc
arcane          kuma            qbittorrent
homepage        nutify          syncyomi

/share/docker/compose:
basic-app

/share/docker/scripts:
#secrets#

/share/docker/secrets:
#other secrets#

/share/docker/stacks:
NUTCase        homepage       pihole-qnet    qbittorrent    uptime-kuma
arcane         jellyfin       pocket-id      syncyomi       watchtower
dozzle         nutify         portainer-ce   tasmocompiler
[admin@TheVault arcane]#

Sei darauf vorbereitet, auf CS-Einschränkungen zu stoßen, die das Leben etwas nervig machen können.

Aber CS startet Arcane/Dockge/Portainer problemlos, und dann kannst du von dort weitermachen.
Langfristig wird dir das wahrscheinlich das Leben erleichtern.

Musst du die UniFi-App unbedingt in einem Docker-Container ausführen? Wie ich oben schon gesagt habe, gibt es bereits eine „native“ App für die UniFi-Konsole im MyQNAP.org-Repo. Das ist viel einfacher, als einen Container einzurichten und dann die App zu installieren…

Da 8080 nicht reagiert, weil ich 8080 für die Konsole verwendet habe, würde ich es bevorzugen, wenn es nach Möglichkeit ein Container wäre.

Ich werde versuchen, das besser zu verstehen. Ich gehöre zu denen, die es lernen, sobald sie es sehen und verstehen, wie es funktioniert. Es gibt nur keine Videos, die den Qnap Container Station verwenden.

Entschuldigung wegen der Formatierung… Das ist mir aufgefallen, als ich auf „Antworten“ geklickt habe.

Wenn jemand bereit ist, eine Remote-Sitzung einzurichten, um mir zu helfen, bin ich bereit, dafür zu bezahlen.

Wie installiert man die UniFi Network Application über Docker auf einem QNAP NAS? | QNAP

Tut mir leid. Es hat nicht das gemacht, was ich wollte, aber anscheinend wurde es auf die Version aktualisiert, die ich auch auf meinem PI habe.

Wenn ich versuche, diese Version zu installieren, gibt es mir keine Option, welchen virtuellen Switch ich verwenden möchte. Es wird standardmäßig Virtual Switch 5 ausgewählt (Adapter 1+2+3+4, aber mit VLAN 253 getaggt, was mein IoT-Netzwerk ist), das ist aber das falsche Subnetz. Ich möchte, dass es auf Virtual Switch 1 installiert wird (Adapter 1+2+3+4 ungetaggt). Ich habe bisher keine Möglichkeit gesehen, beim Installieren von Mondo und dem UniFi Network AP einzustellen, welches Adapter-Set oder welcher virtuelle Switch zugewiesen wird. Wenn ich das herausfinden könnte, wäre das vielleicht die Lösung.

Docker mit Compose und Qnet wurde oben bereits erwähnt

Du solltest in der Lage sein, den verwendeten virtuellen Switch in “Netzwerk und virtueller Switch” zu ändern.

Mir ist das bewusst, aber irgendwas macht in meinem Kopf einfach keinen Klick, wie das funktionieren soll. Ich wäre auch bereit, jemanden dafür zu bezahlen, dass er mir hilft. Ich lerne echt gut, wenn ich mir ein YouTube-Video anschauen oder jemandem zusehen kann, wie er es macht. Leider gibt es auf YouTube einfach nichts Schritt-für-Schritt zum Unifi-Server.

Ich verstehe einfach nicht, wie ich meine Tautulli-Container aktualisieren kann, würde das aber gerne tun.

Nachdem du deinen Container erstellt hast, öffne “Network and Virtual Switch”. Klicke unten auf den Button “Erweitert”:

Gehe dann zu “Virtual Switch”:

Hier siehst du alle erstellten virtuellen Switches und Netzwerke. Wähle denjenigen aus, den du nutzen möchtest (den, in dem sich dein Container befindet), und klicke auf die drei kleinen Punkte auf der rechten Seite. Es erscheint ein Menü – dort wählst du “Konfigurieren” aus. Es öffnet sich ein neues Fenster:

Wähle nun den Adapter aus, den du für dieses virtuelle Netzwerk verwenden möchtest. Ich habe ihn jetzt von Adapter 1 auf Adapter 3 umgestellt.

Gehe im Anschluss die restlichen Einstellungen für das Netzwerk durch und übernehme sie am Ende mit “Übernehmen”. Dein Container-Netzwerk nutzt jetzt den neu ausgewählten Adapter …

Um die Weboberfläche von QNAP von Port 8080 weg zu ändern, gehe in die Systemsteuerung / Allgemeine Einstellungen und ändere dort den Systemport auf die gewünschte Portnummer.

Lass mich gerne wissen, ob das weiterhilft.

Ich verstehe das, und deine Screenshots sind super, aber der Unifi Network Server benötigt auch einen MongoDB-Container.

MongoDB sollte in deiner YAML eingerichtet sein. Ich habe schon YAML-Dateien gesehen, in denen eine IP-Adresse definiert wurde. Ich bin mir aber nicht sicher, was genau für dein Setup nötig ist. Hier ist meine YAML aus einer Vikunja-Installation, die eine MariaDB-Instanz verwendet:

services:
  vikunja:
    image: vikunja/vikunja:latest
    stdin_open: true
    tty: true
    user: "0:0"
    dns: 192.168.0.4
    environment:
      VIKUNJA_SERVICE_PUBLICURL: http://192.168.0.3:3456
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: ********
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
      VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: true
      VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: true
      VIKUNJA_MAILER_ENABLED: true
      VIKUNJA_MAILER_AUTHTYPE: login
      VIKUNJA_MAILER_FORCESSL: false
      VIKUNJA_MAILER_SKIPTLSVERIFY: true
      VIKUNJA_MAILER_HOST: IP.IP.IP.IP
      VIKUNJA_MAILER_PORT: 587
      VIKUNJA_MAILER_USERNAME: emailaddy@host.com
      VIKUNJA_MAILER_PASSWORD: some_stupid_password
      VIKUNJA_MAILER_FROMEMAIL: emailaddy@host.com
      VIKUNJA_SERVICE_TIMEZONE: America/Chicago
    ports:
      - 3456:3456
    volumes:
      - /share/Container/vikunja/files:/app/vikunja/files
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped
    
  db:
    image: mariadb:10
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: **********
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: **********
      MYSQL_DATABASE: vikunja
    volumes:
      - /share/Container/vikunja/db:/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"]
      interval: 2s
      start_period: 30s

Das passiert alles automatisch. Ich muss gar nichts machen…