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.

[{Tag ServerDienste Cloud EigeneWolke Container}]