/dev/blog/ID10T

Advertisement

Technical fundament of /dev/blog/ID10T

• blogging • Comments

As the technical fundament of ID10T changed completely, it's a good idea to explicate its underlying infrastructure. I really like when other blogs websites or applications are thoroughly explaining their hosting technology, so I want to do it with my blog as well.

Blog software

I’m using Jekyll as my blog software of choice. Due to its nature of being a static page generator, all the end user sees, are completely generated pages without PHP or alike (some JScript though) which results in a very good pagespeed. The template I based my blog design on is Contrast from Niklas Buschmann.

Github pages

Like many other sites, I use Github pages as the hosting provider. It’s free, fast and provides a lot of flexibility due to it’s connection to git. Sadly, Github pages doesn’t provide a way to secure your connection. Https is only possible with the *.github.io domain, SSL with a custom one isn’t supported. To circumvent this, I prepend cloudflare with enabled and forced SSL encryption. This isn’t a true end-to-end encryption as the clients connection is only secured up until the cloudflare servers, the connection afterwards, from cloudflare to GH pages, remains unsecured. But at least there’s no possibility for an man-in-the-middle attack when using an open W-LAN.

Uberspace

When using only GH pages, there’s no way of previewing drafts. The normal way Github expects you to write up your posts is with a Jekyll instance running locally where you can serve the drafts all you want. But that’s not my use case. I’m one of those pesky “generation mobile” members. I want to be able to write posts everywhere, on every device, preview them on the go and publish them afterwards.

To realise that, I’m using an uberspace. Uberspace is a hybrid between shared hosting and a virtual server. An uberspace is able to run a plethora of software, Ruby with Jekyll is one of those. Thus, I planned on running a triumvirate of Dropbox, for the syncing from and to every device, Jekyll, for the preview of drafts and git to commit and push the changes to my Github repository belonging to my blog. I’m running a dropbox daemon on my uberspace which only syncs the folder containing the Jekyll source files. To start a build and deployment of the “local” (on uberspace) Jekyll installation or to commit and push the changes to github, I’ve written a small script which I called jekyll-file-remote. It’s basically an infinite loop checking a watch folder for control files.

Thereby I can write markdown drafts on every device I want, as those are synced via Dropbox. If I want to preview the drafts, I create a control file resulting in compiling them via the jekyll installed on my uberspace and previewing them into another location which is excluded for search engine crawlers. If I’m satisfied with my blog post, I create another control file for jekyll-file-remote, which automatically commits and pushes the changes to my m3adow.github.io repository.

2015, Alles Bleibt Anders

• Blogging • Comments

Hallo an alle Leser meines alten und eingestaubten Blogs. Der letzte Blogpost war 2013, seitdem war Sendepause. Bis jetzt! Allerdings wird sich damit auch einiges verändern:

Meine Postfrequenz wird vermutlich nicht sehr hoch sein, aber ich würde mich darüber freuen, wenn ihr mir weiter (in englischer Sprache) treu bleibt.

Abschließend der Hinweis, dass ich zwar versuchen werde, den alten Admins Werk RSS Feed beizubehalten, da es sich aber um einen Feedburner Feed handelt und Feedburner bereits seit geraumer Zeit von Google abgeschaltet wurde, kann ich nicht garantieren, wie lange der Feed bestehen bleibt. Die neue Feed-Url lautet https://adminswerk.de/feed.

Kurztipp: Mediawiki - Fatal exception of type MWException

• Linux and Software • Comments

Falls ihr Probleme mit dem Passwort-Reset eines Users in eurer Mediawiki Installation habt, prüft die Version eures LocalisationUpdate-Plugins. Es ist gut möglich, dass diese nicht mit der Version eures Mediawikis kompatibel ist. Um dies zu berichtigen, könnt ihr versuchen, das Updateskript des Plugins zu nutzen. Das muss über die Kommandozeile geschehen. Aus dem Wurzelverzeichnis eurer MW-Installation sähe das dann so aus:

php extensions/LocalisationUpdate/update.php

Danach könnt ihr es erneut versuchen und habt jetzt (hoffentlich) keine Fehler mehr.
Ansonsten solltet ihr mal versuchen, das Plugin in der LocalSettings.php auszukommentieren und danach prüfen, ob es dann funktioniert.

Bacula: libbaccats-5.2.13.so undefined symbol

• Linux • Comments

Nachdem ich das Backuptool Bacula kompiliert hatte, meldete mir der Bacula Director beim Starten einen Fehler:

bacula-dir: symbol lookup error: libbaccats-5.2.13.so: undefined symbol: mysql_thread_safe

Wie sich nach längerer Internetrecherche rausstellte, ist das configure-Skript von Bacula offenbar ein bisschen verbuggt. Obwohl es keine Fehler meldet, kann es die benötigten MySQL-Libs nicht finden. Um das zu berichtigen, solltet ihr nach der Ausführung von configure auf eurem System nach der libmysqlclient_r suchen.

find / -name "libmyslqclient_r*"

Bei mir beinhaltete das Verzeichnis /usr/lib die benötigte Datei. Nun öffnet ihr die Datei src/cats/Makefile im Source Verzeichnis von Bacula und sucht nach dem Eintrag MYSQL_LIBS = und tragt dort den Pfad in Verbindung mit einem -lmysqlclient_r ein. Bei mir sah das so aus:

MYSQL_INCLUDE = -I/usr/include/mysql
MYSQL_LIBS = /usr/lib -lmysqlclient_r
MYSQL_SRCS = mysql.c

Nun könnt Bacula ihr wie gewohnt installieren

make && make install

Damit sollte die Fehlermeldung verschwunden sein.

Linux: SSH Agent Forwarding nach sudo

• Linux • Comments

Kurztipp: Wenn ihr den durch SSH Agent Forwarding weitergebenen Private Key auch bei sudo-Befehlen nutzen wollt, müsst ihr die env-Variable SSH_AUTH_SOCK in der /etc/sudoers unter Defaults env_keep eintragen. Sähe dann beispielsweise so aus:

Defaults env_reset
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE SSH_AUTH_SOCK"

Achtet natürlich auch darauf, dass euer SSH-Client auch ForwardAgent aktiviert hat. ;-)

Advertisement