Eigenen OwnCloud Server einrichten

OwnCloud ist vergleichbar mit Online Speicher-Diensten wie Dropbox oder SkyDrive, es ermöglicht das ortsunabhängige Speichern von Daten und Informationen  in einer „eigenen Cloud“. Wer seine Daten nicht in die Hände dritter geben möchten kann mit dem Raspberry Pi anhand von OwnCloud seinen eigenen Online-Speicher-dienst mit vielen weiteren interessanten Funktionen erstellen. Eine Demo von OwnCloud gibt es auf der Projektseite von OwnCloud.

[UPDATE 12.07.2015]

Da viele User Probleme mit lighttpd haben gibt es nun ein neues OwnCloud Einrichtungs-Tutorial welches den offiziell unterstützten Apache Webserver verwendet. Linux Anfänger sollten das neue Tutorial definitiv bevorzugen.

Inhaltsverzeichnis

Was ist OwnCloud?

OwnCloud ist vergleichbar mit Online Speicher-Diensten wie Dropbox oder SkyDrive, es ermöglicht das ortsunabhängige Speichern von Daten und Informationen  in einer „eigenen Cloud“. Der Unterschied bei OwnCloud ist das wir uns einen eigenen „Cloud Dienst“ erstellen und somit die volle Kontrolle über unsere Daten behalten. Neben dem klassischen Online Speicher bietet OwnCloud noch einige weitere interessante Funktionen:

OwnCloud-Logo
  • Einbindung von externen Diensten zum Beispiel FTP, Dropbox, Amazon S3, WebDAV uvm.
  • Teilen von Dateien und Ordnern mit anderen
  • Online Kalender (über CalDAV)
  • Online Aufgabenplaner
  • Online Adressbuch (über CardDAV)
  • Musikwiedergabe aus dem Speicher
  • Fotogalerie aus dem Speicher
  • Tools für das Betrachten von PDF und Office-Dateien
  • Einen Editor für OpenDocument Dokumente
  • Favoriten / Lesezeichen Verwaltung
  • Benutzer-, Gruppen- und Rechte Verwaltung

Vorwort

Es gibt für OwnCloud bereits fertige „Ready to Use“ Versionen für verschiedene Linux Distributionen, diese setzen auf Apache und MySQL als Datenbank. Ich habe in diesem Tutorial bewusst auf die Verwendung der Ready To Use Versionen verzichtet um euch zu zeigen wie eine manuelle Installation mit Lighttpd und SQLite funktioniert, da wir hiermit auf dem RasPi meines Erachtens besser fahren. Wer in der Pi und Linux Welt komplett neu ist sollte in Erwägung ziehen die Debian Version von hier zu installieren, oder die Herausforderung annehmen und lernen wie man selbstständig zum Ziel kommt.

Voraussetzungen

Folgende Dinge Benötigen wir um OwnCloud 7 auf dem Raspberry Pi zu installieren

  • RasPi mit Raspbian Wheezy – aktualisiert und eingerichtet. Ihr könnt hierzu gerne meine Tutorials Teil1, Teil2 und Teil3 verwenden
  • Über „raspi-config“ sollte ein Memory Split von 16MB und das booten in die Konsole konfiguriert sein
  • Optional eine externe USB-Festplatte zum Speichern der Daten (die Daten können auch auf der SD-Karte liegen, wird aber nicht empfohlen)
  • Optional könnt ihr am Ende eine Portweiterleitung einrichten um OwnCloud aus dem Internet verfügbar zu machen

RasPi vorbereiten

Vor der Installation von OwnCloud müssen wir notwendige Software auf dem RasPi installieren, bei dieser Gelegenheit sollten wir auch gleich vorhandene Pakete und die Firmware unseres Mini-Computers aktualisieren.

Da wir aus Sicherheitsgründen den Webserver nicht unter dem Root oder Pi Benutzer starten möchten erstellen wir einen neuen Benutzer und eine Gruppe mit dem Namen „www-data“

SSL Webserver Zertifikat erstellen

Wer OwnCloud für Testzwecke installiert kann auf ein digitales Zertifikat verzichten, sobald ihr persönliche Daten übertragt empfehle ich grundsätzlich SSL zu verwenden. SSL bzw. TLS ermöglicht es uns den über das Netz laufenden Datenverkehr zu verschlüssel sodass Dritte nicht mitlesen können. SSL basiert auf einem digitalen Zertifikat das zu Verschlüsselung des Datenverkehrs auf dem Webserver benutzt wird. Viele werden hier nur „Bahnhof“ verstehen da Themen rund um digitale Zertifikate recht komplex sind, ich hoffe euch das wichtigste trotzdem gut verständlich vermitteln zu können. Um ein Zertifikat mit OpenSSL erstellen zu können müssen wir uns erst einen privaten Schlüssel generieren. Der private Schlüssel ist der sensible Teil eines digitalen Zertifikats und sollte nicht in fremde Hände geraten (server.key). Dieser Schlüssel wird zum entschlüsseln der Daten verwendet, es kann nur derjenige die übertragenen Daten entschlüsseln der den privaten Schlüssel kennt, in unserem Fall ist das natürlich der Webserver für OwnCloud. Merkt euch das Passwort das ihr vergeben müsst um den privaten Schlüssel zu schützen.

Dann erstellen wir den öffentlichen Schlüssel des Zertifikats, ihr werdet aufgefordert einige Informationen einzugeben. Mit dem öffentlichen Schlüssel werden die Daten vom Clients verschlüsselt und an den Webserver gesendet. Durch den privaten Teil des Schlüsselpaars ist sichergestellt das nur der Webserver selbst die Daten wieder entschlüsseln kann. Das ganze basiert auf einem Asymetrischen Verschlüsselungsverfahren und kann hier nachgelesen werden.

Am wichtigsten ist die Option „Common Name“, gebt hier den Hostnamen, oder falls ihr DynDns verwendet den DynDNS Namen eures RasPi ein. Der Hostname ist, falls ihr diesen nicht geändert habt, „raspberrypi“.

openssl-csr

Jetzt entfernen wir noch die Passphrasse um zu verhindern das uns der Webserver bei jedem Start nach dieser fragt.

Als letztes generieren wir aus dem Schlüsselpaar eine digitales SSL Zertifikat das es uns ermöglicht den Datenverkehr zwischen Client und Webserver zu verschlüsseln.

Die Datei „server.crt“ ist nun unser SSL-Zertifikat das wir später auf dem Webserver einspielen müssen.

openssl-files

Software installieren

Jetzt installieren wir die abhängige Software. Installiert wird der lighttpd Webserver mit allen für OwnCloud notwendigen Modulen und SQLite als Datenbank für die OwnCloud Anwendung. Wir starten mit der Installation des Webservers

Der Webserver lauscht nach der Installation auf Port 80 und wir können die Test-Seite von lighttpd in unserem Browser aufrufen „http://192.168.178.27/index.lighttpd.html“, ersetzt die IP-Adresse mit der eures RasPi (Detailierte Anleitung siehe hier). Habt ihr während der Installation einen Fehler erhalten das Port 80 bereits belegt ist müsst ihr in der „/etc/lighttpd/lighttpd.conf“ den Port ändern (server.port) und diesen mit „:<Port>“ an eure URL anhängen, also zb. http://192.168.178.27:8080/index.lighttpd.html für Port 8080. Um eine Sichere Kommunikation zu ermöglichen richten wir nun noch die SSL Verschlüsselung auf unserem Webserver ein. Zuerst erstellen wir aus dem Schlüssel und dem vorher generierten Zertifikat eine Datei die der Webserver lesen kann und legen diese dann im Konfigurationsverzeichnis ab.

Nachdem die Datei mit dem Zertifikat und den Schlüssel nun mit den korrekten Rechten und Eigentümer unter „/etc/lighttpd/ssl/server.pem“ liegt passen wir noch die Webserver-Konfiguration an um SSL / HTTPS zu aktivieren.

Kopiert folgende Zeilen ans Ende der Datei und passt „server.name“ an euren Hostnamen oder DynDNS Namen an. Falls Ihr Port 443 durch eine andere Anwendung belegt habt ändert den Wert hier entsprechend ab, zb. „:433“ in „:8081“.

Wir installieren noch PHP und die notwendigen Module und aktivieren diese danach am Webserver

Als nächstes installieren wir die Datenbank SQLite

OwnCloud Installieren

Nun können wir die OwnCloud 7 Sourcen von der Webseite laden und entpacken diese in unser Home.

Nach dem Entpacken des Archivs nach /home/pi/owncloud/ verschieben wir die Dateien in das Document Root unseres Webservers und löschen noch die Standardseite von lighttpd

Wir müssen noch zwei wichtige Sicherheitseinstellungen an unserem Webserver vornehmen, wir verbieten den direkten Zugriff auf das Datenverzeichnis und deaktivieren das Directory Listing.

Dann ändern wir das Document Root für HTTP von „/var/www“ in „/var/www/owncloud“ sodass wir beim Aufruf via Browser nicht immer das Unterverzeichnis angeben müssen und evtl weitere Seiten auf dem Webserver hosten können.

OwnCloud Einrichten

Wir haben alle notwendigen vorarbeiten abgeschlossen und können nun die OwnCloud Konfiguration über unseren Browser aufrufen, am Besten tun wir das direkt via HTTPs um unsere SSL Verschlüsselung zu testen. Wir werden einen Fehler erhalten da es sich beim dem eingerichteten Zertifikat um ein selbst erstelltes und kein offizielles handelt, ignoriert daher die SSL Fehlermeldungen im Browser.

  • oder
  • https://raspberrypi/index.php

Wir landen auf der Konfigurationsseite von OwnCloud und erstellen einen neuen Benutzer, die anderen Einstellungen lassen wir erst mal unverändert. Die Einrichtung dauert einige Sekunden, wartet diese ab.

owncloud-installation

Achtung! Lighttpd bietet keinen Zugriffsschutz via htaccess, daher sind aktuell die persönlichen Daten unter „/var/www/owncloud/data“ lesbar, um das zu verhindern und gleichzeitig unsere wichtigen Daten auf einen, im Vergleich zur SD-Karte, sicheren Speicher zu legen erledigen wir noch folgendes. Wir richten uns eine externe USB-Festplatte oder Stick am RasPi ein, eine genaue Anleitung gibt es in meinem Tutorial – RasPi als Fileserver einrichten (Step1), wichtig ist das ihr bei einem NTFS Datei System das automatische Mounten via in der fstab mit „permissions,defaults,auto“ durchführt anstelle mit „defaults,auto,umask=000,users,rw“, sonst können wir die später die Rechte und den Eigentümer nicht ändern. Danach editieren wir die OwnCloud Config.

Dort ändern wir den Pfad zum Data Directory ‚datadirectory‘ => ‚/var/www/owncloud/data‘ in einen Pfad der auf unseren USB Drive zeigt.

Nun erstellen wir noch das neue Datenverzeichnis auf unserem Speicher, passen die Rechte an und verschieben dann das vorhandene Datenverzeichnis von der SD-Karte auf das USB-Laufwerk:

Wichtig ist das wir aus Sicherheitsgründen noch den Eigentümer der Dateien und die Rechte für die Verzeichnisse und Dateien festlegen (swohl für das Document Root unter „/var/www/“ und für das verschobene Data Directory unter „/media/usbstick/owncloud-data/data“.

Danach müssen wir natürlich den Dienst neu starten um die Änderungen zu aktivieren

Das war die Grundkonfiguration von OwnCloud, ihr könnt nun via Browser, App oder Desktop Tool auf eure eigene Cloud zugreifen. Falls ihr eure Daten auch über das Internet erreichen wollt könnt ihr nun eine Portweiterleitung einrichten. Allerdings empfehle ich vorher die weitere Konfiguration abzuschließen.

OwnCloud Anpassen

Unsere eigene Cloud ist jetzt grundsätzlich funktionsfähig, wir sollten aber noch einige Anpassungen vornehmen um diese sicher und voll funktional zu machen.

SSL erzwingen

Ihr solltet für eure „Wolke“ die Verwendung von HTTPS/SSL erzwingen, das passiert in den Einstellungen im Webinterface

owncloud-https

Passwort ändern

Falls ihr das noch nicht erledigt habt, ändert unbedingt das Passwort eures Benutzers „pi“ über das Kommando „passwd“Passwort ändern

 passwd

Upload Größe anpassen

Um Uploads größer als 2MB zu erlauben müssen wir die php.ini editieren

Wir editieren die Optionen „upload_max_filesize“ und „post_max_size“ auf jeweils 20MB, ihr könnt auch einen höheren Wert nehmen. Da die Datei recht lange ist benutzt am Besten die Suche in Nano (STRG+W).

Erweiterungen

Nachträglich könnt ihr eure Wolke mit weiteren Funktionen und Apps ausstatten um die online Previews nutzen zu können und Office Dokumente bearbeiten zu können müsst ihr zum Beispiel noch folgende Software installieren

  • PHP module imagick (sudo apt-get install php5-imagick)
  • avconv or ffmpeg (sudo apt-get install ffmpeg)
  • OpenOffice or libreOffice (sudo apt-get install openoffice.org)

Weitere Apps gibt es auf der OwnCloud Webseite, cool finde ich den Music Player und die Streaming App.

166469-1

Smartphone und Desktop Client Apps

Es gibt verschiedene Möglichkeiten um auf die eigene Cloud zuzugreifen, das Smartphone via iOS oder Android App, den Desktop Rechner via Desktop Client oder das Bekannte Webinterface von einem beliebigen Browser.

Kalender und Adressbuch synchronisieren

Ihr könnt eure Geräte über das integrierte CalDAV oder CardDAV mit OwnCloud zu synchronisieren. Anleitungen hierzu gibts im Dokumentationsbereich.