Owncloud

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. 

Owncloud Setup

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.

links

social