Owncloud ist für unseren Einplatinenrechner eigentlich zu langsam. Deshalb müssen wir mit den Resourcen sparsam umgehen und den Rechner optimal einstellen.
Falls man keine grafische Benutzeroberfläche benutzt und den nur per SSH zugreift kann man den Hauptspeicher der Grafik-Einheit verringern. Der freigegebene Speicher kommt dann dem System zugute.
sudo raspi-config
-> Memory Split
-> 16
-> OK
Owncloud benötigt PHP als Voraussetzung und einen Webserver. Wir nehmen den leichtgewichtigen nginx und legen zunächst User für diesen an:
sudo groupadd www-data
sudo usermod -a -G www-data www-data
Danach installieren wir diese Pakete:
sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache varnish
php5-curl sollte nicht installiert sein sein:
sudo apt-get --purge remove php5-curl
Jetzt SSL Zertifikate anlegen, damit wir per HTTPS auf unsere Daten zugreifen können:
sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
Nginx konfigurieren:
sudo nano /etc/nginx/sites-available/default
Und die komplette Datei mit folgendem Inhalt ersetzen. mein_name.selfhost.eu
ist dabei als Platzhalter für Eure Domain zu verstehen. Ich habe außerdem ocloud
als Subdomain gewählt, um später auf der Hauptadresse noch andere Dienste (wie z.B. diesen Blog) zu betreiben. Falls ihr das nicht braucht, einfach "ocloud." weglassen.
Im Nano-Editor speichert man mit CTRL-O und beendet mit CTRL-X.
upstream php-handler {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name ocloud.mein_name.selfhost.eu;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name ocloud.mein_name.selfhost.eu;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
# Path to the root of your installation
root /var/www/owncloud;
client_max_body_size 1000M; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
}
# Optional: set long EXPIRES header on static assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
Achtung: Falls ihr CNAME benutzt, wie im Artikel über DnyDNS beschrieben, müsst ihr einen weiteren Eintrag beim Provider anlegen für die Subdomain.
Durch die Rewrite Rules in der Config wird die URL später kürzer, also aus mein_name.selfhost.eu/remote.php/caldav/calendars/
wird beispielsweise mein_name.selfhost.eu/caldav/calendars/
. Das lässt sich auch im Browser abrufen und testen. Aber ich greife vor :-)
Wer Owncloud auch für Dateien benutzen möchte kann noch in der /etc/php5/fpm/php.ini
die beiden Parameter upload_max_filesize
und post_max_size
auf 1000M setzen. Da ich nur Kontakte und Kalender synchronisieren möchte spielt das keine Rolle.
Jetzt noch PHP konfigurieren:
sudo nano /etc/php5/fpm/pool.d/www.conf
Und listen = /var/run/php5-fpm.sock
ändern zu listen = 127.0.0.1:9000
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=100
ändern zu CONF_SWAPSIZE=512
Webserver und PHP neu starten:
sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx restart
Owncloud installieren (vorher auf der Website vorbeischauen, welches die aktuellste Version ist, im Moment 8.0.0):
sudo mkdir -p /var/www/owncloud
sudo wget https://download.owncloud.org/community/owncloud-8.0.0.tar.bz2
sudo tar xvf owncloud-8.0.0.tar.bz2
sudo mv owncloud/ /var/www/
sudo chown -R www-data:www-data /var/www
rm -rf owncloud owncloud-8.0.0.tar.bz2
Jetzt mit dem Browser auf die oben konfigurierte Adresse (http://ocloud.mein_name.selfhost.eu) und den Admin Account einrichten. Standardmäßig legt Owncloud die Daten im Webserver-Verzeichnis ab. Das kann man beim Einrichten jetzt gleich ändern. Unter Advanced kann man den Data-Folder angeben.
Dabei darauf achten, dass das Verzeichniss vom User www-data lesbar und schreibbar ist. Außerdem sollte es nicht lesbar sein von "others".
Man kann den Data-Folder aber auch noch im Nachhinein umziehen. Die Config befindet sich unter
/var/www/owncloud/config/config.php
Einfach dort das Attribut datadirectory
ändern und den Folder per mv
-Befehl verschieben.
Nachbetrachtung
Ich synchronisiere meinen Kalender und Kontakte jetzt seit ca. einer Woche und bin zufrieden. Das Webinterface ist etwas zäh. Teilweise wartet man mehrere Sekunden bis die Seiten laden. Aber wenn man sich direkt die Kontakte bookmarked ist es OK. Die Synchronisation mit dem Handy funktioniert einwandfrei. Wie man das einrichtet folgt im nächsten Artikel. Außerdem habe ich mir den neuesten Raspberry Pi 2 Model B bestellt der über doppelt soviel Hauptspeicher und einen viel schnelleren Prozessor verfügt und werde berichten wie es dort mit der Performance von Owncloud aussieht.