Im vorangegangenen Artikel habe ich über die Lösung meiner WLAN-Probleme mit Hilfe eines Access Points von Ubiquiti berichtet. Zur Installation und Konfiguration wird die Unifi-Controller Software benötigt.
Er bietet daneben sehr umfangreiche Möglichkeiten der Auswertung, die sehr schick aufbereitet werden. Um diese Funktion nutzen zu können, muss der Unifi-Controller permanent laufen. Daher habe ich mich dazu entschieden, diesen auf meiner Synology DiskStation zu installieren.

Als NAS (Network Attached Storage) kommt bei mir derzeit eine Synology DiskStation DS918+ * zum Einsatz.

1. Synology DiskStation vorbereiten

Bevor wir starten können, müssen wir einmal überprüfen ob deine Synology DiskStation die Anwendung Docker unterstützt. Hierzu gehst du im DiskStation Manager (DSM) in das Paket-Zentrum und suchst oben links nach Docker. Erscheint das entsprechende Paket ist alles fein, andernfalls unterstützt deine DiskStation diese Anwendung nicht. Dann kannst du den Unifi-Controller alternativ z.B. auf einem Raspberry Pi installieren oder aber du kaufst den Unifi Cloud Key *.

Docker erlaubt dir, eine Anwendung in einem Container laufen zu lassen. Der große Vorteil ist, das mit der Installation einer Anwendung in einem Docker Container alle notwendigen Bestandteile der Anwendung in diesem Paket bereits enthalten sind.

Im Paketzentrum installierst du die Docker Anwendung und öffnest diese direkt. Es erscheint ein Willkommensbildschirm mit einführenden Hinweisen, den du oben rechts schließen kannst.

2. Unifi Controller installieren

In der Docker Anwendung gehst du auf den Menüpunkt Registrierung und suchst nach dem Begriff ‘unifi’. Hier wählst du den Eintrag jacobalberty/unifi aus und klickst auf Download oben links. Danach wählst du noch die Version (Tag) latest und das etwa 700 MB große Paket wird heruntergeladen. Nach erfolgreicher Installation erscheint unter Abbild der neue Container, den du startest.

3. Unifi Controller konfigurieren

Allgemeine Einstellungen

Zuerst gibst du dem Container einen sprechenden Namen, z.B. UnifiController. Damit der Container nicht zuviele System-Ressourcen anfordert und verbraucht, setzt du das Häkchen bei Ressourcenbeschränkung aktivieren und wählst Mittel und trägst einen Speichergrenzwert von 1024 MB ein. Danach klickst du auf Erweiterte Einstellungen.

Erweiterte Einstellungen

Unter diesem Punkt aktivieren wir lediglich den automatischen Neustart, damit der Container nach einem Neustart der DiskStation ebenfalls wieder gestartet wird.

Volume

Auf diesem Reiter wird der Docker Speicherort auf der Synology DiskStation gemappt. Unter Volume –> Ordner hinzufügen wählst du das Docker Verzeichnis aus und erstellst hier einen neuen Ordner (unifi). Nach der Auswahl trägst du im Feld Mount-Pfad noch den eben erstellten Ordner /unifi ein.

Netzwerk

Unter Netzwerk haken wir Dasselbe Netzwerk wie Docker Host verwenden an, damit wir den Unifi Controller unter der gleichen IP Adresse erreichen wie die DiskStation.

Umgebung

Hier änderst du nur die folgenden zwei Einträge auf false:

  • BIND_PRIV
  • RUNAS_UID0

Damit ist die Konfiguration des Unifi Controllers abgeschlossen. Es wird noch eine kurze Zusammenfassung angezeigt und mit dem Klick auf Übernehmen wird der Container gestartet.

3. Synology Firewall konfigurieren

Damit der Unifi Controller über den Port 8443 tatsächlich auch erreichbar ist, muss die Synology Firewall noch entsprechend konfiguriert werden. Systemsteuerung –> Sicherheit –> Firewall

Unter Firewall Profil klickst du hierzu auf Regeln bearbeiten. Unter Ports unter Benutzerdefiniert erstellst du für TCP und UDP folgende Einträge:

  • TCP: 8080, 8443, 8843, 8880, 6789
  • UDP: 3478, 10001

Nun sollte der Unifi Contoller unter der IP Adresse deiner Synology DiskStation und Port 8443 erreichbar sein.

Die (Erst-)Konfiguration des Unifi Controllers habe ich im Beitrag Ubiquiti Unifi Access Points als Lösung für meine WLAN Probleme beschrieben.

Tipp: Damit deine Unifi Geräte eingebunden werden können und vom Unifi Controller gefunden werden, musst du bei den einzelnen Geräten den setinform Befehl aufführen:

setinform http://IP-Adresse-Unifi-Controller:8080/inform

4. Unifi Controller updaten

Auch der Unifi Controller wird in regelmäßigen Abständen geupdated. Das Update ist jedoch nicht so einfach wie man es normalerweise gewohnt ist. Es gibt kein Auto-Update und man kann auch nicht einfach einen Installationsprogramm im derzeit aktuellen Container laufen lassen.

Zuerst machst du im Unifi Controller zur Sicherheit ein Backup. Dieses kannst du unter Einstellungen –> Wartung –> Backup über den Button Backup herunterladen.

Danach lädst du im Docker die neueste Version von Unifi-Controller herunter, wie bei der ursprünglichen Installation auch.

Wenn der Download beendet ist, wechselst du im Docker auf Container:

  • den Container stoppen
  • warten bis der Container gestoppt ist
  • über Aktion –> Inhalt löschen (Alle Einstellungen und Daten sind im gemapptem Ordner noch vorhanden)
  • danach den Container wieder starten und er ist geupdated

Der Beitrag gehört zu einer Artikelserie:

37 Kommentare

  1. Hey, super Beschreibung. Hat soweit alles geklappt, aber wie komme ich auf den Controller drauf um die UNIFIgeräte ein zu richten?
    Brauch ich dafür eine Software?
    komme grade nicht weiter.

    1. Wo hast du denn den Controller installiert? Ich gehe mal davon aus, dass dieser erfolgreich auf deiner Synology läuft. Dann kommst du unter der IP Adresse deiner Synology plus Port 8443 auf den Controller. -> IP-Adresse:8443

  2. Hi,

    Danke für die super Anleitung. Aber eine Frage zum Update: Wenn ich wie beschrieben vorgehe habe ich die gleiche Version wie vorher auf dem Docker.

    ” – den Container stoppen
    – warten bis der Container gestoppt ist
    – über Aktion –> Inhalt löschen (Alle Einstellungen und Daten sind im gemapptem Ordner noch vorhanden)
    – danach den Container wieder starten und er ist geupdated”

    Im “Abbild” ist allerdings ein Unifi-Controller Conainer enthalten… Muss man nach dem “Inhalt löschen” und Container wieder starten noch etwas machen?

    1. Hallo Markus,

      eigentlich nicht. Ich habe eben auch einmal probiert ein Date durchzuführen und hatte danach ebenfalls die gleiche Version wie vorher.
      Es gibt mittlerweile die Version 6.xx, daher habe ich die Version einmal komplett neu installiert und es hat funktioniert. Dabei habe ich das gleiche Verzeichnis ausgewählt und meine Einstellungen waren alle noch vorhanden.

      Viele Grüße
      Martin

  3. Hallo Martin,
    interessantes Thema mit einer prima Anleitung hast du da. Immer wieder bemerkenswert, welch Aufwand betrieben wird, um uns Laien solche Dinge zu ermöglichen. Danke an dieser Stelle.
    Jetzt zu meinem Problem: mein Docker UNIFI läuft, jedoch kann ich im Browser nicht darauf zugreifen.
    nach Eingabe -> IP-Adresse:8443 folgt die Meldung: “Bad Request This combination of host and port requires TLS.”
    Kannst du mir helfen, was hier falsch läuft?
    Danke

    Gruß Marco

    1. Hallo Marco,
      vielen Dank für die netten Worte 😉
      Du musst vor der IP Adresse noch https:// voranstellen. Dann sollte es funktionieren.
      Viele Grüße
      Martin

  4. Hi,
    warum müssen die Schalter BIND_PRIV und RUNAS_UID0 auf “false” gesetzt werden? Was bewirken diese?

    1. Hallo,

      BIND_PRIV: Aktiviert die Bindung an Ports unter 1024.
      RUNAS_UID0: Dies wird verwendet, um zu bestimmen, ob der UniFi-Dienst als privilegierter (Root-) Benutzer ausgeführt wird.

      Viele Grüße
      Martin

  5. Hi!
    Sehr geile Erklärung und super geil auch mit den Bildrn dazu! Danke dafür!
    Alles läuft super und ohne Probleme.
    Ich bekomme nun allerdings noch einen neuen UniFi Switch dazu. Was ich nicht ganz verstanden habe, wie ich jetzt neue Geräte einbinden kann. Du hast beschrieben über den setinform, aber wo und wie genau.
    Beste Grüße

    Aaron

    1. Hallo Aaron,
      gerne! Freue mich ja wenn es anderen hilft. Und noch mehr wenn ein Danke kommt 😉
      Also ich würde den neuen Switch anschließen und dann im Controller schauen ob er erkannt wird und du ihn von dort integrieren kannst.
      Nur für den Fall, dass dies nicht der Fall ist: auf dem neuen Switch per ssh den setinform Befehl ausführen. Danach sollte er dann spätestens im Controllr auftauchen. Damit sagst du dem Switch praktisch “wohin er gehören soll”.
      Viele Grüße
      Martin

  6. Hallo,
    habe ein funktionierendes Unifi Netzwerk mit UDM Pro mehreren Aps und switches.
    Habe nach deiner Anleitung den Unifi Controller auf der DS installiert und eingerichtet.
    Starte ich den Controller erkennt der keine UDM Pro, kein Ap und keinen Switch.
    was mache ich falsch?

    1. Hast du einmal den Befehl setinform probiert?

  7. Moin zusammen – auch ich bedanke mich vorerst. Mit dem update habe ich die gleichen Probleme wie beschrieben.
    Kann es sein, dass das löschen der alten “latest” version fehlt??
    Vielleicht kann Martin das noch einmal checken?!
    Gruß Ingmar

    1. Hallo Ingmar,
      habe gerade bei mir ein Update durchgeführt… von 6.0.20 auf 6.0.36 und es hat nach meiner Anleitung funktioniert.
      Download unter Registrierung, Abwarten bis Download erfolgreich beendet ist, Container stoppen, über Action -> Löschen, Container neu starten.
      Werde in den nächsten Tagen noch einmal ein Update des Artikels oder einen neuen Artikel schreiben.
      Was wichtig ist, es muss die gleiche Auswahl beim Download sein, wie “damals”: sprich: wenn latest, dann auch beim Update latest. Ich benutze derzeit stable-6
      Viele Grüße
      Martin

  8. Hallo Martin,

    Danke für die Anleitung! Nachdem ich nun die Docker-Installation gemacht habe stoppt der Container immer wieder mit dem Hinweis “Port 8443 not available”. Firewall ist eingerichtet; habe sie testweise aber auch mal deaktiviert. Der Zustand bleibt unverändert und ich kann auch über die IP:8443 nicht darauf zugreifen. Wo könnte ich noch den Fehler vermuten? Vielen Dank!

    1. Hallo Ulli,
      hast du denn alles so eingerichtet wie oben beschrieben? Nutzt du SSL?
      Läuft irgendein etwas anderes derzeit auf Port 8443?
      Welches Betriebssystem steht zur Verfügung: Mac oder Win?
      Viele Grüße
      Martin

      1. Hallo Martin,
        auf der Syno läuft Humhub (nicht im Docker). Braucht soviel ich weiß diesen Port nicht! SSL…ja für den Internet-Zugang zu Humhub. Betriebssystem JETZT Mac, aber auch Win10. Controller soll nur local verwendet werden. LG Ulli

        1. Hallo Ulli, ich habe seit neustem exakt das gleiche Problem wie Du. Bist du bei der Problemfindung bereits weitergekommen?

  9. Also der CarDAv-Server wurde deaktiviert; der brauchte den Port “8334”. Jetzt kommt keine Fehlermeldung vom Docker mehr, sondern bei Eingabe 192.168.xxx.xxx:8443 “Bad Request This combination of host and port requires TLS”. Anderer Browser, Cache leeren brachten keine Veränderung. Doch schwieriger wie gedacht das ganze…

    1. Cool, gefunden.
      Das ist einfach: https:// voranstellen.

      1. Hatte ich auch schon probiert…: “Ihre Verbindung ist nicht privat”…NET::ERR_CERT_AUTHORITY_INVALID. Es hätte so einfach sein können… 🙁 Im Container werden keine Ports angezeigt..

        1. Mal einen anderen Browser ausprobiert bzw. kannst du dort dennoch auf Weiter und/oder weitere Infos klicken um dann dennoch fortzufahren?

          1. ja über weitere Klicks konnte ich die unsichere Verbindung nun starten..

          2. das heißt nun, eine Sicherheitseinrichtung stimmt nicht!? Den Setinform-Befehl startet ich in welchem Terminal?

  10. Hallo Martin,
    der Controller zeigt an, das ein neues Update vorliegen würde. Ich habe im Docker Jacobalberty/Unifi erneut herunter geladen und die Inhalte nach “Stopp” gelöscht (upgedatet). Nach Neustart läuft aber weiterhin SW 6.0.36. Kommen die Updates im Docker später? Ansonsten läuft alles recht gut und ein Restore nach kompletter Neuinstallation verlief ebenfalls erfolgreich. Grüße Ulli

    1. Hallo Ulli,
      hast du meinen obigen Kommentar gelesen?
      Es muss die gleiche „Version“ sein, also Last, stable etc. Beim Download.
      Gruß
      Martin

      1. Hallo Martin, ja ich habe Deinen Kommentar gelesen und wie bei der ersten Installation “latest” angewählt.6.0.41 wäre die aktuellste SW von heute. Grüße Ulli

        1. Hallo Ulli,
          ich habe meinen Controller mal komplett neu aufgesetzt, auch auf latest.
          Wenn das nächste Update verfügbar ist, werde ich das Update durchführen und dann berichten.
          Bei mir funktioniert es immer reibungslos eigentlich.
          Gruß
          Martin

          1. Hallo ihr zwei!
            Bislang haben bei mir die Updates auch immer super funktioniert wie von dir, Martin, beschrieben. Jeweils ohne Probleme.
            Ich stehe jetzt jedoch vor dem selben Problem wie Ulli.
            Bei mir läuft aktuell noch der Controller Version 6.0.36 und die aktuellste Version scheint auch im Docker die 6.0.41 zu sein.
            Ich habe jeweils IMMER als Version “latest” ausgewählt. Aber bei diesem Update jetzt bleibe ich auch immer in der Version 6.0.36 hängen.
            Liebe Grüße
            Aaron

          2. Hi!

            NACHTRAG:
            Ich habe das Ganze jetzt nochmal probiert.
            Nachdem der Container gestoppt war, habe ich diesmal mindestens 4 mal Aktion > Inhalte Löschen gemacht. dann Container wieder gestartet.
            Nun ist er auf 6.0.41.

            Liebe Grüße Aaron

  11. Ich wollte mich recht herzlich für deine Mühen bedanken!
    Habe es genau so wie du gesagt hast gemacht und es funktioniert ganz wunderbar!

  12. Erstmal vielen Dank für die super Anleitung. Läuft seit 4 Monaten und nun habe ich seit zwei Tagen Probleme. Ich komme nicht mehr auf den Controller, bzw wird dieser als offline angezeigt. Das Netzwerk (AP, VPN, etc..) läuft im Moment noch.

    Ein Rechte-Problem? Irgend eine Idee?

    Danke + Gruss

    Armin

    Hier mal ein Auszug aus dem Log:

    2021-03-08 16:18:34 stdout 2021-03-08 16:18:34,648 main ERROR Unable to locate appender “server_log” for logger config “root”
    2021-03-08 16:18:34 stdout 2021-03-08 16:18:34,622 main ERROR Null object returned for RollingFile in Appenders.
    2021-03-08 16:18:34 stdout WARN Unable to load properties from ‘/usr/lib/unifi/data/system.properties’ – /usr/lib/unifi/data/system.properties (Permission denied)
    2021-03-08 16:18:34 stdout
    2021-03-08 16:18:34 stdout at com.ubnt.ace.Launcher.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.o00000(Unknown Source)
    2021-03-08 16:18:34 stdout at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:708)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:691)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:618)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:234)
    2021-03-08 16:18:34 stdout 2021-03-08 16:18:34,333 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
    2021-03-08 16:18:34 stdout
    2021-03-08 16:18:34 stdout at com.ubnt.ace.Launcher.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.o00000(Unknown Source)
    2021-03-08 16:18:34 stdout at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:708)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:691)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:618)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115)
    2021-03-08 16:18:34 stdout 2021-03-08 16:18:34,330 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@4ae3c1cd] unable to create manager for [logs/server.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@29f69090[pattern=logs/server.log.%i, append=true, bufferedIO=true, bufferSize=8192, policy=SizeBasedTriggeringPolicy(size=10485760), strategy=DefaultRolloverStrategy(min=1, max=3, useMax=false), advertiseURI=null, layout=[%d{ISO8601}] %-5p %-6c{1} – %m%n, filePermissions=null, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@4ae3c1cd] unable to create manager for [logs/server.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@29f69090[pattern=logs/server.log.%i, append=true, bufferedIO=true, bufferSize=8192, policy=SizeBasedTriggeringPolicy(size=10485760), strategy=DefaultRolloverStrategy(min=1, max=3, useMax=false), advertiseURI=null, layout=[%d{ISO8601}] %-5p %-6c{1} – %m%n, filePermissions=null, fileOwner=null]]
    2021-03-08 16:18:34 stdout
    2021-03-08 16:18:34 stdout at com.ubnt.ace.Launcher.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.(Unknown Source)
    2021-03-08 16:18:34 stdout at com.ubnt.service.system.if.o00000(Unknown Source)
    2021-03-08 16:18:34 stdout at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
    2021-03-08 16:18:34 stdout at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:708)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:691)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:618)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:641)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:657)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:135)
    2021-03-08 16:18:34 stdout at org.apache.logging.log4j.core.util.FileUtils.mkdir(FileUtils.java:118)
    2021-03-08 16:18:34 stdout 2021-03-08 16:18:34,322 main ERROR Unable to create file logs/server.log java.io.IOException: Could not create directory /usr/lib/unifi/logs
    2021-03-08 16:18:33 stdout [2021-03-08 16:18:33,464] Starting unifi controller service.

  13. Hallo Martin

    Danke für diese super ausführliche und für mich als Laie verständliche Anleitung.

    Ich habe bereits seit einem Jahr 3 UniFi APs, einen UniFi PoE Switch und ein UniFi Security Gateway im Einsatz. Controller läuft auf meinem Mac. Alles funktioniert bestens. Ich habe noch ein Synology NAS 1512+ und hatte nun die Idee den Controller dort laufen zu lassen und bin wie gesagt auf deine Anleitung gestossen und habe den Controller wie von dir beschrieben installiert. Nun habe ich 2 Controller: derjenige auf dem Mac der aktiv ist und nun noch denjenigen auf dem NAS. Ich stehe gerade auf dem Schlauch und würde mich über deine Hilfe freuen. Ich nehme mal an, dass ich nun den Controller auf dem NAS einrichten müsste. Frage: Kann ich die Einstellungen des Controllers auf dem Mac für die Controller Einstellungen auf dem NAS migrieren? Woher weiss ich dann welcher Controller aktiv ist?
    Du hast in der Anleitung etwas von „setinform“ geschrieben. Wo wird dieser setinform Befehl geschrieben? Entschuldige, wenn meine Fragen lächerlich, aber ich bin Laie 🙂

    1. Hallo Philip,
      ist die Controller Version gleich? Ich habe das noch nie ausprobiert, würde aber sagen das es funktionieren müsste.
      setinform über SSH.
      Viele Grüße
      Martin

      1. Hallo Martin
        Ich bin nach meiner Anfrage an dich mal mit “Augen zu” darauf los und habe ein Backup der Einstellungen des auf meinem Mac laufenden Controllers gemacht und dieses Backup dann importiert für die Einstellungen des auf dem NAS laufenden Controllers –> Funktioniert. ich kann via der “UniFi Network” App auf meinem iPhone alles überwachen. Cooel Sache. Leider kann ich aber seit heute nicht mehr auf den Controller zu greifen mit der Adresse 192.168.x.x:8443, aber das kriege ich schon hin. Was mich bsiher stutzig macht, ist, dass ich nie diesen “setinform” Befehl, wie du es vorschlägst, benutzt und trotzdem läuft das Ganze. Egal, vielleicht muss man nicht immer alles verstehen 🙂
        Dumme Frage von mir: was bedeutet SSH?

        Danke für deinen wertvollen Support und viele Grüsse
        Philip

  14. Moin Martin,

    wirklich gute Erläuterung! Ich hatte lediglich Probleme, den Schritt rund um SSH zu lösen (setinform). Wenn man das noch nie gemacht hat, steht man erst mal auf dem Schlauch.

    Also für alle, die das nicht sofort verstanden haben, den SSH-Befehl gibt man im Windows-Eingabefenster ein.

    1. IP-Adresse des neuen AP in Erfahrung bringen
    2. Eingabeaufforderungsfenster öffnen (Windows-R, dann cmd eingeben)
    3. Den Anleitungen unter https://chrisjean.com/ssh-into-ubiquiti-access-point/ folgen

    Schöne Grüße
    Pat

  15. guten Tag
    super anleitung und ein herzliches Dankeschön dafür.

    ICh stehe gerade an dem Punkt wo ich https://IP:port eingegeben habe und ich von dem COntroller begrüßt werde.
    Nun möchte er nach der Benennung des COntrollers einen bENUTZER UND EIN pASSWORT: Muss ich mich jetzt bei ubiquiti registrieren bzw einen acc zulegen das ich mich auf diesen controller der im docker auf meiner ds920+ läuft?
    oder muss ich auf der ds bzw im container noch einen benutzer anlegen?

    vielen dank erstmal 😉

    mfg
    lars

Schreibe einen Kommentar zu Martin Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.