Wechsel von Hugo auf Zola
Hintergründe und wesentliche Schritte zum Wechsel von Hugo auf Zola beim Static Site Generator.
Die Recherche
Mein Hugo Theme war inkompatibel mit der aktuellen Hugo Version. Bei der Suche nach Lösungen fand ich Zola. Zola ist in Rust implementiert, damit etwas neuer als Hugo und eine der Installationsmethoden ist flatpak. Das ist wunderbar Linux-Distributionsunabhängig und gerade jetzt, wo ich noch immer zwischen nix und debian hin und her überlege, praktisch. Als Theme nutze ich tabi. Die Konfiguration basiert auf Dateien, die Dokumentation ist logisch und einfach. Analog zu Hugo muss man die jeweilig gewünschte Einstellung in der richtigen Datei durchführen und da auch bei Zola bei jedem Speichern die Draft - Seite neu generiert wird, ist ein iteratives Vorgehen gut machbar. Immer nur einen Schritt machen, speichern, Ergebnis oder Fehlermeldung prüfen, weitermachen.
Der tatsächliche Wechsel
Das schöne an markdown basierten Static Site Generatoren ist: Das Ergebnis ist eine Sammlung an Dateien, die zu einer Hosting - Plattform, in meinem Fall Codeberg Pages kopiert werden. Jedes Veröffentlichen ist ein neues "Dateien Kopieren". Damit ist ein Wechsel des zugrundeliegenden Static Site Generators recht einfach.
Der Content besteht bei Zola und Hugo aus Markdown Dateien. Das heißt, auch hier ist es recht einfach zu wechseln. No Vendor Login ist einfach was Schönes. Oder genauer gesagt: No Tool Login ist was Schönes.
Neues Codeberg Repository
Zunächst lege ich ein neues Codeberg Repository an.
Dabei mache ich das initiale Setup, um danach in meinem gewohnten Workflow arbeiten zu können.
In meinem Fall ist es eine tmuxinator Konfiguration
mit je einem Tab für Neovim zum Schreiben, Lazygit für Repository - Verwaltung und einem
Terminal, das automatisch bei tmuxinator start den flatpak run org.getzola.zola serve --drafts --open
Befehl ausführt.
Mein Workflow ist dann: In mein homepage Verzeichnis wechseln, tmuxinator start durchführen und
schon bin ich in einer tmux Session mit allem, was ich brauche. Zusätzlich öffnet sich im Webbrowser
die aktuelle homepage, welche sich mit jedem Speichern neu generiert.
Initiales Zola Setup
Hier orientiere ich mich an den Dokumentationen von Zola und tabi in meinem Iterativen Schritt für Schritt Vorgehen. Im Endeffekt arbeite ich mit der config.toml und einigen index.md Dateien. Wer es genau wissen will, schau einfach in die ersten git commits des Repos.
Content von Hugo Repository kopieren
Der Content sind Markdown Files und einige Bilder. Die Idee war: vom Hugo Repository and die richtige Stelle im Zola Repository kopieren. Und genau das funktioniert wunderbar. Direkt nach dem Kopieren generiert sich die Seite neu und meine Blog Posts werden sicht - und lesbar. Ins Auge sticht nur ein Detail: die embettet Youtube Links funktionieren noch nicht in Zola. Die Lösung ist schnell gefunden, die Syntax zum Embetten ist anders:
<div {% if class %}class="{{class}}"{% endif %}>
<iframe src="https://www.youtube-nocookie.com/embed/{{id}}{% if playlist %}?list={{playlist}}{% endif %}{% if autoplay %}?autoplay=1{% endif %}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</div>
In allen Markdown Dateien mit Youtube Links passe ich die jeweilige Syntax an. Hier sind neovim Macros natürlich sehr praktisch.
Automatisierung des Veröffentlichens
Auf der Zola Webseite ist für Codeberg Pages eine Automatisierung mit Woodpecker CI dokumentiert. Das habe ich selbst aber noch nicht konfiguriert und für den Start - und wohl noch sehr lange - reicht aus meiner Sicht ein einfaches bash Skript:
#!/usr/bin/env bash
tmp_dir=
# Cleanup
Die Nutzung ist recht einfach: Im Root - Verzeichnis des Repositories einfach publish.sh starten.
Feintuning
Da die Seite grundsätzlich schon ganz gut aussieht, mache ich jetzt das Finetuning. Das sind bisher folgende Schritte:
- Lokalisation auf deutsch
- Posts auf toml Syntax umgestellt. Hugo arbeitet mit yaml Syntax. Dabei habe ich auch die Taxonomies (die Tags) definiert. Auch hier helfen neovim Macros sehr.
- Sozials (die favicons mit Links im Footer der Seite) definiert.
Fazit
Für mich fühlt sich der Wechsel einfacher an, als ich zuvor erwartet hatte. Die ersten Schritte mit Zola sind für mich logisch nachvollziehbar und die Arbeit mit der config.toml Datei ist wegen der guten Fehlermeldungen von zola sehr anwenderfreundlich. Da die Dokumentation gut ist, muss ich wenig recherchieren. Mein Blog wird hoffentlich lange bei Zola bleiben können.
Matthias