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 demcontent/-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
localStoragedes Browsers speichert.
Deployment-Prozess
Die Seite wird vollautomatisch über eine Gitea Action gebaut und veröffentlicht:
- Jeder
git pushauf denmain-Branch startet den Workflow. - Ein Docker-Image wird gebaut. In diesem Prozess führt das Python-Skript aus und generiert die statische Webseite.
- Die fertigen HTML-, CSS- und Schrift-Dateien werden auf einen schlanken Nginx-Webserver im selben Docker-Image kopiert.
- Das fertige Image wird in eine Docker-Registry hochgeladen.
- Auf dem Server muss nur noch das neueste Image mit
docker-compose pullgeholt und mitdocker-compose up -dgestartet werden.
Dieser Ansatz sorgt für maximale Performance, Sicherheit und einen extrem einfachen Veröffentlichungsprozess.