Unifi-Controller installation on Linux

My goal was to change a Unfi-Controller from a Windows-Server to a Linux-VM installed on Proxmox. So in general it should be easy but there were some problems coming up during the installation.

But first i have searched for a tutorial how to install it on Linux. There are some old tutorials that showed how to install the controller with MongoDB 3.6. The last version supports MongoDB 8 so there is a big difference.

Install MongoDB

After all it’s simple to install it you have only to add the repository for MondoDB to you Ubuntu installation. A tutorial is found here.

In general you can use the following commands.

sudo apt-get install gnupg curl

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudogpg-o/usr/share/keyrings/mongodb-server-8.0.gpg\
--dearmor

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Thats in that case enough for the dependency that is used in the DEB file from Ubiquiti.

Install Unifi-Controller

Now you can go to the Unifi-Website and download the controller for Linux. This should give a DEB-File for Debian. Or you use the repository then you get updates over the package manager.

sudo apt-get update && sudo apt-get install ca-certificates apt-transport-https

echo 'deb [ arch=amd64,arm64 ] https://www.ui.com/downloads/unifi/debian stable ubiquiti' | sudo tee /etc/apt/sources.list.d/100-ubnt-unifi.list

sudo apt-get update && sudo apt-get install unifi -y

The installation should go through and the controller is installed and working. After that you can open it with: https://[your-server-ip]:8080

Problems with installation

I had the problem, thats why i wrote this post, that the installation hang during the „configuration“ part of the apt install. After some investigation i found an error in the „/var/log/syslog“ that MondoDB is crashing and that is preventing the completion.

After some longer research it’s because MongoDB can’t read the CPU from the VM. This is because the CPU was not set to „host“ in the Proxmox CPU configuration.

After setting to „host“ the installation finished and the controller was working.

LPIC-2 Zertifizierung

In diesem Beitrag möchte ich gerne auf die LPIC-Prüfungen eingehen und meine Erfahrungen hierzu weiter geben. 

An sich würde ich von meiner Seite sagen, dass die Prüfungen schon ein hohes Maß an Wissen voraussetzt und man sich gut auf die Prüfungen vorbereiten muss, da man gerade in dem Bereich keine vorbereiteten Prüfungsfragen bekommt, die man einfach auswendig lernen kann, wie es oft bei anderen Prüfungen möglich ist.

Natürlich ist es auch an dieser Stelle möglich Prüfungsfragen als „Braindumps“ zu kaufen und diese auswendig zu lernen. Hiervon würde ich allerdings abraten, da dies keinen weiter bringt. Wenn man am Ende die Prüfung nur geschafft hast, weil die Fragen und Antworten auswendig gelernt wurden aber die Inhalte nicht verstanden wurden, bringt es niemanden weiter. Natürlich sieht es am Ende ggf. schön aus aber Firmen, die jemanden mit der Qualifikation einstellen erwarten natürlich auch etwas.

Übersicht

Die LPIC-Prüfungen 1 und 2 Prüfungen bestehen aus 60 Fragen, die in 90 Minuten beantwortet werden müssen. Dabei sind die Bereiche mit „Gewichtungen“ versehen, wo richtigen Antworten mehr Punkte bringen, als andere Bereiche. 

Die Fragen bestehen zum Teil aus Multiple-Choice aber auch aus Fragen, wo ein Textfeld frei ausgefüllt werden muss. Für LPIC-1 und 2 müssen jeweils 2 Prüfungen bestanden werden, damit die Prüfung bestanden und das Zertifikat ausgestellt wird. Nach einigen Tagen werden alle Unterlagen und das Zertifikat per Post zugeschickt. 

Ab LPIC-3 bestehen die Prüfungen aus 100 Fragen und 120 Minuten Prüfungszeit. Hier muss dann aber auch nur noch eine Prüfung für die Zertifizierung bestanden werden, was schwer genug ist sein dürfte, da die Themenfelder in allen Bereichen recht umfangreich sind. 

Vorbereitung

Nun ist die Frage, wie man sich am Besten auf die Prüfung vorbereiten kann. Es gibt verschiedene Bücher und Seiten, die ich für die Vorbereitung genutzt werden können. 

LPIC-2: Linux Professional Institute

Das Buch kann ich wirklich empfehlen, da es eine wirklich detaillierte Erklärung aller Befehle und Parameter enthält. Das Buch wird auch vom LPIC, auf der Website, empfohlen. 

A Cloud Guru LPIC-2 Kurs

A Cloud Guru ist eine Online-Plattform, die Kurse hauptsächlich für Zertifizierungen anbietet. Es gibt einen guten LPIC-2 Kurs, der die Inhalte recht schnell, anhand von praktischen Beispielen, in Videos vermittelt. 

Zudem gibt es eine IPad-App von SYBEX, welche für die Prüfungsvorbereitung genutzt werden kann, allerdings sind die Fragen recht tief in der Materie und haben am Ende mit den richtigen Prüfungsfragen nicht mehr ganz so viel zu tun.

Die Prüfung

Natürlich möchte ich an dieser Stelle nicht zu viel vorweg nehmen aber die Fragen bestehen meist aus Multi-Choice Fragen, Wörter / Befehlen, die in Lücken eingesetzt werden müssen oder Abläufe, die anhand von vorgegeben Texten sortiert werden müssen. 

Wichtig ist, dass man so viele Parameter, wie möglich, auswendig lernt, da es sein kann, dass man in den Antworten verschiedene Varianten eines Befehls gezeigt bekommt und man den korrekt identifizieren muss. Dabei können sich die Antworten mit Parametern nur leicht unterscheiden, was es teilweise ein wenig schwierig macht. Wenn man sich nicht sicher ist sollte man am Besten die unwahrscheinlichen Möglichkeiten zuerst ausschließen und dann schauen, was übrig bleibt. 

Die Prüfungen sind schon gut und Umfangreich und man sollte sich gut darauf vorbereiten. 

Bei Fragen stehe ich natürlich gern zur Verfügung.

Warum Unit-Tests in der Programmierung?

Ja die Frage warum man Unit-Tests verwenden sollte ist recht spannend, da es viele Gründe dafür aber auch einige wenige Gründe dagegen gibt. Aber fangen wir erstmal von vorne an:

Was ist ein Unit-Test?

Mit einem Unit-Test kann man kleinere Bereiche (Funktionen) eines Programms automatisiert testen. Dies hat den Vorteil, dass man so sicherstellen kann, dass immer das erwartete Ergebnis, bei der getesteten Funktion, zurück kommt.

Aber warum sollte man dies tun? Ganz einfach man muss nicht jedes Mal alle Funktionen neu testen und das Ergebnis händisch überprüfen. Wenn ein Unit-Test korrekt implementiert ist kann man davon ausgehen, dass hier der erwünschte Wert, geschweige denn das erwünschte Verhalten aus einer Funktion zurück gegeben wird.

Tools

Damit man Unit-Tests durchführen kann braucht man ein Tool, welches diese ausführt. Hier gibt es in jeder Programmiersprache verschieden Tools. Unter PHP ist dies PHPUnit und unter Java zum Beispiel JUnit. Auch für Javascript es hier Tools wie Jasmine, QUnit und so weiter.

Es gibt hier auch noch verschiedene Arten von Tests. Manchmal ist es sinnvoll nicht kleinere Units zu testen, sondern die Abläufe einer Software. Am Beispiel eines Shops wäre dies, dass man beispielsweise eine Bestellung ausführt. Hierzu muss man den Prozess durchlaufen und alle benötigten Felder füllen. Hierfür bietet sich eine Kombination aus Selenium und einem Unit-Test Tool an. Meist gibt es hier auch schon Schnittstellen um beides miteinander zu verbinden.

Bestehende Projekte/Code testen?

Wenn man so an das Agenturleben denkt kommt es hier ja eher vor, dass man bestehende Projekte hat, die gewachsen sind und teilweise noch prozedural programmiert sind. Diese lassen sich in der Regel schlecht testen, da es hier keine kleineren Teile (Units) gibt, die man auch gut testen kann. Sollte das Projekt Klassen und Funktionen verwenden, kann man eines der Tools von oben wählen.

Manchmal ist es hier auch sinnvoll nachträglich verschiedene Teile in Klassen und Funktionen auszulagern, um diese testen zu können und die Strukturen ein wenig aufzuräumen und zu verbessern.

Fazit

Unit-Tests können einem sehr das Leben erleichtern, da man bestehende Funktionen testen und absichern kann. Dies ist sehr hilfreich wenn man größere Teile eines Projektes umbauen muss. Nach den Umbauarbeiten kann man durch die Tests weiterhin sicherstellen, dass die Funktionen das korrekte Ergebnis liefern.

Ein weiterer Vorteil ist, dass man beim Schreiben der Unit-Tests tiefer über die Funktionen nachdenkt und teilweise weitere Fehler findet und diese direkt beheben kann.