Zum Inhalt springen
IT // Adventures

UniFi Controller Installation

Installation der UniFi Controller Software als Service unter Windows Server 2019 mit AdoptOpenJDK.

1 Min. Lesezeit

Vorbereitung

Zur Vorbereitung alle nötigen Komponenten herunterladen:

  • UniFi Network Controller 5.x.y for Windows (Link)
  • AdoptOpenJDK Version 8, LTS, Hotspot (Link)
  • Apache Commons Daemon (Link)

Problem

Das Setup des Controllers als Windows Service wird durch die Architektur und die Verwendung von AdoptOpenJDK 64-Bit ein wenig erschwert.

  1. Problem: der von UniFi Service Controller (Apache Commons Daemon Service Runner) wird mit einer Service-Config ausgeliefert, die mit der 64-Bit JVM nicht automatisch zurechtkommt.
  2. Problem: die UniFi Setup-Routine installiert das Verzeichnis des Controllers im Benutzerprofil des ausführenden Users! Der Support-Eintrag in der UniFi Knowledgebase ist dazu leider auch nur bedingt hilfreich: Run the Controller as Windows Service

Lösung

Die sauberste Service-Installation ist daher…

  1. AdoptOpenJDK installieren und im Assistenten die Option “Oracle Java Registry Keys” aktivieren.
  2. Die Apache Commons Daemon Binaries ins Verzeichnis <C:\Program Files\Apache Commons Daemon\> entpacken.
  3. Den UniFi Controller installieren und die Grundkonfiguration durchführen.
  4. Den Controller stoppen und das gesamte Verzeichnis “Ubiquiti UniFi” aus dem Benutzerprofil nach <C:\Program Files\> verschieben.
  5. Den UniFi Controller Service anlegen (s. Script unten)
  6. Die aktuellen Binaries für den Apache Commons Daemon und die Zip-Datei ins Verzeichnis <C:\Program Files\Apache Commons Daemon> entpacken.
    • Im Verzeichnis liegt das Service-Konfigurationstool “prunmgr.exe”
  7. Das Konfigurationstool prunmgr.exe mit dem Parameter //ES//UniFi aufrufen und im Reiter
    • “Java” die Java Virtual Machine im AdoptOpenJDK-Verzeichnis <C:\Program Files\AdoptOpenJDK\jdk-8.0.x.y.z-hotspot\jre\bin\server\jvm.dll> hinterlegen. (s. Screenshot unten)
    • “Log on” den Benutzer “Local Service” hinterlegen. (Security, damit der Controller-Prozess nicht als “Local System” läuft.)

UniFi Controller Service Eigenschaften

Hier noch ein paar Befehle, die den oben beschriebenen Vorgang erleichtern:

// Service installieren
cd "C:\Program Files\Ubiquiti UniFi\"
java.exe -jar lib\ace.jar installsvc

// Service deinstallieren
cd "C:\Program Files\Ubiquiti UniFi\"
java.exe -jar lib\ace.jar uninstallsvc
​
// Apache Daemon Service-Konfigurationstool öffnen
cd "C:\Program Files\Apache Commons Daemon\"
prinmgr.exe //ES//UniFi

Update-Installation

Das UniFi Setup erwartet für ein Update, dass die Installation im Benutzerprofil (vom eigenen User) liegt. Daher verlinken wir dort das UniFi Verzeichnis per Hardlink:

New-Item -ItemType SymbolicLink -Path "$($env:USERPROFILE)\Ubiquiti UniFi" -Target "$($env:ProgramFiles)\Ubiquiti UniFi\"