Die Idee eines serverlosen Blogs und ein neues Theme

Armin Baldemair
armix.one
Published in
3 min readMay 12, 2016

--

Nachdem ich mich schon seit einiger Zeit mit serverlosen Webseiten beschäftige (siehe Post 1 und Post 2) wollte ich diesen Ansatz auch auf diesen Blog hier übernehmen. Ein serverloser Blog basiert im Grunde einfach auf statischen HTML-Seiten, die dann — wie bereits beschrieben — über ein CDN ausgeliefert werden können; ohne, dass serverseitige Preprocessor-Verarbeitungen anfallen würden. Nachdem es gerade bei einem Blog viele Querverweise gibt (chronologische Post-Liste verteilt auf mehrere blätterbare Seiten, Kategorien, Tags, …) wäre es sehr umständlich diese Seiten alle manuell zu erstellen.
Ein Beispiel: Bei diesem Blog hier wären das über 1.180 statische HTML-Dateien in über 800 Ordnern verteilt. Bei jedem Post, der dazu kommt, müsste sowohl eine Post-Datei, die Übersichts-Datei(en), die Kategorie-Datei(en) und die Files der Tags geändert werden. Wenn man dann beispielsweise nur 10 Posts pro Seite anzeigt und auch eine blättern-Funktion hat, dann sind das schnell mal 50 Files die geändert werden müssten, wenn nur ein einziger Post dazu kommt. Der Aufwand wäre enorm.

Aus diesem Grund gibt es für statische Webseiten Tools, die denn Text des Posts aus Quell-Dateien einlesen und dann automatisiert alle HTML-Files generieren. Der wohl prominenteste Vertreter dieser Engines ist Jekyll, von einem der GitHub Co-Founder. Ganz anfreunden konnte ich mich mit Jekyll aber nicht. Außerdem ist die Software für Windows nicht offiziell supported. Ich wollte aber eine Lösung, die auf allen Systemen läuft, da ich teilweise Windows, teilweise Mac und ggf. auch Linux im Einsatz habe. Auf der Suche nach Alternativen bin ich auf Hexo gestoßen. Hexo ist durch Node.js mit npm auch auf Windows leicht einzurichten und funktioniert nach dem gleichen Prinzip wie Jekyll. Praktisch ist auch, dass man Posts aus anderen Blog-Software-Lösungen (etwa WordPress) importieren kann.

hexo

Nach der Installation und der Definition des Arbeitsverzeichnisses mit hexo init kann man mit hexo server einen Webserver starten, der die statischen Files anbietet. Beim Schreiben eines neuen Posts wird im Unterordner /sources/_posts/ eine .md-Datei angelegt, die alle wichtigen Informationen und den eigentlichen Text enthält. Das schaut dann etwa so aus:

---
title: Hello World
date: 2000-01-01 12:00:00
categories:
- Allgemeines
tags:
- test
---
Welcome to [Hexo](https://hexo.io/)! This is your very first post.

Anschließend genügt ein hexo generate um alle Files im Ordner /public/ zu aktualisieren. Dieser Ordner kann in weiterer Folge einfach auf ein CDN hoch geladen werden — und schon läuft der statische Blog.

So weit, so gut … nur: Ohne serverseitige Dynamik gibt es keine Kommentarfunktion — denn wo sollten die Kommentare hin gespeichert werden, wenn am (nicht vorhandenen) Server kein Preprocessor läuft? Die meisten Static-Webseit-Blog-User greifen dafür auf den Dienst Disqus zurück. So kann man Kommentare zum Post ermöglichen. Wirklich schön finde ich diese Möglichkeit aber nicht. Denn erstens passt das Layout von Disqus nicht wirklich zum individuellen Blog-Design und zweitens würde ich mir das lieber selbst programmieren.

Um eine eigene Kommentar-Funtkion zu ermöglichen, könnte man auf AWS Lambda zurück greifen. Zusammen mit dem API Gateway, SNS und einer DynamoDB könnte man so eine gute Kommentarfunktion entwicklen: Der User füllt das Formular aus, das statisch in die Post-Seite des Blogs integriert ist. Die Daten werden via API Gateway an Lambda geschickt, dort validiert und in eine DynamoDB geschrieben. Das DynamoDB Document enthält eine Referenz zum entsprechenden Blog-Post. Zusätzlich kann man noch SNS nutzen, um sich als Blog-Autor über den neuen Kommentar informieren zu lassen und diesen ggf. moderieren. Beim Laden der entsprechenden Post-Seite muss dann einfach über einen XHR eine Anfrage an das API Gateway gestellt werden. Eine so getriggerte Lambda-Funktion schaut dann in der DynamoDB nach und liefert die entsprechenden Kommentare zurück.

So würde ich das jedenfalls machen. Momentan fehlt mir aber die Zeit dazu. Deshalb habe ich mich, wie ihr vielleicht schon bemerkt habt, vorläufig dafür entschieden, dass ich einfach das Theme des Blogs ändere und werde mir die Sache mit Hexo später nochmal etwas genauer ansehen. Auch deshalb, weil das erstellen von Themes mit Hexo nicht in 10 Minuten erledigt ist. Um da ein schönes Layout zu basteln, ist einige Zeit notwendig … vermutlich sogar mehr, als für die Kommentarfunktionen mit Lambda.

--

--