Erste Schritte mit dem neuen vServer

Seit geraumer Zeit schlage ich mich mit dem Gedanken herum, meine Webseite auf einen eigenen Rootserver umzuziehen. Hauptgrund ist dabei die Möglichkeit den gesamten Verkehr über https laufen zu lassen (Let’s Encrypt lässt grüßen 🙂 ) und darüber hinaus auch automatisiert regelmäßige Backups anlegen zu können. Ersteres lässt sich mein momentaner Webspaceanbieter nämlich fürstlich bezahlen, Letzteres war bisher von mir nur sporadisch gepflegt worden da man Backups nur manuell in der Administrationsoberfläche anstoßen konnte.

Das Mehr an Flexibilität (den Spaß nicht zu vergessen 🙂 ) geht jedoch einher mit einem gestiegenen Wartungsaufwand sowie einem hohen Maß an Verantwortung; schließlich ist man auch direkt verantwortlich, wenn der Server gekapert wird, weil man ihn nicht richtig abgesichert hat und nun Amok läuft. Entscheiden musste ich mich letztendlich nur noch, ob ich mir einen eigenen kleinen Server zu Hause hinstelle oder ob ich etwas Passendes miete. Nach einigem hin und her habe ich mich dann für die Mietoption entschieden, jedoch statt eines echten physischen Servers “nur” einen virtualisierten gemietet. Zum einen war mir ein ausgewachsener Rootserver mit 8-Kern-CPU und Gigabytes voll RAM dann doch ‘ne Nummer zu oversized für meine Bedürfnisse, zum anderen zahlt man für solche Rechenknechte auch ein hübsches Sümmchen monatlich. Da bieten gerade die kleineren vServer eine gute Mischung aus Preis und verfügbarer Leistung und sollten für kleinere Projekte vollkommen ausreichen. Gesagt getan, der Server war bestellt und schon nach 5 (!) Minuten bekam ich die Mail mit den Zugangsdaten. Und das am Freitag Abend nach 19 Uhr; Respekt 🙂

Erste Schritte

Mit den Zugangsdaten kann man sich nun via SSH auf dem Server als root einloggen. Das erste, was man auf jeden Fall tun sollte ist das Passwort zu ändern:

#: passwd

da der Server bei Auslieferung noch auf Englisch gestellt war, habe ich ihn kurzerhand auf Deutsch umgestellt:

#: dpkg-reconfigure locales

dort die entsprechenden locales auswählen und dann mittels

#: locale-gen

generieren. Da ich nicht gerne ständig im root-Kontext arbeite erstelle ich mir gleich einen eigenen Benutzer

#: adduser vserver-user

SSH-Dienst absichern

Neben einer Firewall wohl der wichtigste Punkt. Momentan kann man sich via SSH mittels Passwort anmelden und auch root kann sich dort anmelden. Um auch hier ein gesteigertes Maß an Sicherheit zu bekommen, sollte man auf jeden Fall den SSH-Login auf Publickey Authentication umstellen und die Anmeldung via Passwort unterbinden; darüber hinaus sollte es dem root user nicht erlaubt sein, sich überhaupt per SSH einzuloggen. Die einzelnen Punkte habe ich hier schonmal beschrieben.

Firewall einrichten

Der nächste Punkt auf der Liste ist die Einrichtung einer Firewall, wenn man nicht will, das die Serverdienste munter und unkontrolliert mit der Außenwelt kommunizieren können. Ich setze dabei auf die ‘uncomplicated firewall’ bzw. ‘ufw’, die ein leicht zu bedienendes Frontend für iptables bietet. Als erstes erstellen wir eine Standardregel und verbieten grundsätzlich alles, danach erlauben wir speziell den ssh-Dienst und dann schalten wir noch das logging ein:

#: ufw default deny
#: ufw allow ssh
#: ufw logging on

fail2ban

Ich hatte den Server keine halbe Stunde und schon klopften die ersten Idioten an die Tür, wie mir ein Blick in die Datei

/var/log/auth.log

verrät. Standardmäßig haben sie beliebig viele Versuche um reinzukommen. Um das einzuschränken, bietet sich fail2ban an. Dieses nützliche, in Python geschriebene Programm, scant periodisch verschiedene Logdateien nach verdächtigen Inhalten (z.B. mehrfach gescheiterte Login-Versuche pro IP) und sperrt bspw. eine IP-Adresse nach zuvielen gescheiterten Loginversuchen. Den Status eines ‘jails’ kann man jederzeit via

#: fail2ban-client status ssh

abrufen.

Fazit

Ich denke, wenn man diese Punkte erst einmal abgearbeitet hat, hat man seinen Server schon ein bedeutendes Maß sicherer gemacht und kann nachts etwas ruhiger schlafen. Absolute Sicherheit gibt es leider nicht, daher sollte man seinen Server regelmäßig kritisch beobachten und vor allem regelmäßg Sicherheitsaktualisierungen einspielen.

Grub-Bootloader in einer chroot-Umgebung wiederherstellen

Es passiert irgendwie immer wieder. Ich habe jüngst auf einer Partition Windows 7 installiert und irgendwie wurde (mal wieder) der GRUB Bootloader überschrieben.

Um das Ganze wieder zu reparieren besorgt man sich  zunächst das entsprechende archlinux-iso und schreibt dieses auf einen USB Stick und bootet dan von diesem USB Stick. Das Archlinux-Image nehme ich deshalb, da es praktischerweise sowohl für x86_32 als auch für x86_64 Systeme passt, man kann nämlich nicht mit einem 32-bit Linux in eine 64-bit Chroot-Umgebung wechseln. Welche Laufwerke und Partitionen vorhanden sind erhält man mittels:

$: lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111,8G  0 disk 
├─sda1   8:1    0  72,7G  0 part 
└─sda4   8:4    0  39,1G  0 part 
sdb      8:16   0 232,9G  0 disk 
├─sdb1   8:17   0   100M  0 part 
└─sdb2   8:18   0 232,8G  0 part 
sdc      8:32   0 596,2G  0 disk 
├─sdc1   8:33   0  14,9G  0 part 
├─sdc2   8:34   0 156,3G  0 part 
└─sdc3   8:35   0   425G  0 part 
sdd      8:48   1  1007M  0 disk 
└─sdd1   8:49   1  1005M  0 part 
sr0     11:0    1  1024M  0 rom

In meinem Fall ist /dev/sda4 meine Linux-Partition. Nun kann man die chroot-Umgebung vorbereiten:

#: mkdir mnt
#: mount /dev/sda4 mnt/
#: mount -t proc proc mnt/proc
#: mount -t sysfs sys mnt/sys
#: mount -o bind /dev mnt/dev

Als nächstes kann die Chroot-Umgebung betreten werden und grub auf /dev/sda installiert werden:

#: chroot mnt/ /bin/bash
#: pacman -S grub
#: grub-install /dev/sda
#: grub-mkconfig -o /boot/grub/grub.cfg

Danach die Chroot Umgebung verlassen und die mounts wieder auflösen:

#: exit
#: umount mnt/dev
#: umount mnt/sys
#: umount mnt/proc
#: umount mnt/
#: reboot

Das war’s. Wie man sieht eine Sache von ein paar Minuten 🙂

Statusbericht 2016

Es ist schon wieder einige Zeit her, genauer gesagt schon mehr als ein halbes Jahr 😇, und das Jahr 2016 hat auch schon begonnen. Da ist ein kurzes Lebenszeichen von mir wohl mehr als fällig. Kurz gesagt, ja ich lebe noch. Auch habe ich die Lust an meinem Hobby und an alter Hardware nicht verloren. Ich habe mich in der letzten Zeit intensiver mit der Linux Kommandozeile auseinander gesetzt und bin dabei auch ein wenig in die Shell-Programmierung mit der Bash eingestiegen. Kurzfristig hat das dazu geführt, dass es hier ein wenig ruhiger geworden ist, allerdings erhoffe ich mir langfristig ein grundlegenderes Verständnis von Linux und der Kommandozeile, die ich dann hier in ausgewählte Artikel einfließen lassen kann. Tatsächlich hatte ich insbesondere beim näheren Betrachten der Shell schon einige AHA-Erlebnisse, die einen eigenen Artikel wert sind. Aber nun zunächst die Nachrichten aus Hard- und Software 🙂

Hardware

So langsam spricht es sich in meinem Bekanntenkreis herum, was für ein obskures Hobby ich so pflege 🙂 Netter Nebeneffekt ist, dass mir die Leute nun ihre ausgediente Hardware vermachen, statt sie einfach zu entsorgen. Das hat dazu geführt, dass ich nun über eine hübsche Sammlung an alten Notebooks verfüge. Welche ich davon letztendlich behalten werde, weiß ich jedoch noch nicht. Dabei hat sich vor allem das T43 als mein rundum-sorglos-Laptop etabliert und einen festen Platz auf meinem Schreibtisch bekommen. Aber auch die anderen Rechner gibt es natürlich noch und funktionieren tadellos.

Des Weiteren habe ich meine Synology-NAS dieses Jahr durch ein selbst zusammengestelltes System getauscht. Momentan läuft darauf openmediavault und ich bin bisher sehr zufrieden.

Als kleiner, stomsparender Server läuft bei mir nach wie vor der BananaPi. Seitdem ich dort jedoch mit Syncthing allerhand Daten synchronisiere, geht dem Kleinen etwas die Puste aus. Wie gut, dass vor kurzem der Oodroid-C2 von Hardkernel angkündigt wurde.

Software

Neben der Bash habe ich mich in letzter Zeit intensiver mit dem VIM beschäftigt. Ich würde mich allerdings immer noch eher als fortgeschrittenen Anfänger bezeichnen. Aber es ist schon erstaunlich, was man alles mit diesem Editor machen kann; man muss sich nur die Mühe machen, sich mit dem Vim intensiv zu beschäftigen. Ansonsten ist softwaretechnisch alles beim alten geblieben. Ich versuche derzeit lediglich zu den meisten Gui-Programmen ein Pendant für die Konsole zu finden um noch etwas flexibler zu werden.

An Betriebssystemen dominieren derzeit bei mir vor allem Debian und Archlinux. Als Desktopumgebung setze ich gerade Cinnamon ein, mit der ich recht zufrieden bin, wenngleich sie auch nichts für schwache Rechner ist. Spielt Ressourcenverbrauch eine Rolle, so ist nach wie vor openbox meine erste Wahl. So setze ich auf dem T43 gerade Debian mit LXDE ein, das auf dem mittlerweile 10 Jahre alten Thinkpad eine recht gute Figur macht.

Ausblick für 2016

Konkrete Pläne für 2016 habe ich zwar nicht, ich möchte mich aber auf jeden Fall noch mehr mit den Grundlagen von Linuxsystemen beschäftigen. Aber natürlich möchte ich auch wieder mehr schreiben, schließlich ist das hier ein Blog 🙂

Bonjour Thinkpad T43

Seit kurzem gibt es einen Neuzugang in meiner stetig größer werdenden Sammlung von Computerschrott historischen Notebooks. Und wie es der Zufall so will, ist es mal wieder ein Thinkpad geworden 🙂 Genauer ein Thinkpad T43 aus dem Jahre 2005. Erworben habe ich es von einem guten Freund samt passender Dockingstation für umgerechnet etwa ein bis zwei Kästen Bier, ein unschlagbarer Wechselkurs also 🙂 Es ist optisch wie technisch in einem hervorragenden Zustand und wurde offensichtlich gut gepflegt.

Ausstattung

Von der Ausstattung her kann man ganz und gar nicht meckern; hier die wesentlichen Leistungsdaten:

  • t43Intel Pentium-M (Centrino) @ 1.73 GHz
  • 2048 MB DDR2 Ram
  • Ati Radeon Mobility x300
  • 64 GB Transcend IDE SSD
  • 14 Zoll XGA Display
  • Intel PRO/Wireless 2200BG
  • Gigabit-Ethernet
  • Intel Audio

Wennauch der Pentium-M nicht mehr so ganz taufrisch ist, so reicht er dennoch für sämtliche alltäglichen Aufgaben auch heute noch vollkommen aus. Lediglich bei der Wiedergabe von Full-HD-Videomaterial geht ihm – mangels Hardwarebeschleunigung – ein wenig die Puste aus; aber wer schaut sich auch Full-HD-Filme bei XGA-Auflösung an 🙂

OS

Wie praktisch, dass jüngst Debian 8 alias Jessie erschienen ist :-). Da konnte ich der Versuchung einfach nicht wiederstehen und musste das gleich mal auf dem Thinkpad T43 ausprobieren. Insbesondere wollte ich mal sehen, was sich seit dem Umstieg auf SystemD so getan hat. Als Fenstermanager kommt hier wieder Openbox zum Einsatz, der mir auch schon auf anderen Systemen gute Dienste geleistet hat. Die Installation verlief – ohne dass ich an irgendeiner Stelle eingreifen musste – völlig problemfrei durch, nicht einmal am Sound- oder Grafiktreiber musste ich in irgend einer Weise Hand anlegen.

Was mir sofort auffiel war, dass offensichtlich der Webbrowser Midori aus den Debian-Repositories geflogen ist. Nun bin ich auf der Suche nach einer guten Alternative; der Firefox (bzw. Iceweasel wie er unter Debian heisst) ist mir – trotz SSD – leider ein wenig zu träge. Auch cmus – mein beliebter Musikplayer für die Konsole – zickt ein wenig rum; aber hier gibt es ja noch den MOC 🙂

Hier gibt es auch gleich den passenden Screenshot vom neuen System:

Debian auf dem T43

Fazit

Ich bin ausserordentlich zufrieden mit dem Thinkpad T43, alles funktioniert so wie es soll. Ich hoffe, dass ich an diesem guten Stück noch lange Freude haben werde und mir noch den ein oder anderen interessanten Blogpost beschert :-). Einziger Schimmer am sonst ungetrübten Abendhimmel ist das Flexing-Problem der T4x-Reihe (und anderer Notebooks der Centrino-Generation). Da das T43 aber sowieso eher auf meinem Schreibtisch steht und wenig herumgetragen wird, sollte es eigentlich keine Probleme geben…

Eigene SSH-Konfiguration verwenden

Es gibt so manche Dinge im Leben bei denen man sich fragt – wenn man sie denn einmal herausgefunden hat – warum nicht gleich so? Eines dieser Dinge ist bspw. eine eigene Konfigurationsdatei für ssh-Verbindungen. Normalerweise sieht ein Login auf einem meiner Server nämlich so aus:

$ ssh -p 12345 -i ~/.ssh/server_key user@domain

Das ist vor allem immer eine elende Tipperei. Dabei geht es auch einfacher, indem man das Ganze einfach in eine config-Datei schreibt und in seinem Homeverzeichnis unter ~/.ssh/config ablegt:

Host Servername
	HostName server.domain.de 
	Port 12345 
	User username 
	IdentityFile ~/.ssh/server_key 

Danach kann man ganz einfach mit

$ ssh Servername

sich zu seinem ssh-Server verbinden. Gerade wenn man mehrere ssh-Verbindungen managen will (mit unterschiedlichen RSA-Keys) lohnt es sich eine eigene Konfigurationsdatei anzulegen.

Richtig cool ist allerdings, dass man über ssh bestimmte Ports auf dem Zielserver auf einen (nicht-privilegierten) Port auf dem lokalen Rechner mappen kann. Ich kann also bspw. meinen internen Webserver der daheim auf dem BananaPi zu administrativen Zwecken läuft auf einen beliebigen Port meines Laptops mappen und so von außerhalb bequem darauf zugreifen. Dazu muss man seine ~/.ssh/config nur wie folgt erweitern:

Host tunnel_zum_webserver 
	HostName server.domain.de 
	Port 12345 
	User username 
	IdentityFile ~/.ssh/server_key 
	LocalForward 4000 127.0.0.1:8080

Jetzt kann man mit

$ ssh -f -N tunnel_zum_webserver

eine einfache Verbindung zu seinem Webserver aufbauen und der ganze Verkehr wird über ssh getunnelt 🙂

Das ganze funktioniert nicht nur mit einem Webserver, sondern auch mit allen anderen Diensten, die über das Netzwerk erreichbar sind, wie etwa Samba-Freigaben oder ein MySQL-Server… 🙂

Slitaz-base auf dem Thinkpad 600E

Was gibt es schöneres an einem sonnigen Tag als auf einem etwas betagten Laptop Linux zu installieren? Obwohl das Thinkpad 600E mit seinem Pentium II Prozessor und 192 MB Ram durchaus genug Power besitzt um eine grafische Oberfläche zu zeichnen, habe ich mich diesmal für eine Konsole-only Variante entschieden. Als Basis hierfür habe ich diesmal Slitaz genommen, dass in dem Ruf steht auch auf einem 486er mit nur 16 MB Ram noch lauffähig zu sein (ein Test steht da noch aus 🙂 )

Iso-Image besorgen und davon booten

Zunächst habe ich mir auf der Slitaz-Homepage ein aktuelles Iso-Image der Stable-Version heruntergeladen. Dabei kann man zwischen verschiedenen Versionen (‘Flavors’) wählen. Hier gibts eine direkte Übersicht. Ich habe mich für die ‘base’ Variante entschieden, mit lediglich 8 MB. Für die Installation habe ich mich an die unter folgendem Link einsehbaren Anleitung gehalten.

Partitionen erstellen

Als erstes muss die Festplatte partitioniert werden. Im Prinzip reichen mir zwei Partitionen aus; eine ‘Root-Partition’ und eine ‘Swap-Partition’. Natürlich kann man das aber machen wie man will. Gerade wenn man noch andere Betriebssysteme auf dem Rechner installiert, lohnt es sich vielleicht noch über eine separate ‘Home-Partition’ nachzudenken. Nach dem Partitionieren müssen noch die erstellten Partitionen mit dem gewünschten Dateisystem formatiert werden:

~# mkswap /dev/hda2 && swapon /dev/hda2
~# mkfs.ext4 /dev/hda1

Danach sollte ~# blkid etwa folgendes ausgeben:

/dev/hda1: UUID="42ea812e-58c6-437f-a624-05e162ae116b" TYPE="ext4"
/dev/hda2: UUID="8962e5a4-1630-44e6-85fe-71b3254c9ac3" TYPE="swap"

Partition einbinden

Als nächstes muss die Root-Partition in das Dateisystem eingebunden werden:

~# mkdir /mnt/slitaz && mount /dev/hda1 /mnt/slitaz

Da bei mir das Einbinden der base-CDRom aus einem mir unerfindlichen Grund nicht klappen wollte, habe ich mir das Iso-Image manuell heruntergeladen und als loop-device eingebunden:

~# wget http://mirror.switch.ch/ftp/mirror/slitaz/iso/stable/flavors/slitaz-4.0-base.iso
~# mount -o loop slitaz-4.0-base.iso /media/cdrom

Bootkernel kopieren und Root-Dateisystem extrahieren

Boot-Verzeichnis erstellen:

~# mkdir /mnt/slitaz/boot

Bootkernel kopieren:

~# cp -a /media/cdrom/vmlinuz-* /mnt/slitaz/boot

gepacktes Root-FS kopieren:

~# cp /media/cdrom/rootfs.gz /mnt/slitaz

In das Dateisystem wechseln:

~# cd /mnt/slitaz

Root-FS entpacken und dekomprimieren:

~# lzma d rootfs.gz -so | cpio -id
~# rm rootfs.gz init

Bootloader installieren:

~# grub-install --root-directory=/mnt/slitaz /dev/hda

GRUB-Konfigurationsdatei menu.lst in /slitaz/boot/grub/ mit folgendem Inhalt erstellen:

title  slitaz
       root(hd0,0)
       kernel /boot/vmlinuz-2.6.37-slitaz root=/dev/hda1 vga=791

Die Option vga=791 aktiviert beim Thinkpad 600E praktischerweise den Framebuffer und stellt die Auflösung auf 1024x768x16.
Nach einem Reboot hat man (hoffentlich 🙂 ) ein schlankes, frisches Slitaz auf der Festplatte. Was jetzt noch fehlt ist nur noch die Audio Unterstützung.

Audio

Die Treiber für die im Thinkpad verbaute Cirrus Logic CS 4610/11 Soundkarte befinden sich im Paket hardware-thinkpad-600e-1.0, welches mittels folgendem Kommando installiert werden kann:

~# tazpkg get-install hardware-thinkpad-600e-1.0

Fehlt nur noch alsa:

~# tazpkg get-install alsa-lib alsa-utils

Soundhardware konfigurieren:

~# soundconf

Jetzt sollte die Soundkarte fertig eingerichtet sein. Ruft man jetzt den alsamixer auf, sollte die Soundkarte dort angezeigt werden. Falls beim Abspielen eines Audiostückes kein Ton kommt, sollte man prüfen ob der Benutzer auch in der Gruppe audio ist und der Ausgabekanal im alsamixer nicht auf mute steht 🙂

Dropbox-Verzeichnis verschlüsseln mit encfs

Für das einfache Synchronisieren von Dateien verwende ich seit einiger Zeit gerne Dropbox. Es ist schnell eingerichtet und läuft auf allen Oberflächen gleich. Obwohl in meiner Dropbox keine sensiblen Daten liegen, bleibt jedoch immer ein etwas schaler Beigeschmack wenn ich dort einfach meine – überwiegend – Textdateien ablege. Damit diese wenigstens nicht von jedem dahergelaufenen Sysadmin oder sonst wem gelesen werden können sollten sie also verschlüsselt werden. Eine Möglichkeit hierzu bietet encfs, das sich zumindest bei Arch, Debian und Ubuntu in den Standardrepositorien befindet.

Mit EncFs kann man einfach und bequem den kompletten Inhalt eines Ordners auf Dateiebene verschlüsseln. Dazu wird mit folgendem Befehl ein verstecktes Verzeichnis (im folgenden “Verschlüsselungsverzeichnis”) ~/Dropbox/.encfs im Dropboxordner erstellt sowie ein Verzeichnis ~/encfs (im folgenden “Arbeitsverzeichnis”) im Homeordner des Benutzers erstellt und ein Passwort vergeben:

$ encfs ~/Dropbox/.encfs ~/encfs

Anschließend kann mit folgenden Befehlen das Verzeichnis gemounted bzw. wieder unmounted werden:

$ encfs ~/Dropbox/.encfs ~/encfs

$ fusermount -u ~/encfs

Schaut man sich die zwei Verzeichnisse (angereichert mit zwei Testdateien) einmal an ergibt sich folgendes Bild:

ls -la ~/encfs ergibt dabei für das Arbeitsverzeichnis:

insgesamt 16
drwx------  2 user user 4096 11. Dez 19:19 .
drwx------ 25 user user 4096 11. Dez 19:23 ..
-rw-r--r--  1 user user   25 11. Dez 19:19 testdatei2.txt
-rw-r--r--  1 user user   17 10. Dez 19:42 test.txt

ls -la ~/Dropbox/.encfs ergibt dabei für das Verschlüsselungsverzeichnis:

insgesamt 20
drwx------ 2 user user 4096 11. Dez 19:24 .
drwx------ 7 user user 4096 11. Dez 19:09 ..
-rw-r--r-- 1 user user   33 10. Dez 19:42 DHF-zL8RLcUNw0Jo3G4T,Ndy
-rw-r--r-- 1 user user 1091 11. Dez 19:24 .encfs6.xml
-rw-r--r-- 1 user user   41 11. Dez 19:19 ,XFCVJVAcNWwxvyghRPKfICa

Was auffällt ist, dass sich im verschlüsselten Verzeichnis neben den eigentlichen, verschlüsselten Dateien auch eine unverschlüsselte xml-Datei .encfs6.mxl befindet. In dieser Datei befinden sich die Metadaten für encfs mit Angaben zur Verschlüsselungsart sowie einem Passworthash. Diese Datei dort zu belassen ist auf jeden Fall riskant, gibt sie einem potentiellen Angreifer doch wertvolle Hinweise. Leider bietet encfs keine Option um beim Mount den Pfad zur Metadatendatei als Argument zu übergeben. Man kann sich aber behelfen durch setzen der Umgebungsvariable $ENCFS6_CONFIG. Dazu kopiert man die .encfs6.xml in das Homeverzeichnis (oder jeden anderen beliebigen Ort) und trägt in der Datei ~/.bashrc ein:

export ENCFS6_CONFIG='~/.encfs6.xml'

und schon funktioniert das mounten wieder wie gewohnt. Ein wenig Vorsicht ist allerdings angebracht. Ist die Datei weg z.B. durch einen Festplattencrash oder Diebstahl des Notebooks kommt man auch an die Daten so einfach nicht mehr dran.

Fazit

Mit encfs hat man eine praktische und komfortable Möglichkeit Dateien in einem Verzeichnis zu verschlüsseln. In Kombination mit einem Clouddienst bekommt man so wenigstens ein wenig Sicherheit, dass die privaten Daten zumindest mit herkömmlichen Mitteln nicht ganz so einfach einsehbar sind. Vollkommene Sicherheit bietet leider keine Verschlüsselungssoftware, daher bin ich auch weiterhin der Meinung, dass wirklich private Daten auf fremden Servern nichts zu suchen haben.

ArchLinux und i3 auf dem Thinkpad x200s

Vor ein paar Tagen habe ich mich dazu entschlossen, mein Thinkpad X60s durch ein x200s auszutauschen. Im Prinzip war ich immer sehr zufrieden gewesen mit meinem kleinen Begleiter. Was mich in letzter Zeit allerdings tierisch störte, war der Umstand, dass die rechte Handballenauflage sehr heiß wird. Leider ist das konstruktionsbedingt und auch nicht vermeidbar und gerade wenn man längere Zeit an dem guten Stück arbeiten will – und wie ich sowieso schon immer warme Hände hat – wird es echt unangenehm. IBM/Lenovo hat übrigens aus diesem Grund beim X61 einen kleinen Luftauslass an genau dieser Stelle eingebaut, um so die übermäßige Wärme abzuführen. Jedenfalls macht längeres Arbeiten oder Surfen auf der Couch so nur mäßig Spaß…

Es traf sich daher ganz gut, dass ich beim Händler meines Vertrauens ein gut erhaltenes Thinkpad x200s für relativ günstig Geld erstehen konnte. Da bereits das X60s mit ArchLinux lief und ich damit sehr zufrieden war, brauchte ich mir um die Frage des passenden OS – zumindest diesmal – keine Gedanken machen 🙂

Archlinux installieren

Die Installation von Archlinux unterscheidet sich schon stark von der eines Debian. Nach dem Boot des Iso-Images landet man direkt in der Shell und sonst nix. Von da an ist man (fast) völlig auf sich allein gestellt. Hilfe bekommt man allerdings in Form einer kleinen Textdatei, die die wichtigesten Installationsschritte aufführt. Alternativ kann man auch mit einem zweiten Rechner oder dem Smartphone die Installationsanleitung im Arch-Wiki nehmen. Mit beiden Anleitungen ist die Installation wirklich ein Kinderspiel, man sollte sich da auf jeden Fall nicht abschrecken lassen sondern das Ganze einfach mal durch exerzieren; es lohnt sich 🙂

Nach der Grundinstallation

Hat man die Grundinstallation erfolgreich durchgeführt, hat man schon ein minimales ArchLinux auf der Festplatte. Was fehlt sind aber noch ein paar Anpassungen, wie etwas die Konfiguration des Soundsystems oder eine grafische Oberfläche. Ebenso fehlen noch eine ganze Reihe an Programmen; während der Installation wurden ja nur die Pakete aus der Gruppe base und base-devel installiert. Puristen mag das ja genügen, ich bin da etwas verwöhnter 🙂

Xserver und i3 installieren

Zunächst installiere ich den Xserver samt den passenden Treibern für die integrierte Intel Grafikkarte sowie die Sound-Umgebung:

# pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils xf86-video-intel alsa-utils

Als nächstes kommt der ‘i3-Fentstermanager’, die ‘i3-Statusleiste’ sowie ‘dmenu’ als Softwaremenü hinzu:

# pacman -S i3-wm i3status dmenu

Als nächsten Schritt kopiert man die Beispiel-xinitrc-Datei in das Home-Verzeichnis und trägt dort i3 als zu startenden Fenstermanager ein:

$ cp /etc/skel/.xinitrc ~
$ echo 'exec i3' >> ~/.xinitrc

Damit nach dem Booten automatisch der Xserver mit dem i3-Fenstermaager gestartet wird, muss noch ein passender Login-Manager her. Ich verwende gerne slim, da er schlank und einfach zu konfigurieren ist:

# pacman -S slim && systemctl enable slim

Nach diesen Schritten hat man bereits ein gut funktionierendes ArchLinux mit i3 als Fenstermanager. Allerdings fehlt noch einiges an Software sowie ein paar Kleinigkeiten.

Schriften

Für ein paar schönere Schriftarten kann man das Paket ‘ttf-dejavu’ installieren:

# pacman -S ttf-dejavu

Ein noch besseres Schriftbild erhält man, wenn man noch die Kantenglättung ein wenig anpasst. Dazu erstellt man unter ~/.config/fontconfig/ die Datei fonts.conf und trägt Folgendes dort ein:

<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
    <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
    <edit name="rgba" mode="assign"><const>rgb</const></edit>
  </match>
</fontconfig>

Network Manager

Für die Netzwerkkonfiguration nutze ich gern den Network Manager. Darüber hinaus gibt es für diesen noch ein nettes Applet für die Statusleiste:

# pacman -S networkmanager network-manager-applet && systemctl enable NetworkManager.service

Damit das Applet bei jedem Start automatisch mitgestartet wird, muss man dieses noch in die ~/.xinitrc eintragen. Das Ganze sieht dann so aus:

#!/bin/sh

nm-applet &
exec i3

Programme

Da nun das Grundsystem steht, fehlen nur noch ein paar grundsätzliche Programme um etwa Mails abzurufen oder im Internet zu surfen. Standardmäßig installiere ich gern folgendes:

# pacman -S firefox firefox-i18n-de thunderbird thunderbird-i18n-de vlc audacious leafpad thunar evince

Danach stehen einem der Firefox sowie Thunderbird nebst den deutschen Sprachpaketen sowie der VLC-Player und Audacious für Video- bzw. Audio-Dateien zur Verfügung. Als grafischen Editor benutze ich neben ‘gvim’ auch mal gerne den ‘leafpad’. Fehlen nur noch ein Dateimanager und ein Pdf-Reader. Hier benutze ich gerne zum einen den Thunar, welcher als Standard beim Xfce-Desktop ist, und zum anderen ‘evince’ aus der GNOME-Umgebung.

Blogartikel mit Vim, Markdown und Pandoc erstellen

Seitdem mich ein Freund auf das Konvertierungstool Pandoc aufmerksam gemacht hat, mit dem man bspw. Markdown-Dokumente ganz einfach nach Html konvertieren kann, schreibe ich meine Blogartikel komplett in Markdown.

Markdown – die Basics

Markdown ist eine von vielen Auszeichnungssprachen, die es ermöglichen mit einer überschaubaren Anzahl an Elementen Text zu formatieren. Ziel ist hierbei, dass schon das Markdown-Dokument ohne weitere Konvertierung leicht lesbar und verständlich ist. Dabei ist die Syntax relativ leicht zu lernen und nicht wirklich kompliziert. Hier gibt es einen guten Überblick. Darüber hinaus findet man auch über die Google Suche das ein oder andere Cheatsheet, das die wichtigsten Elemente kurz zusammenfasst.

Vim Markdown

Für meinen momentanen Lieblingseditor Vim gibt es ein nettes Plugin, welches den Umgang mit Markdown-Texten ziemlich vereinfacht. Hier gibt es das Plugin samt Installationsanweisung. So sieht das ganze dann in Vim aus mit aktiviertem Plugin:vim_markdown

Pandoc

Um aus meinem zuvor erstellten Markdown-Dokument ein gültiges Html-Dokument zu machen, bedarf es noch einer Umwandlung mittels pandoc. Pandoc selbst ist in den Debian Paketquellen vorhanden und lässt sich mittels #apt-get install pandoc installieren. Um das vorhandene Markdown-Dokument in ein Html-Dokument umzuwandeln genügt ein $pandoc -o testseite.html markdown-dokument.md. So sieht das Ganze dann nach der Umwandlung aus:html

Fazit

Mit der Kombination aus Vim + Markdown + Pandoc ist es mir relativ leicht möglich Artikel für meine Website zu schreiben. So kann ich das Ergebnis als Html-Quelltext im Anschluss in meinen WordPress-Editor laden und dort den letzten Feinschliff vornehmen. Dadurch, dass Markdown-Dateien im Prinzip nur Textdateien sind, lassen sie sich zudem wunderbar mit Tools wie bspw. ‘grep’ auf Kommandozeilenebene durchsuchen.

Bonjour Banana Pi

Seit etwa zwei Monaten fristet mein kleiner Raspberry Pi, den ich bis dahin immer als Homeserver eingesetzt habe, sein Dasein als Entertainment-Center an meinem Fernseher. Da ich auf einen immer laufenden, stromsparenden Server-PC nicht gerne verzichten möchte musste also Ersatz her.

Mein erster Gedanke war die Anschaffung eines zweiten Raspberry Pi, da ich bis dahin mit dem Gerät durchweg positive Erfahrungen gemacht habe. Einzig die relativ bescheidene Leistung des Rapi bewog mich dazu mich einmal ein wenig nach Alternativen umzusehen. Und deren gibt es zahlreiche.
Angefangen vom Cubieboard, über Pogoplug (n.b. was für ein dämlicher Name 🙂 ) bis hin zum Beaglebone gibt es zahlreiche Alternativen, die preislich (bis auf den Pogoplug) sämtlich jenseits dessen waren, was ich bereit war auszugeben. Lediglich ein Kandidat schaffte es mich vom Preis und von den Leistungsdaten her neugierig zu machen, der Banana Pi.

Die Ähnlichkeit mit dem Raspberry Pi ist frappierend aber durchaus gewollt. Zum einen sollen (angeblich) die Erweiterungsplatinen für den Raspberry Pi auch für den Banana Pi nutzbar sein, zum anderen möchten die Entwickler gerne ein wenig von dem PR-Kuchen des Raspberry Pi abhaben 🙂

Vergleicht man die Hardwareausstattung direkt mit der des Raspberry, so merkt man sehr deutlich, dass der Banana Pi wesentlich mehr Dampf unter der Haube hat:

  • Dual Core Arm Cortex A7
  • Mali G400MP2 Grafikchip
  • 1 GB DDR3-RAM
  • Gigabit Ethernet
  • SATA Port

Damit hat dieser Winzling schon mal deutlich mehr Pfeffer als ein Großteil der übrigen, hier vorhandenen Rechner. Darüber hinaus ermöglicht der eingebaute SATA-Port einen direkten Anschluss einer 2.5 Zoll Festplatte.

OS

Etwas, wo ich diesmal gar nicht so lange nachdenken musste, war die Wahl des Betriebssystems. Mittlerweile haben alle “großen” Distributionen einen eigenen ARM Port und sind somit auf dem Banana Pi lauffähig. Ich habe mich letztlich für eine an die Hardware des Banana Pi angepasste Version von Raspbian entschieden, einfach weil ich damit bereits recht gute Erfahrungen mit dem Raspberry Pi gemacht habe. Kurz überlegt habe ich noch, ob ich nicht vielleicht ArchLinux ausprobieren sollte, aber da der Banana Pi in erster Linie als Server laufen sollte und es mir da nicht so sehr auf Bleeding-Edge und das allerneueste vom Neuesten ankommt, habe ich das wieder verworfen.

Auf der Herstellerseite findet man eine ganze Reihe an angepassten Iso-Images, die auf dem Banana Pi laufen. Die Installation geht, wie auch beim Raspberry Pi, ganz locker von der Hand. Einfach das Iso-Image mittels dd auf die SD-Card schreiben und fertig:

# dd if=/pfad/zur/iso of=/pfad/zur/sdcard bs=1M && sync 

Nach dem Start führt man noch ‘raspi-config’ aus und passt den Banana Pi an seine Bedürfnisse an. Dort kann man übrigens auch recht simpel einstellen, dass die grafische Oberfläche nicht mit gestartet werden soll, was noch einmal wertvolle Ressourcen frei macht. Nach einem Reboot präsentiert sich der Banana Pi recht schlank:

banana_pi htop_banana_pi

Wie man auf dem Screenshot sieht, läuft im Moment noch nicht allzu viel auf dem Pi, was sich aber in naher Zukunft ändern soll 🙂