Table des matières

Proposer des sites mutualisés

Problématique de base : nous offrons la possibilité d'avoir son site web sur nos serveurs. Assos ou particuliers (et Yann et Zat ont pleeeein de sites à transférer).

Tant qu'il y avait une ou deux organisations avec peu de site ça allait, mais ça explose vite, et on ne peux pas laisser accès à “tout, tout le monde” ni administrer tout entièrement. La solution serait donc de proposer quelque chose façon “mutualisé” : la possibilité de gérer son propre espace web et ses propres domaines.

Exploration des possibles : j'ai regardé divers logiciels (dont Froxlor), malheureusement ils me semblent mal adaptés dans notre cas. Mais cela m'a permis de revoir nos besoins.

On veut permettre l'hébergement de trucs en html/css/php/js, guère plus. S'il y a des sites plus complexes, on passe à d'autres besoins. On peut potentiellement permettre de lier à des bases de données (mariadb etc), mais pour le moment je n'ai pas intégré ça dans la structure.

A priori, on nous dira “je veux un site pour machin.exemple.org”. On lancera un script qui fera “tout” et donnera donc accès à cet espace sftp où poser les fichiers de son site. Certficat let'encrypt géré de notre côté. L'utilisatrice a ensuite accès à une interface web avec la liste de son/ses site(s), que mettre dans son dns, son quota disque.

Or les solutions existantes proposent plus… trop ! Mail, DNS, entre autre, et ça fiche un bazar monstre. Donc je prévois de créer la solution maison.

Interface utilisatrice

C'est quelque chose qui va être à construire de toute façon (hors mutualisé).

Il existe des logiciels permettant de construire des tableaux de bord maison, je pense m'appuyer sur ça. Par exemple (pas testé) :

⇒ ou pas. Parce que c'est encore des trucs qui font le café, en demandant d'installer des milliards de trucs. On a assez de compétences pour faire ce qu'il faut avec un peu de php ?

Certaines infos s'obtiendront en interrogeant l'annuaire LDAP. Connexion via SSO.

Ce qui doit être affiché :

Interface administratrice

Scripts

Il me semble aussi simple d'avoir des script bash qui sont appelés suivant les besoins. On ne fait pas des sites complètement sans intervention admin, puisqu'on est entre humains et non dans des relations clients.

Initialisation et mise à jour de l'espace utilisatrice

  1. Vérifier que l'utilisatrice existe (ldapsearch) et qu'elle a le droit d'avoir un espace “site”
    1. Vérifier si elle existe et fait partie des bons groupes sur le système et sinon, le faire (changement de droit ou création)
  2. Vérifier que l'arborescence par défaut existe et la créer
    1. 	/home/gudule/
      	├── www/	→ racine web
      	├── logs/	→ logs apache
      	├── private/	→ trucs pas publiques
      	└── conf/	→ vhost customisable ?
  3. Vérifier/Restreindre l'accès
    1. accès SFTP chrooté (via Match Group dans sshd_config)
  4. Initialiser un quota disque
    1. setquota -u gudule 15000000 16000000 0 0 /home/gudule/ (à vérifier)
  5. Vérifier les permissions des dossiers (750, chown gudule:webusers, etc.)

Expiration

Si l'utilisatrice n'est plus membre de webuser ou que sa date d'expiration est dépassée :

Déploiement d'un site

Sans doute avec un mix Ansible/Bash.

  1. Vérifier que l'utilisatrice a les droits etc
  2. Générer la redirection SSL Passthrough sur le Nginx du proxy, relancer Nginx.
  3. Générer un vhost Apache et son certificat SSL.
  4. Activer le site, vérifier les erreurs, relancer Apache.

Les scripts sont faits en grande partie là-dessus.

Sources pour s'inspirer :

Surveillance des sites

Récupérer les infos suivantes :