+++
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.
![Vaultwarden Screenshot](vaultwarden.png)
#### 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 drastisch 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.
![Vaultwarden Screenshot](checkmk-status.png)
#### 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)



