Kategorien
Betriebssysteme Tools Wunschthema

Fotocollagen ganz einfach

Sage niemals „ganz einfach“ wenn es um Fotos geht, noch dazu unter Linux – haben sie gesagt. Aber es ist wirklich einfach und ich möchte das gern mal zeigen, besonders allen Windows und MacOS Benutzern. In Artikel Linux in der virtuellen Maschine auf deinem Rechner habe ich beschrieben, wie du Ubuntu Linux auf einem Windows oder einem macOS Rechner installieren kannst. Nun hört sich „Linux“ und „virtuelle Maschine“ sehr technisch an und daher möchte ich heute ein Beispiel mit Fotos zeigen, das in genau dieser virtuellen Maschine funktioniert.

Kategorien
Betriebssysteme Infrastruktur Wunschthema

Linux in der virtuellen Maschine auf deinem Rechner

Das Betriebssystem ist bei einem Computer so etwas wie der Motor bei einem Auto. Das tauscht man normalerweise nicht aus sondern benutzt es einfach.
Bei Betriebssystemen für Desktop und Laptop Computern gibt es zwei relevante Anbieter. Microsoft Windows läuft auf 81.76% und Apple macOS auf gerade mal 13.49% der Computer. Linux erreicht mit 1.69% Marktanteil so eben die Statistik.
Bei Servern, die Websites hosten, ist das Verhältnis ganz anders. Knapp 70% werden mit Unix-artigen Systemen betrieben und etwa 30 % mit Microsoft Windows. Apple macOS spielt keine Rolle und der Anteil liegt unter 0.5%.
Nun geht es in diesem Blog ja meistens um Software, die auf Servern genutzt wird und wenn man da etwas auf seinem lokalen Rechner ausprobieren möchte, muss man oft „Klimmzüge“ machen um zunächst mal eine Umgebung herzustellen in der die Serverprogramme überhaupt laufen. Bei Apple macOS ist das etwas einfacher, bei Microsoft Windows etwas komplizierter. Als ich neulich über die Drupal VM schrieb, erhielt ich ein paar Rückmeldungen, wie man das denn noch vereinfachen und optimieren könnte.

Nun, ein ganz einfacher Weg ist: Linux benutzen!

Und da sind wir wieder am Anfang. Ein Betriebssystem tauscht man selten aus. Deshalb auch der Drupal VM Artikel um das Thema einfacher zu gestalten.

Heute aber soll es darum gehen ein Linux (Ubuntu 18.04) in einer Virtuellen Maschine zu installieren um ein besseres Gefühl dafür zu bekommen … und vielleicht wecke ich ja Interesse zum „Tauschen des Motors „:)

VirtualBox installieren

Wer die Drupal VM installiert hat, verfügt schon über Virtualbox auf seinem Computer. Wer die Installation noch nicht gemacht hat, lädt sich einfach das Programm von der Website https://www.virtualbox.org/wiki/Downloadsund installiert es. Bei mir sieht der VirtualBox Manager aus wie im Screenshot.

VirtualBox Manager

Neue virtuelle Maschine erstellen

Ja nach Spracheinstellungen musst du im oberen Bereich auf New oder Neu klicken. Ich habe die Einstellungen auf English gelassen, weil die Begriffe dadurch irgendwie klarer sind.

Name and operating System

So prinzipiell kannst du jedes existierende Betriebssystem in dieser virtuellen Maschine installieren. Du benötigst allerdings ein Installationsmedium und das ist bei Windows und macOS proprietär. Wenn du daher im folgenden Formular Ubuntu eingibst, wird dir bereits als Typ Linux und als Version 64 bit vorgeschlagen. Das kannst du übernehmen und auf continue klicken. Parallel dazu kannst du dir schon mal das benötige Betriebssystem Medium herunterladen. Die gewünschte Ubuntu Version gibt es hier: https://www.ubuntu.com/download/desktop. Ich nehme die Desktop Variante mit einer grafische Benutzeroberfläche.

Memory Size

Die virtuelle Maschine benötigt eine gewisse Menge Speicher. Ja mehr ihr zur Verfügung steht, umso flüssiger wird sie laufen. Damit Ubuntu funktioniert reichen 1024 MB hin, dann ist es aber arg langsam. Ich wähle daher 4096MB.

Hard disk

Natürlich benötigst du für die Ubuntu Installation etwas Festplattenplatz. Je nachdem, was du mit dieser virtuellen Maschine machen willst, musst du entsprechenden Platz bereitstellen. An dieser Stelle solltest du die vorgegebenen Optionen mit Create und Continue bestätigen.

Nun wirst du noch nach der Grösse gefragt. Der Installer schlägt 10 GB vor, ich nehme grosszügig 30 GB.

Damit ist die virtuelle Maschine eingerichtet und die eigentliche Installation des Betriebssystems kann erfolgen. In deinem VirtualBox Manager sollte es jetzt so aussehen.

Installation Ubuntu

Nachdem die Virtuelle Maschine eingericht ist, kannst du sie starten. Sie erwartet ein Installationsmedium. Falls du das noch nicht heruntergeladen hast, hier ist nochmal der Link https://www.ubuntu.com/download/desktop.

Die Ubuntu Installation startet und du wirst nach deinen Einstellungen gefragt.

Sprache

Hier legst du die Sprache des Systems fest und musst auf Ubuntu installieren klicken.

Tastaturbelegung

Updates and other software

Du kannst hier entscheiden, was installiert werden soll und ob während der Installation bereits nach Updates gesucht werden soll. Die Default Einstellungen sind sinnvoll.

Installationsart

Der Installer schlägt vor, deine Festplatte zu löschen und Ubuntu zu installieren. Was auf den ersten Blick Panikattacken hervorruft ist aber völlig normal. Gemeint ist die virtuelle Festplatte, die du bei der Einrichtung der virtuellen Box definiert hast.

Zeitzone

Benutzer

Zum Schluss wird noch dein Benutzername und dein Passwort abgefragt.

Ubuntu benutzen

Nach einem Neustart der virtuellen Maschine steht nun ein funktionsfähiges Ubuntu bereit. Alle wichtigen Programme sind bereits voreinstalliert. Das beste aber ist, dass die Basis dieses Systems nun die gleiche ist, wie bei einem Webhosting Server. Auf diesem Ubuntu kannst du alles ausprobieren und installieren, was du auch auf einem unserer Root Server oder den Webhostings installieren kannst.

Hinweis: Die virtuelle Maschine, die du gerade erstellt hast, kannst du auch ganz einfach rückstandslos wieder löschen (remove). Es verbleiben keinerlei Spuren auf deinem Rechner. Daher ist diese Methode auch sehr beliebt um Software oder eben Systeme wie Drupal zu testen.

Der deutschsprachige Ubuntu-Leitfaden ist hilfreich für den Anfang (https://help.ubuntu.com/lts/ubuntu-help/index.html.de).

Fazit

Die Installation unterschiedlicher Betriebsysteme in virtuellen Boxen ist heutzutage einfacher denn je und die PCs sind auch meistens leistungsfähig genug um flüssig zu arbeiten. Es lohnt sich unterschiedliche Systeme auszuprobieren. Ausser Ubuntu stehen alle anderen Systeme zur Auswahl.

Links


tl;dr: Linux unter Windows und macOS ist einfach zu installieren und zu benutzen

Kategorien
Betriebssysteme Cloud Server

Paketverwaltung und Snaps unter Ubuntu 16.04 LTS

Jedes Betriebssystem ermöglicht das Hinzufügen, Aktualisieren und Deinstallieren von Software. Meistens werden vom Hersteller Softwarepakete angeboten, die mit Hilfe eines Installationsskripts den Weg auf den Computer finden. Updates für diese Pakete bestehen entweder aus sogenannten Patches (engl. Flicken), die einzelne Dateien eines Softwarepaketes aktualisieren oder aus anderen Softwarepaketen, die „über“ bereits installierte Softwarepakete installiert werden. Zur Deinstallation von Softwarepaketen benötigst man oft Deinstallationsskripte.

Unter Mac OS gibt es bis heute beispielsweise keine einheitliche Vorgehensweise um Software zu deinstallieren. In Windows gibt es die zwar, aber der Teufel liegt im Detail. Das Problem ist oft „Geheimniskrämerei“ bei den Herstellern von kommerzieller Software und so weiss man oft weder, was ein Programmpaket denn nun genau auf dem Computer installiert hat, geschweige denn, wie man das alles wieder entfernt. Auch die aufgeräumtesten Apple macOS und Microsoft Windows Computer werden nach ein paar Jahre mit Updates und Programminstallation langsamer und die Festplatte füllt sich. Ein „clean install“, bei dem man ein zuerst „frisches“ Betreibsystem und danach seine Softwarepakete installiert, wirkt oft Wunder und beschleunigt alles wieder.

Im Linux Umfeld ist die Lage etwas übersichtlicher, da glücklicherweise die meisten verfügbaren Softwarepakete grundsätzlich auch im Quellcode vorliegen und klar beschrieben ist, was bei Installation und Aktualisierung verändert wird. Anders als bei den proprietären Systemen gibt es in Linux Abhängigkeiten zwischen den Softwarepaketen. Wenn ich auf einem Windows Computer etwas installiere, ist das normalerweise eine große Installationsdatei oder ein Installer, der während der Installation Dateien nachlädt, entpackt und irgendwo hinschreibt. Diese Art Softwarepaket lässt sich gut verkaufen.

Unter Linux geht es eher modular zu. Wenn ich beispielsweise auf einem Novatrend Root/Cloud Server, der mit Ubuntu läuft, den Webserver Apache installieren will, habe ich normalerweise keine grafische Oberfläche und benutze auf der Konsole den Befehl.

sudo apt-get install apache2
Das Kommando sudo zeigt an, dass der Befehl mit den Rechten des Root Users ausgeführt werden soll. Unter Linux gibt es die User und es gibt Root. Root darf alles, die User dagegen leben im „Userland“ und dürfen viele Dinge einfach nicht! (In macOS ist es genauso, in Windows ähnlich).
Das Kommando apt ruft den Advanced Package Manager auf.
Das Kommando -get zeigt an, dass man etwas haben möchte.
Das Kommando install bedeutet, dass man etwas installieren möchte (apt-get remove würde etwas deinstallieren, apt-get update etwas aktualisieren.).
Das Kommando apache2 zeigt an, das man den Webserver Apache in der Version 2 installieren möchte.
Das ist alles sehr logisch und so fragt das Ubuntu Linux zunächst nach dem Passwort von Root

[sudo] password for anon:

danach schaut es in seiner Paketliste nach, ob ein Paket mit dem Namen apache2 existiert. Die Liste liegt in /etc/apt/sources.list und erhält die Quellen, von denen Software geladen wird.

APT-Quellenliste
APT-Quellenliste

Beim Nachsehen merkt der Paketmanager, das ausser apache2 weitere Pakete installiert werden müssen, damit der Webserver funktioniert. Alle Pakete werden aufgelistet und man muss bestätigen, ob man das alles installieren will.

Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 ssl-cert
Suggested packages:
www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 ssl-cert
0 upgraded, 10 newly installed, 0 to remove and 4 not upgraded.
Need to get 1554 kB of archives.
After this operation, 6412 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Bei der Aktualisierung und Deinstallation funktioniert das genauso. Wenn man keine Veränderungen an den Dateien vorgenommen hast, kann mit diesem System wirklich alles restlos deinstalliert werden, so als wäre es niemals installiert gewesen. Das geht soweit, dass auch Distributionsupdates gemacht werden können, beispielsweise von Ubuntu 14.04 auf 16.04.

Es gibt also zwei Arten von Paketverwaltungen:

  1. Programme, die aus anderen Quellen Pakete nachladen können, um Abhängigkeiten aufzulösen, so wie eben beschrieben.
  2. Programme, die direkt die Pakete installieren oder löschen, aber keine Abhängigkeitsverwaltungs- und Konfliktlösungsmechanismen kennen.

Linux Distributionen gehören zum ersten Punkt und nutzen immer ein bestimmtes Paketformat. Red Hat, Fedora und OpenSuse benutzen beispielsweise RPM Pakete, Debian und Ubuntu deb Pakete. Die Arbeit, die in einer Distribution steckt, ist die geschickte Zusammenstellung dieser Pakete.

Wen du einen Root Server mit Linux betreibst, wirst du dich über diese Ordnung sehr freuen, denn es gibt immer einen Weg, Probleme zu lösen – IMMER 🙂

Leider ist es oft ziemlich schwer, gerade neuere Pakete die nicht zur Distribution gehören, zu installieren und zu konfigurieren. Wenn beispielsweise die neueste Webanwendung PHP7 benötigt, du aber noch ein Ubuntu 14.04 nutzt, gibt es das in den offiziellen Paketen nicht. Da du ja weisst, wo sich die Liste der Installationsquellen befindet, kannst du natürlich eine Quelle für PHP7 Pakete eintragen und dann die PHP7 Pakete auch unter Ubuntu 14.04 installieren. So eine Erweiterung kann allerdings schwer vorhersehbare Folgen für Abhängigkeiten von anderen Paketen haben. Jeder, der einen Server betreibt, hat vermutlich schon mal etwas ausserhalb der offiziellen Pakete installiert und dann sehr schnell gelernt, dass das manchmal keine gute Idee ist 🙂

An dieser Stelle setzen nun Projekte wie Docker an, die völlig unabhängig vom Paketmanager komplette Softwarepakete zur Installation anbieten. Docker kann man sich wie einen Container vorstellen, der alles notwendige enthält und eine fix und fertige Lösung bietet, beispielsweise ein Web Forum. Prinzipiell ist das eine gute Idee aber die Arbeit liegt natürlich wieder in der Konfiguration und im Zusammenspiel der Container. Nehme ich einen MySQL Docker Container und einen Apache Docker Container und verbinde sie irgendwie mit einem Drupal Container oder nehme ich einen MySQL/Apache/Drupal Container und das wars? Eine einheitliche Antwort gibt es natürlich nicht und so sammeln sich schnell ein paar Container an und die Aktualisierung ist wieder so eine Sache.

Click, snap und snappy

Bei Smartphones geht das alles auf den ersten Blick problemloser mit sogenannten Apps, aber dahinter verbergen sich natürlich die gleichen Herausforderungen.

Als Ubuntu Phone entwickelt wurde, ging man neue Wege und nutzte das Paketformat click. Für den RasberryPi wurde Snappy Ubuntu Core angeboten und nun hält das Snap Format auch im neuen Ubuntu 16.04 Einzug. Es kann mit dem existierenden deb Format koexistieren. Software kann als deb oder snap Paket angeboten werden. Der Unterschied liegt darin, dass snap Pakete, wie bei Docker, eigentlich eher komplette snap Anwendungen sind und vom Rest des System isoliert laufen. Die Snaps können  auch aufeinander aufbauen.

Snappy Ubuntu
Snappy Ubuntu

Vorteil ist die einfache Installation, Nachteil ist der erhöhte Platzbedarf, da nun benötigte Bibliotheken innerhalb eines snap Paketes und damit unter Umständen mehrfach auf einem Betriebssystem installiert werden.

Snap benutzen

Um Snap benutzen zu können muss der ubuntu-core installiert sein ( sudo snap install ubuntu-core).

Eine Übersicht über verfügbare snaps bietet der Befehl snap list. Beim ersten Aufruf entsteht folgender Dialog.

anon@server1:~$ snap list
No snaps are installed yet. Try 'snap install hello-world'.
anon@server1:~$ sudo snap install hello-world
[sudo] password for anon:
0 B / 20.00 KB [________________________________________________] 0.00 %
hello-world (stable) 6.3 from 'canonical' installed
anon@server1:~$ hello-world
Hello World!

Das Programm „hello-world“ kann ausgeführt werden werden und gibt Hello World auf der Konsole aus. Bei einem erneuten Aufruf von snap list sieht es dann so aus:

anon@server1:~$ snap list
Name Version Rev Developer Notes
hello-world 6.3 27 canonical -
ubuntu-core 16.04+20160531.11-56 122 canonical -

Entfernen lässt sich ein snap Paket mit dem Befehl

anon@server1:~$ sudo snap remove hello-world
hello-world removed

Installationsbeispiel Nextcloud

Um ein konkretes Beispiel zu zeigen, werde ich das Snap Paket Nextcloud installieren

anon@server1:~$ sudo snap install nextcloud
122.31 MB / 122.31 MB
[===========================] 100.00 % 22.35 MB/s
nextcloud (stable) 9.0.53snap1 from 'nextcloud' installed

Der Inhalt des Pakets wird im Verzeichnis /snap/nextcloud installiert. In der Liste der Snaps taucht nun auch das Nextcloud Paket auf.

anon@server1:~$ sudo snap list
Name Version Rev Developer Notes
nextcloud 9.0.53snap1 17 nextcloud -
ubuntu-core 16.04+20160531.11-56 122 canonical -

Um die Nextcloud nutzen zu können, muss die IP-Adresse des Servers im Browser aufgerufen werden. Der Installer von Nextcloud fragt noch nach Namen und Passwort des Administrators und danach ist die persönliche Cloud einsatzbereit.

Nextcloud - Snap Paket
Nextcloud – Snap Paket

Fazit

Das Snap Format bietet eine einfache Verwaltung für die Installation, Aktualisierung und Deinstallation kompletter Anwendungen in der Linux Distribution Ubuntu 16.04 LTS. Snap Pakete werden zunehmend von Softwareprojekten angeboten und können auch sogar als Universal Snap Package auf anderen Distributionen genutzt werden.

Links

Kategorien
Konferenzsysteme

Webkonferenzen mit Apache OpenMeetings

Webkonferenzsysteme mit Whiteboard, Screensharing, Sprach- und Videoübertragung waren und sind komplexe Anwendungen mit denen, wenn alles gut funktioniert, einfach und effektiv Onlinevorlesungen, Webinare, sowie Firmen- und Projektmeetings abgehalten werden können.

Der Einschub „wenn alles funktioniert“ ist nicht zu unterschätzen.

Es geht um folgende Arbeitsschritte:

  • Meeting planen, Unterrichtsmaterialien vorbereiten und hochladen
  • Teilnehmer einladen
  • Sicherstellen, dass alle Teilnehmer problemlos den Konferenzraum finden und die Sprach, Video- und Screensharing Funktionen funktionieren.
  • Genug Bandbreite pro Teilnehmer, je nach Art des Meetings
  • Genug Kapazität des Servers bei >100 Teilnehmern
  • Aufnehmen und Speichern des Meetings zum späteren Nachhören

Da in der Vergangenheit (und auch heute) in diesem Bereich die Lizenzen von proprietäten Webkonferenzsystemem sehr teuer waren, sind viele Anwender auf Skype und Google Hangouts ausgewichen. Innerhalb von Schulen, Firmen oder anderen Organisation ist es allerdings sehr schwer bis unmöglich, Teilnehmern mit unterschiedlichen technischen Voraussetzungen über solche „Alternativtools“ Zugang und effektives Arbeiten in virtuellen Räumen zu ermöglichen.

Ziel

Nehmen wir an, das Ziel Ihrer Organisation ist, ein eigenes Open Source Webkonferenzsystem auf dem eigenen Server aufzusetzen und die Meetings beispielsweise über die eigene Website mit Joomla, Drupal oder Moodle anzubieten.

Apache OpenMeetings

OpenMeetings ist eine freie Webkonferenzsystem. Ziel des Systems ist, in wenigen Schritten eine Besprechung aufzusetzen, in der man per Audio/Video, Whiteboard, Screensharing und Chat mit mehreren Teilnehmern eine Konferenz durchführen kann.

Apache OpenMeetings baut auf dem freien Rich Internet Application Framework OpenLaszlo und dem freien Streaming Server Red5 auf. Die Serveranwenung ist in Java geschrieben und benötigt ausserdem LibreOffice, ImageMagic, Sox, Swftools, FFmpeg und MariaDB. Ein ausführliche Installationsanleitung für Ubuntu 14.04 finden Sie hier (PDF iconInstallation OpenMeetings 3.0.x on Ubuntu 14.04.pdf ).

Nach der Installation können sich, je nach Konfiguration, Benutzer registrieren und in einem Dashboard Konferenzen planen und Teilnehmer einladen.

Registrierung OpenMeetings
Registrierung OpenMeetings

OpenMeetings - Dashboard
OpenMeetings – Dashboard

Konferenz

Es gibt einen Kalender im System und die Teilnehmer erhalten E-Mails mit dem Link zum Konferenzraum.
Der Raum steht komplett im Browser zur Verfügung, die Teilnehmer benötigen keine Zusatzsoftware auf Ihrem Computer.

Allerdings wird der Flash Player benötigt, um die Sprach- und Video Übertragung zu ermöglichen. Dieses Problem kann man allerdings durch Nutzung des Browsers Google Chrome entschärfen. Dort ist ein Flashplayer bereits integriert und muss nicht separat auf dem System installiert sein.

Im unteren Bereich des Konferenzraums steht ein Chat zur Verfügung.Der Konferenzraum sieht für den Moderator so aus:

OpenMeetings - Raum mit Whiteboard
OpenMeetings – Raum mit Whiteboard

Video und Audio funktionieren erstaunlich gut. In der Konferenz auf dem Screenshot oben gab es nur zwei Teilnehmer mit einer schlechten Internet-Verbindung. Das Kamerabild kann in verschiedenen Qualitäten übertragen und auch abgeschaltet werden um Bandbreite zu sparen.
Die Netzwerkverbindung kann bei Bedarf von jedem Teilnehmer überprüft und angepasst werden.

OpenMeetings - Netzwerktest
OpenMeetings – Netzwerktest

Der Moderator kann Rechte an andere Teilnehmer geben, beispielsweise ob der Teilnehmer auf dem Whiteboard zeichnen darf.

OpenMeetings - Teilnehmer
OpenMeetings – Teilnehmer

Innerhalb des Raums gibt es sogenannte Actions. Es stehen 30 Sprachen zu Lokalisierung zu Verfügung. Das Whiteboard und die PDF Anzeige funktionieren auch bei schlechten Internetverbindungen hervorragend.

OpenMeetings - Actions
OpenMeetings – Actions

Meetings können aufgezeichnet und gespeichert werden.

Einbindung in andere Systeme

Wenn Sie den Zugang zu den Meetings beispielsweise über Ihre Website ermöglichen wollen, so gibt es Plugins für Moodle, Joomla, Drupal, Redmine, SugarCRM und andere Systeme.

Hier ein Beispiel für die Nutzung in Joomla:

Die Joomla Komponente ist leider veraltet (Joomla 2.5), funktioniert aber grundsätzlich und zeigt, was möglich ist.

Fazit

Bei meinem Test funktionierte alles prima und ich war positiv überrascht. Die Einbindung in gängige CMS ist grundsätzlich möglich und für ältere Versionen auch lauffähig vorhanden. Die Apache OpenMeetings Serversoftware wird weiterentwickelt und das letzte Release (3.0.6) ist 3 Monate alt, also recht frisch :).

Links


tl;dr: Mit Apache OpenMeetings können Sie ein Webkonferenzsystem auf Ihrem Root-Server betreiben.

Kategorien
Backup Server Verschlüsselung

Ein Backup mit Duply

Backup ist so ein Thema, dass man in seiner Vollständigkeit versteht, wenn man kein Backup hat oder es nicht möglich ist, das vorhandene Backup wiederherzustellen. Es gibt zahlreiche Lösungsansätze fuer das Backup/Restore Szenario.

Beispielsweise gibt es für die meisten Content Management Systeme Erweiterungen, die ein Datei- und ein Datenbank Backup auf dem Root-Server erzeugen und danach auf ein Ziel Ihrer Wahl übertragen (z.B. Drupal Backup & Migrate oder WordPress UpdraftPlus Backup and Restoration). Bis zu einem gewissen Umfang (der schwer errechenbar ist, weil er von so vielen Parametern abhängt) klappt das auch gut und zuverlässig.

Das Backup der Datenbank (Dump) funktioniert meist reibungsloser als das der Dateien. Datenbanken sind komprimiert erheblich kleiner als tausende von PDF oder JPG-Dateien, daher kann es bei den Dateien ab einem gewissen Umfang kompliziert werden. Sie werden normalerweise komprimiert und dann als zip oder tar.gz Archiv auf das Ziel übertragen. Alle paar Tage wird ein Vollbackup erzeugt und dazwischen inkrementelle Backups. Die Komprimiererei bei einem Voll-Backup kann auch einen Root-Server schnell an den Rand der Leistungsfähigkeit bringen und für locker mal 30 Minuten beschäftigen. Abhängig von der sonstigen Konfiguration des Systems kann das bedeuten, das manche Services in dieser Zeit sehr langsam laufen. Was aber viel wichtiger ist: Die Backups sind normalerweise nicht verschlüsselt. Genau an dieser Stelle kommt Duply ins Spiel.

Was ist Duply?

Zunächst gibt es das Backup Programm Duplicity. Duplicity ist ein

Encrypted bandwidth-efficient backup using the rsync algorithm

Das hört sich gut an. Es nutzt den rsync Algorithmus, erstellt inkrementelle Backups und das auch noch verschluesselt. Leider ist es etwas aufwendig zu konfigurieren, so dass die Zeitschrift Ct im Jahr 2006 das Script ftplicity schrieb und die Bedienung damit erleichterte (Ct – Hinter Schloss und Siegel).

Aus ftplicity entwickelte sich Duply, ein in der Programmiersprache Python geschriebenes Skript, das die Nutzung von Duplicity vereinfacht.

Beispiel

Nehmen wir an, sie haben viele virtuelle Server auf Ihrem Root-Server. Jeder soll ein eigenes Datei-Backup des Dokumentenverzeichnisses erhalten. Das Backup soll auf einen FTP Server übertragen werden und verschluesselt sein. Wir haben die FTP Zugangsdaten fuer den Ziel-Server und den Pfad des zu sichernden Verzeichnisses auf unserem Root-Server. Es soll alle 7 Tage ein Vollbackup erstellt werden und dazwischen 7 inkrementelle Backups. Eine Wiederherstellung der Dateien in einem anderen Verzeichnis soll möglich sein. Auf dem Root-Server läuft Ubuntu 14.04.

Installation

Wir benötigen zunächst das Paket Duplicity und einen FTPclient (ncFTP), der dann den eigentlich Dateitransfer übernimmt.

apt-get install duplicity ncftp

Erstes Backup

Sie können nun bereits ein Backup erstellen und per FTP übertragen. Den folgenden Befehl müssen Sie nur mit Ihren Zugangsdaten füllen und abschicken.

FTP_PASSWORD=[FTP-Passwort] duplicity [zu-sicherndes-Verzeichnis] ftp://[FTP-User]@[FTP-Host]/[Verzeichnis]

Nach dem Absenden werden Sie nach einem Passwort gefragt. Geben Sie ein beliebiges Passwort ein und merken es sich, Sie benötigen es bei der Wiederherstellung der Daten wieder.

root@server1:~# FTP_PASSWORD=*** duplicity /var/www/piwik.serverblogger.ch ftp://****@****/****
NcFTP version is 3.2.5
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Retype passphrase to confirm:
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1420383883.70 (Sun Jan  4 16:04:43 2015)
EndTime 1420383889.16 (Sun Jan  4 16:04:49 2015)
ElapsedTime 5.46 (5.46 seconds)
SourceFiles 7119
SourceFileSize 41831081 (39.9 MB)
NewFiles 7119
NewFileSize 41831081 (39.9 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 7119
RawDeltaSize 38427305 (36.6 MB)
TotalDestinationSizeChange 11915629 (11.4 MB)
Errors 0
-------------------------------------------------

root@server1:~#

Herzlichen Glückwunsch, auf der Ziel FTP-Seite sind tatsächlich Dateien angekommen – Ein erstes Backup!

Sicherungsdateien von Duplicity
Sicherungsdateien von Duplicity

Auf der Handbuchseite man duplicity sehen Sie zahlreiche Parameter, mit denen Sie Ihr Backup verfeinern koennen und bekommen eine Ahnung von der Komplexität des Programms.

Wiederherstellung des Backups (restore)

Nachdem das mit dem Backup recht einfach ging, wollen wir die Daten in einem anderen Verzeichnis wiederherstellen.

FTP_PASSWORD=[FTP-Passwort] duplicity ftp://[FTP-User]@[FTP-Host]/[Verzeichnis] [restore-Verzeichnis]

root@server1:~/backup# FTP_PASSWORD=**** duplicity  ftp://****@****/****/backup /root/backup/test
NcFTP version is 3.2.5
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Sun Jan  4 16:04:38 2015
GnuPG passphrase:
root@server1:~/backup# cd test
root@server1:~/backup/test# ls
logs  public_html

Nach Eingabe des richtigen Passworts wird das Verzeichnis test erstellt und die gesicherten Daten dort wiederhergestellt. Das funktioniert alles sehr schnell und elegant, nun wollen wir es mit Duply automatisieren.

Automatisierung der Backups mit Duply

Bevor wir Duply installieren muss die Sache mit der Passworteingabe automatisiert werden. Dazu erstellen wir uns Schlüssel mit dem Befehl.

gpg --gen-key

Es folgt ein Dialog

root@server1:# gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Waehlen Sie DSA and Elgamal aus

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 2

Die Schlüssellaenge von 2048 koennen Sie uebernehmen

DSA keys may be between 1024 and 3072 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits

Der Schlüssel soll nicht verfallen

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all

Antworten Sie mit y

Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Hagen Graf
Email address: hagen@novatrend.ch
Comment: Serverblogger Test
You selected this USER-ID:
    "Hagen Graf (Serverblogger Test) <hagen@novatrend.ch>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

Geben Sie an dieser Stelle wieder Ihr Passwort ein und merken es sich. Dieses Passwort brauchen Sie später in der Duply Konfigurationsdatei. Die nächste Meldung bezieht sich auf einen gpg-agent, der beim Start einer Session die Passphrase abfragt und zur Verfügung stellt. Dieser gpg-agent ist nicht installiert und daher kommt diese Meldung. Sie können sie ignorieren.

gpg: gpg-agent is not available in this session

Jetzt startet die Schlüsselerzeugung.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: WARNING: some OpenPGP programs can't handle a DSA key with this digest size
+++++...+++++....+++++.++++++++++++++++++++++++++++++.+++++++++++++++..+++++.....+++++++++++++++.+++++.+++++....+++++.++++++++++.+++++.++++++++++....+++++++++++++++>+++++................>+++++..................................................................................................+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 288 more bytes)

In meinem Fall brach die Schlüsselerzeugung nach kurzer Zeit ab, weil nicht genug „entropy“ (Zufall) im System vorhanden war. Um die Entropie zu erhoehen, müssen Sie ihr System beschaftigen. Es gibt unterschiedliche Ansaetze (Beispiel). Ich habe es zuerst mit der mehrfachen Ausfuehrung des Befehls ls / -R probiert. Der Screenshot zeigt eine Shell mit der Schlüsselgenerierung, die Shell oben rechts zeigt die Entropie an, unten rechts wird das System beschäftigt.

Entropie erhöhen
Entropie erhöhen

Nach ein paar Minuten erfolgloser Beschäftigung habe ich dann das Paket stress installiert (apt-get install stress) und mit dem Befehl stress -c 4 -m 2 -d 1 -t 40s vierzig Sekunden „Stress“ in CPU, Hauptpeicher und auf der Festplatte erzeugt (Stress Test Your Ubuntu Computer with ‘Stress’).

Die Schlüsselerzeugung ging daraufhin weiter.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++.+++++++++++++++.+++++++++++++++.+++++.++++++++++++++++++++.+++++..++++++++++++++++++++>++++++++++>+++++...............................................................................+++++^^^
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key ******* marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048D/6986FD72 2015-01-04
      Key fingerprint = 43C1 DA7D 7CAE A2BC 34CF  6665 BB91 22E0 6986 FD72
uid                  Hagen Graf (Serverblogger Test) <hagen@novatrend.ch>
sub   2048g/27AC130F 2015-01-04

Merken Sie sich den Key, der im gelb markierten Bereich steht.

wget http://downloads.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.9.x/duply_1.9.1.tgz
tar xvfz duply_1.9.1.tgz
cp duply_1.9.1/duply /usr/local/bin

Nun müssen Sie ein Profil erstellen.

duply [name-des-profils] create

Ich möchte wieder die Piwik Installation sichern und geben folgendes ein

root@server1:~# duply piwik.serverblogger.ch create

Congratulations. You just created the profile 'piwik.serverblogger.ch'.
The initial config file has been created as
'/root/.duply/piwik.serverblogger.ch/conf'.
You should now adjust this config file to your needs.

Sie müssen nun die Konfigurationsdatei bearbeiten

nano /root/.duply/piwik.serverblogger.ch/conf

Diese Werte müssen Sie anpassen

GPG_KEY='*****' // Der gelb markierte Key von oben
GPG_PW='*****' // ihr Passwort bei der key-Erzeugung
TARGET='ftp://****@****/****/****'  // FTP Zugangsdaten
TARGET_PASS='*****' // FTP Passwort
SOURCE='/var/www/piwik.serverblogger.ch' // zu sichernden Verzeichnis
MAX_AGE=1M // Nach 1 Monat werden alle aelteren Backups geloescht
TEMP_DIR=/tmp // Das temporaere Verzeichnis

OPTIONAL

Wenn Sie die Datenbank (MySQL Dump) mit sichern wollen, können Sie sich eine Datei mit dem Namen pre anlegen

/root/.duply/piwik.serverblogger.ch/pre

Inhalt der Datei

mysqldump -u [Benutzername] -p[Passwort] piwik > piwik.sql

Backup mit Duply

Mit dem Befehl duply [profilname] backup koennen Sie nun ein Backup ausühren. In meinem Fall

duply piwik.serverblogger.ch backup

Ein Vollbackup wird mit full aufgerufen

duply piwik.serverblogger.ch full

Ein inkrementelles Backup mit incr

duply piwik.serverblogger.ch incr

Sie sollten nun nicht nach einem Passwort gefragt werden! Mit duply -h können Sie sich die Hilfeseite anzeigen lassen.

Automatisierung

Der letzte Schritt ist nun der Eintrag in der Crontab um den Backup Befehl regelmässig auszuführen.

crontab -e

Sonntags um 0:00 wird ein volles Backup erstellt und alte Backups gelöscht. Von Montag bis Samstag wird jeweils um 0:00 Uhr ein inkrementelles Backup durchgeführt.

# do a full backup on sunday  & delete old backups

0 0 * * 7 /usr/bin/duply /root/.duply/piwik.serverblogger.ch full_verify_purge --force

# run the incremental backup each night at 00:00h

0 0 * * 1-6 /usr/bin/duply /root/.duply/piwik.serverblogger.ch incr

Restore mit Duply

Die Wiederherstellung funktioniert ebenso einfach wie das Backup

duply [Profilname] restore [Zielverzeichnis]

Andere Plattformen

Mit Duplicity und Duply können Sie auf auf andere Ziele sichern, beispielsweise S3 Amazon Web Services, Google Cloud Storage, Rackspace Open Cloud, und Dropbox.


tl;dr: Backups sind hilfreich und nicht schwer!