Warum Self-Hosting?

Die Entscheidung für Self-Hosting ist keine ideologische, sondern eine pragmatische. Meine Gründe:

  • Kosten: Ein kleiner Dedicated Server kostet 30-50€/Monat. Vergleichbare AWS-Leistung das 3-5-Fache.
  • Datenkontrolle: Kein Vendor, kein Daten-Sharing, volle DSGVO-Kontrolle
  • Lerneffekt: Wer Infrastruktur selbst betreibt, versteht sie auch – das macht einen besseren Entwickler
  • Keine Überraschungsrechnungen: Cloud-Kosten können bei Traffic-Spitzen explodieren

Das bedeutet nicht, dass Self-Hosting für jeden richtig ist. Es bedeutet, dass es für mein Setup die beste Wahl ist.


Der Stack: k3s + Rancher

k3s als Kubernetes-Distribution

k3s von Rancher Labs ist eine schlanke Kubernetes-Distribution mit weniger als 70 MB. Im Gegensatz zu vollständigem Kubernetes läuft k3s auf einem einzelnen Server (1 vCPU, 2 GB RAM reichen für den Start).

Was k3s bietet:

  • Vollständige Kubernetes API: kubectl, Helm-Charts, Custom Resources – alles funktioniert
  • Eingebauter Ingress Controller: Traefik ist vorinstalliert und konfiguriert
  • SQLite oder etcd: Für Einzelserver-Setups reicht SQLite, für HA-Cluster etcd
  • Automatische TLS via cert-manager: Let's Encrypt in wenigen Minuten konfiguriert
# k3s Installation in einer Zeile
curl -sfL https://get.k3s.io | sh -

Rancher als Management-Layer

Rancher ist ein Open-Source Kubernetes-Management-Tool mit einer vollständigen Web-UI. Ich nutze es für:

  • Cluster-Übersicht und Health-Monitoring
  • Workload-Management (Deployments, StatefulSets, DaemonSets)
  • Helm-Chart-Deployments über den Rancher-Katalog
  • User- und RBAC-Management

Was ich betreibe

Auf meinem k3s-Cluster laufen derzeit:

Service Tool
Headless CMS Strapi
Medien-Speicher MinIO (S3-kompatibel)
Datenbank PostgreSQL
Monitoring Grafana + Prometheus + Loki
Reverse Proxy Traefik
Container Registry Harbor
CI/CD GitLab
Secrets Sealed Secrets
Backups Velero + MinIO

Stolperfallen beim Self-Hosting

1. Persistenter Speicher

Kubernetes-Pods sind ephemer – Daten müssen in Persistent Volumes gespeichert werden. Auf einem Einzelserver empfehle ich Longhorn als distributed storage system oder einfach local-path für unkritische Workloads.

2. Backups

Ohne automatische Backups ist kein Self-Hosting-Setup produktionsreif. Mein Setup:

  • Datenbankdumps via CronJob in MinIO
  • Longhorn-Snapshots für Volume-Backups
  • Velero für Kubernetes-Ressourcen-Backups

3. TLS/Certificates

Mit cert-manager und Let's Encrypt ist automatisches TLS kein Problem mehr:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: me@example.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: traefik

4. Monitoring & Alerting

Was man nicht überwacht, wird man nicht rechtzeitig reparieren. Der kube-prometheus-stack Helm-Chart installiert Prometheus, Grafana und AlertManager in einer Zeile und bietet sofort nutzbare Dashboards für CPU, Memory, Network und Pod-Health.


Fazit: Lohnt sich Self-Hosting?

Für Entwickler, die Infrastruktur verstehen wollen und die Kontrolle über ihre Daten schätzen: Ja, definitiv. Der Aufwand für den initialen Setup (2-3 Tage) zahlt sich schnell aus. Monatliche Kosten sind planbar, Daten bleiben unter eigener Kontrolle, und man lernt nebenbei enormes Infrastruktur-Wissen.

Für Teams ohne Ops-Expertise oder Projekte mit unvorhersehbarem Traffic-Wachstum: Managed Cloud ist oft die bessere Wahl. Self-Hosting verlangt Eigenverantwortung – und das ist keine schlechte Sache.