Neues Blog und so

Servus Leute!

Lang ist's her seit meinem letzten Post und seither ist einiges passiert. Nachwuchs! Umzug! Congress! Femcamp! Zerstörte Freundschaften! Kündigung!

Aber zu all dem schreib ich vielleicht irgendwann mal einen Post, ein paar Entwürfe liegen schon auf der Platte, aber heute geht es mal um was praktisches: Dieses Blog.

Ursprünglich war dieses Blog ein bei Host-Europe gehostetes Wordpress. Das hat meistens ganz gut funktioniert, es gab Plugins für allem möglichen Scheiß und viel doofes Hintergrundzeug wurde mir abgenommen.
Ich würds vermutlich immer noch verwenden, wenn da nicht eine Sache dazwischen gekommen wäre...

Die Kündigung

Ich war ja selber schuld. Mein HE Vertrag wurde die längste Zeit via Bankeinzug beglichen, alles lief gemütlich, Rechnungen und sonstige Nachrichten kamen per email. Damit meine Hauptmailadresse nicht zugemüllt wurde, ging das alles über eine Mailadresse die ich, naja, sagen wir mal "seltener abrief".

Also nie. m(

Und so kam es etwas überraschend als HE mir mitteilte, daß sie vor 2 Monaten meine Zahlungsart geändert hatten, daraufhin keine Rechnung mehr bezahlt wurden und sie darum meinen Vertrag kündigen.
Bzw. gekündigt hatten, wie mir der freundliche Callcenter Agent am anderen Ende des teuren Auslangsgesprächs mitteilte.

Es folgten recht stressige 72 Stunden, in denen ich meine Domänen (Die ich natürlich auch bei HE hatte.-_- ) transferierte, mir einen neues Server bei Uberspace besorgte und dort so schnell es ging Mailboxen und so weiter einrichtete.

Sehr spaßig, alles. ^^

Aber mit der Zeit lief alles was wirklich unbedingt laufen sollte (Primär Mailadressen) und galt jetzt wieder die Webseite aufzusetzten. Doch wie? Wieder ein Wordpress?

...

Ich gestehe, bei dem Gedanken wieder ein Wordpress aufzusetzen graute es mir. Datenbanken und Webserverkonfigurationen flimmerten vor meinem inneren Auge und ich überlegte ernsthaft es einfach gleich zu lassen und meine Domain einfach auf meine Suppe oder sonstwas umzuleiten. (Webzeugs ist nicht meins und je mehr ich damit zu tun hatte, desto weniger Lust hatte ich drauf.)

Aber irgendeine Webseite wollte ich doch haben, und in letzter Zeit hatte ich immer wieder über diese Static Website Generatoren wie Jekyl, Octopres und wie sie alle heißen gelesen und war dann doch ein bißchen neugierig.

Pelican

Pelican ist ein static website generator, der textfiles in reStructuredText und Markdown Syntax hernimmt, die durch ein Pythonscript jagt und am Ende eine sehr nach Blog aussehende Webseite ausspuckt. Der Unterschied zu dynamischen CMS wie Wordpress wird diese Seite aber nicht bei jedem Aufruf neu erstellt, sondern ist eine Sammlung aus statischen html Datein, die der Webserver einfach nur ausliefert.

Kein php, keine Datenbank, kein Admininterface, kein Usermanagement. Die Seite kann offline gebaut werden und dann einfach via ftp oder ssh hochgeladen werden. Das heißt in der Theorie weniger Angriffsfläche für Hacker, was grad bei Wordpress tatsächlich ein großes Problem ist.

Und wie schaut das jetzt in der Praxis aus?

  1. Meine Blogposts leben in einem git repo auf meinem Rechner (Yay, Versionierung!), konkret im content/ Ordner. In diesem gibt es auch noch einen pages/ Unterordner (für statische Seite wie diese hier) und einen images/ Ordner, in dem die Bilder fürs Blog landen. Ebenfalls versioniert werden die pelicanconf.py und publishconf.py Dateien, in denen die Einstellungen meines Blogs festgelegt werden

  2. Um mir das manuelle tippen der Post Metadaten zu ersparen hab ich mir ein kleines Pythonscript geschrieben, dem ich den Titel des Posts den ich verfassen möchte als Kommandozeilenargument gebe (Oder, wenn ich es ohne Argument aufrufe, mich nach diesem fragt.), sich das aktuelle Datum via date holt, mir aus dem Titel einen passende slug bastelt und das ganze in einen Rohentwurf eines Pelican Posts reinschmeißt, im 'content/' Ordner speichert und den post dann mit vim zum editieren öffnet.

  3. Auf dem Server liegt ein auf gitolite eingerichtet repo, daß für mein lokales repository als remote dient. Ich kann also auch auf anderen Rechnern an meinem Blog arbeiten bzw. anderen Leuten Zugänge einrichten, damit sie ebenfalls Posts schreiben können.

  4. Auf diesem remote repo hab ich einen hook eingerichtet, daß bei jedem 'git push' ein script ausführt, daß die commit message überprüft und nach "[POST]" sucht. Wenn dieser String in der Nachricht vorkommt, baut es die Webseite in einem temporären Verzeichnis neu, verschiebt die frisch gebaute Seite in den dafür vorgesehen Ordner des Webspaces und löscht den temporären Ordner. Update: Inzwischen kann das Script auch gleich den aktuellsten Blogposts auf meinen Account twittern. ^^

Fazit

Das Leben mit Pelican ist bis jetzt ganz angenehm. Hie und da konfiguriere ich mir die Webseite kaputt, aber das ist schnell wieder behoben und ein push später ist alles wieder cool. Markdown kann zwar leider nicht alles, was reStructuredText kann, ist aber sehr angenehm zu schreiben, das gum Theme, daß ich verwende schaut garnicht sooo scheiße aus und das ganze basiert auf Technologien mit denen ich mich sogar ein bißchen auskenne.

Ich denke, bis auf weiteres werde ich mal bei Pelican bleiben. ^^