UniFi kommt auf einem Debian 11 Bullseye nicht hoch

Da am Freitag die SSD in einem meiner Lenovo-Laptops das Zeitliche gesegnet hat, musste ich das System komplett frisch aufsetzen.

Ich verwende diesen Laptop als Site-to-Site OpenVPN-Endpunkt. Mit der Zeit habe ich dort auch andere Software draufgeknallt, zum Beispiel den UniFi Controller zum Management der Netzwerk-Komponenten in der Aussenstation.

Bei der Installation des UniFi Controllers das erste Problem: Debian 11 Bullseye bietet kein MongoDB-Paket (mehr) an:

# apt-get install unifi
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
unifi : Depends: mongodb-server (>= 2.4.10) but it is not installable or
mongodb-10gen (>= 2.4.14) but it is not installable or
mongodb-org-server (>= 2.6.0) but it is not installable
Depends: mongodb-server (< 1:4.0.0) but it is not installable or
mongodb-10gen (< 4.0.0) but it is not installable or
mongodb-org-server (< 4.0.0) but it is not installable
E: Unable to correct problems, you have held broken packages.

Auf einem Referenzsystem war folgende MongoDB installiert:

# dpkg --list | grep -i mongo
ii mongo-tools 3.4.14-4 amd64 collection of tools for administering MongoDB servers
ii mongodb-clients 1:3.2.11-2+deb9u2 amd64 object/document-oriented database (client apps)
ii mongodb-server 1:3.2.11-2+deb9u2 amd64 object/document-oriented database (server package)

Mittels packages.debian.org fand ich dann rasch heraus, dass diese Pakete in Debian 9 Stretch enthalten waren. Damit ich diese installieren konnte, musste ich /etc/apt/sources.list anpassen:

...
deb https://debian.ethz.ch/debian/ stretch main non-free
deb-src https://debian.ethz.ch/debian/ stretch main non-free
...

Damit klappte die Installation von MongoDB und des UniFi Controllers.

Leider kam UniFi nach der Installation aber nicht hoch. Wenn ich die auf dem funktionierenden System gespeicherte URL ansurfte, erschien eine HTTP Status 404 – Not Found Fehlermeldung im Java-Layout:

Nach etwas Recherche und dem Vergleich mit einem baugleichen System an einer anderen Aussenstelle dann die Erkenntnis: Der UniFi Controller läuft ausschliesslich mit Java 8 (Running Unifi Controller on Java 9, 10 and 11). Auf dem neuen Debian hatte ich aber Java 17 (?) installiert gehabt.

Obwohl How can I install Java 8 on Debian 11 (Bullseye)? Hinweise gibt, wie man Java 8 zum Laufen kriegt, wählte ich den einfachsten Weg — über ein offizielles Debian-Paket: Ich hatte nämlich Glück: Den Zugang zu einem offiziellen Java 8-Paket hatte ich mir über die obigen Anpassungen von apt.sources bereits etabliert. Das Paket installierte ich folgendermassen:

# apt-get update
# apt-get install openjdk-8-jre-headless

Da ich noch eine Java 17-Installation auf dem System existieren hatte, war diese als Standardversion eingestellt:

# java --version
openjdk 17.0.4 2022-07-19
OpenJDK Runtime Environment (build 17.0.4+8-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 17.0.4+8-Debian-1deb11u1, mixed mode, sharing)

Da ich Java 17 nicht brauchte, entfernte ich das Paket kurzerhand:

# apt-get remove openjdk-17-jre-headless

Wer aber auch auf dieses Paket angewiesen ist, kann folgendermassen Java 8 als Standard auswählen:

# update-java-alternatives --list
java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
# update-alternatives --config java

Anschliessend kam der UniFi Controller hoch. Nun nur noch ein Backup einspielen, und der Controller funktionierte wieder wie vor dem Festplattendefekt.