Diese Artikelreihe basiert auf Ubuntu Server 14.04 und ist teilweise veraltet. Es existiert eine aktualisierte und verbesserte Version dieser Artikelreihe, basierend auf Ubuntu Server 18.04 unter Homeserver/NAS mit Ubuntu 18.04


Dieser Artikel ist Teil der Reihe Selbstgebauter Homeserver/NAS mit Ubuntu Server


Da auf dem Homeserver, bzw. NAS alle wertvollen Daten gespeichert werden, sollen diese natürlich auch entsprechend gesichert werden. Vor einem Festplattenausfall schützt zwar das RAID, nicht jedoch vor versehentlichem, oder absichtlichem löschen von Dateien.

In diesem Artikel beschreibe ich zwei Backuplösungen, die beide parallel eingesetzt werden.

Einerseits findet ein tägliches, automatisches und verschlüsseltes Backup auf einen Cloudspeicher statt. Dieses ist stets aktuell und sichert außerdem auch den Zugriff auf die Dateien im Falle eines Wohnungsbrandes oder Diebstahls der eigenen Hardware. Durch die oftmals eingeschränkte Internetanbindung Zuhause und die Kosten für Cloudspeicherplatz ist es evtl. sinnvoll hier nicht alle Dateien zu sichern, und z.B. große Videodateien von der Cloudsicherung auszunehmen.

Zusätzlich werden ALLE Daten in unregelmäßigen Abständen manuell auf eine externe Festplatte gesichert. Diese Backup ist somit nicht immer ganz aktuell, enthält jedoch alle Dateien und ist im Normalfall nicht an einen Rechner angeschlossen. Dies schützt vor einem Amok laufenden Backupprogramm, sowie vor böswilligem löschen der Backups durch eine Person die sich unberechtigten Zugriff auf unser, oder das Cloudsystem verschafft haben könnte.

Das Cloudbackup

Hierfür nutze ich Duplicati 2.0, welches noch in der Preview Phase ist, bei mir jedoch seit vielen Monaten zuverlässig seinen Dienst tut. Das Programm unterstützt die Verschlüsselung von Backups, sowie eine Vielzahl an Speicheranbietern wie Amazon S3, Dropbox, Google Drive, Microsoft Azure, Microsoft One Drive oder den Zugriff via WebDAV, SSH oder das unsichere FTP. Das Backupprogramm lässt sich entweder über die Kommandozeile, oder bequem im Browser über ein Webinterface steuern.

Bei Duplicati handelt es sich im ein in C# geschriebenes Programm, welches unter Windows das .NET Framework und unter Ubuntu die Mono Laufzeitumgebung benötigt. Außerdem wird das Programm Unzip installiert um Duplicati in den Ordner Duplicati zu entpacken, welcher anschließend angelegt wird. Das Programm sqlite3 dient zum bearbeiten der Duplicati Datenbank.

$ sudo apt-get install unzip sqlite3 mono-complete
$ cd
$ mkdir duplicati
$ cd duplicati

Jetzt kann die aktuelle Version von Duplicati heruntergeladen und entpackt werden

$ wget http://updates.duplicati.com/preview/latest.zip
$ unzip latest.zip

Damit Duplicati die Datenbank mit den Standardeinstellungen erstellt muss es einmal gestartet werden. Damit auch Systemdateien gesichert werden können wird Duplicati mit Rootrechten gestartet.

$ sudo mono Duplicati.Server.exe --webservice-port=8200

Mit STRG+C kann das Programm auch direkt wieder beendet werden. Damit wurde der Ordner /root/.config/Duplicati angelegt und darin eine Datenbank erstellt.

Das Problem ist nun, dass Duplicati standardmäßig nur von localhost (also dem Computer auf dem es installiert ist) mit dem Webbrowser aufgerufen werden kann. Aufrufe von anderen Computern werden blockiert. Da der Homeserver in diesem Fall jedoch keine grafische Benutzeroberfläche besitzt, kann das Webinterface gar nicht aufgerufen werden um die Einstellung zu ändern und den Zugriff von anderen Rechnern aus zu erlauben. Da Duplicati Java Script einsetzt lässt sich dies auch nicht mit einem Textbrowser im Terminal erledigen.

Aus diesem Grund muss die Einstellung direkt in der Datenbank geändert werden. Dazu wird mit dem Programm sqlite3 die Datenbank geöffnet und der Eintrag server-listen-interface=loopback in der Tabelle Option geändert in server-listen-interface=any.

$ sudo sqlite3 /root/.config/Duplicati/Duplicati-server.sqlite
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> update Option set value="any" where value="loopback";
sqlite> .quit
$

Wenn Duplicati wieder gestartet wird mit

$ sudo sudo mono Duplicati.Server.exe --webservice-port=8200

kann das Webinterface von jedem Computer im Heimnetz über

http://192.168.178.100:8200

aufgerufen werden.

duplicati-setup1

Im Prinzip ist das Backupprogramm jetzt einsatzbereit. Allerdings muss es in diesem Zustand immer manuell gestartet werden und man muss ein Terminal offen haben. Damit das Programm beim Start des Computers automatisch gestartet wird, wird ein init Skript erstellt.

Ein schönes Template habe ich im Github Account fhd entdeckt.

Das Skript wird zuerst per wget von Github als Zip-Datei heruntergeladen, dann entpackt und in das Verzeichnis /etc/init.d/ verschoben. Dann müssen nur noch die Pfade im Skript angepasst werden und dann lässt sich Duplicati wie andere Dienste über Befehle wie „sudo service duplicati start“ starten.

$ wget https://github.com/fhd/init-script-template/archive/master.zip
$ unzip master.zip
$ sudo mv init-script-template-master/template /etc/init.d/duplicati

Das neu erstellte Skript kann jetzt mit dem Texteditor geöffnet werden

$ sudo nano /etc/init.d/duplicat

Hier werden die drei Zeilen dir, user und cmd angepasst

dir="/home/homeadmin/duplicati"
user="root"
cmd="mono Duplicati.Server.exe --webservice-port=8200"

duplicati-init

dir ist das Verzeichnis in welches Duplicati heruntergeladen und entpackt wurde, user ist der Benutzer mit welchem Duplicati ausgeführt wird und cmd ist der Befehl, welcher ausgeführt wird.

Jetzt kann das Backupprogramm mit

$ sudo service duplicati start

gestartet werden und anschließend über das Webinterface die gewünschten Backupjobs angelegt werden.

Duplicati20_2Duplicati20_3  Duplicati20_1

Wiederhergestellt werden die Daten ebenfalls über das Webinterface. Dabei kann gewählt werden ob die Dateien am ursprüngliche oder an einem anderen Ort wiederhergestellt werden sollen.

Das lokale Backup

Das lokale Bakup wird mit dem Programm Rsync über ein Backupscript aus dem ubuntuusers.de Wiki auf eine externe Festplatte erledigt. Für jeden Tag an dem das Backup durchgeführt wird, wird auf der Festplatte ein neuer Ordner mit dem aktuellen Datum erstellt. Somit können  mehrere Backups auf der Festplatte vorgehalten werden. Dabei wird mit Hardlinks gearbeitet, so dass Dateien immer nur einmal gespeichert werden, auch wenn sie in mehreren Backups vorhanden sind.

Standardmäßig werden bei einem Ubuntu Server (im Gegensatz zum Desktop Ubuntu) USB-Laufwerke nicht automatisch eingebunden. Damit die Backupfestplatte beim einstecken automatisch in das Dateisystem eingebunden wird, wird das Programm usbmount installiert.

$ sudo apt-get install usbmount

Usbmount ist ohne Konfiguration einsatzbereit. Beim einstecken eines USB-Laufwerks wird dieses automatisch in /media/usb eingebunden. Steckt man mehrere USB-Laufwerke an, so werden die Einbindungspunkte nummeriert, also /media/usb0, /media/usb1 usw.

Standardmäßig unterstützt usbmount die Dateisysteme vfat ext2 ext3 ext4 und hfsplus. Wenn die Backupfestplatte nur für den Homeserver genutzt wird sollte sie ext4 formatiert werden, da dies das Standard Dateisystem bei Ubuntu ist. Wenn man die Festplatte unbedingt auch auf Windows PCs nutzen möchte und die Festplatte somit NTFS formatiert sein muss, muss dieses Dateisystem in der Config von usbmount aktiviert werden.

Dazu wird die Datei /etc/usbmount/usbmount.conf geöffnet und in die Zeile FILESYSTEMS= noch ntfs hinzugefügt, so dass die Zeile folgendermassen aussieht:

FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus ntfs"

usbmount-conf

Jetzt kann das Backupscript von Ubuntuusers.de erstellt und konfiguriert werden.

Zuerst wird die Datei erstellt und ausführbar gemacht.

$ touch /home/homeadmin/usbbackup.sh
$ chmod +x /home/homeadmin/usbbackup.sh

Jetzt wird die Datei mit einem Texteditor geöffnet und und dieser Code eingefügt

$ nano /home/homeadmin/usbbackup.sh

Hier können, bzw. müssen nur die Zeilen SOURCES und TARGET angepasst werden.

Sources sind die Verzeichnisse die gesichert werden sollen, also z.B. /etc mit den ganzen Konfigurationsdateien /root, in dem die Duplicati Datenbank liegt und /home, in dem unsere sonstigen Daten liegen.

SOURCES=(/root /etc /home )
TARGET="/media/usb"

Wenn die Festplatte eingesteckt ist kann das Backup manuell ausgeführt werden mit

$ sudo /home/homeadmin/usbbackup.sh

Wiederhergestellt werden die Dateien durch einfaches Kopieren mittels „cp“, z.B.

$ cp /media/usb/latest/home/mediamaster/public /home/mediamaster/restore

Mit diesem Befehl wird die letzte Version des Ordners public nach /home/mediamaster/restore kopiert. Dieser Ordner muss dazu bereits vorhanden sein, bzw vorher mit „mkdir /home/mediamaster/restore“ erstellt werden.

Außerdem kann die Festplatte auch an jeden beliebigen anderen Computer angehängt werden und das Backup von dort eingesehen werden.


Dieser Artikel ist lizensiert unter einer Creative Commons Namensnennung 4.0 International Lizenz.

13 Comments

  1. Dieses Tutorial ist der Knaller. Exakt danach habe ich zwei Tage lang vergeblich gesucht und frage mich jetzt, warum ich nicht gleich darüber gestolpert bin.
    Besonders gefällt mir die Philosophie, von Dritten unabhängig zu sein und alles auf hohe Sicherheit auszulegen.
    Überhaupt scheinst du ähnlich zu denken, wie ich. Macht dich sympathisch. 😉

    Ich werde freie Zeit im Januar nutzen, um das Ganze mal nachzubauen.

    • Niko

      Freut mich dass die die Reihe gefallen hat.
      Vielen Dank für das Lob, das motiviert natürlich 🙂

  2. You save my day… Ich hatte das Problem mit Duplicati auch das der Zugriff im lokalen Netzwerk nicht funktioniert…

  3. Erst mal Danke für die geniale Anleitung !
    Habe alles soweit eingerichtet, nur Duplicati bekomme ich nicht in den Griff 🙁
    Installiert habe ich es, aber bei der Konfiguration kann ich nirgendswo mehr den zu benutzenden Onlinespeicher auswählen (OneDrive). Oder muss ich noch was zusätzliches von Duplicati installieren ? Benutze die aktuelle Version Duplicati 2.0.1.7- 2.0.1.7_experimental_2016-03-19

    Danke für einen helfenden Tip

  4. Vielen Dank für das geile Tutorial!

    Werde mir einen NAS Server bauen, zuerst nur als Datengrab gedacht aber so sehe ich was für Möglichkeiten es noch gibt und werde einige davon umsetzen 🙂

    • Niko

      Freut mich dass dir der Beitrag gefällt.
      Nachdem du dein Datengrab gebaut hast fallen dir bestimmt noch tausend Dinge ein die du damit noch machen kannst.

  5. Ich finde das echt ein klasse Tutorial. Vielen Dank dafür.
    Was ich aber hier vermisse sind Dinge wie z.B. Auswertung der SMART Harddisk Parameter mit automatischer Email-Benachrichtigung.
    Klar, kann man argumentieren, dass durch das zweifache Backup genug Sicherheit eingebaut ist.
    Eventuell macht dies auch erst ab einem Raid 5 wirklich Sinn.

    • Niko

      Du hast völlig recht. Das überwachen der Hardware oder des Gesundheitszustandes des RAIDs ist ein sehr wichtiger Punkt.
      Ich wollte bei dieser Artikelreihe allerdings bewusst nicht zu tief ins Detail gehen, da auch Leute mit geringen Linuxkenntnissen angesprochen werden sollen.

  6. Tolle Arbeit hast du hier vorgelegt. Ich kenne mich mit Computer etc. weniger gut aus, doch, dass gelesene ist sauber zu verstehen und nachvollziehbar. Dein Setup bzw. dein Artikel ist ja von 2015. Wie erging es dir seit her damit? Gab es Veränderungen, Optimierungen oder oder oder??

    • Niko

      An der Hardware hat sich nichts verändert. Sonst allerdings einiges. Die Festplatten sind jetzt als ZFS-Mirror zusammen geschaltet und nicht mehr als md-raid und zum Musik- und Videostreaming nutze ich Plex anstatt Subsonic.
      Am Samba Setup hat sich nichts verändert. Was das Backup angeht mache ich mittlerweile das lokale Backup mit Duplicati und ein Backup außer Haus mit Borg.
      Anstatt Owncloud nutze ich Nextcloud, allerdings nicht mehr auf dem Homeserver, sondern auf einem VServer bei einem Hoster.
      Ich plane die Artikelreihe neu zu schreiben, wenn die neue Ubuntu LTS Version im April rauskommt.

      • Anonymous

        Das klingt spannend. Ich freue mich auf das Update!

  7. Super gute Artikelreihe!
    Ich bin gespannt auf die neue Version im April!

  8. Genau nach dieser Art von Tutorial hab ich gesucht! Vielen Dank!
    Wie sieht es mit einer kompletten Verschlüsselung des gesamten Systems aus?
    Kannst du dazu vielleicht mal eine Artikelreihe machen?