Apache2 et le module userdir
Le serveur web Apache2 permet de transformer un dossier spécifique de chaque utilisateur de votre serveur en espace web personnel grâce au module userdir.
Apache2 reste l’un des serveurs web les plus fiables et polyvalents sous Linux en 2026. Le module userdir, inclus par défaut avec Apache2, offre une solution élégante pour héberger des sites web personnels pour chaque utilisateur du système. Cette approche est particulièrement utile dans les environnements éducatifs, les serveurs partagés ou les projets collaboratifs.
Installation et activation du module#
Prérequis#
Avant de commencer, assurez-vous qu’Apache2 est installé sur votre système :
# Pour les systèmes basés sur Debian/Ubuntu
sudo apt update && sudo apt install apache2
# Pour les systèmes basés sur RHEL/CentOS/Fedora
sudo dnf install httpd # ou yum install httpd
# Pour les systèmes Arch linux
sudo pacman -S apache
# Pour NixOS, ajouter ces lignes dans le fichier `/etc/nixos/configuration.nix`
services.httpd.enable = true;
networking.firewall.allowedTCPPorts = [ 80 443 ];Activation du module#
Sur votre serveur web, connectez-vous avec un utilisateur disposant des droits sudo et activez le module userdir :
# Systèmes basés sur Debian/Ubuntu
sudo a2enmod userdir && sudo systemctl restart apache2
# Systèmes basés sur RHEL/CentOS/Fedora
sudo systemctl enable httpd && sudo systemctl restart httpdConfiguration de base#
Par défaut, le module userdir rend le dossier public_html de chaque home utilisateur accessible via le web. Après redémarrage d’Apache2, le module est immédiatement fonctionnel.
Création du dossier utilisateur#
Chaque utilisateur souhaitant héberger un site doit créer son dossier public_html :
# Création du dossier avec les permissions appropriées
mkdir -p ~/public_html
chmod 755 ~/public_html
chmod 711 ~ # Important pour permettre à Apache d'accéder au homeNote importante : Le dossier home de l’utilisateur doit avoir au minimum les permissions 711 pour qu’Apache puisse y accéder.
Accès aux sites web#
Pour accéder aux espaces web des utilisateurs, utilisez l’URL suivante dans votre navigateur :
http://votre-serveur/~nomutilisateurRemplacez nomutilisateur par le nom d’utilisateur réel. Le tilde ~ est obligatoire pour accéder aux espaces web personnels.
Configuration avancée#
Personnalisation de l’emplacement#
Vous pouvez modifier l’emplacement par défaut où le module userdir recherche les dossiers web. Pour cela, éditez le fichier de configuration :
# Systèmes basés sur Debian/Ubuntu
sudo nano /etc/apache2/mods-enabled/userdir.conf
# Systèmes basés sur RHEL/CentOS/Fedora
sudo nano /etc/httpd/conf.d/userdir.confModifiez la directive UserDir et la section <Directory> :
# Exemple : utiliser un dossier différent de public_html
UserDir web
# Exemple : spécifier un chemin personnalisé
<Directory /data/*/web>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>Configuration avec des chemins personnalisés#
Pour utiliser un emplacement complètement différent (par exemple /data/*/public_html) :
<Directory /data/*/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>Astuce : L’astérisque * dans le chemin permet à Apache de parcourir tous les sous-dossiers de l’emplacement spécifié, rendant tous les utilisateurs accessibles.
Sécurité et permissions#
Il est recommandé d’ajouter ces directives pour renforcer la sécurité :
<Directory /home/*/public_html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
# Sécurité supplémentaire
php_flag engine off
AddHandler text/html .html .htm
</Directory>Explication des directives de sécurité :
AllowOverride None: empêche les utilisateurs de modifier la configuration via des fichiers.htaccess, évitant ainsi les contournements de sécuritéphp_flag engine off: désactive l’exécution PHP dans les dossiers utilisateurs pour prévenir les injections de code malveillantAddHandler text/html .html .htm: force le traitement des fichiers en tant que HTML simple, évitant l’exécution de scripts côté serveur
Ces mesures sont particulièrement importantes dans les environnements multi-utilisateurs où chaque personne dispose d’un accès complet à son dossier web personnel.
Dépannage et bonnes pratiques#
Problèmes courants#
403 Forbidden :
# Vérifier les permissions du home
chmod 711 ~
# Vérifier les permissions du dossier web
chmod 755 ~/public_htmlFichiers non trouvés :
# Vérifier que le dossier existe
ls -la ~/public_html
# Vérifier les logs Apache
sudo tail -f /var/log/apache2/error.logDe nouvelles alternatives#
Bien que l’outil apache2 fonctionne depuis des décennies sans problème, il existe d’autres solutions pour des besoins complexes. Vous pourriez utiliser par exemple des conteneurs Docker ou Podman par utilisateur, disposant chacun d’un port unique.