introduction
Web Distributed Authoring and Versioning (WebDAV) est une extension HTTP qui fournit un cadre pour la création et la modification à distance de fichiers sur un serveur. WsgiDAV est un serveur WebDAV écrit en python. Ce guide vous aidera à installer WsgiDAV version 3.0 sur un serveur Vultr exécutant Debian 10. Nous obtiendrons également un certificat SSL pour fournir une connexion sécurisée ainsi qu'une authentification PAM.
Conditions préalables
- Un système Debian 10 auquel vous avez un accès privilégié (via l'utilisateur root ou tout utilisateur sudo.)
- La
$EDITORvariable d'environnement doit être définie sur un éditeur de texte de votre choix.
- Un nom de domaine enregistré est requis. Ses serveurs de noms doivent être configurés avec un
Aenregistrement pointant vers l'adresse IPv4 de votre serveur et éventuellement un AAAAenregistrement pointant vers l'adresse IPv6.
- Une connaissance de la syntaxe YAML est recommandée.
L'espace réservé dav.example.comsera utilisé pour le nom de domaine de votre serveur.
Installation
Certificat SSL
Nous commencerons par mettre à jour le système et obtenir un certificat SSL gratuit de Let's Encrypt . Pour ce faire, commencez par mettre à jour votre système et installez l' certbotutilitaire:
sudo apt update
sudo apt upgrade -y
sudo apt install -y certbot
Dans la commande ci-dessous, remplacez dav.example.comet [email protected]par votre nom de domaine et votre adresse e-mail respectivement avant de l'exécuter:
sudo certbot certonly --standalone --agree-tos -m [email protected] -d dav.example.com
Votre serveur recevra un défi pour vérifier que vous contrôlez le nom de domaine spécifié. S'il réussit, le certificat sera émis et enregistré, avec d'autres fichiers tels que la clé privée, sous /etc/letsencrypt/live/dav.example.com/.
Installation de WsgiDAV
Tout d'abord, installez le gestionnaire de packages python pip:
sudo apt update
sudo apt install -y python3-pip
WsgiDAV nécessite un serveur HTTP qui prend en charge WSGI. Nous allons installer l'option par défaut, qui est Cheroot. Nous installerons également la bibliothèque lxml python, qui a tendance à mieux fonctionner que la bibliothèque XML installée par défaut. La bibliothèque python3 PAM (Pluggable Authentication Module) est également nécessaire. Installez les packages requis à l'aide de l' pipoutil:
sudo pip3 install wsgidav cheroot lxml python-pam
Configuration de WsgiDAV
L'exécutable WsgiDAV est stocké dans /usr/local/bin, nous allons donc placer le fichier de configuration dans le /usr/local/etcrépertoire. Téléchargez l'exemple de fichier de configuration avec les commandes suivantes:
sudo mkdir -p /usr/local/etc
sudo wget https://github.com/mar10/wsgidav/raw/master/sample_wsgidav.yaml -O /usr/local/etc/wsgidav.yaml
Ouvrez-le avec votre éditeur:
sudo $EDITOR /usr/local/etc/wsgidav.yaml
Recherchez les lignes suivantes dans la section "Prise en charge SSL":
# ssl_certificate: "wsgidav/server/sample_bogo_server.crt"
# ssl_private_key: "wsgidav/server/sample_bogo_server.key"
# ssl_certificate_chain: null
Remplacez-les par ce qui suit:
ssl_certificate: "/etc/letsencrypt/live/dav.example.com/cert.pem"
ssl_private_key: "/etc/letsencrypt/live/dav.example.com/privkey.pem"
ssl_certificate_chain: "/etc/letsencrypt/live/dav.example.com/chain.pem"
Ensuite, nous allons configurer les chemins de partage en mappant les chemins HTTP (tels que /) aux emplacements correspondants sur le système de fichiers (tels que /var/www/dir1). À des fins de démonstration, nous partagerons deux répertoires, dont l'un sera en lecture seule. Trouvez le provider_mappingbloc dans la section "ACTIONS":
provider_mapping:
"/": "/path/to/share1"
"/pub":
root: "/path/to/share2"
readonly: true
"/share3":
provider: path.to.CustomDAVProviderClass
args: ["/path/to/share3", "second_arg"]
kwargs: {"another_arg": 42}
Remplacer:
provider_mapping:
"/":
root: "/var/www/html/documents"
readonly: false
"/reports":
root: "/var/www/html/reports"
readonly: true
Avec ces mappages, https://dav.example.com:8080/correspondra au /var/www/html/documentsrépertoire sur le serveur, tandis que https://dav.example.com:8080/reportssera mappé à /var/www/html/reportssans accès en écriture.
Pour l'authentification, nous utiliserons le pilote PAM. Cela supprime le besoin de comptes d'utilisateurs WebDAV distincts et permet aux utilisateurs du système de se connecter en utilisant leurs informations d'identification habituelles.
Dans la section "AUTHENTIFICATION", trouvez ces lignes:
accept_basic: true
accept_digest: true
default_to_digest: true
domain_controller: null
Remplacez-les par ce qui suit:
accept_basic: true
accept_digest: false
default_to_digest: false
domain_controller: wsgidav.dc.pam_dc.PAMDomainController
Vous pouvez maintenant tester votre serveur:
sudo wsgidav -c /usr/local/etc/wsgidav.yaml
Ouvrez https://dav.example.com:8080/dans votre navigateur Web. Puisque nous avons configuré l'authentification PAM, vous devrez vous connecter avec votre compte utilisateur Linux. Utilisez CTRL+ Cpour arrêter le serveur avant de continuer.
Installation en tant que service
Pour exécuter votre serveur WebDAV en tant que service système géré par systemd, créez un fichier d'unité:
sudo $EDITOR /etc/systemd/system/wsgidav.service
Saisissez les informations suivantes:
[Unit]
Description=WsgiDAV WebDAV server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/wsgidav -c /usr/local/etc/wsgidav.yaml
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=wsgidav_service
[Install]
WantedBy=multi-user.target
Créez ensuite un fichier de configuration pour le service de journalisation du système:
sudo $EDITOR /etc/rsyslog.d/wsgidav_service.conf
Remplissez le fichier avec les éléments suivants:
if $programname == 'wsgidav_service' then /var/log/wsgidav.log
& stop
Enregistrez et quittez, puis utilisez les commandes ci-dessous pour créer le fichier journal:
sudo touch /var/log/wsgidav.log
sudo chown root:adm /var/log/wsgidav.log
Enfin, chargez le nouveau fichier d'unité systemd et redémarrez le service de journalisation avant de démarrer WsgiDAV:
sudo systemctl daemon-reload
sudo systemctl restart rsyslog.service
sudo systemctl start wsgidav.service
Vous pouvez maintenant utiliser systemctlpour démarrer, arrêter et redémarrer votre serveur WebDAV. La sortie et l'erreur standard de WsgiDAV seront enregistrées /var/log/wsgidav.loget accessibles également à l'aide de sudo journalctl -u wsgidav.service.
Si vous souhaitez que le serveur WebDAV démarre automatiquement au démarrage du système, exécutez:
sudo systemctl enable wsgidav.service
Lectures complémentaires