OwnCloud auf einem verwalteten Webserver installieren

Wenn es darum geht, Dateien zwischen verschiedenen Endgeräten und Personen auszutauschen, ist OwnCloud eine gute Alternative für Dropbox.

Die quelloffene Software, die auch WebDAV spricht, lässt sich auch auf einem verwalteten Webserver installieren - hierfür bietet das Projekt ein Installationsskript, welches mittels FTP auf den Webserver kopiert wird: [Rechtklick und speichern unter!]

Fehlerhafte PHP-Konfiguration

Je nach Konfiguration des Webservers gibt es jedoch einige Fallstricke. Mein Webserver verwendet beispielsweise standardmäßig PHP 5.2 - OwnCloud benötigt jedoch zwingend PHP 5.3 oder höher. Darüber hinaus müssen für den Betrieb von OwnCloud zwingend die "PHP magic quotes" deaktiviert werden.

Das Installationsprogramm brach also mit einer entsprechenden Fehlermeldung ab. Es genügte in meinem Fall die Anpassung der .htaccess-Konfigurationsdatei:

1# Use PHP 5.3 and set some PHP flags
2AddHandler php53-cgi .php
3php_flag magic_quotes_gpc off
4...

Die erste Code-Zeile ist in meinem Fall Hoster-spezifisch, sie erzwingt die Verwendung von PHP 5.3. Die zweite Zeile deaktiviert die erwähnten "PHP magic quotes".

Nach einem beherzten Druck auf die F5-Taste verschwanden die Fehlermeldungen und der Installationsassistent fragte nach einem Ordner-Namen, in welchem OwnCloud installiert werden soll. Es scheint wichtig zu sein, dass dieser Ordner noch nicht existiert - andernfalls bricht das Installationsprogramm mit einem unlink()-Fehler ab (es fehlten aber auch einige Dateien, weswegen die Installation fehlerhaft war).

Nach Fertigstellung der Installation führte der Klick auf den "Fertigstellen"-Button direkt zur Administrationsoberfläche der neuen OwnCloud-Installation - genauer gesagt zu folgendem Skript: /index.php/post-setup-check. Hier waren wieder die oben bereits erwähnten Fehlermeldungen zu sehen - die neue .htaccess-Konfigurationsdatei musste also wieder angepasst werden (siehe oben). Ein erneuter Druck auf die F5-Taste sorgte für das Verschwinden der beiden Fehlermeldungen.

Etwas kniffliger wird es mit der Authentifizierung über WebDAV. Ähnlich wie bei Baikal erfolgt hier die Authentifizierung scheinbar über SabreDAV - und diese Bibliothek funktioniert nicht auf allen verwalteten Webservern einwandfrei, was wohl der Software-Auswahl des Hosters geschuldet ist.

Erkennbar ist das daran, dass mithilfe des OwnCloud-Clients keine Verbindung hergestellt werden kann - sämtliche Anfragen werden aufgrund falscher Zugangsdaten abgelehnt. In einem Blog habe ich jedoch einen Workaround für dieses Problems gefunden.

Zuerst muss die .htaccess-Konfigurationsdatei um folgende Zeile erweitert werden (idealerweise am Anfang):

1RewriteRule .* - [env=REMOTE_USER:%{HTTP:Authorization},last]

Danach wird der Quellcode des Skripts /lib/base.php nach den folgenden Zeilen durchsucht:

1//set http auth headers for apache+php-cgi work around if variable gets renamed by apache
2if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) && preg_match('/Basics+(.*)$/i', $_SERVER['REDIRECT_HTTP_AUTHORIZATION'], $matches))
3{
4list($name, $password) = explode(':', base64_decode($matches[1]));
5$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
6$_SERVER['PHP_AUTH_PW'] = strip_tags($password);
7}

Folgende if-Abfrage wird danach eingefügt:

1if (isset($_SERVER['REDIRECT_REMOTE_USER']) && preg_match('/Basics+(.*)$/i', $_SERVER['REDIRECT_REMOTE_USER'], $matches))
2{
3list($name, $password) = explode(':', base64_decode($matches[1]));
4$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
5$_SERVER['PHP_AUTH_PW'] = strip_tags($password);
6}

Vielen Dank an der Stelle an Boris Schäfer für das Veröffentlichen dieses Workarounds! 🙂

Synchronisation mit Owncloud

Nach dieser Anpassung funktioniert auch die Verwendung des offiziellen OwnCloud- oder anderen WebDAV-Clients.

Übrigens: Der Windows 7 WebDAV-Client kann mit OwnCloud nicht viel anfangen, das Herstellen einer Verbindung ist nicht möglich. Laut einer Internet-Recherche liegt das daran, dass Windows keine Basic-Authentifizierung über WebDAV unterstützt. Ältere und neuere Versionen habe ich nicht getestet.

Übersetzungen: