Tech

Technikbezogene Artikel, die nichts mit Fotografie zu tun haben.

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:

CPU

CPU

Weiterlesen

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

Rainmeter MSI Afterburner Theme

Rainmeter ist ein geniales Tool, um allerhand Informationen auf (oft) künstlerische Art und Weise auf dem Desktop anzuzeigen. Viele Infos – wie z.B. die CPU Auslastung oder den Netzwerktraffic – kann man bereits mit den integrierten Tools auslesen und Anzeigen, Dinge wie die GPU Auslastung, FPS oder GPU Core Clock jedoch nicht.

Der findige User stangowner hat dafür ein Plugin bereitgestellt, mit dem man Werte aus dem bekannten Tool MSI Afterburner auslesen kann. Den Download findet ihr hier: Klick!

Da das bereitgestellte Widget nicht besonders hübsch anzusehen ist und mir das BlueVision Theme sehr gut gefallen hat, habe ich mithilfe der gegebenen Elemente eigene Widgets erstellt:

MSIAfterburner Rainmeter

Der Autor des BlueVision Themes hat zwar selbst auch Skins dafür erstellt, jedoch habe ich keinen Download dafür gefunden. Mein Design ist (wie den meisten wahrscheinlich auffallen wird) einfach eine (leicht angepasste) Kopie des Designs für die CPU Auslastung.

Für mein System habe ich mir noch ein paar weitere Widgets eingerichtet, wie z.B. eine angepasste „Total CPU Load“ Anzeige oder einer „HDD Load“ Anzeige. Im gesamten sieht das bei mir dann so aus:

Theme

Meinen gesamten Skin könnt ihr euch hier runterladen:
Artikel: Rainmeter Skin Pack (BlueVision Mod) v2

Veröffentlicht unter Software, Tech | 2 Kommentare

Reservierter Speicher in ext[2,3,4] Dateisystemen

Als ich vor ein paar Tagen meine Home-Partition verkleinern wollte, stellte ich folgende Merkwürdigkeit fest:

ekeih@midgard> df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/vgroup-root   20G   13G  6.3G  67% /
/dev/sda1                118M   52M   58M  48% /boot
/dev/mapper/vgroup-home   84G   78G  1.4G  99% /home

Nun, was ist daran merkwürdig? 78G + 1.4G = 79.4G != 84G. Es fehlen also fast 5 Gigabyte auf meiner Home-Partition und auf meiner Root-Partition geht die Rechnung auch nicht so wirklich auf.

Woran liegt das? Seit ext2 gibt es die Möglichkeit einen Teil des Speichers für einen bestimmten Benutzer oder eine bestimmte Gruppe zu reservieren. Die Idee dahinter ist es, sicherzustellen, dass selbst wenn normale Benutzer die gesamte Platte vollgeschrieben haben, noch Speicher vorhanden ist, um zum Beispiel Logeinträge schreiben zu können oder Ähnliches.
Standardmäßig werden 5% jeder Partition für den Root-Benutzer reserviert. Diese tauchen dann zum Beispiel auch nicht in der Ausgabe von df auf.

Den aktuellen Wert findet man mit tune2fs raus:

ekeih@midgard> tune2fs -l /dev/mapper/vgroup-home | grep 'Reserved block count'

Reserved block count:     1114112

Auf meiner Root-Partition klingt das auch vernünftig, aber für die Home-Partition ist das Quatsch. Dort schreibt nämlich nur mein normaler Benutzeraccount hin und die reservierten 5 Gigabyte sind verschwendet.

Die Größe des reservierten Speichers kann man ebenfalls mit dem Tool tune2fs festlegen. Das -m 0 gibt an, dass 0% der Partition reserviert werden sollen.

root@midgard> tune2fs -m 0 /dev/mapper/vgroup-home 

tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 0% (0 blocks)

ekeih@midgard> tune2fs -l /dev/mapper/vgroup-home | grep 'Reserved block count'

Reserved block count:     0

Jep, das wars. Nichts kompliziertes, aber ich hatte davon vorher noch nie was gehört und ich bin mir sicher, dass es noch mehr Leute gibt, bei denen ungenutzter Speicher vergammelt.

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

LVM Volume verkleinern

Als Notiz für mich selber, damit ich das in Zukunft nicht wieder ergooglen muss und als Hilfe für jeden, der auch wissen möchte, wie man ein LVM Volume verkleinert:

Vertippt man sich bei den Größenangaben oder irrt sich einfach in der Zahl, können hierbei sehr schnell mal Daten verloren gehen. Man muss also unbedingt vorher ein Backup anfertigen!
Alle Befehle müssen als root ausgeführt werden.
[…] sind Zahlenwerte in der Ausgabe, die ich mir nicht alle gemerkt habe.

Volume unmounten

root@midgard> umount /dev/mapper/vgroup-home

Dateisystem prüfen

root@midgard> e2fsck -f /dev/mapper/vgroup-home

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vgroup-home: [...]/[...] files (1.0% non-contiguous), [...]/[...] blocks

Dateisystem verkleinern

root@midgard> resize2fs -p /dev/mapper/vgroup-home 80G

Resizing the filesystem on /dev/mapper/vgroup-home to [...] (4k) blocks.
Begin pass 2 (max = [...])
Relocating blocks   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = [...])
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = [...])
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vgroup-home is now [...] blocks long.

LVM Volume verkleinern

Das LVM Volume muss mindestens so groß sein, wie das Dateisystem. Macht man es kleiner, gehen die Daten, die nicht reinpassen, verloren.

root@midgard> lvreduce -L 80G /dev/mapper/vgroup-home

WARNING: Reducing active logical volume to 80.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce home? [y/n]: y
Reducing logical volume home to 80.00 GiB
Logical volume home successfully resized

Dateisystem prüfen

Nun wird nochmal das verkleinerte Dateisystem überprüft. Sollte das fehlschlagen, ist das der richtige Zeipunkt, um die Backups auszupacken ;-)

root@midgard> e2fsck -p /dev/mapper/vgroup-home

e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vgroup-home: [...]/[...] files (1.0% non-contiguous), [...]/[...] blocks

Dateisystemgröße überprüfen/anpassen

Mit einem weiteren resize2fs ohne Größenangabe wird versucht, das Dateisystem auf die maximale Größe (also die des LVM Volumes) anzupassen. Hat man beim Verkleinern des LVM Volumes exakt die gleiche Größe verwendet wie beim Verkleinern des Dateisystem, sollte man hier nur die Ausgabe bekommen, dass es nichts zu tun gibt.
Ist das LVM jedoch größer als das Dateisystem, wird das Dateisystem entsprechend vergrößert, sodass man wirklich den gesamten Platz ausnutzt.

resize2fs -p /dev/mapper/vgroup-home

Volume wieder mounten

Nun kann man das Volume bei Bedarf wieder ganz normal mounten und sich freuen, dass man sich nicht das ganze Dateisystem kaputt gemacht hat!

mount /dev/mapper/vgroup-home /home
Veröffentlicht unter Tech | Verschlagwortet mit , , | Hinterlasse einen Kommentar

PowerSwitch – Licht an, wenn die Sonne untergeht

Wäre es nicht überaus praktisch, wenn das Licht wie von Geisterhand an geht, sobald es dunkel wird? Mit Tasker und PowerSwitch ist das mit wenig Aufwand möglich. Interesse geweckt? Los geht’s!

Weiterlesen

Veröffentlicht unter PowerSwitch, Tech | Verschlagwortet mit , , , | 17 Kommentare

Meine Einkaufskatastrophe bei Lenovo

Heute haben wir den 27.08.2013. Ich habe heute den Kaufpreis für meinen neuen Laptop erstattet bekommen. Bestellt hatte ich ihn am 06.06.2013. Was in den fast drei Monaten dazwischen so passiert ist, möchte ich hier mal auflisten…

06.06.2013 – Der Einkauf

Vor einigen Tagen habe ich mein x230t schon einmal direkt im Online Shop von Lenovo bestellt und per Kreditkarte bezahlt. Jetzt habe ich aber eine Mail bekommen, dass die Zahlung nicht autorisiert werden konnte. Ein Anruf bei Lenovo ergibt, dass es sich um einen Systemfehler, falsche Zahlungsdaten oder eine ausländische Kreditkarte handeln könnte… danke sehr hilfreich.

Nun versuche ich das ganze noch einmal und zahle per Überweisung. Während der Bestellung werde ich mehrmals zwischen http und https hin und her geschickt. Meine Zahlungsdaten soll ich per http übertragen. Nach mehreren Anläufen funktioniert die Bestellung dann auch per https und einige Tage später bekomme ich eine Zahlungsbestätigung.

Für den größten Computerhersteller der Welt jedenfall schonmal ein ziemlich abenteuerliches Einkaufserlebnis.

24.06.2013 – Die Lieferung

Endlich kommt das fertige x230t bei mir an und ich bin ohne Einschränkung begeistert. Schnell, fast lautlos und der drehbare Touchscreen ist der Hammer. Die Investition scheint sich bisher gelohnt zu haben.

25.06.2013 – Erste Schäden

Verformtes Displaybezel nach nur einem Tag

Verformtes Displaybezel nach nur einem Tag

Nach nur 24 Stunden wird meine Begeisterung leider ziemlich gedämpft. Das untere Displaybezel beginnt sich zu verformen. Ich rufe bei Cecon, einem Berliner Vertragspartner von Lenovo, an und soll das Gerät einfach mal am nächsten Tag vorbei bringen. Weiterlesen

Veröffentlicht unter Tech | Verschlagwortet mit , , , | 4 Kommentare

PowerSwitch – Licht an, wenn der Wecker klingelt

Seit Version 1.5.1 von PowerSwitch können Events von einigen Standard Wecker Apps und Sleep As Android auch direkt in PowerSwitch zum Schalten genutzt werden. Dazu einfach im Menü den Unterpunkt „Wecker“ auswählen.

Die nachfolgende Anleitung kann verwendet werden, wenn die Wecker Events in Tasker empfangen und für komplexere Aktionen verwendet werden sollen. Für einfaches An- oder Ausschalten von Steckdosen reicht die integrierte Funktion von PowerSwitch.


In anderen Posts haben wir ja schon gezeigt, wie einfach sich PowerSwitch über Intents mit anderen Apps wie Tasker steuern lässt.

In diesem Video möchte ich euch zeigen, wie ihr eure Lampen anschalten lassen könnt, wenn euer Wecker klingelt.

Die im Video verwendeten Intents:
Für PowerSwitch: de.ressel.powerswitch.action.Room.ON & Extra: Room:Max Zimmer;;
Die Intents haben sich seit der Veröffentlichung dieses Tutorials geändert. Genauere Informationen dazu findet ihr unter https://power-switch.eu/api/
Für Sleep as Android: com.urbandroid.sleep.alarmclock.ALARM_ALERT_START

Mehr über PowerSwitch: http://power-switch.eu
Die Google+ Community für PowerSwitch Nutzer: https://plus.google.com/u/0/communities/101925642491277812164

Sleep as Android im Play Store: https://play.google.com/store/apps/details?id=com.urbandroid.sleep
Die API-Dokumentation von Sleep as Android: https://sites.google.com/site/sleepasandroid/developer-api

Veröffentlicht unter PowerSwitch, Tech | Verschlagwortet mit , , , , | 3 Kommentare