By

Encrypted Backup-Server with Debian and Dirvish – LVM in LUKS

If you haven’t heard of Dirvish, it’s about time. It is a very neat, rsync and hardlink based backup solution, just like a pro version of Apple’s TimeMachine.

What I want

My setup is quite specific for my use case: Having used dirvish at work for a while I was still stuck with backup-manager on my own servers, which is quite neat, but it leaves you with differential tarballs of your system which makes it an annoying task finding a specific version of one file somewhere in the past.

Dirvish, running on the backup server, logs into the target system using ssh and syncs the whole filesystem (you can define excludes, of course) to a folder with a timestamp in its name on the backup server. The next time it runs (simple cronjob) it will create a new timestamped folder, sync only changed files and hardlink everything else.
So, in the end we get a kind of snapshot of each time dirvish ran, where we can simply copy files back or even roll back the complete system.

When setting up my new dirvish backup server (replacing the ancient tarball and ftp solution) I wanted it to save data incrementally and store it on en encrypted device. For easiness of use I simply enter the encryption password manually after booting. Therefore only the dirvish partition (“bank”) is on an encrypted device, the rest of the machine is plain.
Caveat: The ssh key for accessing the other machines is on the unencrypted partition, this needs some rework to be done …

System: LVM on LUKS on VD in VM on LVM. For sure!

My Backup server runs in a VM on one of my Xen systems. Actually, the whole dirvish-bank (i.e. the location of all backups) is also synced to another machine at home for real backup.

The VM has got two virtual disks: the system disk, xvda, and (for historic reason) xvdc as storage for dirvish. This disk is completely encrypted using LUKS. I won’t cover encryption in detail here.

Inside this encrypted container I will create a LVM volume group, and backup will be done on volumes inside this group. The reason for this nested LVMs (the virtual disks already live in a LVM on the host) is that I will be able to create different “tiers” of backups if possible: If space on the underlying host gets tight, I will be able to move lower priority hosts on a second volume and don’t risk critical machines not being backuped.

So we basically have:

Encrypting

I did this on a freshly installed Debian Jessie, though it will quite surely work similarly on Ubuntu, SuSE or RedHatish systems. So first install cryptsetup:

Next, let’s encrypt our whole data disk:

You need to answer some questions, especially for a password. Use a good one, but remember that you will have to type it each time you want to mount the volume. We better create a backup of the LUKS-Header and set up a second, even more complex password. Store both at a very save place:

We now have a completely encrypted partition and will make it available through deivcemapper under /dev/mapper/lukslvm:

Let’s create a lvm within our container, the virtual disk hat 210GB:

Finally we create our mount point and an entry in /etc/fstab.

We use noauto to prevent the system stalling on boot because the encrypted container isn’t open already. We also use noatime and dirnoatime to speed up rsync comparison.

Preparing dirvish

Now let’s get the backup running.

First you need to create a key pair for ssh login to the target machines. I won’t cover this here because there are trillions of pages about this. I called the keys id_rsa.dirvish and id_rsa.dirvish.pub and put them in /root/.ssh/ and copied the public key to all target machines (ansible is a very good friend!) Do yourself a favour and test if the login works.

Now install dirvish:

Now go to /etc/dirvish and edit the master.conf file.

We here define the bank (like “place where you store precious things”), which of course is our volume in the LUKS vault.

We also have some common excludes and a default expiry.

Debian provides a cronjob with some automatism, we won’t use that but rather create our own cronjob later in this process.

Backing up

Now let’s create our first backup. We will create a backup of the dirvish machine itself. Won’t help against failing disks, but against failing admins breaking stuff.

For each target machine we will create a folder hierarchy, the so called vault, which looks like this:

HOST will of course be the hostname of the target machine. Calling it *-root is just convention for backups of the root-tree. You could call it e.g. HOST-mailspool if you only backup the mail dir of a host.

Which means:

  • client: Hostname (needs to be resolvable!) of the target machine.
  • tree: Folder to backup.
  • xdev: 1 means that it will stay within the filesystem. Take care if you have /var or /home in different volumes (which I tend to have).
  • index: Type of compression of the index file (file list)
  • log: Type of compression of the log file saved within the folder.
  • image-default: Timestamp of the backup folder
  • exclude: Folders to be excluded.

There are a lot more config items, some of them which I use quite often:

  • pre-server: Path to a script on the dirvish server to be run before backup starts.
  • post-server: Path to a script on the dirvish server to be run after backup starts.
  • pre-client: Path to a script on the target machine to be run before backup starts. This is helpful for dumping sql databases before backing up.
  • post-client: Path to a script on the target machine to be run after backup starts.
  • speed-limit: Maximum transfer speed in Mbit/s

When we are finished creating our vault, we need to initialise it. This creates the first complete sync.

Depending on the size of the machine this can take quite a while. When done our vault will look like this:

tree now contains the folder hierarchy synced from the target, while the other files contain meta information.

The last step is creating a cronjob now. Simply add a line to /etc/crontab for each vault. Make sure to use different running times:

Ok, there’s one more step: Create any kind of monitoring facility, e.g. use post-server to send the summary and the log by mail, or parse these files and react on the results or use your existing monitoring solution…

By

Bridged Xen on Debian Wheezy on a Hetzner Server

Xen (not XeServer, btw!) seems to have taken a bak-seat recently, RedHat/CentOS/Fedora concentrating on KVM and Debian silently neglecting it.

This is reflected in documentation, there is a lot of outdated stuff around, especially about bridged setups. Same occurs to packages, at least in Debian Wheezy (NB: I also tried on testing, same results with fairly newer packages).

My aim was a virtual host which is directly connected to the internet without any external firewall running different virtual machines which ARE thoroughly firewalled. In order to archive this, I am running the quite decent Sophos UTM (formerly Astaro) as a VM, this is the only virtual machine with direct access to the external network interface. It’s other interface just like all other VMs are connected to an internal bridge without any link to the rest of the world. This is why routing isn’t an option.

This article focusses on the Xen server and the bridging setup, maybe I will write another one later about Sophos UTM etc.

xenserver

 

I am running this setup on some servers at Hetzner, though this should be working at most other hosters (some tend to drop the switch connection when they sense a pseudo ARP-spoofing, take care!), I am in no way affiliated to Hetzner.

My setup needs a secondary IP address (the main IP address is used for management of the host, I am assuming the following setup:

External Host-IP: 1.2.3.4

Secondary IP, used on UTM: 1.2.3.6. At least at Hetzner, this IP address needs to have it’s own MAC address assigned, this can be done in their Robot tool.

Setting up the host

I want to have my host running directly on the (Software-)RAID, I personally don’t really like running the OS on LVM. But I also want to have my VMs live in an LVM realm in order to easily take snapshots, clone etc.

This means that Hetzner’s default setup isn’t very helpful. But they have an answer file based installation using the rescue system. Therefore: boot into the rescue system and run install image.

Note: Preserve the temporary password for the rescue system, you will need it for the freshly installed system!

This lets you define your custom install file and then installs everything within a few minutes. I chose Debian Wheezy Minimal. The only two settings I changed were the hostname (I am using dome in this example) and the partition setup:

installimage2

I chose 50GB for my root filesystem and 12GB swap.

After saving the file and starting the installation, I had to wait for about five minutes and was presented with a brand new Debian system.

installimage3

After the first boot I changed the root password and added my own SSH key.

Note: This document doesn’t cover hardening your server, which you really should do!

First thing to do is updating all package sources:

I tend to install emacs23-nox as soon as possible, YMMV.

It is quite handy to add your domain, if you are using one, to /etc/resolv.conf and to /etc/hosts.

Next is changing the network setup, so edit /etc/network/interfaces :

So we transformed our (only) network card eth0 into a bridge called virbr0 and added a secondary bridge, virbr1.

Set up Xen

First install the xen system (4.1 on Wheezy) and the xen-tools which are quite helpful setting up VMs.

This will install xen and all the necessary tools.

In order to boot into a xen enabled hypervisor, we need to adapt GRUB:

Before we reboot we also adapt the boot command line in /etc/default/grub :

This basically limits resources on Dom0.

Now update grub and reboot:

After reboot we can check if Xen is up and running.

Looks fine.

Now we need to set up the network, which is quite straight forward:

Edit the file /etc/xen/xend-config.sxp  and comment out everything about networking, routing and vif except this line:

You  may also fine tune your Xen setup by changing the following lines:

The first thing we changed tells Xen to run a script called vif-bridge  located in /etc/xen/scripts/  as soon as a virtual machine is being created. The script basically checks if the bridge exists and connects the VMs virtual network card to the bridge.

Now we need to adapt this file to our naming convention, so let’s replace the occurrences of xenbr  to virbr  in the file /etc/xen/scripts/vif-bridge :

Now restart xend (for some reason the service is called xen  on Debian.

Getting the first VM up and running

Using xen-create-image  from the xen-tools makes it a piece of cake installing our first VM:

You can safely ignore the warning about vif-bridge.

Now there’s a little bug in the xen-tools:

So edit /etc/xen/test.cfg and remove the m from 512m:

Now let’s run it:

We can now connect a console to the vm and see why’s going on (you can also create it with the -c parameter above …).

Hint: CTRL + 5 gets you to of the console again.

By

Ich BILD mir keine Meinung!

Nachdem vor einigen Wochen ein Jobhunter meinte, mir erklären zu müssen, dass ich “diese Einstellung unbedingt ändern” müsse, nachdem ich seinen Vorschlag, für den Axel Springer-Verlag zu arbeiten, dankend abgelehnt habe, nun das:

Springer will anscheinend am 06.06. kostenlos BILD an alle Haushalte verschicken. Nein Danke. http://www.bildblog.de/56652/keine-bild-zur-wm/

(c) Ralph Ruthe

Am 28.05. schrieb ich um 13:10 Uhr das hier an keinbildzurwm@bild.de mit dem unsachlichen, aber verdienten Betreff ‘Keine Scheißbild, noch nicht mal geschenkt’

Sie haben für Juni 2014 die bundesweite kostenlose Verteilung einer „BILD zur WM“ angekündigt. Hiermit untersage ich der Axel Springer SE, ihren Tochtergesellschaften, Beauftragten und anderen Vertragspartnern ausdrücklich, mir an die oben genannte Anschrift „BILD zur WM“ (auch nicht als Bestandteil einer anderen Publikation) zuzustellen oder in den Briefkasten einzulegen oder durch Dritte zustellen oder in den Briefkasten einlegen zu lassen. Ferner untersage ich Ihnen ausdrücklich, meine persönlichen Daten zu einem anderen Zwecke zu verwenden, als es für die logistische Umsetzung des hier ausgesprochenen Zustellverbotes sowie der Vermeidung von Missbrauch zwingend notwendig ist, und fordere Sie auf, anschließend sämtliche Daten umgehend und restlos zu löschen.

 
Dies gilt für meine beiden Adressen:
 
(Adresse in Schopfheim)
 
und 
 
(Adresse in Berlin)
Ich bitte um schriftliche Bestätigung, dass Sie diese Mitteilung erhalten haben.

Am selben Tag um 17:28 Uhr erhielt ich eine automatische Eingangsbestätigung.

Heute, 31.06., 09:17 Uhr, erhielt ich folgende Mail:

Sehr geehrter Herr Dörflinger,
vielen Dank für Ihre Nachricht.Leider haben Sie Ihren Widerspruch so spät versandt, dass er von unseren logistischen Prozessen, die einen organisatorischen Vorlauf erfordern, nicht mehr erfasst werden konnte.
Mit freundlichen Grüßen
Ihr BILD Leserservice
keinebildzurwm@bild.de
Postfach: Bild zur WM, 20674 Hamburg
Tel. 0180/6008741*
0049-180/6008741*** Euro 0,20/Anruf aus dem dt. Festnetz; Mobilfunk max. 0,60 Euro/Anruf.
** außerhalb Deutschlands. Kosten aus ausländischen Netzen können abweichen.Axel Springer SE, Sitz Berlin, Amtsgericht Charlottenburg, HRB 154517 B
Vorsitzender des Aufsichtsrats: Dr. Giuseppe Vita
Vorstand: Dr. Mathias Döpfner (Vorsitzender),
Jan Bayer, Dr. Julian Deutz, Dr. Andreas WieleDiese E-Mail und eventuelle Anlagen können vertrauliche und/oder rechtlich geschützte Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail sind nicht gestattet.This e-mail and any attachments may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.

Ob die Weitergabe nun gestattet ist oder nicht, interessiert mich nur sehr bedingt, ich archiviere sie jedenfalls hier im Blog.

Nun habe ich das geschickt. Ich bin gespannt:

Das ist allerdings IHR Problem, nicht meins. Ich habe keine BILD bestellt, ich will keine BILD im Briefkasten haben, es ist IHR Problem, dafür zu sorgen, dass keine im Briefkasten (weder in Berlin noch in Schopfheim) landet, notfalls müssen sich Herr Diekmann und Herr Döpfner halt persönlich vor meinen Briefkasten stellen …

Ich weiss auch nicht, warum ICH mir die Mühe machen muss, dafür Sorge zu tragen, dass Ihr Drecksblatt nicht in meinem Briefkasten landet, es ist Ihr Prozess, sorgen Sie dafür, dass meine Rechte gewahrt bleiben. Falls Sie jemals wieder eine solche Aktion durchführen, gehe ich davon aus, dass ich dann rechtzeitig und persönlich von Ihnen informiert werde, wie ich verhindern kann, Ihren Schrott zu bekommen, damit ich nicht wieder zu ‘spät‘ bin.
Ich behalte mir rechtliche Schritte vor, falls ich doch ihr Blatt im Briefkasten finden sollte.
Dirk Dörflinger

PS: Entgegen meiner sonstigen Gepflogenheiten sehe ich keinerlei Grund, gegenüber der Redaktion etc. eines Blattes, das die Rechte von Menschen so regelmässig mit den Füssen tritt, höflich zu sein. Keinesfalls!

[Update 02.06.]

Gerade, am 02.06. um 13:49, hat mich folgende Mail erreicht:

Sehr geehrter Herr Doerflinger,
vielen Dank für Ihre Nachricht.
Es tut uns leid, dass Ihr Widerspruch nicht berücksichtigt werden konnte.
Sie haben aber die Möglichkeit, der Zustellung durch einen Hinweis („Bitte keine BILD zur WM“) an Ihrem Briefkasten zu widersprechen. Bitte beachten Sie in diesem Zusammenhang, dass ein einfacher Widerspruch gegen Werbung („Bitte keine Werbung einwerfen“) hierfür nicht ausreicht, da es sich bei dieser Sonderausgabe der BILD um ein Zeitungsprodukt handelt.
Mit freundlichen Grüßen
Ihr BILD Leserservice
keinebildzurwm@bild.de
Postfach: Bild zur WM, 20674 Hamburg
Tel. 0180/6008741*
0049-180/6008741*** Euro 0,20/Anruf aus dem dt. Festnetz; Mobilfunk max. 0,60 Euro/Anruf.
** außerhalb Deutschlands. Kosten aus ausländischen Netzen können abweichen.

Axel Springer SE, Sitz Berlin, Amtsgericht Charlottenburg, HRB 154517 B
Vorsitzender des Aufsichtsrats: Dr. Giuseppe Vita
Vorstand: Dr. Mathias Döpfner (Vorsitzender),
Jan Bayer, Dr. Julian Deutz, Dr. Andreas Wiele

Diese E-Mail und eventuelle Anlagen können vertrauliche und/oder rechtlich geschützte Informationen enthalten. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail sind nicht gestattet.

This e-mail and any attachments may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.

Meine Antwort, direkt danach:

An welche Adresse soll ich die Rechnung für das Anbringen der Aufkleber senden?

Es kann ja nicht sein, dass ICH einen Aufwand habe, den SIE zu verschulden haben, und auf den Kosten darauf sitzen bleibe.
Ich muss:
– Den Aufkleber gestalten
– Mir Aufkleberpapier kaufen
– Ausdrucken
– Fünf Stockwerke in Berlin runter, um ihn aufzukleben
– Jemanden in Schopfheim organisieren, der das für mich erledigt.
– Die Rechnung stellen
– Den Zahlungseingang überprüfen
Mein aktueller Stundensatz beträgt 75 Euro, ich denke, dass ich mit zwei Stunden hinkommen sollte, die Materialkosten dürften gering sein.

Es bleibt spannend.

 [Update 06.06.2014]

Tja, wie erwartet lag heute in Berlin eine BILD im Briefkasten (Schopfheim weiss ich nicht). Ergo werde ich wohl Kathrins Rat befolgen und sie unfrei zurückschicken…

By

HowTo install Ubooquity on QNAP

Ubooquity is a very nice little server which scans your eBooks and Comics and displays them in a tablet friendly way.

It is Java-based and runs fine on your Desktop, but if you’re running a (QNAP-)NAS which already stores all your books, why not have them served nicely.

Ubooquity

Ubooquity

Prerequisites

I did this on A QNAP TS-421 (ARM-CPU) Running OS version 4.x, though this should work the same way (except the Java installation on x86 see link below) on any other QNAP NAS.

I am assuming that you already have IPKG installed and are able to log in via ssh and already have some experience with the (Linux-)shell.

Install coreutils, procps and Java

The start script for the daemon requires the nohup and pgrep command which unfortunately aren’t shipped with the basic installation.

So simply do a

Install Java

Follow the instructions on http://wiki.qnap.com/wiki/Category:JavaRuntimeEnviroment in order to install Java. In brief:

Install Ubooquity

Download the jar from http://vaemendis.net/ubooquity/static2/download and put it on your QNAP NAS. I created a Folder Ubooquity in Public/ where everything from Ubooquity lives, so it is in /share/Public/Ubooquity/ now.

Do a test run on the shell:

Now you should be able to connect to the admin server on http://<qnapaddress>:2202/admin

Set a password for administration and play with the Web ui.

Install as a service

As soon as you close the shell from above, Ubooquity quits itself. Not very cool. So we need to install it as a daemon, a service starting on system start and then running all time.

Ubooquity provides a nice startup script called ubooquity.sh at http://vaemendis.net/ubooquity/downloads/scripts/. Get it and put it next to Ubooquity.jar. As pgrep on QNAP doesn’t support the -c (count) option, we need to change one line:

Replace all occurrences of the line

with

QNAP provides a quite easy way to register an application as a service. Simply edit the file /etc/config/qpkg.conf and add the following block.

You may have to adapt the paths to your installation.

Now you can start Ubooquity in the App Center just like any other app.

Ubooquity.start

QPKG View

 

By

Am Å der Welt

My location
Get Directions

So, nach einem sehr netten Besuchsabend bin ich heute Morgen die Lofoten von Leknes aus ganz bis zur Spitze nach Å (heisst wirklich so) gefahren, sehr, sehr eindrucksvoll, und sehr wild. Mittags ging es dann per Fähre nach Bodø, interessante Stadt. Dann 200km südwärts, im Vergleich zu den Lofoten sehr langweilige Gegend, aber alles ist Relativ. Immerhin gab es die eine oder andere Rentierende zu sehen und unscharf zu fotografieren.

Thema Fotos: Ihr müsst Euch leider noch gedulden, hier im Loch reicht die Internetverbindung gerade so zum schreiben, Fotos hochladen ist definitiv unmöglich.

Morgen werde ich dann in Trondheim sein, da sollte es dann auch wieder schnelles Internet geben. Und dann auch die versprochenen Fotos.

Berichtet mal mehr von daheim. Danke.

By

Mehr Lofoten

My location
Get Directions

Wunderschönen Vormittag in der Sonne am Strand gesessen. Nachmittag durch Leknes gelaufen, mal Regen, mal kein Regen. Abends eingeladen gewesen, nett gegessen, schöne Strände gesehen, leider keine Wale, vielleicht Morgen.
Bilder demnächst wieder. Ende der Durchsage.

By

Bilder Lofoten

Hab mich doch erbarmt und ein paar Bilder hochgeladen. Viel Spass.

By

Luleå

My location
Get Directions

Nicht viel zu berichten, immerhin habe ich wieder eine Digicam, juhu! Und sogar halbwegs bezahlbar, trotz Schweden und trotz Media Markt.

Jetzt bin ich in Luleå. Die Fahrt wer recht anstrengend, immerhin ab ca. 14 Uhr kein Regen mehr, der hat hier aber nach fünf Minuten Strandspaziergang mal wieder angefangen. Zusammen mit einem garstigen Wind.

Da das Wetter wohl so bleiben soll, lohnt es sich nicht, hier zu bleiben, also geht’s Morgen gleich weiter über den Polarkreis nach Kiruna.

Bilder heute nur wenige, unspannende.

By

Interessanter Tag mit dummem Verlust

My location
Get Directions

Eigentlich sehr netter Tag, Morgens noch kurz Regen, dann klare Besserung, Sonne, dann wieder Wolken, dann wieder Sonne, aber leider immer windig.

Sehr netter Standplatz am baltischen Meer, bis zu den Knien im Meer, war sehr erfrischend und überraschend warm. Die Versuchung, zu Baden, war extrem gross, der Wind hat mich aber dann doch abgeschreckt. Jetzt schaue ich grad den Enten zu, wie sie baden und Fliegen üben.

Aufgrund absoluter Idiotie meinerseits ist bei einer eigentlich sehr schönen Radtour über eine lokale Halbinsel meine eigentlich noch quasi neue Digikamera nun ein Totalschaden. Kleiner Tipp: versucht niemals, die Federgabel vom Fahrrad während der Fahrt festzustellen, wenn Ihr die Kamera am Arm baumeln habt. Immerhin ist dem Rad nichts passiert, nur ein kleiner Kratzer an der Felge und ein minimaler Achter.

Fotos wie immer hier: http://gallery.me.com/zapalotta#100158