In Vergangenheit habe ich bereits einige Anleitungen und Tutorials zur Installation von OwnCloud auf dem Raspberry Pi verfasst. Als Besonderheit habe ich in diesen Tutorials zwecks der begrenzten Leistungsfähigkeit des Raspberry Pi 1 & 2 immer den Webserver Lighttpd verwendet, das Setup ist allerdings im Vergleich zur empfohlenen Konfiguration mit dem Apache Webserver sehr kompliziert und lässt sich nur mit einigem Aufwand auf dem aktuellen Stand halten.
Zwecks größerer Popularität des leistungsfähigeren Raspberry Pi 3 und wachsenden Problematiken bei Installation von OwnCloud auf lighttpd habe ich mich dazu entschieden ein neues Tutorial für die Installation von OwnCloud 8.1 auf Basis von Apache und Raspbian zu verfassen. Die Installation und Einrichtung ist um ein vielfaches einfacher und sollte auch Anwendern mit wenig Linux Erfahrung gelingen sowie einfacher zu pflegen sein.
Update: März 2016, Anleitung wurde auf den Raspberry Pi 3 und OwnCloud 9 aktualisiert.
Inhaltsverzeichnis
Benötigte Hardware für einen OwnCloud Server
Folgende Hardware verwende ich für meinen OwnCloud Server, zwecks Dauerbetrieb ist vor allem auf ausreichende Kühlung und Auslagerung der Daten auf eine USB-Festplatte zu achten (SD-Karten haben eine vergleichsweise begrenzte Lebensdauer).
Mindestens notwendig
- Raspberry Pi 2 Modell B oder Raspberry Pi 3
- Netzteil für den Pi mit 2A für den Pi 3 ein Netzteil (2,5A@5,1V),
- Eine Class 10 MicroSD Karte
- Ein Netzwerkkabel oder ein USB WLAN Stick (nicht für den Raspberry Pi 3)
- Ein SD-Kartenleser
Zusätzlich empfohlen
- Ein Gehäuse für den Pi mit Lüfter Vorbereitung
- Ein Lüfter für das Gehäuse
- Eine externe USB Festplatte zum Speichern der Daten
- Kabellose Media Center Tastatur
- HDMI Kabel
Vorbereitungen
Zum Setup des OwnCloud Server benötigen wir natürlich ein installiertes und aktualisiertes Betriebssystem, ich verwende wie immer Raspbian mit aktuellen Updates und RasPi Firmware wie in meinen Einsteiger-Guides beschrieben.
Wir verwenden in diesem Tutorial die offiziell von OwnCloud unterstützte Webserver und Datenbank Software, als Webserver kommt Apache zum Einsatz und als Datenbank verwende ich sqlite 3. Ein kompletter MySQL Datenbank Server auf dem Pi ist etwas zu oversized.
Festplatte für OwnCloud einrichten
Wer die Disk gerne via Desktop einrichtet, hier gibt es ein neues Tutorial zum Einrichten der USB Festplatte.
Die Daten welche später in der Cloud gespeichert werden landen unter /var/www/owncloud/data/, das ist unschön, wichtige Daten sollten nicht auf einer SD-Karte liegen da diese öfter mal kaputt gehen.
Meine externe Festplatte habe ich vorher mit dem Dateisystem NTFS formatiert, das gewährleistet das ich die Platte später ohne Probleme an meinem Desktop Rechner anstecken kann falls der Pi mal nicht mehr will. Hierfür gibt es bei Microsoft eine Anleitung – https://support.microsoft.com/de-de/help/2442658 – Alternativ der Desktop Anleitung oben folgen.
Wir benötigen auf unserem RasPi als dann noch die passende Software um eine Festplatte NTFS Dateisystem überhaupt lesen zu können. Mit aktuellem Raspbian nicht mehr notwendig.
1 |
sudo apt-get -y install ntfsprogs |
Wir legen nun einen neuen Ordner im Verzeichnis /media an. In diesen wird später das USB-Gerät gemountet, ich nenne den Ordner “usb-hdd” (keine Sonder oder Leerzeichen erlaubt).
1 |
sudo mkdir /media/usb-hdd |
Tipp:
Wer eine USB Festplatte ohne eigene Stromversorgung am Raspberry Pi betreiben möchte ohne einen aktiven USB Hub zu verwenden kann via Config Parameter die Spannung am USB Port erhöhen und sich so einen zusätzlichen USB-Hub sparen. Dieser Trick hilft auch falls die Disk klackert und nicht richtig funktioniert.
Bevor nun die Festplatte via USB angeschlossen wir aktivieren wir die Log Ausgabe um herauszufinden welchem Gerät die Festplatte zugeordnet wird.
1 |
tail –f /var/log/messages |
Wir sehen folgende Ausgabe:
1 2 3 4 5 6 |
Jul 11 19:42:56 raspberrypi2 kernel: [ 181.694954] sd 0:0:0:0: Attached scsi generic sg0 type 0 Jul 11 19:42:56 raspberrypi2 kernel: [ 181.816608] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) Jul 11 19:42:56 raspberrypi2 kernel: [ 181.817279] sd 0:0:0:0: [sda] Write Protect is off Jul 11 19:42:56 raspberrypi2 kernel: [ 181.817948] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA Jul 11 19:42:56 raspberrypi2 kernel: [ 181.825229] sda: sda1 Jul 11 19:42:56 raspberrypi2 kernel: [ 181.828934] sd 0:0:0:0: [sda] Attached SCSI disk |
Bei mir wurde der Festplatte sda: sda1 zugewiesen. Beendet tail mit STRG+C und geht folgenden Befehl an um die UUID der Festplatte zu erhalten, ersetzt SDA1 mit eurem Gerät.
1 |
sudo blkid /dev/sda1 |
Notiert euch die UUID, bei mir ist es: UUID=”8AD08510D08503A3“. Zum automatischen Mounten genau dieser Festplatte beim Start des RasPi editieren wir nun nun die fstab Datei mit Nano
1 |
sudo nano /etc/fstab |
Fügt am Ende der Datei folgende Zeile ein, ersetzt die UUID mit eurer, speichert mit STRG+X, Y und Enter. Nach dem nächsten Neustart wird die Festplatte unter /media/usb-hdd/ automatisch eingehängt.
1 |
UUID=1C5638245637FCD8 /media/usb-hdd/ ntfs-3g permissions,defaults,auto |
Wir rebooten jetzt
1 |
sudo reboot |
Prüft ob nach dem Reboot eure festplatte über /media/usb-hdd/ zugreifbar ist.
DynDNS für OwnCloud einrichten
Wichtig! Das Vorgehen ist für einen klassischen IPv4 Internetanschluss. Wer mit DS-Lite (zum Beispiel neues Kabel Internet von Unitymedia) muss sich der DS Lite Anleitung bedienen.
Richtig sinnvoll ist die Verwendung einer eigenen „Cloud“ als Alternative für Dropbox und Co natürlich nur wenn diese auch über das Internet erreichbar ist, da sich an den meisten Internet & DSL-Anschlüssen die IP-Adresse, welche notwendig ist um seinen Server von überall erreichen zu können, regelmäßig ändert und eine IP-Adresse schlecht zu merken ist verwenden wir einen Dynamischen DNS Dienst.
Unser Raspberry Pi schickt hierbei regelmäßig die aktuelle IP-Adresse eures Anschlusses an den DynDNS Anbieter, dieser ordnet die IP dann automatisch einem DNS-Namen zu der einfach zu merken und immer aktuell ist.
- Meldet euch für einen kostenlosen DynDNS Account bei no-ip an und erstellt euch eine gut zu merkenden DynDNS Adresse, in Screenshot ist es zum Beispiel eure-ddns-adresse.ddns.net
Dann installieren wir noch die Software, mit welcher der Pi immer die aktuelle IP-Adresse eures Internet-Anschluss an no-ip meldet
1 |
wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz |
Entpackt das heruntergeladene Archiv
1 |
tar xvfz noip-duc-linux.tar.gz |
Dann wechsle ich in das entpackte Verzeichnis (noip-2.1.9-1, anhängig von der gerade aktuellen Version) und installieren die Software.
1 2 |
cd noip-2.1.9-1/ sudo make install |
Bei der Installation werdet ihr nach euren Zugangsdaten gefragt, als Update Intervall verwende ich 30 Minuten und wähle bei der Rückfrage ob ich nach einem Update etwas ausführen möchte No aus.
Wir legen nun noch einen Autostart Eintrag für den no-ip Client an sodass dieser nach jedem Start unseres Pi automatisch mit gestartet wird.
1 |
crontab -e |
Folgende Zeile am Ende bewirkt den automatischen Start von No-IP, speichert mit STRG+X, Y und Enter.
1 |
@reboot sudo /usr/local/bin/noip2 |
Nach dem nächsten Neustart wird die Software immer eure IP-Adresse an No-IP. Kontrollieren könnt ihr das ganze nach der Anmeldung unter „Manage Hosts“ auf der No-IP Seite.
Installation von OwnCloud
Mit folgendem Befehl fügen wir das OwnCloud Repository, in welchem uns das offizielle Pakete für OwnCloud (aktuell Version 9) zur Verfügung steht, zu unseren Sourcen hinzu. Das im Standard Raspbian Repository enthaltene OwnCloud Paket ist veraltet und soll nicht verwendet werden.
1 2 3 |
wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key sudo apt-key add - < Release.key sudo sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list" |
Mit dieser Quelle können wir nun OwnCloud inklusive aller abhängiger Software installieren und später auch problemlos aktualisieren.
1 2 |
sudo apt-get update sudo apt-get install owncloud |
Der Installer fragt euch nach einem Root Passwort für die MySQL Datenbank, dieses solltet ihr möglichst sicher wählen und merken.
Datenbank einrichten
Bevor wir nun unseren OwnCloud Server verwenden nehmen wir noch einige wichtige Einstellungen vor, als erstes erstellen wir auf dem MySQL Server eine neue Datenbank mit eigenem Benutzer, wir wollen schließlich nicht das OwnCloud mit root Rechten auf der Datenbank arbeitet.
Wir öffnen die MySQL Kommandozeile (das vorher festgelegt root Passwort wird benötigt)
1 |
sudo mysql -u root -p |
Folgender SQL Befehle wird zum Erstellen der Datenbank mit dem Namen „owncloud“ abgesetzt
1 |
CREATE DATABASE owncloud; |
Wir erstellen noch einen Benutzer mit dem Namen owncloud mit einem sicheren Passwort (ersetzt SicheresPasswort)
1 |
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'SicheresPasswort'; |
dieser bekommt nur Rechte auf die gerade erstellte Datenbank
1 |
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost'; |
Zusätzlich deaktivieren wir das Remote Login für den root
1 |
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); |
Dann beenden wir die MySQL Eingabe
1 2 |
FLUSH PRIVILEGES; exit; |
Webserver für OwnCloud mit SSL absichern
Update: Ab 01-2016 solltet ihr Zertifikate nur noch mit SHA256 erstellen, die Anleitung habe ich angepasst.
Der Installer von OwnCloud hat uns direkt den benötigten Apache Webserver mit installiert, allerdings müssen wir noch einige Konfigurationen vornehmen. Um die Kommunikation zwischen euren Geräten und dem Server möglichst sicher zu gestallten erstellen wir als erstes ein SSL Zertifikat, mit diesem werden die Daten, welche über das Netz übertragen werden verschlüsselt.
1 2 |
sudo openssl genrsa -out server.key 4096 sudo openssl req -new -key server.key -out server.csr |
Ihr werdet nach einige Infos gefragt, am wichtigsten ist die Option “Common Name”, gebt hier den Hostnamen (raspberrypi), oder falls ihr DynDns verwendet den kompletten DynDNS Namen eures RasPi ein, bei mir z.B. raspberrytips.ddns.net. Informationen wie z.B. Company Name und Organizational Unit könnt ihr leer lassen.
Dann generieren wir aus dem gerade erstellten Schlüsselpaar eine digitales SSL Zertifikat das es uns ermöglicht den Datenverkehr zwischen Client und Webserver zu verschlüsseln
1 |
sudo openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt -sha256 |
Die Datei “server.crt” ist nun unser SSL-Zertifikat das wir mit unserem privaten Schlüssel „server.key“ auf dem Webserver einspielen müssen. Wir verschieben diese Dateien daher in ein anderes Verzeichnis für die spätere Verwendung.
1 2 3 4 5 |
sudo chmod 400 server.key sudo mv server.key /root/server.key sudo mv server.crt /root/server.crt |
Webserver für OwnCloud konfigurieren
Wir müssen nun noch unseren Apache Webserver konfigurieren, das erledigen wir innerhalb der Konfigurationsdateien
Für aktuelle Apache Webserver (mit aktuellem Raspbian und Apache ab 2.4)
Als erstes müssen wir das DocumentRoot anpassen um nicht immer /owncloud hinten an unsere URL anhängen zu müssen, das erledigen wir mit dem Editor
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Ändert innerhalb der Datei das DocumentRoot von /var/www/html in folgenden Pfad
1 |
DocumentRoot /var/www/owncloud |
Speichert mit STRG+X, Y und Enter und löscht dann das html Verzeichnis, das benötigen wir nicht
1 |
sudo rm -rf /var/www/html/ |
Dann editieren wir die Konfiguration für die SSL Verschlüsselung ebenfalls mit Nano
1 |
sudo nano /etc/apache2/sites-available/default-ssl.conf |
Darin müssen wir die Pfade zu unseren eben generierten Dateien anpassen, ändert die Zeilen für SSLCertificateFile und SSLCertificateKeyFile wie hier zu sehen
1 2 |
SSLCertificateFile /root/server.crt SSLCertificateKeyFile /root/server.key |
Ändert innerhalb der Datei ebenfalls noch das DocumentRoot in folgenden Pfad
1 |
DocumentRoot /var/www/owncloud |
Speichert mit STRG+X, Y und Enter
Zum aktivieren der SSL Verschlüsselung geben wir noch folgendes ein und restarten unseren Webserver
1 2 3 |
sudo a2ensite default-ssl.conf sudo a2enmod ssl sudo service apache2 force-reload |
Für alte Apache Installationen (mit altem Raspbian bis Apache 2.2)
Wir editieren die Konfiguration Nano
1 |
sudo nano /etc/apache2/sites-available/default |
Am Ende der Datei fügen wir folgende Konfiguration für unsere OwnCloud Webseite ein und speichert mit STRG+X, Y und Enter. Diese besagt das der Webserver die Verschlüsselung aktiviert und die gerade erstellten Dateien hierfür verwendet.
1 2 3 4 5 6 7 |
DocumentRoot /var/www/owncloud ServerName raspberrytips.ddns.net SSLEngine on SSLCertificateFile /root/server.crt SSLCertificateKeyFile /root/server.key |
Wichtig!
Wir verwenden SSL Verschlüsselung und DynDNS daher habe ich die Parameter entsprechend angepasst. Ändert den ServerName entsprechend in eure DynDNS Adresse.
Zum aktivieren der SSL Verschlüsselung geben wir noch folgendes ein und restarten unseren Webserver
1 2 |
sudo a2enmod ssl sudo apache2ctl restart |
Port Weiterleitung am Internet Router einrichten
Da unsere OwnCloud Installation via Internet erreichbar sein soll, hierfür haben wir ja schon DynDNS eingerichtet, müsst ihr nun eurem Internet Router beibringen das Anfragen an den OwnCloud Server auch zu diesem weitergeleitet werden. Ohne ein eingerichtetes „Port Forwarding“ weiß euer Router nicht was er mit den ankommenden Anfragen anfangen soll und verwirft diese. Die Einrichtung einer Port Weiterleitung für Port 443 ist bei jedem Router anders, ich verwende eine FritzBox, für euren Router müsst ihr ggf. die Dokumentation lesen oder Google bemühen.
Wichtig!
Ich sorge als erstes dafür das mein Raspberry Pi immer die gleiche interne IP-Adresse vom DHCP Server auf dem Router zugewiesen bekommt, die Einstellung findet ihr unter „Heimnetz“ > „Netzwerk“ in den Eigenschaften des raspberrypi. Als Alternative könnt ich auch eine statische IP-Adresse für euer WLAN oder LAN direkt in Raspbian einstellen.
Die Portweiterleitung oder Port Freigabe findet ihr im Fritzbox Menu unter „Internet“ > „Freigaben“ > „Neue Portfreigabe„. Ich erstelle eine Weiterleitung von Port 443 (das ist der HTTPS Port für verschlüsselte Verbindungen) an die feste IP-Adresse das Raspberry Pi an Port 443. Das Protokoll ist natürlich TCP.
OwnCloud Einrichten
Da meine OwnCloud Daten auf der USB-Festplatte liegen sollen lege ich ein Verzeichnis hierfür auf der Festplatte an und passe die Rechte an.
1 2 3 4 5 |
sudo mkdir -p /media/usb-hdd/owncloud/data sudo chown -R www-data:www-data /media/usb-hdd/owncloud/data sudo chmod 0770 /media/usb-hdd/owncloud/data sudo reboot |
Wir können nun mit der Konfiguration von OwnCloud fortfahren, hierzu rufen wir OwnCloud im Browser auf, verwendet hierzu DynDNS Adresse mit https
- https://raspberrytips.ddns.net/owncloud
Wenn das klappt ist euer RasPi nun erfolgreich via Internet zu erreichen, ignoriert die Fehlermeldung eures Browsers (bei IE klickt ihr z.B. auf Continue to this website (not recommended)), das ist normal da wir für unseren Server kein kostenpflichtiges offizielles Zertifikat verwenden.
Falls das nicht klappt ist entweder eure IP-Adresse nicht vom DynDNS Client aktualisiert worden oder euer Router reicht die Anfragen nicht richtig an den Raspberry Pi weiter. Im Problemfall könnt ihr natürlich auch erstmal die interne Adresse eures Pi aufrufen und auf den Zugriff via Internet verzichten.
- https://raspberrypi/owncloud/ oder
- https://<IP-Adresse des RasPi>/owncloud/
Wir landen auf dem OwnCloud Konfigurationsdialog, legt ein Admin Benutzer mit Passwort fest und klickt auf „Speicher & Datenbank“ ich habe für das Datenverzeichnis, da ich meine USB-Festplatte verwenden möchte, /media/usb-hdd/owncloud/data verwendet. Als Datenbank wählen wir MySQL mit den Zugangsdaten die ihr vorher angelegt habt.
- Falls ihr bei OC9 einen 404 Fehler erhaltet (nicht gefunden) beachtet den Hinweiß ganz unten.
Wichtig!
Da wir das Datenverzeichnis geändert haben müssen wir die Berechtigungen anpassen. Führt hierzu folgendes aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo find /var/www/owncloud/ -type f -print0 | sudo xargs -0 chmod 0640 sudo find /var/www/owncloud/ -type d -print0 | sudo xargs -0 chmod 0750 sudo chown -R root:www-data /var/www/owncloud/ sudo chown -R www-data:www-data /var/www/owncloud/apps/ sudo chown -R www-data:www-data /var/www/owncloud/config/ sudo chown -R www-data:www-data /media/usb-hdd/owncloud/data/ sudo chown -R www-data:www-data /var/www/owncloud/themes/ sudo chown root:www-data /var/www/owncloud/.htaccess sudo chown root:www-data /media/usb-hdd/owncloud/data/.htaccess sudo chmod 0644 /var/www/owncloud/.htaccess sudo chmod 0644 /media/usb-hdd/owncloud/data/.htaccess sudo reboot |
Wenn alles geklappt hat landet ihr nach dem Reboot nun auf eurer eigenen Cloud. Für alles weitere solltet ihr einen Blick in die OwnCloud Doku werfen.
Smartphone und Desktop Client Apps
Es gibt verschiedene Möglichkeiten um auf die eigene Cloud zuzugreifen, das Smartphone kann via iOS oder Android App zugreifen, der Desktop Rechner via Desktop Client oder über das Bekannte Webinterface mit einem beliebigen Browser.
Als Server Adresse verwendet Ihr eure DynDNS Adresse (https://<dyndns-host>.ddns.net).
Zusätzlich 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 oder 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.
Backup von Owncloud
Denkt daran eure Daten regelmäßig zu sichern falls die Festplatte mal kaputt geht. Wichtig ist das folgende Dinge regelmäßig gesichert werden
- Der config-Ordner => Bei mir /var/www/owncloud/config
- Der data-Ordner => Bei mir /media/usb-hdd/owncloud/data
- Die MySQL Datenbank => Bei mir ist es die Datenbank owncloud
Sicherung von MySQL als Dump Datei mit folgendem Befehl.
1 2 |
sudo mysqldump -p[RootPasswort] -u root owncloud > /home/pi/owncloud-mysql-dump.sql |
Den Dump und die Verzeichnisse könntet ihr dann zum beispiel mit rSync und einem Cronjob automatisch an einen anderen Ort kopieren.
Weitere Infos
Bug in OwnCloud 9 – The requested URL /var/www/owncloud/index.php was not found on this server
In OC9 gibt es noch einen Bug, wenn http://raspberrypi/owncloud aufgerufen wird erhaltet ihr den Fehler „The requested URL /var/www/owncloud/index.php was not found on this server“. Problem ist ein Fehler in den Regeln für das ReWrite.
Lösung:
Öffnet die htaccess Datei in Nano
1 |
sudo nano /var/www/owncloud/.htaccess |
Fügt VOR folgender Zeile
1 2 |
RewriteRule .* index.php [PT,E=PATH_INFO:$1] |
diese Zeile ein
1 |
RewriteCond %{REQUEST_URI} !^/owncloud/$ |
Speichert mit STRG+X, Y und ENTER. Startet den Webserver einmal durch (sudo service apache2 restart).