Raspberry Pi-Workshop

Cloud-Speicher mit Raspbian selbst gebaut

20.12.2014 von Andreas Hitzig
Die Skandale rund um die NSA haben das Vertrauen in die Öffentlichen Speicherdienste wie Dropbox oder Google Drive erschüttert. In diesem Workshop erfahren Sie, wie Sie Ihren eigenen Cloud-Speicher bauen.

Die Skandale rund um Edward Snowden und die NSA sind immer noch in den Köpfen vieler Bürger. Die Geheimdienste haben flächendeckend Daten gesammelt und auch vor den Cloud-Plattformen nicht Halt gemacht. Für uns als Anwender bieten sich daher nur wenige Optionen: Entweder Sie akzeptieren, dass Ihre Cloud-Daten so privat nicht sind, oder Sie meiden die öffentlichen Speicherdienste.

Am besten: Sie schaffen sich Ihre eigene private Cloud an. Natürlich gibt es in diesem Umfeld zahlreiche Lösungen, bei denen die Hersteller ein Network Attached Storage (NAS) noch um die entsprechenden Dienste ergänzt hat. Für wenig Geld bietet Ihnen aber auch der Raspberry Pi mit den passenden Einstellungen und der Open-Source-Software Owncloud die passende Basis.

Wir zeigen Ihnen, wie Sie Ihren Minicomputer konfigurieren, um die Daten im lokalen Netzwerk wie im Internet sicher nutzen zu können. Benötigen Ihre Daten besonderen Schutz, sollten Sie Ihre Kommunikation über das Internet zusätzlich noch über das https -Protokoll absichern. Wie dies funktioniert, erfahren Sie im letzten Abschnitt des Workshops.

Die nötigen Komponenten für einen eigenen Cloud-Speicher

Die Zusammenstellung der Komponenten ist ein wenig davon abhängig, auf welchem Speicher Sie Ihre Daten ablegen möchten. Da es in diesem Fall nicht primär auf die Geschwindigkeit ankommt, genügt eine Speicherkarte ab vier GB für das Betriebssystem. Die Dateien von Owncloud und die Cloud-Daten sollten Sie auf einem USB-Stick oder einer externen USB-Festplatte speichern. Der Raspberry Pi besitzt in allen Varianten nur USB-2.0-Schnittstellen, so dass keine besonders hohen Transferraten zu erwarten sind. Für die private Nutzung ist das jedoch mehr als ausreichend. Wir empfehlen Ihnen, in diesem Szenario den Minicomputer per Ethernet-Kabel mit dem lokalen Netzwerk zu verbinden. Eine Verbindung zum Monitor ist entbehrlich, da Sie den Raspberry Pi auch mit einem SSH-Client über das Netzwerk fernbedienen können.

Die richtige Uhrzeit: Passen Sie die Zeitzone auf Europa und Berlin an, damit die Dateien mit dem richtigen Zeitstempel abgelegt werden.

Die Grundinstallation des Systems

Zum Aufbau des Cloud-Speichers nutzen wir Raspbian. Nachdem Sie die Daten auf die Speicherkarte kopiert haben, legen Sie diese in Ihren Raspberry Pi ein und starten zum ersten Mal Ihr neues Betriebssystem. Bauen Sie unter Linux in einem Terminal-Fenster als Erstes eine SSH-Verbindung mit

ssh pi@192.168.178.99

auf, wobei Sie die tatsächliche lokale IP-Adresse einsetzen. Das Standardpasswort für den Benutzer "pi" in der Grundinstallation lautet "raspberry". Windows-Anwender verwenden den SSH-Client Putty.

Rufen Sie zuerst das Konfigurationsmenü der Raspberry PI über das Kommando

sudo raspi-config

auf. Damit Ihnen die komplette Speicherkarte zur Verfügung steht, erweitern Sie auch an dieser Stelle über den ersten Menüpunkt das Dateisystem.

Mehr Geschwindigkeit: Den Raspberry Pi können Sie durch Overclocking deutlich beschleunigen. Beobachten Sie dann jedoch die Temperatur des Minicomputers.

Für die folgenden Eingaben ist es sehr hilfreich, ein deutsches Tastaturlayout zu besitzen. Dies lässt sich am besten in Kombination mit der Umstellung auf die deutsche Sprache über "4 Internationalisation Options > I1 Change Locale" realisieren. Wählen Sie "de_DE.UTF-8 UTF- 8" aus, und legen Sie diese Einstellung im folgenden Fenster als Standard fest.

Gerade für den Betrieb als NAS beziehungsweise Cloud-Server ist es wichtig, den richtigen Zeitstempel zu verwenden. Diese Einstellung nehmen Sie über "4 Internationalisation Options > I2 Change Timezone" vor. Wählen Sie "Europa" und "Berlin".

Erscheint Ihnen der Raspberry Pi im Betrieb des NAS ein wenig zu langsam, können Sie die Hardware an dieser Stelle auch übertakten. Dies birgt natürlich ein gewisses Risiko für die Lebensdauer von Prozessor und Platine, da die Temperatur deutlich ansteigt. Deswegen sollten Sie an über den Punkt "7 Overclock" auch maximal die Variante "High" wählen, um Ihre Hardware nicht zu gefährden. Damit sind die Grundeinstellungen für den Raspberry Pi abgeschlossen. Vor allem übertaktete Geräte sollten ausreichend gekühlt sein.

Benutzerverwaltung für Owncloud: Legen Sie für die Interaktion zwischen Owncloud und der My-SQL-Datenbank einen eigenen Benutzer an.

Die Aktualisierung des Systems

Ein Betriebssystem, das seine Dienste permanent bereitstellen und auch über das Internet erreichbar sein soll, muss besonders gut abgesichert sein. Regelmäßige System-Updates sind daher bei einem NAS/Cloud-Server Pflicht. Deswegen sollten Sie im nächsten Schritt die aktuellen Repository-Daten herunterladen und alle zur Verfügung stehenden Updates einspielen. Für die kommenden Aktionen benötigen Sie root-Rechte, weshalb Sie mit sudo -s permanent in die root-Rolle wechseln. Laden Sie als erstes mit apt-get update alle Paketlisten von den angebundenen Repositorien neu herunter. Mit apt-get dist upgrade führen Sie anschließend das Update der zur Verfügung stehenden Pakete durch.

Die Installation von Owncloud

Es gibt verschiedene Möglichkeiten, wie Sie die Owncloud-Lösung auf Ihren Raspberry Pi bekommen. Technisch am saubersten funktioniert nach unserer Erfahrung, wenn Sie das Repository von Owncloud in die Liste Ihrer Software-Quellen integrieren und anschließend mittels wget die benötigten Daten herunterladen. Mit dieser Methode führen Sie später auch jederzeit über die Owncloud-Pakete ein einfaches Upgrade durch.

Binden Sie als Erstes das Repository mit der folgenden Befehlszeile ein:

echo ’deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list

Anschließend wird die Installationsquelle noch über die Zeile

wget -qO - http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/Release.key | apt-key add -

mit dem entsprechenden Schlüssel abgesichert. Damit haben Sie die Basis für die Installation von Owncloud. Da das System nun über neue Software-Quellen verfügt, führen Sie mit den zwei Zeilen

apt-get update
apt-get install owncloud

noch einmal eine Aktualisierung der Listen durch und installieren die notwendigen Owncloud- Pakete.

Vorbereitung für Uploads: Damit auch größere Dateien in die eigene Cloud hochgeladen werden können, sind einige Anpassungen in der Konfigurationsdatei "php.ini" notwendig.

Die Datenbank auswählen und einrichten

Für den Betrieb von Owncloud ist eine Datenbank erforderlich. Es gibt für die Wahl derselben unterschiedliche Meinungen, denn die unterstützten Plattformen Sqlite, Postgresql und My SQL stellen unterschiedliche Anforderungen an die Hardware. Im Gegenzug bieten die drei Datenbanken jedoch auch eine unterschiedliche Leistung: Sqlite benötigt am wenigsten Ressourcen und wird für leistungsschwächere Systeme empfohlen. Einen guten Kompromiss zwischen Leistung und Anforderungen liefert My SQL, weshalb wir zumindest für die Raspberry-Modelle B und B+ diese Datenbank für unseren Aufbau empfehlen.

Installieren Sie neben dem My-SQL-Server am besten auch direkt den My-SQL-Client, falls Sie ihn für spätere Aktionen auf der Datenbank benötigten sollten:

apt-get install owncloud mysqlserver mysql-client

Während der Installation des My-SQL-Servers werden Sie nach einem Passwort gefragt. Geben Sie an dieser Stelle auf jeden Fall ein Kennwort ein, um bei den folgenden Schritten Probleme zu vermeiden. Für den Zugriff auf die Datenbank benötigt Owncloud eine eigene Datenbank sowie aus Sicherheitsgründen auch einen eigenen Datenbankbenutzer. Diesen legen Sie im nächsten Schritt über die Kommandozeile an. Die Anmeldung an My SQL erfolgt über die folgende Befehlszeile. Ersetzen Sie dabei "meinPasswort" durch das während der Installation festgelegte Passwort:

mysql –uroot –p meinPasswort

Nach der erfolgreichen Anmeldung richten Sie zuerst manuell eine Datenbank ein. In unserem Beispiel erhält diese den Namen "cloud".

CREATE DATABASE cloud;

Den notwendigen Datenbankbenutzer erstellen Sie mit folgendem Befehl:

CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'meinpasswort';

In diesem Fall wird ein Benutzer mit dem Namen "owncloud" und dem Passwort "meinpasswort" angelegt. Bis zu diesem Schritt hat der Benutzer noch keine Berechtigungen. Die notwendigen Rechte erhält er mit diesem Befehl:

GRANT ALL PRIVILEGES ON cloud.* TO owncloud@'localhost' IDENTIFIED BY 'meinpasswort';

Damit die Berechtigungen sofort wirksam werden, forcieren Sie die Umsetzung mit flush privileges. Danach verlassen Sie mit exit die My-SQL-Datenbank.

Zertifikate im Einsatz: Der Chrome-Browser erkennt das mit Open SSL erzeugte Zertifikat nicht an und lässt keine sichere Verbindung zu.

Anpassungen am Apache-Server

Owncloud benötigt eine Reihe von Anpassungen an den PHP- und Apache-Umgebungen, die im Hintergrund mitinstalliert wurden. Als Erstes passen Sie die maximale Größe der Dateien an, die Sie hochladen dürfen. öffnen Sie dazu mit

nano /etc/php5/apache2/php.ini

die Konfigurationsdatei von PHP, und suchen Sie mit Strg-W nach dem Wert "upload_max_ filesize" Legen Sie für diesen eine sinnvolle Größe fest, etwa "1024M" für ein GB. Sie können diesen Wert ausreichend groß setzen, die Einstellung hat keine Auswirkung auf die Performance des Systems.

Damit größere Dateien auch im Dateisystem gespeichert werden, sind zwei weitere Anpassungen notwendig. Zuerst muss der Parameter "post_max_size" den gleichen Wert erhalten, wie der für die maximale Upload-Größe - in unserem Beispiel also 1024 M.

Schalten Sie zum Schluss noch das standardmäßig deaktivierte "Output Buffering" ein. Dazu passen Sie diesen Abschnitt an:

output_buffering
Default Value: Off
Development Value: 4096
Production Value: 4096

Speichern Sie alle ??nderungen mit Strg-O, und verlassen Sie den Editor mit Strg-X.

Nach solchen Änderungen ist es nötig, den Apache-Server neu zu starten, damit die Konfiguration neu eingelesen und damit wirksam wird. Das geschieht über die Zeile

sudo service apache2 restart

Erreichbarkeit aus dem Internet: Soll die Owncloud von außen erreichbar sein, müssen in der Konfiguration des DSL-Routers die Ports 80 und 443 an den Cloud-Server weitergeleitet werden.

Datenkommunikation verschlüsseln

Ab jetzt ist Ihr System prinzipiell einsatzfähig, jedoch erfolgt die Kommunikation noch unverschlüsselt über Http und kann somit jederzeit auch abgehört werden, wenn Sie den Server von außen aus dem Internet ansprechen. Der Datenverkehr lässt sich jedoch über ein selbst erstelltes Zertifikat verschlüsseln. Das Zertifikat lässt sich bei den meisten Browsern problemlos nutzen. Lediglich der Chrome-Browser erkannte es bei unseren Tests nicht an und kommunizierte weiterhin nur über HTTP.

Aktivieren Sie zunächst das SSL-Modul des Apache-Servers mit dem Befehl a2enmod ssl. Der Apache-Server benötigt ein Verzeichnis, in dem er die Zertifikate anlegen kann. Dies legen Sie mit mkdir -p /etc/apache2/ssl an.

Zum Anlegen eines eigenen Zertifikats nutzen Sie Open SSL. Dies ist bereits auf dem System vorhanden. Die Gültigkeit des Zertifikats wird auf 365 Tage festgelegt, und es ist kein Passwort notwendig. Führen Sie folgende Zeile aus:

openssl req -newkey rsa:4096 -sha512 -x509 -days 365 -nodes -keyout /etc/apache2/ssl/own cloud.key -out /etc/apache2/ssl/ owncloud.crt

Weitere Informationen zu Open SSL und der verwendeten Syntax finden Sie auf der Produktwebsite. Bei der Anlage des Zertifikats wird eine Reihe von Daten abgefragt. Diese sind für die Funktion des Zertifikats nur bedingt wichtig. Lediglich der Parameter "Common" muss einen speziellen Wert erhalten. Dieser muss dem Namen Ihres Raspberry Pi entsprechen, also "raspberrypi", falls Sie daran nichts verändert haben.

Weltweit übers Internet verfügbar: Nachdem Sie alles richtig konfiguriert haben, ist die Owncloud sowohl von außen als auch von innen problemlos zu erreichen.

Konfiguration des Apache-Servers: Der Apache-Server benötigt für die Nutzung der Zertifikate noch eine Reihe von Anpassungen. Erstellen Sie dafür zuerst eine Kopie der Datei "default-ssl" aus dem Verzeichnis "/etc/apache2/sites-available" mit Hilfe des cp-Befehls. Geben Sie dieser beispielsweise den Namen "owncloud".

cd /etc/apache2/sites-available
cp default-ssl owncloud

Öffnen Sie die neu angelegte Datei mit sudo nano owncloud, und fügen unter der Zeile "ServerAdmin" die folgende Zeile ein: Server- Name raspberrypi. Passen Sie anschließend die Pfade für die Parameter "SSLCertificateFile" und "SSLCertificateKeyFile" an die neu erzeugten Dateien an. Am Ende des Dokuments vor dem letzten "</VirtualHost>" fügen Sie den folgenden Abschnitt ein:

<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Satisfy Any
</Directory>

Dies legt alle notwendigen Angaben für das Owncloud-Verzeichnis fest. Außerdem müssen Sie mit den folgenden beiden Zeilen noch zwei Apache-Module aktivieren:

a2enmod rewrite
a2enmod headers

Aktivieren Sie anschließend das Dav-Modul mittels a2enmod dav_fs und den neuen virtuellen Server mit a2ensite owncloud. Starten Sie zum Abschluss Ihren Webserver mit sudo service apache2 restart neu.

Owncloud-Einrichtung abschließen

Der Owncloud-Server benötigt noch ein paar finale Angaben. Rufen Sie den Server am besten im Firefox-Browser mit der Adresse http://raspberrypi/owncloud auf. Haben Sie ein Zertifikat eingerichtet, funktioniert auch der Aufruf mittels vorangestelltem "https". Legen Sie im Anmeldefenster den Namen des Administrators und das Passwort fest.

Öffnen Sie anschließend mit "Fortgeschritten" das erweiterte Fenster. Dort wählen Sie My SQL als Datenbank aus und geben als Datenbank-Host localhost ein.

Owncloud an die Anforderungen anpassen: über die Weboberfläche von Owncloud legen Sie Ordner an und laden Dateien hoch. In den Einstellungen legen Sie Upload-Begrenzungen fest, oder Sie vergeben Benutzerrechte.

Zugriff aus dem Internet

Die eigene Owncloud ist in der Regel nur interessant, wenn auch ein Zugriff von außen möglich ist. Dafür benötigen Sie wieder Dyn-DNS-Dienst und einen Router, welcher dies auch unterstützt. Neben einer Weiterleitung des Ports 80 benötigen Sie für den Zugriff über Https noch eine Freigabe für den Port 443.

Nachdem Sie die Werte entsprechend gesetzt haben, ist Ihre Owncloud über eine URL in der Form "meinecloud999.ddns.net" erreichbar. Funktioniert die grundlegende unverschlüsselte Kommunikation, sollten Sie auch für diesen Weg ein Zertifikat ausstellen. Die Gefahren bei einem Angriff aus dem Internet sind weitaus größer. Das folgende Beispiel legt die beiden notwendigen Dateien an.

openssl req -newkey rsa:4096 -sha512 -x509 -days 365 -nodes -keyout /etc/apache2/ssl/ owncloud_o.key -out /etc/apa che2/ssl/owncloud_o.crt

Geben Sie bei den darauf folgenden Fragen beim Wert "Common" Ihre Dyn-DNS-Adresse an. Kopieren Sie anschließend die Datei "/etc/ apache2/sites-available/owncloud" beispielsweise nach "/etc/apache2/sites-available/ owncloud_o", und passen Sie in dieser die Pfade auf die neuen Zertifikate an. Aktivieren Sie die Konfiguration mit a2ensite owncloud_o. Ergänzen Sie außerdem Ihre "hosts"-Datei im Verzeichnis "/etc" um die folgende Zeile:

127.0.0.1 meinecloud999.ddns.net

Ersetzen Sie die Dyn-DNS-Beispieladresse mit der tatsächlich genutzten. Damit ist Ihre Ihre eigene private Cloud einsatzfähig. Starten Sie dann den Webserver mit sudo service apache2 restart neu. Weitere Informationen zu Owncloud und den ersten Schritten mit dem System finden Sie auf der Produkt-Website unter http://doc.owncloud.org/.