Funkenstrahlen Podcasting, Netzpolitik, App-Entwicklung

Jekyll Blog auf Uberspace - Mein Setup

Ich betreibe dieses Blog auf Uberspace mit Jekyll. Hier möchte ich nun kurz mein Setup dokumentieren.

Jekyll ist ein Static Page Generator, d.h. ich lege Markdown Dateien für jeden Blogpost an und daraus wird dann in einem Generator-Schritt die statische Webseite generiert.

Zunächst einmal habe ich zu Hause auf meinem Laptop meine komplette Jekyll Seite in einem Git Repository. Hier kann ich Einstellungen machen, Posts anlegen oder Styles der Seite konfigurieren. Will ich mir den aktuellen Stand der Seite lokal generieren lassen, kann ich das mit jekyll serve auf einem lokalen Webserver tun.

Bin ich damit zufrieden, fällt der aktuelle Stand in ein Commit in Git. Das lade ich dann mittels git push deploy master in meinen Uberspace Account. Dabei ist deploy als Git Remote so eingerichtet, dass es auf i42n@auriga.uberspace.de:~/funkenstrahlen.de.git zeigt.

In ~/funkenstrahlen.de.git auf Uberspace liegt bei mir ein bare Repository. Das kann man mit git init --bare funkenstrahlen.de.git anlegen. Bare sorgt dafür, dass kein Branch und damit keine Dateien ausgecheckt werden.

Nach dem git push liegen die Daten auf Uberspace. Nun muss nur noch der Generator von Jekyll angestoßen werden. Das passiert über ein Git Hook. Davon finden sich einige in funkenstrahlen.de.git/hooks:

applypatch-msg.sample
post-commit.sample
post-receive.sample
pre-applypatch.sample
prepare-commit-msg.sample
update.sample
commit-msg.sample
post-receive
post-update.sample
pre-commit.sample
pre-rebase.sample

In diesem Fall ist post-receive der interessante Hook.

source ~/.bash_profile

GIT_REPO=$HOME/funkenstrahlen.de.git
TMP_GIT_CLONE=$HOME/tmp/funkenstrahlen.de
PUBLIC_WWW=$HOME/web/funkenstrahlen.de

git clone -b master $GIT_REPO $TMP_GIT_CLONE
jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

Hier passiert die ganze Arbeit:

  1. Das bare Repository clonen und damit den aktuellen funkenstrahlen Branch auschecken.
  2. Mit Jekyll die Seite bauen und das Web Verzeichnis von Uberspace kopieren
  3. Aufräumen

So kann ich relativ einfach neue Posts veröffentlichen:

  1. Mit rake post neuen Post anlegen und schreiben
  2. Den neuen Post mit git add -A und git commit -m 'neuer Post' zu Git hinzufügen
  3. Seite deployen via git push deploy master

Einziger kleiner Nachteil: Geht beim Jekyll Build auf Uberspace etwas schief, kann man einen weiteren Build nur auf diesem Weg anstoßen, wenn sich im Git Repository etwas geändert hat. Ich muss dann einen “unnötigen” Commit erzeugen, um noch einmal git push ausführen zu können. Das passiert aber zum Glück selten.

Das Design des Blogs ist ein Fork von diesem Jekyll Template. Das Type Theme ist auch ganz hübsch.