34C3 – I talked about OmNomNom

Between Christmas and New Year’s Eve I attended the 34C3 in Leipzig. I visited the congress before but it was the first time that I gave a presentation (at the congress) myself. At the last day of the 34C3 I talked about OmNomNom, my open source Telegram canteen chatbot, as part of the Lightning Talks. I explained the architecture of the software and the infrastructure I use to run and deploy the bot.

All talks were recorded, you can check out my talk in the embedded video. It starts at 01:24:45.

If the video does not work you can check YouTube or media.ccc.de. Despite the fact that my talk was a little too long for the five minutes time slot it was a nice experience to talk on such a big stage and luckily I was done with the important part of my talk when the time was up.

Veröffentlicht unter Tech | Verschlagwortet mit , , , , | 1 Kommentar

Booting a live system without a USB stick

For some maintenance tasks you need a linux live system. For example when you or some updates broke your system or you want to resize the partitions of your hard disk.

The common way is to download a live system, searching for your lost USB stick for 30 minutes, flashing the system onto the stick and then you can finally start to work on your system. It is the same processes every time and I really don’t like repetitive work. So I was looking for a better solution.

It turns out that GRUB is able to boot a simple ISO image from your local hard disk. I am using Arch Linux to configure my GRUB but it should work similarly with other distributions.

At first you have to download an ISO image. (e.g. Arch Linux, but every other distribution should also work.)
You have to save it to a location that is accessible by GRUB. As most parts of my hard disk are encrypted I have chosen to increase my unencrypted /boot partition and saved the ISO image to /boot/iso/arch.iso.

Of course GRUB needs to know about this image. One way is to define an additional menu entry in /etc/grub.d/50_arch_live. You have to adjust the imgdevpath to your partition with the ISO image and isofile and to the path of the ISO image inside of the partition. /dev/sda1 is my boot partition and /iso/arch.iso is the image in /boot/iso/arch.iso.

exec tail -n +3 $0      
# This file provides an easy way to add custom menu entries.  Simply type the                   
# menu entries you want to add after this comment.  Be careful not to change                    
# the 'exec tail' line above.                   

menuentry 'Arch Linux Live' {                   
        set imgdevpath="/dev/sda1"              
        set isofile='/iso/arch.iso'             
        loopback loop (hd0,1)$isofile           
        linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$imgdevpath img_loop=$isofile
        initrd (loop)/arch/boot/x86_64/archiso.img                                              

Now you only have to rebuild the GRUB configuration:

$ grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image(s) in /boot: intel-ucode.img initramfs-linux.img
Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-fallback.img

After the next reboot you should have an additional menu entry in GRUB that boots the live system.

Veröffentlicht unter Tech | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Improvised NGINX Maintenance Page

Sometimes I need to do some maintenance work on a webserver and I want to inform the users about it. Most of my websites run behind a NGINX reverse proxy which makes it quite easy to serve a maintenance page from there. This has the advantage that the maintenance page will even be served when the backend server is completely offline.

I was looking for a way to serve a short message without the need of an additional HTML document. Luckily the rewrite module of NGINX implements the return statement which I can use to accomplish this.

Here is an example:

server {
    listen          80;
    server_name     example.com www.example.com;

    location / {
        add_header Content-Type text/plain;
        return 200 "Down for maintenance. Will be back soon.";

    location /maintenance {
        return 503;

Unfortunately most browsers will throw an error when you return a string with another status code than 200. But for most of my use cases it is enough and if you need more flexibility you can always use an extra HTML document in combination with the return statement or the error_page statement.

Veröffentlicht unter Tech | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Deploy a Hetzner server in under three minutes

In the process of automation for my private server infrastructure I came along the task to install the base operating system with as less user interaction as possible. As I primary use Hetzner servers for my infrastructure I found an easy way to do this. When you have a Hetzner server you can boot your server into a rescue life system. There you can do all kinds of administration to fix your system or you can install a complete new one. There is a script called installimage in the rescue system which can be used to install different operating systems. Usually the script opens an editor where you configure your server and then it bootstraps your system. But as manual configuration really sucks in an automated environment I decided to write an ansible playbook to do this for me.

With this playbook it takes under three minutes to complete a Debian Jessie installation:

$ time ansible-playbook deploy_debian_hetzner.yml -e 'target_host=server.example.com'
PLAY [server.example.com] *************************************************

TASK [setup] *******************************************************************
ok: [server.example.com]

TASK [copy ssh key] ************************************************************
changed: [server.example.com]

TASK [run installimage] ********************************************************
changed: [server.example.com]

TASK [remove dummy lv] *********************************************************
changed: [server.example.com]

TASK [mount root file system] **************************************************
changed: [server.example.com]

TASK [remove dummy lv mount] ***************************************************
changed: [server.example.com]

TASK [unmount root file system] ************************************************
ok: [server.example.com]

TASK [reboot host] *************************************************************
changed: [server.example.com]

TASK [wait for host to be up again] ********************************************
ok: [server.example.com -> localhost]

PLAY RECAP *********************************************************************
server.example.com    : ok=9    changed=6    unreachable=0    failed=0   

real	2m51.937s
user	0m17.600s
sys	0m3.130s

You can find the full playbook and detailed instructions at GitHub. If you extend the playbook for more use cases feel free to open a pull request.

Veröffentlicht unter Tech | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Find matching SSL certificates and keys

Sometimes I have multiple SSL certificates and keys and have no idea which of them belong together. Recently I found out that there is an easy way to test this.

[max@gaia]$ ls
certificate.crt  privateKey.key

[max@gaia]$ openssl x509 -noout -modulus -in certificate.crt | openssl md5
(stdin)= 5eaa10f15f3e4b6f93167a5c48e7498c

[max@gaia]$ openssl rsa -noout -modulus -in privateKey.key | openssl md5
(stdin)= 5eaa10f15f3e4b6f93167a5c48e7498c

If the two MD5 hashes are equal you have found a matching pair.

If you want to understand why the modulus in the certificate and key are equal I recommend to read more about the RSA algorithm.

Veröffentlicht unter Tech | Verschlagwortet mit , , | Hinterlasse einen Kommentar

TechTalk: Shell we begin?

Anfang Januar habe ich im Rahmen der TechTalks der Freitagsrunde einen Vortrag mit dem Titel „Shell we begin?“ gehalten. Der knapp zweistündige Vortrag ist ein Querschnitt durch die Grundlagen der Shell-Benutzung und eine kuze Einführung in das Scripting mit der Shell.

Den kompletten Videomitschnitt des Vortrags findet ihr auf Youtube und die zugehörigen Folien auf der Seite der Freitagsrunde.

Veröffentlicht unter Tech | Verschlagwortet mit , , , , , | Hinterlasse einen Kommentar

Rainmeter Skin Pack (BlueVision Mod) v2

Den ersten Part dieses Artikels findet ihr hier:
Artikel: Rainmeter MSI Afterburner Theme

Seit geraumer Zeit nutze ich nun Rainmeter um mir auf dem Desktop statistische Informationen zu meinem Rechner anzeigen zu lassen, um nicht immer den Taskmanager und andere Programme bemühen zu müssen. Dabei habe ich sowohl Funktionalität, als auch Design immer wieder angepasst. Da es andere vielleicht interessiert möchte ich hier meine aktualisierte Version bereitstellen. Den Download findet ihr am Ende des Artikels, aber nun zu den Unterschieden im Detail:




Veröffentlicht unter Software, Tech | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Zwischenstopp in Degeberga

An der Ostküste haben wir einen kleinen Zwischenstopp bei Degeberga eingelegt, um einen Tagesausflug zum Forsakar Wasserfall zu machen. Dieser war kleiner als erwartet, aber trotzdem schön. Wir waren die einzigen, die sich auf den Weg durch den Wald gemacht haben und so war es dort angenehm ruhig. Der Campingplatz bei Degeberga ist an einem schönen Strand gelegen, sodass man dort super den Sonnenaufgang beobachten kann. DSCN4119 Weiterlesen

Veröffentlicht unter Reisen, Schweden | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Fahrradpannen an der Ostküste

Von Kosta sind wir mit dem Rad nach Lessebo und von dort mit der Bahn an die Ostküste nach Kalmar gefahren. Dort haben wir unsere Fähre zurück nach Deutschland gebucht, nun müssen wir also bis zum 03.09. in Trelleborg sein. Zum Glück haben wir dabei drei Tage mehr eingerechnet als für die Strecke nötig wären. Denn Unvorhergesehenes passiert schnell.
Nachdem wir über Bergkvara und Karlskrona weiter gefahren sind, haben wir festgestellt, dass in Maxs Hinterrad fünf Speichen gebrochen waren und das Rad nach und nach immer mehr anfing zu eiern. Eine kurze Suche im Internet ergab, dass es ca. 5km weiter in Nättraby einen Fahrradladen geben sollte. An der angegebenen Adresse fanden wir leider nur ein Wohnhaus und ein freundliches Nachfragen ergab, dass es den Laden seit einer Weile nicht mehr gibt.
Also mussten wir mit dem kaputten Rad wieder die ganze Strecke zurück nach Karlskrona radeln. Natürlich passierte uns das ganze an einem Samstag, sodass der Fahrradladen in Karlskrona bereits geschlossen hatte. So sind wir den Unwetterwolken entgegen zu einem sehr schönen Campingplatz auf der Insel Dragsö gefahren. Dort hatten wir das Meer wieder fast direkt vor dem Zelt und konnten auf einem Felsen im Wasser Frühstück und Abendbrot essen.
Montagmorgen wurden die gebrochenen Speichen dann im Fahrradladen schnell ausgewechselt und das Rad wieder gerade gezogen. Unsere Reise konnte also weiter gehen. Da wir keine Lust hatten, das Stück nach Nättraby ein drittes Mal zu fahren, sind wir mit der Bahn (hoffentlich das letzte Mal Bahn …) nach Karlshamn gefahren.
Von dort sollte es nun aber wieder mit dem Rad weiter gehen und am Abend schlugen wir unser Zelt in Velje auf. Am nächsten Mittag beglückte uns dann ein platter Vorderreifen an Maxs Fahrrad. Diesmal konnten wir das Problem aber zum Glück selber lösen und wir sind anschließend problemlos bis Degeberga sommarby gefahren.
Trotz der Pannen haben wir den Spaß an der Tour noch nicht verloren und auch das Wetter hat uns noch nicht entmutigt. Auch wenn es sich dabei scheinbar alle Mühe gibt … inzwischen vergeht kaum ein Tag an dem wir nicht mindestend einmal klitschnass werden und auch die Nächte haben wir schon bei starken Gewitterstürmen und Hagel im Zelt verbracht. Der Wetterbericht verspricht aber Besserung … angeblich.

DSCN3973 Weiterlesen

Veröffentlicht unter Reisen, Schweden | Verschlagwortet mit , | Hinterlasse einen Kommentar

Glasblasen in Kosta


Kosta ist eigentlich eine recht kleine Stadt, doch trotzdem ist sie ziemlich bekannt durch ihre Glaskunst. Hier hat die Firma Orrefors Kosta Boda AB eine Glashütte und es kommen viele Touristen um den Glasbläsern bei der Arbeit zuzuschauen. Neben der Glasbläserei kann man sich dort ein Glasmuseum anschauen und auch selber Glas blasen. Diese Möglichkeit konnten wir uns natürlich nicht entgehen lassen, Max hat ein blaues Trinkglas und Katharina eine grüne Schale gemacht. Es war sehr interessant das ganze mal von nahem zu sehen und selber auszuprobieren.

DSCN2552 Weiterlesen

Veröffentlicht unter Reisen, Schweden | Verschlagwortet mit , , | Hinterlasse einen Kommentar