WebDAV ist universell verwenbar, sei es zum Autausch von Terminen über CalDAV, von Kontakten über CardDAV oder als zentrales Repository für Git. Uberspace bietet von Haus aus keine laufende Apache-Instanz, bei der WebDAV bereits aktiviert ist. Man kann aber einfach eine weitere Instanz mit einer eigenen Konfiguration starten und von einer Subdomain der Öffentlichen auf diese weiterleiten. Alle komplett großgeschriebenen Texte müssen vor ihrer Anwendung angepasst werden.

Weiterleitung

Nach Anlegen eines Verzeichnis für ein neues Subdomain unter /var/www/virtual/BENUTZER/SUB.DOMAIN.DE legen wir hierin eine neue .htaccess mit folgendem Inhalt:

RequestHeader edit Destination ^https: http:
RewriteEngine On
RewriteBase /
RewriteRule (.*) http://localhost:PORTNUMMER/$1 [P,QSA]

Außer der Weiterleitung an sich stellen wir mit der ersten Zeile auch sicher, dass auch bei einer sicheren Übertragung über SSL/HTTPS alle möglichen Aktionen von DAV funktionieren (wichtig bei der Verwendung für Versioningsystemen wie Git). Zum Testen der korrekten Funktionalität bietet sich hierbei das Unix-Programm litmus an.

Da Uberspace ein Shared Hoster ist und interne Ports nur einmal verwendet werden dürfen, checken wir mit /usr/sbin/ss -ln | fgrep PORTNUMMER, ob der Port schon in Benutzung ist. Die Portnummer muss hierbei zwischen 61000 und 65535 liegen. Somit leitet die öffentliche Apache-Instanz alle Anfragen an das Programm weiter, welches an diesem Port horscht.

Apache

Die neue Apache-Instanz wird eine eigene Konfigurationsdatei sowie ein Daten- und ein Konfigurationsverzeichnis bekommen.

Die PORTNUMMER muss der aus der obigen .htaccess entsprechen. EMAIL ist die E-Mailadresse des Webmasters, der von Apache als für den Server zuständig angegeben wird. Das KONFIGURATIONSVERZEICHNIS wird alle möglichen Dateien wie Konfiguration und Logs des Servers enthalten, als Ort dafür nutze ich /home/BENUTZER/etc/webdav/. Das DATENVERZEICHNIS dagegen enhält die über WebDAV geteilten Dateien, dieser ist prinzipiell jedem selbst überlasse, ich nutze /home/BENUTZER/data/webdav/. Die folgende Konfigurationsdatei erstellen wir unter KONFIGURATIONSVERZEICHNIS/apache2.conf.

Listen PORTNUMMER
ServerAdmin EMAIL
ServerRoot /var/www/virtual/BENUTZER/SUB.DOMAIN.DE
ErrorLog KONFIGURATIONSVERZEICHNIS/error.log
CustomLog KONFIGURATIONSVERZEICHNIS/access.log "%t %u: %r -> %>s (%b)"
PidFile KONFIGURATIONSVERZEICHNIS/httpd.pid
DAVLockDB KONFIGURATIONSVERZEICHNIS/db.lock
LoadModule log_config_module /usr/lib64/httpd/modules/mod_log_config.so
LoadModule alias_module /usr/lib64/httpd/modules/mod_alias.so
LoadModule auth_basic_module /usr/lib64/httpd/modules/mod_auth_basic.so
LoadModule auth_digest_module /usr/lib64/httpd/modules/mod_auth_digest.so
LoadModule authn_file_module /usr/lib64/httpd/modules/mod_authn_file.so
LoadModule authn_alias_module /usr/lib64/httpd/modules/mod_authn_alias.so
LoadModule authn_default_module /usr/lib64/httpd/modules/mod_authn_default.so
LoadModule authz_user_module /usr/lib64/httpd/modules/mod_authz_user.so
LoadModule authz_owner_module /usr/lib64/httpd/modules/mod_authz_owner.so
LoadModule authz_groupfile_module /usr/lib64/httpd/modules/mod_authz_groupfile.so
LoadModule authz_default_module /usr/lib64/httpd/modules/mod_authz_default.so
LoadModule dav_module /usr/lib64/httpd/modules/mod_dav.so
LoadModule dav_fs_module /usr/lib64/httpd/modules/mod_dav_fs.so
NameVirtualHost *:PORTNUMMER
<VirtualHost *:PORTNUMMER>
    ServerAlias SUB.DOMAIN.DE
    ServerAdmin EMAIL
    DocumentRoot DATENVERZEICHNIS
    <Directory DATENVERZEICHNIS/>
        Options +Indexes +SymLinksIfOwnerMatch MultiViews Includes
        AllowOverride All
    </Directory>
    <Location />
        DAV On
        AuthType Digest
        AuthName "SUB.DOMAIN.DE"
        AuthUserFile KONFIGURATIONSVERZEICHNIS/auth.dav
        Require valid-user
    </Location>
</VirtualHost>

Um sicherzustellen, dass die Konfigurationsdatei keine Fehler enthält, checken Sie diese mit /usr/sbin/httpd -f KONFIGURATIONSVERZEICHNIS/apache2.conf -t.

Einen neuen Benutzer, der auf WebDAV zugreifen darf, legen Sie mittels htdigest -c KONFIGURATIONSVERZEICHNIS/auth.dav SUB.DOMAIN.DE NEUERBENUTZER an. Sie werden dann nach dem gewünschten Passwort gefragt. Mit -c wird dabei eine neue Datei erstellt, ohne können Sie dieser dann weitere Benutzer hinzufügen bzw. das Passwort von existierenden Benutzern anpassen.

Service

Damit die zusätzliche Apache-Instanz auch nach einem Reboot des Servers läuft, starten wir es als Service. Nutzen Sie bisher noch keinen Service, führen Sie davor zuerst uberspace-setup-svscan aus.

uberspace-setup-service webdav /usr/sbin/httpd -f KONFIGURATIONSVERZEICHNIS/apache2.conf -D FOREGROUND

Nun haben Sie unter SUB.DOMAIN.DE einen eigenen WebDAV-Server. Gratulation!