Wie diese Seite gemacht ist

Dieser Blog folgt einem minimalistischen Ansatz und wurde bewusst ohne komplexe Frameworks oder Content-Management-Systeme (CMS) erstellt. Das Ziel war eine schnelle, sichere und wartungsarme Webseite, die vollständig unter meiner Kontrolle ist.

Technologie-Stack

  • Static Site Generator: Ein selbst geschriebenes Python-Skript (build.py) bildet das Herzstück. Es liest alle Blogbeiträge aus dem content/-Ordner, wandelt sie von Markdown in HTML um und fügt sie in Jinja2-Vorlagen ein.
  • Markdown: Alle Beiträge werden in einfachem Markdown mit einem YAML-Front-Matter für Metadaten (wie Titel und Datum) geschrieben.
  • Jinja2: Eine leistungsstarke Template-Engine für Python, die verwendet wird, um die finalen HTML-Seiten aus den Markdown-Inhalten und den HTML-Grundgerüsten (templates/) zusammenzusetzen.
  • HTML5 & CSS3: Die Seite besteht aus reinem, semantischem HTML5. Das Styling wird durch eine einzige CSS-Datei gesteuert, die auf modernen Features wie CSS-Variablen für den Dark Mode basiert.
  • Kein JavaScript (fast): Das einzige JavaScript auf dieser Seite ist ein winziges Skript, das den Dark Mode umschaltet und die Benutzereinstellung im localStorage des Browsers speichert.

Deployment-Prozess

Die Seite wird vollautomatisch über eine Gitea Action gebaut und veröffentlicht:

  1. Jeder git push auf den main-Branch startet den Workflow.
  2. Ein Docker-Image wird gebaut. In diesem Prozess führt das Python-Skript aus und generiert die statische Webseite.
  3. Die fertigen HTML-, CSS- und Schrift-Dateien werden auf einen schlanken Nginx-Webserver im selben Docker-Image kopiert.
  4. Das fertige Image wird in eine Docker-Registry hochgeladen.
  5. Auf dem Server muss nur noch das neueste Image mit docker-compose pull geholt und mit docker-compose up -d gestartet werden.

Dieser Ansatz sorgt für maximale Performance, Sicherheit und einen extrem einfachen Veröffentlichungsprozess.