
DID
Digital Independence Day

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...