Ich benötigte einen einfach und schnell aufgesetzten WebDAV-Server. Um das zu erreichen, habe ich an meine guten Erfahrungen mit Containern mit Hilfe von Podman (das so was ist wie Docker) gedacht und hierfür einen Container aufgesetzt.
Suche nach einem Docker/Podman Container #
Eine kurze Suche nach Docker Containern für Webdav hat mich hierhin geleitet: https://hub.docker.com/r/bytemark/webdav/ . Auf dieser Seite steht auch eine Anleitung, wie dieses Image zu benutzen ist.
Die meisten Container sind so konfiguriert, das man ein paar Konfigurationsvariablen übergibt und sie dann laufen. Meistens kann man auch noch größere Konfigurationsteile als Dateien oder Verzeichnisse in das Image einlinken und insbesondere auch noch Verzeichnisse für persistente Daten von ausserhalb einbinden.
Um https-Verschlüsselung zu bekommen, habe ich LetsEncrypt benutzt, um SSL-Zertifikate zu erhalten.
Konfiguration mit SSL #
Ich benutze folgende Einstellungen:
- Um https-Verschlüsselung zu bekommen, habe ich LetsEncrypt benutzt, um SSL-Zertifikate zu erhalten. Dann habe ich diese manuell in ein Konfigurationsverzeichnis kopiert, das ich mir erzeugt habe und sie von dort aus in das Container-Image eingelinkt (mit der -v Option), wie in der Anleitung beschrieben.
mkdir -p /var/webdav/config/ssl cp fullchain.pem /var/webdav/config/ssl/fullchain.pem cp privkey.pem /var/webdav/config/ssl/privkey.pem mkdir /var/webdav/data podman pull docker.io/bytemark/webdav
podman run -d --name webdav -p 443:443 \ -v /var/webdav/config/ssl/fullchain.pem:/cert.pem \ -v /var/webdav/config/ssl/privkey.pem:/privkey.pem \ -v /var/webdav/data:/var/lib/dav/ \ -e AUTH_TYPE=Basic -e USERNAME=davuser -e 'PASSWORD=geheimesPasswort!' \ -d bytemark/webdav
Nach diesem kurzen Befehl konnte ich auch schon per https-URL vom Browser aus auf mein WebDAV-Verzeichnis zugreifen. Auch ein Zugriff über andere Software wie Joplin oder auch über den Thunar Dateimanager von Xfce4 (per GVFS) liefen direkt problemlos.
AUTH_TYPE = Basic #
Einen kurzen Exkurs zum Thema AUTH_TYPE hatte ich dann übrigens noch, weil der von mir benutzte Joplin Client keine Verbindung aufnehmen wollte. Es scheint so, das die Digest Authentifizierung, die für den Laien sicherer erscheint, in Wirklichkeit eher zu Sicherheitsproblemen führt als die Basic Authentifizierung. Aus diesem Grund unterstützt z.B. Joplin gar kein Digest. Natürlich wird das Passwort dann im Klartext übertragen, was zwingend eine SSL-Verbindung voraussetzt. Da ohne eine solche aber sowieso die Authentifizierung auch nicht so viel Sinn macht, sollte Basic die Authentifizierungsmethode der Wahl sein. So habe ich es oben angegeben.
mehrere Benutzer #
Natürlich kann man auch mehrere Benutzer und Passwörter verwenden, dazu steht auch etwas auf der Seite des Container-Images. Allerdings unterstützt der Apache WebDAV-Server, soviel ich weiss, keine Benutzerrechte auf dem Verzeichnis, d.h. alle Benutzer haben am Ende dieselben Rechte. Ich habe das aber nicht ausprobiert - vielleicht kann man ja doch ähnlich einem Webserver Rechte über eine Datei setzen. Wer das näher erforscht hat, kann sich ja gerne mal melden.
Konfiguration ohne SSL #
Nachdem dies nicht mein erster Server ist, den ich in einem Container installiere, ist mir dann aufgegangen, das es im Grunde nicht so klug ist, hier jedesmal in einem anderen container mit anderem internen Aufbau und wechselnder Unterstützung für die SSL-Konfiguration die Zertifikate hin- und herzukopieren und zu hoffen, das der Rest der SSL-Konfiguration auch keine Sicherheitslücken reisst. Meine Empfehlung ist ja, solch einen Server ohne SSL zu konfigurieren, und dann einen Reverse Proxy im Container zu benutzen.