6. ownCloud installierenDas Paket ownCloud installierenDie OwnCloud-Community pflegt ein Installationspaket, welche man gut verwenden kann. Als erstes fügt man diese Paketquelle hinzu:
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"
Nun aktualisiert man die Paketlisten und installiert ownCloud:
sudo apt-get update
sudo apt-get install owncloud php5-apcu
Während der Installation muss man ein root-Kennwort für die MySQL-Datenbank eingeben.
Datenbank einrichtenAls erstes konfiguriert man MySQL so, dass es auch gut mit den begrenzten Ressourcen des Raspberry klar kommt.
Die alte Konfigurationsdatei wird gesichert und eine Beispielkonfiguration für kleine Server kopiert:
sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
sudo cp /usr/share/doc/mysql-server-5.5/examples/my-small.cnf /etc/mysql/my.cnf
Die entsprechende Konfigurationsdatei wird im Editor geöffnet:
sudo nano /etc/mysql/my.cnf
In dem Teil, der mit [mysqld] beginnt, die folgende Zeile hinzufügen:
query_cache_size = 8M
Den Editor mit Ctrl-X, J und Return verlassen und den MySQL-Server neu starten:
sudo service mysql restart
Im folgenden wird eine Datenbank mit dem Namen "owncloud" und ein Datenbankbenutzer mit Namen "owncloud" angelegt. Der folgende Befehl öffnet dazu eine MySQL-Shell (dabei das vorher festgelegt root-Kennwort für MySQL eingeben):
sudo mysql -u root -p
In diese MySQL-Shell gibt man nun die folgenden Befehle ein und schliesst die Shell zum Schluss wieder mit exit. "HierdasKennwort" muss natürlich gegen das gewünschte Kennwort für den owncloud -Benutzer ausgetauscht werden.
CREATE DATABASE owncloud;
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'HierdasKennwort';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost';
FLUSH PRIVILEGES;
exit;
SSL-Zertifikat erstellenJe nach gewünschter Variante müssen ein oder zwei SSL-Zertifikate erstellt werden.
Variante A: für cloud4.apfelinsel.de
Variante B: für cloud6.apfelinsel.de
Variante C: für cloud4.apfelinsel.de und cloud6.apfelinsel.de
Die folgenden Befehlen müssen für jedes Zertifikat eingegeben werden. "serverx" ist dabei durch "server4" (für cloud4.apfelinsel.de) bzw. "server6" (für cloud6.apfelinsel.de) zu ersetzen.
Als erstes werden der private Schlüssel und eine Zertifikatsanforderung erzeugt. Bei dem zweiten Befehl werden verschiedene Informationen abgefragt. Hier muss unter "Common Name" der spätere Servername angegeben werden (also z.B. cloud4.apfelinsel.de). Alle anderen Punkte können nach Belieben ausgefüllt werden.
sudo openssl genrsa -out serverx.key 4096
sudo openssl req -new -key serverx.key -out serverx.csr
Die erstellte Zertifkatsanforderung wird dann von uns selber zertifiziert. Die Zahl hinter "days" gibt an, wie lange das Zertifikat gültig sein soll. In diesem Beispiel sind es 365 Tage=1 Jahr. 10 Jahre=3650 Tage funktionieren, 100 Jahre=36500 Tage funktionieren nicht.
sudo openssl x509 -req -days 365 -in serverx.csr -signkey serverx.key -out serverx.crt
Auf diesem Weg haben wir zwei Dateien erstellt:
serverx.key: der private Schlüssel
serverx.crt: das SSL-Zertifikat
Nun werden die Dateien noch in einen anderen Ordner verschoben:
sudo chmod 400 serverx.key
sudo mv serverx.key /root/serverx.key
sudo mv serverx.crt /root/serverx.crt
IPv6 Privacy Extensions deaktivierennur bei Variante B und CStandardmässig sind die IPv6 Privacy Extensions aktiviert und der Raspberry wechselt daher nach einer gewissen Zeit von alleine seine IPv6-Adresse. Leider merkt die Fritzbox das nicht richtig und gibt diese Änderung nicht an den Dienst MyFritz weiter. Daher muss diese Änderung deaktiviert werden:
Die entsprechende Konfigurationsdatei wird im Editor geöffnet:
sudo nano /etc/dhcpcd.conf
Dann wird die Zeile
slaac private
in
slaac hwaddr
Den Editor mit Ctrl-X, J und Return verlassen und den raspberry neu starten:
sudo reboot
Apache einrichtenDer Webserver muss noch so konfiguriert werden, dass er auf den gewählten Servernamen reagiert und auch das SSLZertifikat einbindet. Dazu wird die Konfigurationsdatei geöffnet:
sudo nano /etc/apache2/sites-available/owncloud.conf
An das Ende der Datei werden jeweils die folgenden Zeilen für cloud4.apfelinsel.de bzw. cloud6.apfelinsel.de entsprechend der gewünschten Variante angefügt. Dabei natürlich die Namen "cloudx" und "serverx" entsprechend anpassen:
<VirtualHost *:443>
DocumentRoot /var/www/owncloud
ServerName cloudx.apfelinsel.de
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
SSLEngine on
SSLCertificateFile /root/serverx.crt
SSLCertificateKeyFile /root/serverx.key
</VirtualHost>
Danach wird SSL und die neue Konfiguration aktiviert und der Apache neu gestartet:
sudo a2enmod ssl
sudo a2enmod headers
sudo a2ensite owncloud.conf
sudo apache2ctl restart
Skript zum Setzen der strengen Dateirechte erstellenDas Skript mit folgendem Befehl erstellen:
sudo nano /root/setPermissions
Dann im Editor folgendes Skript eingeben und mit CTRL-X, J und Return speichern.
#!/bin/bash
ocpath='/var/www/owncloud'
datapath='/media/usb-hdd/owncloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'
printf "Creating possible missing Directories\n"
mkdir -p $datapath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater
printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
find ${datapath}/ -type f -print0 | xargs -0 chmod 0640
find ${datapath}/ -type d -print0 | xargs -0 chmod 0750
printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${rootuser}:${htgroup} ${datapath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${datapath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/
chmod +x ${ocpath}/occ
printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
then
chmod 0644 ${ocpath}/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${datapath}/data/.htaccess ]
then
chmod 0644 ${datapath}/data/.htaccess
chown ${rootuser}:${htgroup} ${datapath}/data/.htaccess
fi
Nun muss das Skript noch als ausführbar markiert werden:
sudo chmod +x /root/setPermissions
Quellen:
http://raspberry.tips/server-2/owncloud-8-1-auf-dem-raspberry-pi-2-mit-apache/https://www.elektronik-kompendium.de/sites/raspberry-pi/2010021.htmhttps://doc.owncloud.org/server/latest/admin_manual/installation/installation_wizard.html#strong-perms-label