ownCloud 10 Server auf dem Raspberry Pi

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

OwnCloud reift immer mehr von der reinen Dateisynchronisation zu einer ausgereiften und erweiterbaren Plattform für das Freigeben und Zusammenarbeiten von Daten, Dokumenten, Kalender und Kontakten. Die Version X (10) bzw. 10.0.2 bringt viele Neuerungen und Änderungen mit sich, neben internen Verbesserungen bei der Performance wurden auch Teile der Oberfläche komplett überarbeitet.

Daher habe ich mich dazu entschlossen das Tutorial für die Einrichtung eines eigenen OwnCloud Server auf Basis des Raspberry Pi 3 mit OwnCloud 10 zu aktualisieren.

Hardware für den eigenen OwnCloud Server

Folgende Hardware verwende ich für meinen OwnCloud 10 Server, zwecks Dauerbetrieb ist vor allem auf ausreichende Kühlung und Auslagerung der Daten auf eine USB-Festplatte zu achten (SD-Karten haben eine begrenzte Lebensdauer).

Mindestens benötigt

Zusätzlich empfohlen

Betriebssystem Installation

Sobald Ihr euren Pi in das Gehäuse eingebaut habt könnt ihr mit der Einrichtung beginnen.

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. Das Setup wird in meinen Einsteiger-Guides beschrieben.

  • Das Raspbian Image auf eure SD-Karte schreiben
  • Die Grundeinrichtung von Raspbian auf dem Raspberry Pi 3

Wir verwenden in diesem Tutorial die offiziell von OwnCloud unterstützte Webserver und Datenbank Software, als Webserver kommt Apache zum Einsatz und als Datenbank verwenden wir MySQL.

USB-Festplatte für OwnCloud einrichten

Daten welche später in OwnCloud gespeichert werden landen im Standard im Verzeichnis “/var/www/owncloud/data/“. Das Verzeichnis liegt in der Standard Installation auf der SD-Karte des Pi, wichtige Daten sollten aber nicht auf einer SD-Karte liegen da diese öfter mal kaputt gehen. Daher zeige ich euch in diesem Teil die Einrichtung einer externen Festplatte zur Verwendung in OwnCloud via Kommandozeile, wer die Disk über den Desktop einrichten möchte findet hier ein Tutorial zum Einrichten der USB Festplatte.

Meine externe Festplatte habe ich vorher mit dem Dateisystem NTFS formatiert, das gewährleistet das ich die Platte später ohne Probleme an meinem Windows Rechner anstecken kann falls der Pi defekt ist oder sonstige Probleme auftauchen. Zum Formatieren einer externen Festplatte mit NTFS gibt es bei Microsoft eine Anleitung – http://support.microsoft.com/de-de/kb/2442658/de – Alternativ der oben genannten Anleitung für den RasPi-Desktop oben folgen.

Wir legen uns als erstes einen Ordner im Verzeichnis /media an. In diesen wird später die USB-Disk gemountet, ich nenne den Ordner “usb-hdd” (keine Sonder oder Leerzeichen erlaubt).

mkdir /media/usb-hdd
sudo chown pi:pi /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.

Steckt nun die USB Festplatte an den Pi an und lasst euch direkt die Logs ausgeben um herauszufinden welchem Gerät die Festplatte zugeordnet wurde.

cat /var/log/messages

Wir sehen am Ende folgende Ausgabe:

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.  folgenden Befehl an um die UUID der Festplatte zu erhalten, ersetzt SDA1 mit eurem Gerät.

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

sudo nano /etc/fstab

Fügt am Ende der Datei folgende Zeile ein, ersetzt die UUID mit eurer,

UUID=74EA618724897ACE /media/usb-hdd ntfs-3g rw,default,nofail 0 0

Speichert mit STRG+X, Y und dann Enter. Nach dem nächsten Neustart wird die Festplatte unter /media/usb-hdd/ automatisch eingehängt.

sudo reboot

Prüft ob nach dem Reboot eure Festplatte über /media/usb-hdd/ zugreifbar ist. Zum Beispiel könnt ihr dort leere Datei erstellen, erhaltet ihr keinen Fehler passt das Einbinden der Disk.

sudo touch /media/usb-hdd/test.file

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 öffentliche 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.

no-ip-anmeldung

Dann installieren wir noch die Software, mit welcher der Pi immer die aktuelle IP-Adresse eures Internet-Anschluss an no-ip meldet

cd ~
wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz

Entpackt das heruntergeladene Archiv

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.

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.

crontab -e

Folgende Zeile am Ende bewirkt den automatischen Start von No-IP, speichert mit STRG+X, Y und Enter.

@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.

NO IP Host

Installation von OwnCloud

Wichtig! OwnCloud 10 ist noch nicht in den Repositories verfügbar, daher installieren wir erst die 9.1 via Repository und aktualisieren dann auf 10.0.2

Mit folgendem Befehl fügen wir das OwnCloud Repository, in welchem uns das offizielle Pakete für OwnCloud (aktuell Version 9.1) zur Verfügung steht, zu unseren Sourcen hinzu. Das im Standard Raspbian Repository enthaltene OwnCloud Paket meist veraltet.

wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key
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.

sudo apt-get update
sudo apt-get install owncloud -y

Der Installer fragt euch nach einem Root Passwort für die MySQL Datenbank, dieses solltet ihr möglichst sicher wählen und merken.

owncloud setup mysql root

Wir aktualisieren nun noch auf OwnCloud 10.0.2, prüft bitte hier ob Version 10.0.2 noch aktuell ist.

cd ~
wget https://download.owncloud.org/community/owncloud-10.0.2.tar.bz2

Stoppen den Apache WebServer

sudo service apache2 stop

Wir sichern das owncloud 9.1 Verzeichnis indem wir es umbenennen

sudo mv /var/www/owncloud/ /var/www/owncloud-old/

Dann entpacken wir das eben Entpackte OwnCloud 10 Verzeichnis

tar xjf owncloud-10.0.2.tar.bz2 -C /var/www

Passen noch die Rechte an und starten Apache

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 /var/www/owncloud/themes/
sudo chown root:www-data /var/www/owncloud/.htaccess
sudo chmod 0644 /var/www/owncloud/.htaccess

sudo service apache2 start

Raspbian kommt ebenso wie Debian Jessie noch mit PHP 5.6, die aktuelle Version ist PHP 7.1. Ich installiere daher noch über einen Umweg PHP 7.1 um die Performance zu verbessern, dieser Schritt ist optional.

Wir fügen das Repository und Key hinzu

sudo sh -c "echo 'deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free' >> /etc/apt/sources.list"

sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
sudo gpg --armor --export CCD91D6111A06851 | sudo apt-key add -

Dann aktualisieren wir apt und installieren PHP 7.1

sudo apt-get update
sudo apt-get install php7.1 php7.1-opcache php7.1-zip php7.1-dom php7.1-xml php7.1-mb php7.1-gd php7.1-curl php7.1-mysql php7.1-intl php-xml -y

Apache wird nun noch auf die Verwendung von PHP 7.1 konfiguriert.

sudo a2dismod php5
sudo a2enmod php7.1
sudo systemctl daemon-reload
sudo service apache2 restart

Datenbank einrichten

Bevor wir nun mit OwnCloud starten nehmen wir noch einige wichtige Einstellungen vor. Als erstes erstellen wir auf dem MySQL Server eine neue Datenbank mit eigenem SQL-Benutzer, wir wollen schließlich nicht das OwnCloud mit root Rechten auf der Datenbank arbeitet.

Wir öffnen die MySQL Kommandozeile (das vorher angelegte Passwort wird benötigt)

sudo mysql -u root -p

Folgender SQL Befehle wird zum Erstellen der Datenbank mit dem Namen “owncloud” abgesetzt

CREATE DATABASE owncloud;

Wir erstellen noch einen Benutzer mit dem Namen owncloud mit einem sicheren Passwort (ersetzt GanzSicheresPasswort)

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

dieser bekommt nur Rechte auf die gerade erstellte Datenbank

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

Zusätzlich deaktivieren wir das Remote Login für den root

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

Dann beenden wir die MySQL Eingabe

FLUSH PRIVILEGES;
exit;

Webserver für OwnCloud mit SSL absichern

Der Installer von OwnCloud hat uns direkt den benötigten Apache2 Webserver mit installiert. 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.

sudo openssl genrsa -out server.key 4096
sudo openssl req -new -key server.key -out server.csr

Ihr werdet nach einige Infos gefragt, geht diese an oder überspringt die Eingabe mit Enter. 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

SSL zertifikat

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

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.

sudo chmod 400 server.key

sudo mv server.key /root/server.key
sudo mv server.crt /root/server.crt

Webserver für OwnCloud einrichten

Wir müssen nun noch unseren Apache2 Webserver konfigurieren. Als erstes müssen wir das DocumentRoot anpassen um nicht immer /owncloud hinten an unsere DNS Adresse oder IP anhängen zu müssen, das erledigen wir mit dem Editor

sudo nano /etc/apache2/sites-available/000-default.conf

Ändert innerhalb der Datei  das DocumentRoot von /var/www/html in folgenden Pfad

DocumentRoot /var/www/owncloud

Speichert mit STRG+X, Y und Enter und löscht dann das html Verzeichnis, das benötigen wir nicht

sudo rm -rf /var/www/html/

Dann editieren wir die Konfiguration für die SSL Verschlüsselung ebenfalls mit Nano

sudo nano /etc/apache2/sites-available/default-ssl.conf

Darin müssen wir die Pfade zu unseren eben generierten Zeritikatsdateien anpassen, ändert die Zeilen für SSLCertificateFile und SSLCertificateKeyFile wie hier zu sehen

SSLCertificateFile /root/server.crt
SSLCertificateKeyFile /root/server.key

Ändert innerhalb der Datei ebenfalls noch das DocumentRoot in folgenden Pfad

DocumentRoot /var/www/owncloud

Speichert mit STRG+X, Y und Enter

Zum aktivieren der Konfiguration geben wir noch folgendes ein und restarten unseren Webserver

sudo a2ensite default-ssl.conf
sudo a2enmod ssl
sudo service apache2 force-reload
sudo service apache2 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 (feste IP-Adresse) für euer WLAN oder LAN direkt in Raspbian einstellen.

raspberry pi statische ip

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.

Portweiterleitung Raspberry Pi

OwnCloud Einrichten und Konfigurieren

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.

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/

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 aus dem Heimnetzwerk eures Pi aufrufen und auf den Zugriff via Internet verzichten.

  • https://raspberrypi/  oder
  • https://<IP-Adresse des RasPi>/

Wir landen auf der OwnCloud Konfigrations-Seite

  • Legt ein Admin Benutzer mit Passwort fest
  • 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 haben
    • Benutzer: owncloud
    • Passwort: GanzSicheresPasswort (Habt ihr hoffentlich geändert)
    • Datenbank: owncloud
    • Host: localhost

owncloud 10 setup

Wenn alles geklappt hat erhaltet ihr folgenden Dialog und könnt direkt die passenden Apps herunterladen.

owncloud setup fertig

Wichtig!
Da wir das Datenverzeichnis geändert haben müssen wir nach der Grundeinrichtung die Berechtigungen der OwnCloud Dateien anpassen. Führt hierzu folgendes aus:

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 mit den oben genannten URLs. Für alles weitere solltet ihr einen Blick in die OwnCloud Doku werfen.

Folgende Optimierungen könnt ihr noch erledigen:

Das Ausführen der Jobs via System Cron aktivieren

crontab -u www-data -e

Wählt am Besten NANO als editor (2). Fügt folgende Zeile am Ende der Datei ein

*/15  *  *  *  * php -f /var/www/owncloud/cron.php

Speichert mit STRG+X, Y und ENTER

Stellt noch in den Einstellungen unter Allgemein den Cron um

cron owncloud

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 ist ein Befehl für Linux, Unix oder Mac OS. Er wird benutzt um Prozesse mit den Rechten eines anderen Benutzers, zum Beispiel(...) ">sudo Advanced Packaging Tool (APT) ist ein Paketverwaltungssystem, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist und dpkg(...) ">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.

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.

ownCloud 10 Server auf dem Raspberry Pi
raspberry.tips


wallpaper-1019588
Red Sea Ain Sokhna Classic 2018
wallpaper-1019588
Fernsehtipps Film (01.01. - 07.01.2018)
wallpaper-1019588
Mickey Mouse Day – der Geburtstag von Micky Maus
wallpaper-1019588
[Aktion] #scolivia - Buchvorstellung #1
wallpaper-1019588
Langer Tag, sturmfreie Bude und eine Fensterscheibe
wallpaper-1019588
#ticinomoments: Unvergessliche Erlebnisse für die ganze Familie
wallpaper-1019588
Umsiedlung von zusätzlich 50.000 Afrikanern und Arabern in die EU, Merkel-Deutschland bekommt erst mal 10.000 und die Anderen dann später
wallpaper-1019588
[Rezension] Highland Bridge #1 - Entführt von einem Highlander