109 lines
6.5 KiB
Markdown
109 lines
6.5 KiB
Markdown
+++
|
|
title = "Self-Hosting"
|
|
description = "Meine kleine aber feine Infrastruktur"
|
|
weight = 1
|
|
template = "page.html"
|
|
|
|
[taxonomies]
|
|
tags = ["selfhosting","linux"]
|
|
|
|
[extra]
|
|
local_image = "img/server_icon.svg"
|
|
+++
|
|
##### Stand 27.03.2026
|
|
## Einleitung
|
|
Der folgende Artikel gibt einen Überblick zur aktuellen Architektur meiner privaten IT-Infrastruktur.
|
|
Ich hatte mir am Anfang meines Studiums einen Raspberry Pi 4 gekauft und als ich mit dem Experimentieren
|
|
fertig war, suchte ich nach einem sinnvollen Verwendungszweck. So bin ich zum Self-Hosting gekommen.
|
|
|
|
## Warum Self-Hosting?
|
|
* **Digitale Souveränität** - Unabhängigkeit von Konzernen
|
|
* **Lernen** - (Kennen)lernen diverser Technologien
|
|
* **Preis** - einige Services sind deutliche günstiger, wenn man sie selbst betreibt
|
|
* **Datenschutz** - man entscheidet komplett selbst welche Daten wo vorliegen
|
|
|
|
## Infrastruktur
|
|
Meine Self-Hosting Infrastruktur besteht aktuell aus sieben Maschinen. Fünf davon sind VPS
|
|
(**V**irtual**P**rivate**S**erver) die ich bei einem Cloud-Dienstleister anmiete. Bei den
|
|
restlichen Servern handelt es sich um Raspberry Pis verschiedener Generationen. Die Pis sind
|
|
über einen kleinen Netgear Switch per Ethernet verkabelt, da ich großen Wert auf stabile
|
|
Verbindungen und geringe Latenzen lege.
|
|
|
|
Auf den VMs läuft überall Debian, auf den Raspberries Arch.
|
|
Ich komme eigentliche mit jedem Linux Distro gut zurecht,
|
|
aber ich nutze privat am liebsten Arch, weil mich das Rolling-Release Modell überzeugt und
|
|
ich das Paketmanagement mit Arch (pacman, AUR usw.) mag.
|
|
|
|
## Architektur
|
|
|
|
```
|
|
..........................
|
|
: ____________ _____:______ ____________
|
|
: | [ VM1 ] | | [ VM3 ] | | [ VM5 ] |
|
|
: | PW-Manager | | Monitoring | | jumphost |
|
|
: |____________| |____________| |____________|
|
|
: : ____________ : ____________ |:|
|
|
: : | [ VM2 ] | : | [ VM4 ] | |:|
|
|
: : | benji0x3c | : | Git-Repo | |:|
|
|
: : |____________| : |____________| |:|
|
|
: :..........:.........:........:..... |:|
|
|
: : wg-Tunnel&
|
|
:..SSH.......... : SSH
|
|
: SSH |:|
|
|
Cloud : : |:|
|
|
---------------:-----------------------:----|:|--------
|
|
On-Prem :____________ :____|:|_____
|
|
| [ Pi2 ] | | [ Pi1 ] |
|
|
| darkstat |...SSH....| Backups |
|
|
| DiscordBot | | Ansible |
|
|
|____________| |____________|
|
|
```
|
|
Die Ascii-Grafik skizziert den groben Aufbau meiner Infrastruktur und ist relativ selbsterklärend.
|
|
Einige Details möchte ich dennoch hervorheben:
|
|
+ da Pi1 der die Maschine ist von der Ansible Automationen gestartet werden können, liegt sein public-key auf jedem anderen Server
|
|
+ da Pi1 und Pi2 nicht vom Monitoring Server erreicht werden können, pushen sie ihre Telemetrie-Daten selbstständig per SSH
|
|
+ um mein lokales Netz aus der Distanz warten habe ich eine externe VM per VPN Tunnel mit Pi1 verbunden
|
|
|
|
## Anwendungen
|
|
Im folgenden werde kurz Auflisten welche Anwendungen ich betreibe.
|
|
#### Passwort-Manager: Vaultwarden
|
|
Ich betreibe [Vaultwarden](https://github.com/dani-garcia/vaultwarden), ein Passwort-Management-Server für den Selbstbetrieb.
|
|
Der Server ist mit Bitwarden Clients kompatibel und wird inoffiziell auch von Bitwarden Entwicklern unterstützt. Außerdem
|
|
läuft auf der VM Fail2Ban um Clients mit zu vielen falschen Passworteingaben zu sperren.
|
|

|
|
#### Webseite: benji0x3c
|
|
Auf einer anderen VM läuft diese statische Webseite. Dafür nutze ich [Zola](https://github.com/getzola/zola) mit dem [tabi](https://github.com/welpo/tabi) Theme.
|
|
Ich finde statische Seiten sehr praktisch und glaube, dass sie für viele Anwendungsfälle völlig ausreichen.
|
|
Dadurch ließe sich auch die Menge an unsicheren Webauftritten drastische reduzieren.
|
|
#### Monitoring: Checkmk
|
|
Natürlich braucht jede Infrastruktur ein Monitoring. Ich nutze dafür [Checkmk](https://checkmk.com/), weil mir die Benutzeroberfläche gefällt und es für mich gut funktioniert.
|
|
Da ich auf meinem Router kein Port-Forwarding aktivieren möchte, aber der Monitoring-Server die Agents kontaktieren muss, pushen die Raspberries ihren Output
|
|
selbständig per SCP auf den Server. Ich habe außerdem eine Reihe an eigenen Checks per Shell-Script gebaut, die z.B. den Wireguard Tunnel oder das Alter der Backups überwachen.
|
|

|
|
#### Git-Repo: Gitea
|
|
Ich hoste eine [Gitea](https://about.gitea.com/) Instanz für meine Repositories. Ich habe lange Github benutzt, aber einerseits finde ich die Repo-Verwaltung dort relativ umständlich,
|
|
anderseits möchte weiß man bei Github mittlerweile nicht mehr wofür die eigenen Repositories genutzt werden.
|
|
#### jumphost
|
|
Ich habe eine sehr kleine VM die ich ausschließlich als Jumphost benutze, um aus dem WAN auf mein lokales Netzwerk zugreifen zu können.
|
|
#### Backups: rsync
|
|
Auf einem der Raspberries läuft täglich ein Backupscript, welches die Backups von meinem Desktop-Rechner und den VPS Maschinen in der Cloud schreibt.
|
|
Dafür nutze ich rsync um nur das Delta schreiben zu müssen und nicht bei jedem Durchlauf alles zu kopieren.
|
|
Dabei werden aber nur für Daten mit sinnvollem Kosten-Nutzen Verhältnis Backups geschrieben, da ich Platz sparen möchte. Perspektivisch möchte ich regelmäßige
|
|
Snapshots dieses Backups in ein Cloud schreiben, das ist aber aktuell aus Budget-Gründen noch nicht implementiert.
|
|
#### Netzwerkanalyse: Darkstat
|
|
Außerdem läuft auf einem der Pis [darkstat](https://unix4lyfe.org/darkstat/), ein Netzwerkanalyse-Tool, dass ich ausprobiert habe weil es extrem wenig Ressourcen benötigt und sehr praktisch ist,
|
|
wenn man mehrere Geräte in einem Netzwerk verwaltet.
|
|
#### DiscordBot
|
|
Des weiteren läuft ein DiscordBot auf einem RaspberryPi, den ich selbst in Rust geschrieben habe. Der Bot wird nur von meinen Freunden und mir verwendet und braucht deshalb
|
|
nicht viele Ressourcen.
|
|
|
|
## Fazit& Ausblick
|
|
Es macht mir großen Spaß Anwendungen selbst zu hosten und die dafür benötigte Infrastruktur zu warten. An meinem aktuellen Setup gibt es aber noch vieles zu verbessern
|
|
und ich lerne fast jede Woche dazu. Einige Pläne habe ich schon, sobald ich Geld für die benötigte Hardware übrig habe:
|
|
* redundante Backups mit RAID
|
|
* ein Intrusion-Detection-System auf einem Pi mit etwas mehr RAM (z.B. [Suricata](https://suricata.io/))
|
|
* einen kleinen Bildschirm mit Monitoring Informationen (z.B. Per Pi Zero)
|
|
|
|
|
|
|