Sabre DAV auf dem Uberspace installieren

Seinen eigenen Webauftritt auf einem Uberspace zu betreiben, setzt auf der einen Seite ein gewisses technisches Verständnis voraus, bietet aber dafür Möglichkeiten, die es bei anderen Hostern nicht so ohne weiteres gibt. Dazu ist das Preis- Leistungsverhältnis extrem fair. Wer auf seinen eigenen Uberspace per WebDAV zugreifen möchte, um Dateien hoch- bzw. runterzuladen, wird mit den Apache Standardmitteln nicht weiterkommen, da die WebDAV Unterstützung nicht aktiv ist. Es lässt sich zwar eine eigene Apache Instanz mit einer eigenen Konfiguration starten, was jedoch meiner Meinung nach etwas unschön ist. Eine Alternative dürfte die WebDAV Implementierung von Sabre DAV sein. Mit dieser auf PHP basierten Lösung, kann direkt auf dem Uberspace eine eigene WebDAV Instanz betrieben werden.

Die Installation sowie die Konfiguration sind je nach Anforderung mit ein paar Handgriffen erledigt. Der empfohlene Installationsweg läuft über den „Composer“. Dieser ist auf dem Uberspace im Standard nicht enthalten, kann jedoch in der eigenen Instanz installiert werden. Dazu wird folgender Befehl in der bestehenden Uberspace Session ausgeführt.

curl -sS https://getcomposer.org/installer | php -- --filename=composer --install-dir=$HOME/bin

Danach kann das Sabre DAV Paket direkt mit dem Composer installiert werden. Dies sollte direkt in dem Verzeichnis durchgeführt werden, welches später über den Browser erreichbar sein soll. Also entweder in einer eigens dafür angelegten Subdomain oder in einem eigenen Verzeichnis. Im Beispiel wird die URL „https://foo.bar/webdav“ verwendet. Dazu wird in das entsprechende Verzeichnis gewechselt.

cd /var/www/virtual/$USER/$DOMAIN/webdav
composer require sabre/dav ~3.2.0

Als nächstes werden zwei Verzeichnisse angelegt, die für den WebDAV Zugriff benötigt werden.

mkdir /var/www/virtual/$USER/$DOMAIN/webdav/data
mkdir /var/www/virtual/$USER/$DOMAIN/webdav/public

Beide Verzeichnisse müssen noch mit entsprechenden Berechtigungen versehen werden.

chmod a+rwx data public

Natürlich können beide Verzeichnisse beliebig benannt werden. In der folgenden Konfiguration muss dann jedoch der Name entsprechend angepasst werden. Die eigentliche Konfiguration des DAV Pakets erfolgt über die Datei server.php. Diese muss angelegt und mit folgendem Inhalt befüllt werden.

nano /var/www/virtual/$USER/$DOMAIN/webdav/server.php
<?php 
// enable DAV and authentication 
use Sabre\DAV; 
use Sabre\DAV\Auth; 
 
// settings 
date_default_timezone_set('Europe/Berlin'); 
 
// The autoloader 
require 'vendor/autoload.php'; 
 
// Now we're creating a whole bunch of objects 
$rootDirectory = new DAV\FS\Directory('public'); 
 
// The server object is responsible for making sense out of the WebDAV protocol 
$server = new DAV\Server($rootDirectory); 
 
// If your server is not on your webroot, make sure the following line has the correct information 
//$server--->setBaseUri('/webdav/server.php');
$server->setBaseUri('/webdav');
 
// The lock manager is reponsible for making sure users don't overwrite each others changes.
$lockBackend = new DAV\Locks\Backend\File('data/locks');
$lockPlugin = new DAV\Locks\Plugin($lockBackend);
$server->addPlugin($lockPlugin);
 
// This ensures that we get a pretty index in the browser, but it is
// optional.
$server->addPlugin(new DAV\Browser\Plugin());
 
// Automatically guess (some) contenttypes, based on extesion
$server->addPlugin(new DAV\Browser\GuessContentType());
 
// Add authentication
$authBackend = new Auth\Backend\File('auth/.htdigest');
$authBackend->setRealm('SabreDAV');
$server->addPlugin(new Auth\Plugin($authBackend));
 
// Temporary files
$server->addPlugin(new DAV\TemporaryFileFilterPlugin('data/temp'));
 
// All we need to do now, is to fire up the server
$server->exec();

Der Großteil der Konfiguration ist damit abgeschlossen. Damit jedoch auch die Authentifizierung über Digest funktioniert, muss noch eine htdigest Datei mit den Benutzerinformationen angelegt werden.

mkdir /var/www/virtual/$USER/$DOMAIN/webdav/auth
htdigest -c /var/www/virtual/$USER/$DOMAIN/webdav/auth/.htdigest SabreDAV BENUTZERNAME

Grundsätzlich wird bei Sabre die WebDAV Installation immer über die Datei “server.php” aufgerufen. Um dies nicht grundsätzlich nicht mit angeben zu müssen, wird noch eine “.htaccess” Datei angelegt, die den Aufruf direkt an die “server.php” weiterleitet.

nano /var/www/virtual/$USER/$DOMAIN/webdav/.htaccess
RewriteEngine On
RewriteBase /webdav
RewriteRule .* server.php [L]

Nun kann die Installation direkt im Browser aufgerufen werden “https://foo.bar/webdav”. Um Daten hoch- bzw. herunterzuladen, ist erst die Authentifizierung erforderlich.

WebDAV Sabre DAV Uberspace

Natürlich funktioniert der Zugriff auch über jeden WebDAV Client. Zusätzliche Konfigurationen sind ebenfalls möglich. Hierzu lohnt sich ein Blick in die ausführliche Dokumentation.

Quellen: Composer Installation ; Sabre DAV