Statische Website

Wieder mal eine Website

Es ist mal wieder so weit, dass ich eine Webseite brauche. Zur Zeit nicht um Kunden zu finden oder nur Blogging auszuprobieren oder gar mein Tagebuch online zu stellen sondern um ein paar Artikel zu veröffentlichen und zu ein paar Gedanken öffentlich Stellung zu beziehen.

Die Artikel sind technisch, die Gedanken gesellschaftlich. Ich brauche keinen bunten Prospekt, der kompensieren muss, dass ich nichts zu sagen habe und brauche keine Search Engine Optimization um mit anderen Artikeln um Beliebtheit zu streiten. Ich bin kein Verlag, der möglichst weite Verbreitung finden muss. Ich muss nicht im coolen Aussehen mit anderen wetteifern.

Welche Plattform wähle ich also?

Ich habe früher Blogs auf Plattformen wie blogger geführt. Das war aus Mitläufertum heraus um das, was gerade anstand, das neue Medium, zu lernen. Es war vor allem bevor uns Herr Snowden gezeigt hat was mit unseren Daten im Netz passiert. Ich hatte meine Firmenwebsite schon mal bei Microsoft, bis die mir einfach abgeschaltet wurde, weil Microsoft keine Lust mehr hatte das weiter anzubieten.

Ich hatte auch schon mal eine Wordpressinstallation. Will ich sowas pflegen und warten? Habe ich ein Redaktionsteam mit Leuten, denen ich keine Textdatei zumuten kann? Auch nicht.

Ein statischer Generator

Mit allen diesen Plattformen ist man dauernd am pfriemeln um irgendwas am Aussehen richtig hin zu bekommen oder zu überprüfen warum eine Formatierung nicht funktioniert. Die besseren bieten wenigstens Markdown an um sich auf den Text zu konzentrieren. Ich bin daher schon seit einigen Jahren ein Fan von statischen Generatoren.

Da liegen nur statische Seiten auf dem Webserver, das ist schlank, dass konzentriert sich auf den Inhalt, und wenn man Design braucht holt man sich ein CSS, für das man auch gerne einen Profi bezahlt. Der Content bleibt auf jeden Fall vom Layout getrennt.

Nur welchen statischen Generator?

Ein bekannter ist Jekyll. Aber will ich mir jetzt eine neue Programmiersprache auf den Rechner holen? Da ich ein Clojurefan bin habe ich mir die Clojuregeneratoren angesehen. Aber die muss ich anschmeißen, was doch auch einen gewissen Aufwand im Workflow hat. Geht es nicht noch schlanker? Da ich meinen Tag eh, was Computer angeht, in Emacs verbringe habe ich mir angesehen was in Emacs geht. Ich verstehe nicht, warum ich so lange gebraucht habe das mal unter diesem Aspekt anzusehen, aber ox-publish ist eigentlich ein statischer Generator.

35 Zeilen Code

Mit sparsamen 35 Zeilen Code werden Dateien im org Format, welches ein Markupformat ähnlich Markdown ist, auf Tastendruck zur Website. Ich verwende dieses Format eh schon für alle meine Dokumente. Ich hatte ox-publish schon früher mal gesehen, aber es hat nie geklickt. Einfacher geht es eigentlich nicht.

Außerdem habe ich sowieso einen FreeBSD-Server mit Jails und in einem der Jails läuft ein h2o, vornehmlich als Reverseproxy. Sicher, schlank, billig, ohne Aufwand und, egal was schief geht, einfach zu warten. Weniger als ein 10tel des Aufwandes einer Wordpressinstallation, und die komplette Freiheit ohne die Beschränkungen einer Bloggingplattform. Und meine Daten bleiben bei mir und die Texte sind … Texte. Ja, txt Dateien. Die Artikel, die ich vor Jahren in blogger eingegeben habe, wie bekomme ich die da wieder raus? Wie bekomme ich die woanders rein? Mit Text kein Problem. Text ist halt Text. Die Texte bleiben Teil meines org Archivs und werden nur auf Knopfdruck veröffentlicht.

Emacs Luxus

Ich kann im Text den gesamten Luxus von Emacs nutzen. Ich kann hier Notizen einfügen, die nicht mit veröffentlicht werden, Erinnerungen oder ToDos. Ich kann verlinken, wenn ich will Bilder oder sonst was einbinden und Programmcode oder Formeln mitverwenden.

Git Versionskontrolle

Da die Dateien mit in meiner Org-Verzeichnisstruktur liegen sind sie automatisch in git mit versioniert.

Fazit

  • Schlanker Server
  • volle Kontrolle
  • alle Texte sind versioniert
  • Teil meines Archivs
  • und können Code mit verwalten.

Welche Bloggingplattform will da mithalten?

Anhang: der Code

Die ssh-Links sind aus Sicherheitsgründen verfremdet.

(require 'ox-publish)
(setq org-publish-project-alist
      '(("blog"
         :components ("blog-content" "blog-static"))
        ("blog-content"
         :base-directory "~/org/blog"
         :base-extension "org"
         :publishing-directory "/ssh:user@server.markusgraf.net:/jails/h2o/var/www/markusgraf.net/"
         :recursive t
         :publishing-function org-twbs-publish-to-html
         :export-with-tags nil
         :headline-levels 4
         :table-of-contents t
         :section-numbers nil
         :sub-superscript t
         :todo-keywords nil
         ;; :author nil
         ;; :creator-info nil
         :html-preamble " <ul class=\"nav nav-pills\">
  <li class=\"nav-item\">
    <a class=\"nav-link\" href=\"/index.html\">Home</a>
  </li></ul> "
         :html-postamble nil
         :style "here goes the stylesheet"
         :timestamp t
         :exclude-tags ("noexport" "todo")
         :auto-preamble t)
        ("blog-static"
         :base-directory "~/org/blog-static"
         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg"
         :publishing-directory "/ssh:user@server.markusgraf.net:/jails/h2o/var/www/markusgraf.net/static"
         :recursive t
         :publishing-function org-publish-attachment)))