hebergement-mutualise-000244095-4

[Synology] Hébergement mutualisé

Cet article a été rédigé il y a 5 années ! Il commence à dater, mais n'est pas forcément obsolète.. Lisez-le en gardant cela en tête !
Bonjour, Une problématique que je me suis posé, était de pouvoir proposer à des amis (ou autres) un service d’hébergement. C’est dorénavant chose faite, non sans difficulté, sinon je n’écrirais pas de tutoriel autrement.. Alors, voyons comment procéder !

I) Organisation du service

Dans un premier temps, nous allons réfléchir sur ce que nous voulons et comment nous allons procéder pour réaliser ce système d’hébergement mutualisé.

a. Création du compte

Il va bien falloir faire attention aux droits d’accès des membres, pour éviter qu’ils aient accès en écriture à un dossier qui ne les concernent pas.
  • Changer les droits d’accès des groupes et ne configurez plus les utilisateurs au cas par cas.
  • Créez un groupe webUsers qui interdit l’accès à tous les dossiers que vous ne souhaitez pas montrer à l’hébergé.
  • Éventuellement, (si ce n’est pas déjà fait, ou que vous procédez autrement) maintenant que vous ne réfléchissez plus au cas part cas, pensez à créer un groupe privateUsers (qui permet de faire la différence avec webUsers), ie des comptes qui doivent avoir accès à plusieurs dossier en lecture seule par exemple. Et un groupe superUsers (un compte pseudo-administrateur qui a la possibilité de lire/écrire les dossiers accessibles uniquement en lecture seule pour les membres de privateUsers).
  • Dernier point, l’accès ftp et l’espace disque. Il est indispensable que votre hébergé puisse modifier son site de manière simple. Pensez donc à activer un service ftp (encore mieux sftp). Pensez aussi à mettre une limite de mémoire comme 4~5 Go. Mais aussi une limite de vitesse comme par exemple 500 Ko/s en changement/telechargement ftp.

b. Mise en place du site

À priori, il serait intéressant de ne pas remplir le dossier /var/service/web, car la gestion pourrait être très compliquée et puis les utilisateurs ne pourrait pas avoir la possibilité de gestion de leur site via ftp sans mettre générer de problèmes (personnellement le chez moi le dossier /var/service/web est dirigé par le groupe administrators). Il serait donc intéressant de créer dans chaque dossier personnel un site web personnel, pour ça il suffit d’activer l’option "Site web personnel" dans le DSM à la page "Panneau de configuration >> Site web". Et pour utiliser ce service, il suffit alors de créer un dossier "www" à la racine de l’utilisateur. Ce site sera alors accessible à l’adresse http://www.domaine.tld/~user/  

II) Réécriture du lien

a. Passage au sous-domaine

Dans l’idée, c’est sympa d’avoir un site web personnel en http://www.domaine.tld/~user/, mais maintenant les gens préfèrent les adresses en http://user.domaine.tld plus simple à taper, voir que le membre puisse utiliser son propre domaine (cf. prochaine partie) Pour cela, nous allons créer un .htaccess à la racine des sites web /var/services/web (plus connu sous le lien symbolique /volume1/web/, mais au final c’est le même dossier donc) (Pensez à activer l’option Url Rewriting dans "Panneau de configuration >> Site web")
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^([a-z0-9]*).[a-z0-9_-]*.[a-z]*$ RewriteRule ^(.*)$ /~%1/$1 [L]
(Merci à PiwiLabruti du forum http://nas-forum.com pour ce fichier .htaccess, que j’ai quelque peu modifier) Ce fichier en quelques mots, permet de réécrire et faire pointer l’adresse http://user.domaine.tld vers http://user.domaine.tld/~user/. Dans la mesure où le sous-dossier user n’existe pas et n’est pas référencer comme hôte virtuel sur l’interface DSM, le lien sera correctement fait. Sinon c’est l’hôte virtuel qui aurait la priorité. Pourquoi ? Il faut d’abord savoir que si l’on tente d’accéder à un sous domaine qui n’existe pas, on sera renvoyé à la racine des sites web /var/services/web. La condition de réécriture ici, indique que si %{HTTP_HOST} correspond à une adresse de la forme user.domaine.tld, on applique la redirection http://user.domaine.tld/~user/ Attention : Vous devez créer un fichier .htaccess avec la règle
RewriteEngine Off
Dans chaque dossier fils du dossier /var/services/web/, si vous n’utilisez pas d’Url Rewriting. Le .htaccess étant valable dans chaque sous dossier, il faut en empêcher la propagation dans les dossiers fils jusqu’à la dernière génération. A présent nous avons donc la possibilité de réécrire les sous-domaines en http://user.domaine.tld .. Parfait !

b. Passage au domaine domaine_du_user.tld

Vous avez la possibilité d’accéder votre site web à l’aide de l’adresse http://user.domaine.tld. Pour passez à l’adresse http://domaine_du_user.tld, il suffit de modifier votre fichier de zone. Ajoutez la ligne suivante :
www 10800 IN CNAME user.domaine.tld.
Et ainsi vous pourrez accéder à votre site à l’aide du domaine http://www.domaine_du_user.tld !!  

III) URL Rewriting dans le site personnel

Je créé cette partie, car je me suis fais avoir et cela m’a posé pas mal de problèmes, si l’on souhaite faire de l’url rewriting sur le site personnel, il ne faut surtout pas oublié d’ajouter la ligne suivante en début du fichier /volume1/homes/user/www/.htaccess
Options +FollowSymLinks
Puis indiquez votre règle de redirection avec une condition dans le genre de celle suivante :
RewriteEngine On RewriteCond %{REQUEST_URI} ^/~([a-z0-9]*)/(.*)$ RewriteRule ^(.*).html$ /~%1/index.php [L]
Cette règle est très importante, elle va vérifier que l’on accède bien le site avec un lien du type /~user/index.html (dans le cas de cette règle de réécriture, par exemple). On récupère alors la valeur user et on la réinjecte à l’aide de la variable %1 Chez moi la règle de réécriture renvoie tous les fichiers de la forme mapage.html vers le fichier /~user/index.php, je récupère alors à l’aide des variables $_SERVER le nom de la page que je parse pour en faire des variables GET. Mais vous pouvez faire tout à fait autrement, dans la mesure où vous indiquez correctement le chemin /~%1/ !! Vous savez à priori maintenant comment utiliser de l’URL Rewriting sur un site personnel. Pour toutes questions, écrivez-moi un commentaire, j’y répondrai vite !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *