21. Juni 2016

Wie wäre es mit einer privaten Cloud?

Wo genau werden die Dateien gespeichert und wie geht man damit um?
Accso Avatar auf grauem Font

Autor:in

Yannick Tessa

2024 Blogbeitrag Accso

In der heutigen Zeit, in der die Cloud Technologie immer mehr an Bedeutung gewinnt, nimmt auch gleichzeitig der Bedarf an Speicherplatz für Dateien, die von unseren Endgeräten erzeugt werden, ständig zu. Die meisten Cloudanbieter wie DropBox, Google und Co. bieten einen gewissen attraktiven Speicherplatz für den Einstieg, allerdings ist das in vielen Fällen nicht ausreichend.

Das Geschäftsmodell ist einfach: Wer mehr Platz erhalten möchte, muss dafür bezahlen (einen faireren Deal gibt’s nicht). 🙂

Die Vorteile einer Cloud Speicherung sind klar: die Nutzung ist einfach, die Dateien sind von überall griffbereit, es ist kein großer Aufwand für die Bereitstellung und keine Wartungsarbeit nötig.

Zwei große Problematiken sprechen allerdings dagegen: Erstens, wo genau werden die Dateien gespeichert und Zweitens, wie geht man damit um?

Häufig ist es sehr unklar, wo genau der Hoster die Dateien ablegt und als Privatkunde hat man gar keinen Einfluss darauf. Je nachdem, welches Redundanzprinzip (Lokal-, Zone- oder Geo-Redundanzprinzip (LRS, ZRS, GRS)) der Anbieter betreibt, können die Dateien in einem beliebigen seiner Rechenzentren auf der Welt zwischengespeichert werden. Welche Rechte der Hoster sowie seine Partnerfirmen erhalten, ist etwas klarer geregelt.

Hierzu zwei Ausschnitte der Allgemeinen Geschäftsbedingungen (AGB) von Dropbox [1], einem der bekanntesten Cloud-Speicher-Dienste (Veröffentlicht am 4. November 2015):

Wenn Sie unsere Dienste verwenden, stellen Sie uns Daten wie Ihre Dateien, Inhalte, E-Mail-Nachrichten, Kontakte usw. bereit („Ihre Daten“). Ihre Daten gehören Ihnen. Diese AGB verleihen uns keine Rechte an Ihren Daten, mit Ausnahme der beschränkten Rechte, die uns die Möglichkeit geben, die Dienste anzubieten.
Diese und andere Funktionen erfordern den Zugriff und das Scannen Ihrer Daten durch unsere Systeme. Sie erteilen uns die Genehmigung, diese Aufgaben auszuführen, und diese Genehmigung erstreckt sich auch auf unsere Partnerunternehmen und die Drittanbieter, mit denen wir zusammenarbeiten.

Wer sich also Sorgen darüber macht, wie seine privaten Dateien behandelt werden, wo sie gehostet werden, wer genau darauf Zugriff hat, sollte sich etwas einfallen lassen. Eine private Cloud zu Hause?

Mit einem sehr kleinen Budget habe ich mir meine private Cloud selbst gebaut. Mit der folgenden Anleitung werden wir zusammen auf einem Raspberry Pi und einer SD Karte eine Cloud einrichten.

Notwendige Hardware

  1. Raspberry Pi
  2. Netzteil für Stromversorgung des Pi
  3. Micro SD Karte
  4. Adapter für Micro SD Karte
  5. Netzwerkkabel

Weitere Hilfsmittel

  1. Installierter Computer (Linux, Windows oder Mac OS X)
    • Ein SSH Client für Windows wie Putty
  2. Raspbian Image herunterladen [2].
    • Ich persönlich bevorzuge die Minimal Image based on Debian Jessie. Je nach Wunsch kann man ein anderes Image auswählen.
  3. IpScanner (Netzwerk Tool)
  4. USB Tastatur
  5. USB Maus

Weitere Empfehlung für einen Dauereinsatz

  1. Ein Gehäuse Case für den Raspberry Pi mit Lüfter
  2. Externe USB Festplatte oder USB Stick, um Dateien ab zu speichern (Bevorzugt externe Festplatte, da sie länger halten)

Step 1: Vorbereitung (auf Mac OSX durchgeführt).

  1. Vorbereitung auf Linux BS [3]
  2. Vorbereitung auf Windows BS [4]

Schließen Sie die Micro SD-Karte an den Computer an und starten Sie das Terminal.

Identifizieren Sie die SD-Kartennummer. Geben Sie hierfür folgende Befehle ein:

#diskutil list

Karte freigeben:

#diskutil unmountDisk /dev/disk<disknummer>

Dateien auf die Karte kopieren:

#sudo dd bs=1m if=/path/zu/entpackendem/image.img of=/dev/rdisk<disknummer>

Mit Ctrl+T kann man sich den Status der Kopie anzeigen lassen.

Wenn der Prozess abgeschlossen ist, die Micro SD-Karte und das Netzteil an den Pi anschließen. Anschließend das Netzwerkkabel in den Pi stecken, dann ist der Pi über das Netzwerk zu erreichen.

Die IP-Adresse des Pi herausfinden. Hierfür kann man den Tool IP Scanner oder andere Netzwerk-Tools verwenden.

Step 2: Pi einrichten

Verbinden Sie sich per ssh mit dem Pi. Standard User ist „Pi" und Passwort lautet „raspberry"

#ssh pi@<raspberrypiipadresse>

Das Konfigurations-Tool des Pi starten.

#sudo raspi-config

Folgende Änderungen vornehmen:

  1. Die ganze SD-Karte dem BS zur Verfügung stellen: Auf Expand Filesystem gehen, die Enter Taste drücken und dann mit Ok bestätigen.
  2. Das Standard Passwort ändern: Auf change password gehen, mit Enter bestätigen. Das neue Passwort eingeben.
  3. Hostname ändern: Hierfür auf Advanced Options gehen, mit Enter bestätigen. Die Option Hostname auswählen, auf Enter drücken und anschließend den gewünschten Hostname eingeben.
  4. Auf finish klicken und den Pi neu starten lassen.

Step 3: System aktualisieren.

Das Owncloud-Depot in der Sourceliste hinzufügen:

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

Official Owncloud Verzeichnis-Release key installieren:

#sudo wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_8.0/Release.key
#sudo apt-key add - < Release.key

Danach folgende Befehle nacheinander eingeben:

#sudo apt update
#sudo apt upgrade
#reboot

Step 4: LAMP (LinuxApacheMySQLPHP) Server installieren und einrichten.

Owncloud benötigt, wie viele andere Web basierte Anwendungen, eine Web Umgebung. Wir werden für den Zweck einen LAMP Server einrichten, da er stabil, sehr verbreitet (falls man Hilfe braucht) und schnell ist.

LAMP Server installieren
#sudo apt install mysql-server apache2 php5
Datenbank einrichten

Verbinden Sie sich mit der Datenbank:

# mysql -u root -p

Legen Sie eine neue DB an:

mysql> CREATE DATABASE myownclouddb;

Legen Sie einen neuen Benutzer an, dem Sie die vollen Rechte auf die Datenbank geben:

mysql> CREATE USER admindb@localhost IDENTIFIED BY '<password>';

Dem neuen Benutzer nötige Rechte geben:

mysql> GRANT ALL PRIVILEGES ON mywonclouddb.* TO admindb@localhost;
mysql> flush privileges;
mysql> exit

MySQL neu starten:

#systemctl restart mysql.service

Apache neu starten:

#systemctl restart apache2.service

Step 5: Owncloud installieren

Da wir bei dem ersten Schritt dem System das Owncloud Depot bekannt und vertrauenswürdig gemacht haben, kann dann owncloud über das Verwaltungspacket Tool installiert werden. Der große Vorteil dieser Installationsmethode liegt darin, dass alle Owncloud Dependecies automatisch installiert werden, was Fehler vermeidet. Außerdem ist dadurch die Durchführung von Updates und Upgrades deutlich einfacher. Um owncloud zu installieren, geben Sie folgendes Kommando in der Konsole ein und warten Sie, dass der Prozess abgeschlossen ist:

#sudo apt install owncloud

Step 6: Installation abschließen

Man kann nun den Dienst unter der Adresse http://<hostname oder unter der IP-Adresse>/owncloud aufrufen.

Wenn alles richtig eingerichtet wurde, sollte die folgende Seite im Browser erscheinen.

20160621 owncloud login
  • Legen Sie einen Admin Benutzer mit einem sicheren Passwort an, dann klicken Sie auf storage & database.
  • Wählen Sie die MySQL/MariaDB Datenbank aus (nicht SQLite verwenden, sie ist zu langsam).
  • Den neu erstellten Benutzer, Passwort und Datenbankname eingeben.
20160621 owncloud create admin

Danach die Einrichtung mit Finish setup abschließen. Der Dienst ist ab sofort verwendbar.

Step 7: Dienst über SSL sichern (Dringend empfohlen)

Da in unserer selbst kreierten Cloud wahrscheinlich sensible Daten von uns und eventuell von anderen Familienmitgliedern (private Fotos, Zeugnisse etc.) gehostet werden, wird dringend empfohlen, den Kommunikationsverkehr zwischen der Cloud und den diversen Endgeräten zu sichern. Dank SSL können Sie den ganzen Informationsfluss verschlüsseln und dadurch die Integrität des Datenaustauschs gewährleisten.

Zunächst brauchen wir ein Zertifikat

Zertifikat-Verzeichnis erstellen:

#sudo mkdir -p /etc/apache2/ssl/owncloud

Mit dem folgenden Befehl erzeugen Sie ein Jahr lang gültiges selbst signiertes Zertifikat. Geben Sie die geforderten Informationen für die Zertifikaterzeugung ein. Wichtig ist hierbei der CommonName. Um Fehler zu vermeiden, sollte er mit dem Hostname übereinstimmen:

#sudo openssl req -new -x509 -days 365 -nodes –out /etc/apache2/ssl/owncloud/owncloud.pem -keyout /etc/apache2/ssl/owncloud/owncloud.key
Virtual Host erstellen

Apache stoppen:

#systemctl stop apache2.service

Eine Datei owncloud.conf unter /etc/apache2/sites-available erstellen:

#sudo nano /etc/apache2/sites-available/owncloud.conf

Folgende Zeilen in die Datei hinzufügen:

NameVirtualHost *:443
# Virtual Host, der auf den port HTTPS 443 hört
<VirtualHost *:443>
ServerName <hostname>
DocumentRoot /var/www/owncloud
# SSL Aktivierung
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# Path zu Zertifikat eingeben
SSLCertificateFile /etc/apache2/ssl/owncloud/owncloud.pem
SSLCertificateKeyFile /etc/apache2/ssl/owncloud/owncloud.key
</VirtualHost>

Das SSL-Modul aktivieren:

#sudo a2enmod ssl

Die neue Seite in die aktivierte Seite hinzufügen:

#sudo a2ensite owncloud.conf

Apache starten:

#systemctl start apache2.service

Der Dienst sollte nun unter https://<hostname-oder-IP-Adresse>/owncloud erreichbar sein. Allerdings ist er auch weiterhin unter http zu erreichen.

Verwendung von https erzwingen

Hierfür die Datei /etc/apache2/sites-available/owncloud.conf editieren:

#sudo nano /etc/apache2/sites-available/owncloud.conf

Alle http Request zu https weiterleiten

Hierfür fügen Sie folgende Zeile am Anfang der Datei owncloud.conf hinzu:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName hostname
Redirect permanent / https://<hostname oder IP Adresse>/
</VirtualHost>
HTTP Strict Transport Security aktivieren (optional)

Um eine man-in-the-middle Attacke zu verhindern, ist die Aktivierung des Strict Transport Security Header empfohlen. Dieser weist den Browser an, alle http-Anmeldungen abzulehnen.

In der VirtualHost*:443 Konfig Section folgende Zeile hinzufügen:

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

Apache neu starten:

#systemctl restart apache2.service

Step 8: Data Storage ändern (optional)

Einer der großen Vorteile der Owncloud ist, dass man bestimmen kann, wo die Dateien abgelegt werden sollen und je nach Bedarf den Speicherort erweitern oder wechseln. Hier werden wir eine externe USB-Festplatte als Speicherort einrichten.

Apache stoppen:

#sudo systemctl stop apache2.service

Schließen Sie die Festplatte an den Pi an. Damit die Festplatte bei jedem Start mit entsprechenden Rechten automatisch gemountet wird, führen Sie folgende Schritten durch.

Finden Sie die UUID der Festplatte heraus.

#ls -l /dev/disk/by-uuid/

Finden Sie die uid des Web Benutzer heraus (häufig 33).

#cat /etc/passwd |grep www-data

Finden Sie die gid des Web Benutzers heraus (häufig 33).

#cat /etc/group |grep www-data

Erstellen Sie den Mount Point.

#sudo mkdir /media/<mount-point>

Öffnen Sie die Konfiguration Datei fstab.

#sudo nano /etc/fstab

Fügen Sie die folgende Zeile hinzu:

UUID=<uuid>     /media/<mount-point>     vfat   umask=007,gid=<gid>,uid=<uid> 0   2

Installieren Sie das Paket NTFS-3G, damit das System NTFS formatierte Volume lesen und schreiben kann:

#sudo apt-get install ntfs-3g

Volume von Hand mounten:

#sudo mount –a

Nun ändern Sie die Storage Location in der Owncloud Config Datei. Öffnen hierfür Sie die Owncloud config.php Datei:

#sudo nano /var/www/owncloud/config/config.php

Kommentieren Sie die folgende Zeile (ein `#` am Anfang anfügen):

'datadirectory' => '/var/www/owncloud/data',

Fügen Sie folgende Zeile darunter hinzu:

'datadirectory' => '/media/<mount-point>',

Verschieben Sie alle bereits in owncloud vorhandenen Dateien auf das gemountete Volumen:#sudo cp -r /var/www/owncloud/data/ /media/<mount-point>

Apache starten:

#sudo systemctl start apache2.service

System neu starten:

#sudo reboot

Nach dem neuen Start werden die Dateien auf der Festplatte gespeichert.

Um jederzeit und von überall auf Ihre private Cloud zugreifen zu können, müssen Sie Ihren Pi von Internet erreichbar machen. Für diesen Zweck kann man einen Dynamic DNS (DynDNS) Dienst einrichten, der unsere Public IP Adresse immer dynamisch aktualisiert und somit bleit unsere Cloud stets erreichbar trotz des ständigen Wechsels der IP Adresse. Wie man der Dienst einrichtet, finden Sie zum Beispiel hier [5].

Hinweis: Denken Sie immer daran, dass Sie selber für die Wartung und Sicherung Ihres Systems verantwortlich sind. Aufgrund dessen sind regelmäßige Update und Backups sehr empfohlen. Zahlreiche Dokumentationen hierfür finden Sie im Internet.

Links:

[1] https://www.dropbox.com/de/privacy#terms
[2] https://www.raspberrypi.org/downloads/raspbian/
[3] https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
[4] https://www.raspberrypi.org/documentation/installation/installing-images/windows.md
[5] http://www.giga.de/unternehmen/avm/tipps/fritzbox-dyndns-einrichten-so-gelingt-die-dynamic-dns-einrichtung/

https://doc.owncloud.org/server/8.1/admin_manual/contents.html