Mise en place d'un serveur WebDAV avec apache2

Hello !

Aujourd'hui nous allons mettre en place un serveur WebDAV. Il s'agit d'un protocole qui rend possible la synchronisation de données entre plusieurs appareils. Il est compatible avec beaucoup de systèmes d'exploitations, si ce n'est tous, y compris Android et iOS !
De nombreux logiciels dépendent de ce protocole, ou de ses alternatives comme CardDAV (pour les contacts), CalDAV (pour les calendriers) : ownCloud, pour ne citer que lui.

Mais dépendre de logiciels sans les comprendre, ce n'est pas digne d'un geek.


Installation :

Donc on va commencer par installer apache2 avec les modules dont nous avons besoin.

$ apt-get install apache2
# On installe apache s'il n'est pas déjà présent
$ a2enmod dav dav_fs dav_lock rewrite
# On active les modules
$ service apache2 reload
# Pour qu'Apache prenne ces modifications en compte

Un fois en place, nous allons personnaliser un peu la config de WebDAV pour le rendre le plus compatible possible avec toutes les plateformes
On créé le fichier /etc/apache2/conf-enabled/httpd-dav.conf et on y insère ceci :

DavLockDB "/ect/apache2/DavLock"

#
# The following directives disable redirects on non-GET requests for
# a directory that does not include the trailing slash.  This fixes a
# problem with several clients that do not appropriately handle
# redirects for folders with DAV methods.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully  
BrowserMatch "MS FrontPage" redirect-carefully  
BrowserMatch "^WebDrive" redirect-carefully  
BrowserMatch "^WebDAVFS/1.[01234]" redirect-carefully  
BrowserMatch "^gnome-vfs/1.0" redirect-carefully  
BrowserMatch "^XML Spy" redirect-carefully  
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully  
BrowserMatch " Konqueror/4" redirect-carefully  

Maintenant nous allons mettre en place des VirtualHosts, vous avez plusieurs possibilités via le hostname, repertoires etc...

De notre coté on va partir sur les repertoires car c'est plus simple à mettre en oeuvre et surtout le plus répandu.

Donc rajouter dans votre dossier /etc/apache2/sites-available/ un fichier avec l'extension .conf, normalement celui-ci devra resembler a la configuration ci-dessous

<VirtualHost *:80>  
        ErrorLog syslog
        LogLevel warn
    ServerName webdav.ungeek.fr
    DocumentRoot /filerz/09
    <Directory />
        AllowOverride none
    </Directory>
    <Directory /filerz/09/titin>
        Options Indexes
        AllowOverride none
        Order allow,deny
        allow from all
        DAV on
        AuthName "Private Access"
        AuthType Basic
        AuthUserFile /filerz_config/htpasswd-titin
            <Limit GET POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                Require user titin
            </Limit>
 </Directory>
</VirtualHost>  

Donc notre cas le but est de partager le contenu présent dans le repertoire /filerz/09/titin/, nous utilisons authentification Basic qui se base sur un fichier .htpasswd que vous pouvez générer avec la commande :
htpasswd passwdfile username password

Une fois tout en place, il vous suffit de faire un a2ensite puis le nom de votre fichier de config sans l'extensions puis relancer votre stack Web.
Par exemple, si vous avez appelé votre fichier monsite.conf, vous devez faire ceci :

$ a2ensite monsite
$ service apache2 reload

IMPORTANT : Pensez aux permissions de vos dossiers / fichiers sinon apache n'arrivera pas a écrire dedans :(

Voilà c'est en prod !