BioBrause

DID
Digital Independence Day

Känguru


Der "Digital Independence Day" - der Tag, an dem wir uns digital von Abhängigkeiten lösen und die Kontrolle über unsere Daten zurückgewinnen wollen. Für mich bedeutet das nicht nur ein abstraktes Konzept, sondern einen konkreten Schritt: Mein eigener Server. Auf diesem kleinen Rechenzentrum-Residenz möchte ich meine Webseiten, Anwendungen und Daten selbst verwalten – frei von den Zwängen großer Tech-Giganten.

Dieses Projekt ist mehr als nur Technik. Es ist ein Ausdruck meiner persönlichen Unabhängigkeit im digitalen Raum.

In diesem Text teile ich mein Abenteuer mit euch: die Herausforderungen der Serverkonfiguration, die Freude am eigenen "Server-Knowhow" und natürlich die Befriedigung, den Digital Independence Day jeden Tag aufs Neue zu leben."



Zuerst wird in meinem Fall mit Vmware Workstation eine lokale Maschine aufgesetzt.
4 CPU Kerne, 4 GB Arbeitsspeicher und wichtig für den späteren Server 2 Festplatten, da das System gleich auf ein RAID 1 vorbereitet werden soll.
So weiß man, dass alle nötigen Pakete installiert und eingerichtet sind.
Im späteren Verlauf wird eine Web-Oberfläche installiert, Virtualmin.

Damit werden die Domains, die auf dem Server laufen, und die Benutzer erstellt und verwaltet.
Als Firewall kommt CSF Firewall zum Einsatz.

Die aktuelle Version von CSF und Virtualmin hatten mit Debian 13 noch ein paar kleinere Probleme. Vor ein paar Versionen hat Debian angefangen das Logsystem von klassischen Logdateien unter /var/log auf Journal/SystemD umzustellen.
Anstatt jetzt Syslog auf einem aktuellen Debian nach zu installieren und vor allem Dingen anpassen zu müssen, habe ich mich dazu entschlossen in der VM mit Debian 9 anzufangen.

Und dann diese alte Version - die man auf keinen Fall in einem Rechenzentrum laufen lassen sollte -  auf die Debian 12 updaten. Das bekommt noch lange genug Updates, und ein Update von 12 auf 13 sollte kein Problem sein.

Nachdem dieses Grundsystem dann auf Debian 12 geupdatet wurde, haben wir eine virtuelle Maschine, die in einer RAID 1 Konfiguration läuft.
Wir haben Zugang per SSH.
Dann können wir die VM in ein TAR-Archiv einpacken, dazu nutzen wir die SystemRescueCD Diese sind in der VM gebootet und speichern die VM dann in einer Imagedatei. Dieses Image können wir dann auf der Server übertragen.

Wir werden dann den Hetzner Server im Rescue Modus booten.
Dort ein RAID-Verbund einrichten und Partitionen anlegen.
Das Server Image, was zu Hause erstellt wurde, auf diesen RAID Verbund entpacken.
Das System bootfähig machen und hoffen nix vergessen zu haben!
Den Server neu starten und hoffentlich unser eigenes Debian auf dem Hetzner Server im RZ installiert zu habeb.

Jetzt geht es an das Anpassen des Systems.
Also eigene Tools installieren, Sudo einrichten, die Debian 12 Repositories einrichten, Grub anpassen, die Bash-Autovervollständigung, IPv6 abschalten.

Der Server wird IPv4 only - im ersten Schritt.
IPv6 kommt später. Ich will mich im Moment noch nicht mit zwei Protokollen gleichzeitig rumschlagen.

Dann wird ein Default Editor auf der Konsole festgelegt.
Beim Login sollen verschiedene Status-Informationen angezeigt werden, welche Installation ist gebootet? Server oder Rescue? Ist das RAID okay? Wir lassen uns mit Neofetch noch zusätzliche Informationen zum System anzeigen.

Wir stellen die Datei "rc.local" wieder her. Eine Art "old-school" autoexec.bat nur für Linux. Nicht ganz so konfortable wie SystemD Scripte, aber gut um nur schnell mal einen Befehl beim Hochfahren ausführen zu lassen.

Es werden eigene Ordner für unsere eigenen Scripte erstellt, verbessert die übersicht.
Der SSH Dienst wird noch weiter abgesichert.

Steht dieses Grundsystem wird ein Backup erstellt und das System zusätzlich auf einer 2. Partiton als Rescue-System in Grub eingebunden.

Man kann dann über einen Befehl auf der Konsole einfach das voreingerichtet Rescue-System hochfahren. Zwar bietet Hetzner als Serverhoster auch ein Rescue System an, hier sind aber die Einstellungen so gesetzt das sie für alle Benutzer aller Server bei Hetzner passen müssen.
Ausserdem muss man sich immer in die Weboberfläche von Hetzner einloggen um das Rescue System von Hetzner zu nutzen.

Bei unserem System reicht ein einfaches "sudo reboot_to_rescue" und nach 2 Minuten ist das Rescue System bereit um ein komplettes Systembackup zu machen. Das wäre zwar auch aus dem laufenden Server System möglich, ist aber nicht ganz so sauber.

Danach wird Virtualmin installiert.
Virtualmin ist eine Konfigurationsoberfläche für Web Server. Es unterstützt Dienste wie Postfix, Apache, MySQL. Also ein All-in-one-Tool.
Die Programme werden nicht nur installiert und konfiguriert, sondern man kann damit auch die Domains erstellen. Man erspart sich damit das manuelle Einrichten auf der Konsole. Wenn man sich da mal vertippt.... das macht keinen Spaß.

Und ganz besonders das Einrichten, zum Beispiel von Apache Server macht Virtualmin viel einfacher. Man kann nur noch per HTTPS auf die Webseiten kommen, eine sichere Verschlüsselung wird eingerichtet – HTTPS ist leider nicht mehr HTTPS! Stichwort Cipher.

Alles, was Virtualmin macht, könnte man auch auf der Konsole machen.
Es speichert alle Einstellungen in den Konfigurationsdateien der entsprechenden Dienste.
Aber es geht halt sehr viel schneller. Wir werden die dann immer wieder die Virtualmin-Konfiguration checken lassen – von Virtualmin selbst!

Virtualmin wird auch die Systemzeit regelmäßig checken. Das kann man individuell einstellen, ich setze die Zeit viermal am Tag, also alle sechs Stunden.
Ist auf einem Privatserver jetzt nicht sooo wichtig, wir sind ja kein Big Data Rechenzentrum.
Aber die korrekte Zeit ist aber doch wichtig z.B. Für Email oder die Logfiles.
Eine PC Uhr läuft pro Tag ein paar Sekunden vor oder zurück – sich also nur darauf zu verlassen... keine gute Idee.

Virtualmin wird uns automatisch informieren wenn es Systemupdates geben sollte.
Systemupdates lasse ich grundsätzlich nicht automatisch installieren. Ich möchte wissen wann da was warum installiert worden ist.

Nachdem Virtualmin den Mailserver Postfix installiert hat, werden wir da noch ein paar Einstellungen vornehmen. Zum Beispiel die maximale Größe einer E-Mail, die angenommen wird.
Der FTP Server ProFTPd wird so eingestellt, dass Benutzer nur in ihrem Home-Verzeichnis aktiv sein können. Sie können also nicht auf die Daten anderer Nutzer zugreifen.

Der Zugriff auf die Virtualmin Oberfläche erfolgt über Benutzername und Kennwort. Hier fügen wir noch eine zweite Authentifikation hinzu, welche kompatibel zu Google Authenticator ist... Mehr Sicherheit.

Wir werden Virtualmin so einstellen, dass es keine unnötigen Module anzeigt, sondern nur, dass in der Oberfläche angezeigt wird, was wir auch nutzen können und wollen.

Wir richten dann tägliche Backups von Konfigurationsdateien ein. Virtualmin benutzt hier eigentlich das Programm etckeeper. Es ist allerdings von der Oberfläche her nicht so schön gelungen... (Hat es überhaupt eine?) wie ich finde.

Ich nutze hier einfach ein Backup des Ordners /etc, was einmal am Tag durchgeführt wird. Die Daten sind nicht sonderlich gross, sind ja nur Konfigurationsdaten. Und wir werden noch Email auf der Konsole einrichten.

Nachdem das Grundsystem dann steht, wird Virtualmin vernünftig eingerichtet.
Wir brauchen einen Hostnamen in Virtualmin, der zum Server passt. Dafür werden dann auch automatisch SSL-Zertifikate erstellt - und vor allem wird dieser Domain Name, der Hostname, als Default in Virtualmin gesetzt und die Zertifikate, die dort erstellt werden, werden dann auch für Postfix, Dovecot, Apache (Für die Domain hostname.domain.tld), VIrtualmin und MySQL zu benutzt.

Nachdem das Grundsystem installiert wurde und Virtualmin eingerichtet wurde, wird es Zeit das System NOCH WEITER abzusichern.

Hier nutzen wir die CSF Firewall.
Das steht für "ConfigServer Security & Firewall". Das Programm wurde bis Ende 2025 von einer englischen One-Man-Firma geschrieben. Der Support wurde leider eingestellt. Die Firma gibt es nicht mehr. Es ist jetzt ein Community-Projekt.

Das ist halt das Schöne an Open Source. Die CSF-Firewall nutze ich schon länger. Es ist nicht nur eine Firewall, die Ports blockiert, sondern sie wertet auch Log-Files aus, sperrt entsprechend nach Regeln bestimmte Angreifer.
Ist im Grunde genommen das, was "Fail2Ban" macht... Aber mehr Optionen und dafür auch schwerter einzurichten.

In Virtualmin wird eine Web-Oberfläche für CSF eingebaut. Es gibt eine grafische Log-Auswertung und wir werden noch ein paar CSF Tools installieren, die ich selber geschrieben habe.
Sie machen uns das Arbeiten mit der Firewall etwas leichter.

Gerade am Anfang bekommt man von CSF viele Status-Mails mit Diensten die laufen. Man will aber wahrscheinlich nicht jeden Tag 1000 Mails haben, weil CSF alle 2 Minuten checkt, was so los ist auf 127.0.0.1!
CSF wird bestimmte Dienste die unter bestimmten Benutzern laufen "whitelisten", so dass CSF weiß Dienst darf laufen und verschickt keine "Alarm Mail".

Da wir schon einen Server mit jeder Menge Arbeitsspeicher und viel Festplatten Platz haben, installiere ich zusätzlich noch Oracle VirtualBox, um auf dem Server auch virtuelle Maschinen betreiben zu können.
Die Verwaltung dieser virtuellen Maschinen kann man entweder über die Kommandozeile steuern, dazu gibt es ein Skript, oder um es noch einfacher zu machen, wird auf dem System noch PHPVirtualBox installiert.
Dann kann man das Ganze über eine grafische Web-Oberfläche machen.

Wir danach an unsere eigenen Dienste zu installieren und zu konfigurieren.

Da ist zum einen Syncthing, ein Programm, das es PCs untereinander ermöglicht Daten zu synchronisieren und abzugleichen - oder auch vom Handy.
Macht man Fotos auf dem Handy so werden diese automatisch auf dem Server gespeichert.

Wir werden die Log-Dateien für Syncthing über Logrotate verwalten lassen. Sodass die Log-Dateien nicht riesengroß werden, man aber immer ein paar Tage zurückgehen kann und zu schauen was da los ist, so wie es unter Linux auch üblich ist.

Das gleiche machen wir noch für rsyncd, den rsync Dienst. rsync ist auch zum Datei synchronisieren hat allerdings jetzt nicht unbedingt den Charme eines Syncthing Clients.
Vor allen Dingen kann Syncthing auf dem PC (Desktop) immer im Hintergrund laufen. Rsync muss man immer aufrufen oder per Script steuern.

Danach sollte der Server incl. seinem eigenen Rescue System "Feature-Ready" sein...

Zeit den DID zu feiern...

z.B. mit NextCloud für Kontakte, Termine, Online Besprechnungen..
Oder etwas kleiner und einfacher Baïkal oder Radicale mit InfCloud als WebUI um schnell und einfach nur CardDAV Einträge mit der FritzBox, dem Handy und Thunderbird syncron zu halten?

Eigenen eigenen TeamSpeak Server als Ersatz für Discord!
Einen XMMP Server zum chatten mit Freunden auf der ganzen Welt!
Eigener Mastodon Server...