preloader

kirkanos.net

Diese Website

  • Hugo
  • Woodpecker CI
  • Bootstrap
  • Docker
kirkanos.net

Die Seite, auf der du gerade bist. Ursprünglich ein zugekauftes Hugo-Theme, inzwischen so weit umgebaut, dass vom Original vor allem noch das Grundraster übrig ist.

Wie sie entsteht

Eine Woodpecker-Pipeline erledigt bei jedem Push:

  • YouTube-Posts generieren – die Videos meines Kanals werden aus der YouTube-API gelesen und als Markdown-Posts angelegt
  • Funfacts aktualisieren – die Zähler auf der Startseite kommen aus mehreren eigenen Diensten (Gitea, Immich, Last.fm, Magic Portal) und dem Speicherplatz des NAS
  • Bauen und ausrollen – Hugo erzeugt die statischen Seiten samt Bildvarianten, rsync schiebt das Ergebnis auf den Webspace

Lange lief dieser Dreiklang auch stündlich per Cron – und das war die eigentliche Fehlkonstruktion: Für ein paar Zahlen wurde das halbe Gigabyte des Repos geklont, die komplette Seite neu gebaut und ausgerollt. Meistens, ohne dass sich auch nur eine Zahl geändert hätte. In 90 Tagen kamen so 1.669 von 1.706 Commits zusammen, die nichts anderes sagten als „Funfacts updated".

Inzwischen entscheiden zwei schlanke Läufe, ob sich der große Apparat überhaupt lohnt:

Die Zähler ändern sich mehrmals täglich, der Rest der Seite nicht. Sie müssen deshalb gar nicht durch Hugo: Ein Lauf holt eine kleine JSON-Datei vom Server, trägt die neuen Zahlen ein und legt sie zurück. Die Startseite liest sie beim Aufruf nach – was nichts kostet, weil die Zähler ohnehin per JavaScript von null hochanimiert werden. Fällt die Datei einmal aus, bleibt der Stand des letzten Builds stehen.

Neue Videos sind der einzige Grund, aus dem wirklich gebaut werden muss – die Posts dazu liegen nämlich gar nicht im Repo, sondern entstehen bei jedem Build neu aus der API. Ein zweiter Lauf vergleicht die YouTube-Playlist mit der Liste der Videos, die tatsächlich auf der Seite stehen. Stimmt beides überein, ist er nach zwei Sekunden fertig. Sonst stößt er einen Build an – über einen Clone ohne Arbeitsbaum und ohne Dateiinhalte, der 68 KB statt 540 MB holt.

Der große Clone passiert damit nur noch, wenn es auch etwas zu bauen gibt: ein paar Mal im Jahr statt mehrmals stündlich.

Eigenbauten auf der Seite

Die Musik-Übersicht zieht live von Last.fm, die TravelMap zeichnet besuchte Länder mit Leaflet, und für die Inhalte gibt es ein eigenes Verwaltungswerkzeug: kirkanos-admin – damit Posts nicht per Texteditor und Git-Kommando gepflegt werden müssen.

← Alle Projekte