Tauri System administrator documentation Documentation administrateur système

Hosting accountsComptes d'hébergement

A hosting account is a system user with its own home, a website served on its domain, and PHP that runs under the account's own identity, confined to its home. Customers do almost everything from self-service web pages; the operator only validates sign-ups. Everything else is done with compteadm (root only). Un compte d'hébergement est un utilisateur système doté de son propre répertoire, d'un site servi sur son domaine, et d'un PHP qui tourne sous l'identité du compte, confiné à son répertoire. Le client fait presque tout depuis des pages web de libre-service ; l'opérateur ne fait que valider les inscriptions. Tout le reste passe par compteadm (root uniquement).

1. What an account is made ofDe quoi est fait un compte

ElementÉlémentWhereOù
Home — the account's FTPS root; it owns itRépertoire — la racine FTPS du compte, qui en est propriétairec:/user/<compte>/
Website (docroot) — only what is placed here is servedSite (docroot) — seul ce qui est déposé ici est servic:/user/<compte>/www/
PHP sessions and temporary filesSessions PHP et fichiers temporairesc:/user/<compte>/tmp/
Backup area, with its own quotaZone de sauvegarde, avec son propre quota@sv:/<compte>/
Virtual host: domain → docroot, owning accountHôte virtuel : domaine → docroot, compte propriétairetable @:/vhosts/
Disk quotaQuota disque50 MB by default; WordPress raises it to at least 150 MB50 Mo par défaut ; WordPress le porte à 150 Mo au moins
LifetimeDurée28-day trial at creation; compteadm echeance <compte> 0 removes the limitessai de 28 jours à la création ; compteadm echeance <compte> 0 lève la limite

The account sees only its own space, over FTPS as over SSH, and its PHP cannot read the system disk or another account's files. Le compte ne voit que son propre espace, en FTPS comme en SSH, et son PHP ne peut lire ni le disque système ni les fichiers d'un autre compte.

2. Self-service pagesPages de libre-service

They live in the comptes/ folder of root's HTTPS docroot, and the links sent by e-mail point there. Do not rename that folder. Elles sont dans le dossier comptes/ du docroot HTTPS de root, et les liens envoyés par courriel y pointent. Ne renommez pas ce dossier.

PagePurposeRôle
/comptes/inscription.phpAccount request: name, e-mail address, wanted domain.Demande de compte : nom, adresse e-mail, domaine souhaité.
/comptes/motdepasse.phpChoose the password through the received link; without a link, it is the “forgotten password” form.Choix du mot de passe par le lien reçu ; sans lien, c'est le formulaire « mot de passe oublié ».
/comptes/depot.phpHelp for uploading a site: FTPS and SSH settings.Aide au dépôt d'un site : paramètres FTPS et SSH.
/comptes/domaine.phpAttach a domain; certificate and WordPress installation as options.Rattacher un domaine ; certificat et installation de WordPress en option.
/comptes/certificat.phpAsk for a certificate for the domain already attached.Demander un certificat pour le domaine déjà rattaché.
/comptes/suppression.phpDelete the account, in three steps (section 6).Supprimer le compte, en trois temps (section 6).
/comptes/admin_demande.phpOperator's decision on a sign-up, from the link in the notification e-mail.Décision de l'opérateur sur une inscription, depuis le lien du courriel d'avis.
The outgoing mail relay is requiredLe relais de courrier sortant est indispensable

Without a working SMTP relay, no customer receives a password, domain or deletion link. Configure it (see Mail) and test it after every installation: mail you@example.com test test. Also set the public name of the service — it appears in every link: sql "UPDATE @:/Elysee/config/ SET valeur='example.com' WHERE clef='domaine'". Sans relais SMTP en état de marche, aucun client ne reçoit de lien de mot de passe, de domaine ou de suppression. Configurez-le (voir Mail) et testez-le après chaque installation : mail vous@exemple.fr essai essai. Renseignez aussi le nom public du service — il figure dans chaque lien : sql "UPDATE @:/Elysee/config/ SET valeur='exemple.fr' WHERE clef='domaine'".

3. Sign-up — the only step that needs the operatorInscription — la seule étape qui demande l'opérateur

compteadm demandes                   # pending requests# demandes en attente
compteadm valide <jeton> [quota_ko]  # create the account (default quota 50000 KB)# créer le compte (quota par défaut 50000 Ko)
compteadm refuse <jeton>             # discard the request# jeter la demande

valide creates the user, home, docroot and virtual host, records the e-mail address and sends the password link. The operator can also decide from the link received by e-mail, without opening a console. valide crée l'utilisateur, le répertoire, le docroot et l'hôte virtuel, enregistre l'adresse e-mail et envoie le lien de mot de passe. L'opérateur peut aussi décider depuis le lien reçu par courriel, sans ouvrir de console.

4. Day-to-day managementGestion courante

compteadm list                                     # list the hosting accounts# lister les comptes d'hébergement
compteadm add <compte> <domaine> <mdp> [quota_ko]  # create directly, without a request# créer directement, sans demande
compteadm suspend <compte>                         # the site answers “account suspended”# le site répond « compte suspendu »
compteadm reactive <compte>                        # serve it again# le servir de nouveau
compteadm echeance <compte> <jours|0>              # extend the trial; 0 = no limit# prolonger l'essai ; 0 = sans limite
compteadm del <compte>                             # remove it, home kept# le retirer, répertoire gardé
useradm quota <compte> <ko>                        # change the disk quota# changer le quota disque
Immediate, without restartImmédiat, sans redémarrage

These commands make the web servers reload their virtual-host table: the change is live at once and the other sites are not interrupted. A suspended account destroys nothing — home, data and certificate stay in place. When the trial ends, the daily task suspends the account; extend it with echeance beforehand. Ces commandes font relire leur table d'hôtes virtuels aux serveurs web : le changement est effectif aussitôt et les autres sites ne sont pas interrompus. Un compte suspendu ne détruit rien — répertoire, données et certificat restent en place. À la fin de l'essai, la tâche quotidienne suspend le compte ; prolongez-le avec echeance avant.

5. Domains, certificates, WordPressDomaines, certificats, WordPress

From /comptes/domaine.php the customer receives the IP address to put in the domain's A record, then a confirmation link. On confirmation the DNS is checked and the virtual host switches to the new name. Two boxes on that screen: Depuis /comptes/domaine.php, le client reçoit l'adresse IP à mettre dans l'enregistrement A du domaine, puis un lien de confirmation. À la confirmation, le DNS est vérifié et l'hôte virtuel bascule sur le nouveau nom. Deux cases sur cet écran :

compteadm domaine <compte> <domaine> [cert]                      # attach (and request the certificate)# rattacher (et demander le certificat)
compteadm cert <compte>                                          # certificate for the current domain# certificat du domaine courant
compteadm wordpress <compte> [quota_ko] [--copie] [--version V]  # WordPress site (shared core)# site WordPress (cœur partagé)
compteadm drupal <compte> [--copie] [--version V]                # Drupal site (shared core)# site Drupal (cœur partagé)
Never call Let's Encrypt before the DNS points hereNe jamais appeler Let's Encrypt avant que le DNS pointe ici

Failed validations count against the ACME account, which all sites share: burning that quota also blocks the renewals of every other customer. All these commands check the DNS first and change nothing while it does not point to the server — DNS propagation takes hours, that is not a failure. Never point a domain's port 80 elsewhere through a virtual host: the HTTP-01 challenge is served from a reserved path on port 80. Les validations échouées sont décomptées sur le compte ACME, que tous les sites partagent : brûler ce quota bloque aussi les renouvellements de tous les autres clients. Toutes ces commandes vérifient d'abord le DNS et ne changent rien tant qu'il ne pointe pas vers le serveur — la propagation DNS prend des heures, ce n'est pas une panne. Ne faites jamais pointer ailleurs le port 80 d'un domaine par un hôte virtuel : le challenge HTTP-01 est servi depuis un chemin réservé du port 80.

With the shared core, an account receives only index.php, wp-config.php and wp-content/; the core itself (@wp:, @dp:) is read-only and updated once for every site. --copie gives the site its own full copy instead. Avec le cœur partagé, un compte ne reçoit que index.php, wp-config.php et wp-content/ ; le cœur lui-même (@wp:, @dp:) est en lecture seule et mis à jour une fois pour tous les sites. --copie donne à la place au site sa propre copie complète.

Shared cores and their versionsLes cœurs partagés et leurs versions

Several versions of a core can live side by side — @wp:/wordpress-7.0, @wp:/wordpress-7.1, @dp:/drupal-11.4.8 — and each site uses its own. A new site gets the default version, or the one given with --version. On an existing site, --version switches it to another version: its content and database stay as they are, and WordPress or Drupal upgrades the database at the next administration visit if the new version requires it. Sites created before versions existed keep the core shipped in the image. Plusieurs versions d'un cœur peuvent cohabiter — @wp:/wordpress-7.0, @wp:/wordpress-7.1, @dp:/drupal-11.4.8 — et chaque site emploie la sienne. Un nouveau site reçoit la version par défaut, ou celle donnée par --version. Sur un site existant, --version le bascule vers une autre version : son contenu et sa base restent tels quels, et WordPress ou Drupal met la base à jour à la prochaine visite d'administration si la nouvelle version l'exige. Les sites créés avant les versions gardent le cœur livré dans l'image.

A core arrives as a package: a zip file and its .sha256 fingerprint, sent together by FTPS into root's home (for instance paquets/). FTPS cannot write on @wp: or @dp:; paquetadm does it: Un cœur arrive en paquet : un fichier zip et son empreinte .sha256, envoyés ensemble par FTPS chez root (par exemple dans paquets/). FTPS ne peut pas écrire sur @wp: ni @dp: ; paquetadm s'en charge :

paquetadm installe c:/user/root/paquets/wordpress-7.1.zip  # check the fingerprint, install# vérifier l'empreinte, installer
paquetadm liste                                            # versions, default, sites using each# versions, défaut, sites de chacune
paquetadm defaut wordpress 7.1                             # version given to new sites# version des nouveaux sites
compteadm wordpress <compte> --version 7.1                 # switch a site# basculer un site
paquetadm retire wordpress 7.0                             # remove a version nobody uses# retirer une version inutilisée
An image without frameworksUne image sans frameworks

The cores can be left out of the system image (24 MB instead of about 700 MB) and installed afterwards from their packages. Until a WordPress core is installed, compteadm wordpress refuses to create a site and says how to install one. Les cœurs peuvent être laissés hors de l'image système (24 Mo au lieu d'environ 700 Mo) et installés ensuite depuis leurs paquets. Tant qu'aucun cœur WordPress n'est installé, compteadm wordpress refuse de créer un site et dit comment en installer un.

6. Deleting an accountSuppression d'un compte

Requested by the customer, a deletion is never immediate: Demandée par le client, une suppression n'est jamais immédiate :

compteadm annule <compte>  # cancel a scheduled deletion# annuler une suppression programmée
No automatic data destructionAucune destruction automatique de données

The daily task removes the virtual host and the user of due deletions, but keeps the home in c:/user/. Erasing it is a deliberate operator action, once you are sure the customer no longer needs the files. La tâche quotidienne retire l'hôte virtuel et l'utilisateur des suppressions échues, mais garde le répertoire dans c:/user/. L'effacer est un geste délibéré de l'opérateur, une fois sûr que le client n'a plus besoin de ses fichiers.

7. Scheduled tasksTâches planifiées

cerbere runs them; list them with: cerbere les exécute ; les lister avec :

sql "SELECT id,min,hour,cmd FROM @:/Elysee/cerbere/cron/"
TaskTâcheWhenQuandRoleRôle
rapport_2hevery 2 htoutes les 2 hmachine status report by e-mailrapport d'état de la machine par courriel
acme_renew03:17certificate renewalrenouvellement des certificats
comptes_expire04:05suspends expired trialssuspend les essais échus
comptes_purge04:20carries out due deletionsexécute les suppressions échues
ntp_synchourly, :37chaque heure, :37clock synchronisationsynchronisation de l'horloge
comptes_* queuesfiles comptes_*every 5 mintoutes les 5 minsafety net: the queues are normally processed within 5 sfilet : les files sont normalement traitées en 5 s
The clock mattersL'horloge compte

comptes_expire and comptes_purge do nothing if the clock is wrong, rather than suspend or delete by mistake — and a wrong clock also makes every certificate check fail. Make sure ntp_sync succeeds. comptes_expire et comptes_purge ne font rien si l'horloge est fausse, plutôt que de suspendre ou supprimer à tort — et une horloge fausse fait aussi échouer toute vérification de certificat. Vérifiez que ntp_sync passe.

File expiry: only files created by guest (temporary files of web scripts) expire, 90 days after creation. Files of root and of hosting accounts are permanent. Expiration des fichiers : seuls les fichiers créés par guest (temporaires des scripts web) expirent, 90 jours après leur création. Ceux de root et des comptes d'hébergement sont permanents.

NextSuite

Back up accounts and the whole server: Maintenance. Sauvegarder les comptes et tout le serveur : Maintenance.