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.

Sophos UTM9 crash dumps füllen Festplatte

In seltenen Fällen kann es passieren, dass die Festplatte der UTM voll läuft. Dies wird dadurch verursacht, dass abstürzende Dienste einen „crash dump“ erzeugen, welcher auf der System Partition abgelegt wird. Um dies zu kontrollieren kann man sich per SSH auf der UTM einloggen. Der SSH-Login muss zuerst unter „Verwaltung -> Systemeinstellungen -> Shell-Zugriff“ freigeschaltet werden.

Nach dem Login auf der UTM kann man in den Ordner

cd /var/storage/cores/

wechseln. Dieser Ordner enthält alle Dumps, die das System angelegt hat. Die Dumps sind hauptsächlich für den Support gedacht. Sollte es wirklich so sein, dass die Festplatte fast voll ist können auch größere und Ältere Dumps einfach gelöscht werden.

Diese Änderungen und Löschaktionen sollten nur von Leuten durchgeführt werden, die sich mit Linux auskennen und wirklich wissen was sie tun. 

CSSD Crash

Dieser Beitrag resultiert daraus, dass ich ein Problem mit dem CSSD Dienst hatte. Anscheinend war es so, dass sich die Antiviren-Pattern nicht mehr korrekt geupdatet haben und dadurch der Dienst abgestürzt ist.

Nach einem Beitrag im Forum war ein manuelles Update die Lösung.

audld.plx --nosys --types=savi --nopatchup2date

Mit dem obigen Befehl lässt sich das Update manuell durchführen. Das Update sollte an dieser Stelle einwandfrei durchlaufen.

Sophos Forum CSSD Crash

einige Fehler werden auch nach Meldung durch Sophos recht schnell wieder behoben. Sollte das manuelle Update nicht funktionieren gibt es die Möglichkeit die Scan-Engine zu wechseln. Die Engine kann unter „Verwaltung -> Systemeinstellungen -> Scan-Einstellungen“ von Sophos auf Avira zum testen gewechselt werden. Danach sollte man erstmal im Auge behalten, ob die Dumps weiterhin auftreten und man weiterhin Probleme hat.

Linux Man-Page in PDF umwandeln

Falls ihr auch mal wieder das Problem habt, dass ihr in Ruhe eine Man-Page auf eurem Kindle oder anderem E-Book-Reader lesen wollt, gibt es eine einfache Möglichkeit. Man kann mit dem Tool ps2pdf die Man-Page einfach in eine PDF umwandeln.

man -t curl | ps2pdf - curl.pdf

Der Befehlt ps2pdf ist im Normalfall schon auf einem Linux-System installiert und kann verwendet werden. Sollte dieser nicht zu finden sein, kann er mit apt oder einem anderen Paketmanager gesucht und installiert werden.

Dies kann sehr hilfreich sein, wenn die Man-Page man wieder ein bisschen länger ist und man hierfür doch ein wenig mehr Zeit benötigt.

Eine andere Möglichkeit ist hier natürlich, mit dem internen Text-Browser im Kindle die Man-Page über Google zu suchen und aufzurufen. Ich finde dies aber teilweise recht anstrengend und schlecht lesbar.

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.