Zum Hauptinhalt Zur Navigation

Owncloud: Dropbox-Alternative fürs Heimnetzwerk

Kaputte Zertifikate durch Heartbleed und der NSA-Skandal: Es gibt genügend Gründe, seinen eigenen Cloud-Speicher einzurichten. Wir erklären mit Owncloud auf einem Raspberry Pi, wie das funktioniert.
/ Jörg Thoma
256 Kommentare News folgen (öffnet im neuen Fenster)
Bild: Screenshot Golem.de

Nach dem NSA-Skandal und dem Bekanntwerden des Heartbleed-Bugs sind Sorgen um die Sicherheit der eigenen Daten im Netz berechtigt. Dropbox ist als Cloud-Speicher umso weniger attraktiv geworden, seit Bushs ehemalige Sicherheitsberaterin Condoleezza Rice - die in dieser Funktion eng mit den Geheimdiensten zusammenarbeitete - in den Vorstand berufen wurde(öffnet im neuen Fenster) . Wer sich Sorgen um die Sicherheit seiner Daten im Netz macht, sollte sie lieber auf seinem eigenen Server speichern. Es gibt genügend Alternativen. Für einen Cloud-Speicher im Heimnetzwerk eignet sich beispielsweise Owncloud. Wir erklären, wie die Dropbox-Alternative auf einem Raspberry Pi installiert und sicher konfiguriert werden kann. Die Anleitung lässt sich auch auf anderen Rechnern mit Debian oder Ubuntu nachvollziehen.

Das Raspberry Pi haben wir auch ausgewählt, weil der Rechner portabel ist; er lässt sich leicht von zu Hause zur Arbeitsstelle transportieren und dort wieder ans Netz zur Synchronisierung hängen. Außerdem bringt Owncloud Clients für Windows, Mac OS X und Linux mit. Notfalls können die Daten auch über einen Browser abgerufen werden.

Raspberry Pi vorbereiten

Wir haben uns für die Linux-Distribution Raspbian entschieden, die auf Debian basiert. Das Image lässt sich von der offiziellen Webseite des Projekts herunterladen(öffnet im neuen Fenster) . Die Datei wird anschließend unter Windows beispielsweise mit Win32 Disk Imager(öffnet im neuen Fenster) auf eine SD-Karte schreiben. Unter Linux reicht das Kommandozeilenwerkzeug dd aus. Der Gerätename der SD-Karte wird mit fdisk -l ermittelt.

Je nachdem, wie viele Daten später über Owncloud synchronisiert werden sollen, sollte entweder eine genügend große SD-Karte gewählt oder zusätzlich eine externe Festplatte über USB angeschlossen werden. Wie eine externe Festplatte eingebunden werden kann, erklären wir später in einem Zwischenschritt.

Konfiguration des Raspberry Pi

Jetzt starten wir das Rasberry zunächst einmalig mit einem angeschlossenen Monitor, um es zu konfigurieren. Dazu melden wir uns als Benutzer "pi" mit dem Kennwort "raspberry" an. Anschließend geben wir den Befehl sudo raspi-config ein. Unter Punkt 4 richten wir die deutschen Zeichensätze de_DE.UTF-8 und de_DE.ISO-8859-1 ein und setzen im darauffolgenden Dialogfeld de_DE.UTF-8 als Standard. Nochmals unter Punkt 4 ändern wir noch die Zeitzone unter "Europa" auf "Berlin" und schließlich sicherheitshalber noch die Tastatureinstellungen, die bereits durch die Umstellung auf den deutschen Zeichensatz erfolgt sein sollten.

Jetzt sollten wir unter Punkt 2 das Passwort neu setzen und so das Raspberry zunächst einmal nach außen absichern. Anschließend erweitern wir das Dateisystem über Punkt 1 auf die gesamte SD-Karte. Danach ist ein Neustart des Raspberry Pi fällig. Nach dem Neustart und der anschließenden erneuten Anmeldung als normaler Benutzer "pi" melden wir uns für die weitere Konfiguration mit sudo -s als Administrator an, denn der sudo-Befehl, mit dem die darauffolgende Befehlseingabe mit Administratorrechten ausgeführt wird, versagt in einigen Fällen. Danach sollte das System mit apt-get update und dann mit apt-get dist-upgrade auf den aktuellen Softwarestand gebracht werden. Damit erhalten wir auch eine aktuelle Version der Kryptobibliothek Openssl, in der der Heartbleed-Bug behoben ist (Version 1.0.1e-2+rvt+deb7u6).

Eigene Softwarequellen für Owncloud

In den offiziellen Softwarequellen der Linux-Distribution Raspbian für das Raspberry Pi gibt es zwar bereits eine Owncloud-Version, die ist allerdings veraltet und funktioniert mit aktuellen Versionen des Owncloud-Clients nicht. Stattdessen verwenden wir die Version für Debian 7 alias Wheezy, für die wir mit

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

zunächst die Quelle für Apt nachreichen. Mit

wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key

und

apt-key add - ᐸ Release.key

sichern wir die Softwarequelle noch mit einem Schlüssel ab. Dann folgt die eigentliche Installation mit apt-get update und apt-get install owncloud . Damit werden fast alle benötigten Komponenten automatisch installiert, etwa der Apache-Webserver.

Datenbank auswählen

Es fehlt aber noch die Datenbank. Owncloud lässt sich sowohl mit Sqlite als auch mit Postqresql oder Mysql verwenden. Allerdings ist Sqlite deutlich weniger performant als Mysql oder Postgresql, vor allem bei großen Datenmengen und mehreren Benutzern. Aus Bequemlichkeit entscheiden wir uns für Mysql, das immer noch weit verbreitet ist. Mysql-Server installieren wir also nachträglich mit apt-get install mysql-server . Während der Installation muss ein beliebiges Administratorpasswort für die Datenbank gesetzt werden.

Aus Sicherheitsgründen verwenden wir für unsere Owncloud-Installation jedoch einen eigenen Mysql-Benutzer, den wir noch anlegen müssen. Dazu rufen wir den Kommandozeilenmodus der Datenbank mit mysql -uroot -p auf und geben das zuvor gesetzte Administratorpasswort ein. Mit den Zeilen

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

CREATE DATABASE IF NOT EXISTS owncloud;

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

werden der Benutzer und die neue Datenbank namens "owncloud" angelegt und mit einem beliebigen Passwort versehen. Die Kommandozeile des Mysql-Servers verlassen wir mit quit .

Apache mit SSL absichern

Für die weitere Konfiguration ist möglicherweise die Installation des Dateimanagers Midnight Commander sinnvoll. Über den lässt sich durch das Dateisystem hangeln, er ist nach der Installation mit dem Texteditor Nano verknüpft. Mit Alt-F4 lassen sich so Konfigurationsdateien im Midnight Commander direkt zum Editieren öffnen. In Nano lässt sich mit Strg-W nach Zeichenketten suchen. Mit Strg-O werden die Änderungen gespeichert.

Im Apache-Webserver müssen noch einige Anpassungen vorgenommen werden. Die Voreinstellungen verhindern beispielsweise, dass keine Dateien hochgeladen werden können, die größer sind als 2 MByte. Dafür muss in der Konfigurationsdatei /etc/php5/apache2/php.ini die Zeile upload_max_filesize angepasst werden. Hier kann ein beliebig sinnvoller Wert gesetzt werden, auf die Leistung von Owncloud hat das keinen Einfluss.

Große Dateien speichern

Wir haben uns für den Wert 4G entschieden, damit wir maximal 4 GByte große Dateien speichern können. Parallel dazu muss in der gleichen Konfigurationsdatei die Zeile post_max_size mit dem identischen Wert versehen werden. Schließlich muss noch der Wert output_buffering aktiviert und auf = 4096 gesetzt werden. Das auf dem Raspberry Pi verwendete Dateisystem Ext4 kann durchaus mit Dateien in dieser Größe umgehen, allerdings sollte hier die doch recht schwache Hardware des Raspberry Pi berücksichtigt werden. Bei kleinen Dateien spielt sie kaum eine Rolle, bei großen Dateien ist der kleine Rechner einfach nicht leistungsfähig genug, was die Schreibgeschwindigkeit betrifft.

Damit die Daten zwischen Clientbrowser und dem Owncloud-Server im Netz verschlüsselt über SSL übertragen werden, müssen noch entsprechende Zertifikate bereitgestellt werden. Hier gibt es zwei Möglichkeiten. Es können selbst erstellte Zertifikate verwendet oder offizielle etwa bei einem kostenlosen Dienst bestellt werden.

Eigenes Zertifikat erstellen

Selbst erstellte Zertifikate eignen sich vornehmlich dann, wenn das Raspberry Pi immer im eigenen Netzwerk verwendet werden soll. Sowohl Owncloud-Clients als auch Browser beschweren sich naturgemäß über eigene Zertifikate. Sie lassen sich aber dennoch meist auf dem Clientrechner installieren und nutzen. Googles Chromium ist da eine Ausnahme, hier gelang es uns nicht, das Zertifikat nachzureichen.

Eine Verschlüsselung ist allerdings zwingend notwendig, selbst im eigenen Netz und besonders wenn die Verbindung über unverschlüsseltes WLAN erfolgt. Denn sonst können Angreifer sowohl übertragene Passwörter als auch die Daten im Klartext abgreifen. Zunächst aktivieren wir mit a2enmod ssl das SSL-Modul in Apache2 und erstellen mit mkdir -p /etc/apache2/ssl das Verzeichnis, in dem die Zertifikate abgelegt werden.

Wir generieren jetzt sicherheitshalber ein eigenes Zertifikat, das speziell für Owncloud bestimmt ist, kein Passwort benötigt und für ein Jahr gültig ist. Dazu geben wir folgenden Befehl ein:

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

Da wir Owncloud im lokalen Netzwerk verwenden, können hier beliebige Eingaben gemacht werden. Bei Common Name muss der Name des Rechners - in unserem Fall "raspberrypi" - verwendet werden, der auch in der Datei /etc/hosts steht. Sonst funktioniert Webdav mit Owncloud nicht.

Zertifikate in Apache für Owncloud

Apache konfigurieren

Wir kopieren im Verzeichnis /etc/apache2/sites-available die Konfigurationsdatei default-ssl mit dem Befehl cp nach owncloud . In dieser fügen wir unter der Zeile "ServerAdmin" die Zeile "ServerName raspberrypi" ein. Dann passen wir die Pfade in den Zeilen SSLCertificateFile und SSLCertificateKeyFile so an, dass sie zu den eben generierten owncloud.crt (das Zertifikat) und owncloud.key (der Schlüssel) zeigen. Vor den letzten beiden Zeilen legen wir noch folgenden Abschnitt an:

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

Anschließend müssen noch die Befehle a2enmod rewrite und a2enmod headers ausgeführt werden, damit die Änderungen übernommen werden. Außerdem muss das Dav-Modul mit a2enmod dav_fs aktiviert werden. Der neue virtuelle Server wird mit a2ensite owncloud aktiviert. Schließlich wird der Webserver mit service apache2 restart neu gestartet.

Owncloud starten und einrichten

Jetzt lesen wir die IP-Adresse des Raspberry Pi mit dem Befehl ifconfig aus. Diesen geben wir im Firefox-Browser eines weiteren Rechners im lokalen Netz ein beginnend mit https:// . Es folgt die Aufforderung, dem Zertifikat zu vertrauen. Da wir das Zertifikat selbst erstellt haben, bestätigen wir die Abfrage.

Anschließend wird Owncloud konfiguriert. Zunächst wird ein Administratorkonto samt Passwort angelegt. Unter dem Dropdownmenü "Fortgeschritten" wählen wir Mysql aus und geben dort die Werte ein, die wir zuvor bei der Einrichtung der Datenbank festgelegt haben. Unter Datenbank-Host muss "localhost" eingetragen werden.

Owncloud-Dateien verschlüsseln

Danach ist die Owncloud-Oberfläche im Browser zu sehen. Rechts oben befinden sich der Benutzername und ein Dropdownmenü mit dem Eintrag Administration. Dort lassen sich Feineinstellungen vornehmen und Fehlermeldungen einsehen. Links unten im Fenster ist ein Pluszeichen, über das sich weitere Apps installieren lassen. Bereits installiert ist die Erweiterung "Encryption", die dort aktiviert werden kann. Dann werden sämtliche Dateien verschlüsselt, die bei Owncloud hochgeladen werden. Anschließend ist eine Neuanmeldung fällig. Im Adminstrationsbereich lässt sich noch ein Wiederherstellungsschlüssel aktivieren, damit auch im Notfall die Daten wieder entschlüsselt werden können. Wem der Speicherplatz auf der SD-Karte zu knapp wird, kann dort auch externe Datenträger einbinden, die über USB an das Raspberry Pi angeschlossen sind.

Damit das Raspberry Pi immer unter der gleichen IP-Adresse erreichbar ist, kann noch die Textdatei /etc/network/interfaces angepasst werden. Statt des Eintrags iface eth0 inet dhcp müssen dann folgende Zeilen eingetragen werden:

iface eth0 inet static
address *mit ifconfig ausgelesene IP-Adresse*
netmask 255.255.255.0
gateway *IP-Adresse des Routers* .

Danach wird das Netzwerk-Subsystem des Raspberry Pi mit dem Befehl /etc/init.d/networking restart neu gestartet. Eine feste IP-Adresse stört den DHCP-Server im Netzwerk nicht, solange die feste IP-Adresse nicht bereits von einem anderen Gerät verwendet wird. Ein weiterer Vorteil einer festen IP-Adresse: Wir können das Raspberry Pi jetzt einfach über SSH verwalten, ohne mühsam die IP-Adresse zu ermitteln. Von Windows aus lässt sich das beispielsweise mit Putty(öffnet im neuen Fenster) erledigen.

Auch im Internet erreichbar

Wer seinen Owncloud-Server im Internet erreichbar haben will, muss sich zunächst einen eigenen Domainnamen besorgen, etwa beim Dyndns-Anbieter No-IP. Dieser muss sowohl im Zertifikat als auch in den Apache-Konfigurationsdateien und in der Datei /etc/hosts eingetragen werden. Außerdem muss das Raspberry Pi bei Änderungen der IP-Adresse diese dem Dnydns-Hoster mitteilen. Die meisten Dyndns-Anbieter bieten solche Skripts oder entsprechende Anleitungen an. Außerdem muss im Router eine Weiterleitung zum Raspberry Pi auf Port 80 und 443 eingerichtet werden.

Clients(öffnet im neuen Fenster) gibt es für Windows, Mac OS X, zahlreiche Linux-Distributionen sowie Android, iOS und weitere mobile Plattformen. Owncloud ist inzwischen nicht nur als Dateiserver verwendbar. Es lassen sich beispielsweise Kalenderdaten, Kontakte und Bookmarks synchronisieren. Außerdem gibt es zahlreiche Apps von Drittanbietern, etwa für die Synchronisierung von Mozillas Firefox. Ein ausführliches Handbuch(öffnet im neuen Fenster) erklärt die Installation und weitergehende Konfiguration.

Owncloud ist indes nicht der einzige Anbieter. Auch Seafile(öffnet im neuen Fenster) und Sparkleshare(öffnet im neuen Fenster) sind ebenfalls Open Source und bieten einen ähnlichen Konfigurationsumfang. Beide werden wir uns in einem späteren Artikel noch ansehen.


Relevante Themen