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-apcuWä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.cnfDie entsprechende Konfigurationsdatei wird im Editor geöffnet:
sudo nano /etc/mysql/my.cnfIn dem Teil, der mit [mysqld] beginnt, die folgende Zeile hinzufügen:
query_cache_size = 8MDen Editor mit Ctrl-X, J und Return verlassen und den MySQL-Server neu starten:
sudo service mysql restartIm 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 -pIn 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.csrDie 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.crtAuf 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.crtIPv6 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.confDann wird die Zeile
slaac privatein
slaac hwaddrDen Editor mit Ctrl-X, J und Return verlassen und den raspberry neu starten:
sudo rebootApache 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.confAn 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/setPermissionsDann 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
fiNun muss das Skript noch als ausführbar markiert werden:
sudo chmod +x /root/setPermissionsQuellen:
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