Owncloud auf Raspberry Pi

Die Möglichkeit auf seine Daten überall auf der Welt zugreifen zu können ist schon verlockend. Nur sollen die Daten auch sicher sein. Deswegen bleiben die Daten bei mir. Eine komfortable Möglichkeit dabei ist Owncloud welche es aktuell in der Version 5.0 gibt. Entweder man installiert die Variante auf einem Server (Vserver) bei einem Hoster oder bei sich daheim. Mit dynamischen DNS kann man dann von überall zugreifen, auch wenn sich die IP ändert.

Ich habe das ganze auf einem Raspberry Pi ausprobiert, der unter 5 Watt benötigt, und so immer laufen kann, ohne seine Stromrechnung zu stark zu belasten.

Installationsanleitungen gibt es viele im Netzt, u. A. die von Sparky0815 (Kurzform):

  • 1. System updaten
  • 2. Pakete installieren (apache2 php5 php5-json php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl php5-common php-xml-parser)
  • 3. Apache anpassen (apache2.conf) – „ServerName localhost„, um die nervige Info zu umgehen, dass der Servername nicht ermittelt werden kann.
  • 4. Apache neustarten
  • 5. Owncloud herunterladen und auspacken
  • 6. ggf. ins richtige Verzeichnis des Webroots kopieren oder verschieben (/var/www/owncloud)
  • 7. Rechte setzen / Eigentümer ändern (chown www-data:www-data -R owncloud/ )
  • 8. IP Adressse des Servers aufrufen, um die Installation zu beginnen
  • 9. Fertig

optional:

  • 1. PHP Beschleuniger installieren: apt-get install php-pear php-apc
  • 2. externe HDD einbinden
  • 3. Subdomain einrichten, Unterverzeichnis bzw. virtuelles Verzeichnis

Allerdings gibt es bei einigen Installationen das Problem, dass die Seite nach der Installation nicht korrekt angezeigt wird. Als Beispiel dient folgendes Bild:

Fehler bei Owncloud mit falscher .htaccess

Fehler bei Owncloud mit falscher .htaccess

Im Errorlog des Webservers (hier Apache) sind folgende Einträge zu sehen:

[Sat Mar 16 15:10:26 2013] [error] [client 192.168.0.x] File does not exist: /var/www/owncloud/index.php/apps/files/css/files.css 
[Sat Mar 16 15:10:26 2013] [error] [client 192.168.0.x] File does not exist: /var/www/owncloud/remote.php/core.js 
[Sat Mar 16 15:10:26 2013] [error] [client 192.168.0.x] File does not exist: /var/www/owncloud/index.php/core/js/config.js 
[Sat Mar 16 15:10:26 2013] [error] [client 192.168.0.x] File does not exist: /var/www/owncloud/remote.php/core.css

Der Grund des Fehlers liegt darin, dass die zentralle Datei remote.php die CSS Dateien und Javascripte ausliefert. Hierfür werden der Datei über den Pfad bestimmte Werte übermittelt. Der Webserver weiß über die Datei .htaccess wie er diese intern umleiten muss, und welcher Teil des Pfades Parameter sind (vgl. rewriting mit mod_rewrite).

Im Netz gibt es dazu einige Vorschläge, die alle bei mir nicht geholfen haben. Ein guter Tip kam von bartv2. Man fügt in die vorhandene .htaccess folgenden Wert ein: AcceptPathInfo ON

AcceptPathInfo ON
SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
ErrorDocument 403 /owncloud/core/templates/403.php
ErrorDocument 404 /owncloud/core/templates/404.php
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
SetEnv htaccessWorking true
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
Options -Indexes

Damit werden die JS und CSS Dateien wieder korrekt durch das zentrale Script remote.php ausgeliefert und die korrekte Funktion von Owncloud ist wieder gegeben.

Leave a comment

Your comment