Tauri System administrator documentation Documentation administrateur système

Maintenance

Keeping a Tauri server running: its disks, software updates, backups of the accounts and of the whole server, growing the disk, mirroring two disks, and checking the file system's health. Faire vivre un serveur Tauri : ses disques, les mises à jour logicielles, la sauvegarde des comptes et du serveur entier, l'extension du disque, le miroir de deux disques et le contrôle de santé du système de fichiers.

1. Disks and pathsDisques et chemins

A path starts with a disk prefix. The prefix is text and its length varies (c:, @:, @wp:…): never assume it is one character. Un chemin commence par un préfixe de disque. Ce préfixe est textuel et de longueur variable (c:, @:, @wp:…) : ne supposez jamais qu'il fait un caractère.

PrefixPréfixeContentContenu
c:/, d:/Local disks: accounts (c:/user/<compte>/), sites, data.Disques locaux : comptes (c:/user/<compte>/), sites, données.
@:/System disk: programs, system tables, configuration. Closed to confined accounts; only root writes there.Disque système : programmes, tables système, configuration. Fermé aux comptes confinés ; seul root y écrit.
@+:/Shared: readable and writable by confined accounts (request queues in @+:/spool/).Partage : lisible et inscriptible par les comptes confinés (files de demandes dans @+:/spool/).
@-:/Trash.Corbeille.
@sv:/Backup areas of the accounts, one folder each.Zones de sauvegarde des comptes, un dossier chacun.
@wp:/, @dp:/, @fw:/Shared code: WordPress core and themes, Drupal core, frameworks. READ-ONLY, even for root.Code partagé : cœur et thèmes WordPress, cœur Drupal, frameworks. LECTURE SEULE, même pour root.
@nc:/Nextcloud service.Service Nextcloud.

The file system is TauriFS v3: a copy-on-write B+tree. An interrupted write never leaves a half-written tree; after a power cut the server restarts on the last consistent state, and the space that the interrupted writes had taken is given back at the next boot (see below). Le système de fichiers est TauriFS v3 : un B+tree à copie sur écriture. Une écriture interrompue ne laisse jamais un arbre à moitié écrit ; après une coupure de courant, le serveur repart sur le dernier état cohérent, et l'espace que les écritures interrompues avaient pris est rendu au démarrage suivant (voir plus bas).

2. Health checksContrôles de santé

df                    # disk usage; watch the “reserve” line# occupation ; surveiller la ligne « reserve »
cat dev://latence     # worst waits observed since boot (disk, locks, interrupts) — to diagnose slowness# pires attentes observées depuis le démarrage (disque, verrous, interruptions) — pour diagnostiquer une lenteur
du c:/user/<compte>/  # size of an account# taille d'un compte
cat dev://scrub       # result of the integrity check run at every boot# résultat du contrôle d'intégrité lancé à chaque démarrage
rapport               # full status report, sent by e-mail (also every 2 h)# rapport d'état complet, envoyé par courriel (aussi toutes les 2 h)

At every boot a background check (scrub) reads the whole tree without blocking the server; it takes a few seconds to a few tens of seconds depending on the volume. Its verdict ends with FS SAIN (healthy) when there is no fault; while it is running, cat dev://scrub says so. À chaque démarrage, un contrôle de fond (scrub) relit tout l'arbre sans bloquer le serveur ; il dure de quelques secondes à quelques dizaines de secondes selon le volume. Son verdict se termine par FS SAIN quand il n'y a aucune faute ; tant qu'il tourne, cat dev://scrub l'indique.

When the verdict is FS SAIN, the scrub also gives back the blocks that a power cut left taken although nothing uses them (line ramasse-miettes : N blocs perdus, M RENDUS). A freshly installed image gives back a few hundred at its first boot. Nothing is ever given back from a file system with a fault. Quand le verdict est FS SAIN, le scrub rend aussi les blocs qu'une coupure de courant a laissés pris alors que rien ne s'en sert (ligne ramasse-miettes : N blocs perdus, M RENDUS). Une image fraîchement installée en rend quelques centaines à son premier démarrage. Rien n'est jamais rendu sur un système de fichiers en faute.

df adds up the space used by every file of each disk: on a large volume this takes several seconds, during which the server keeps serving. The PHP functions disk_free_space() / disk_total_space() answer at once. df additionne l'espace de tous les fichiers de chaque disque : sur un gros volume, cela prend plusieurs secondes, pendant lesquelles le serveur continue de servir. Les fonctions PHP disk_free_space() / disk_total_space() répondent aussitôt.

3. Software updatesMises à jour logicielles

update (root) installs signed program updates from the Tauri repository. Every manifest entry is signed with Ed25519 and checked against the key built into the system; an entry whose signature does not verify is refused. update (root) installe des mises à jour signées des programmes depuis le dépôt Tauri. Chaque entrée du manifeste est signée en Ed25519 et vérifiée avec la clé intégrée au système ; une entrée dont la signature ne se vérifie pas est refusée.

update fetch                 # download the current manifest# télécharger le manifeste courant
update check                 # what differs from the installed versions# ce qui diffère des versions installées
update upgrade               # apply the difference# appliquer la différence
update list [<nom>]          # manifest summary, or detail of one program# résumé du manifeste, ou détail d'un programme
update install <nom> [v<N>]  # install one program, optionally a given version# installer un programme, éventuellement une version donnée

Always run fetch first: check and upgrade work on the manifest already downloaded. A running server keeps its old code in memory: after an upgrade, restart it — reboot, or ftps restart for FTPS alone (clients reconnect). Lancez toujours fetch d'abord : check et upgrade travaillent sur le manifeste déjà téléchargé. Un serveur en marche garde son ancien code en mémoire : après une mise à jour, relancez-le — reboot, ou ftps restart pour FTPS seul (les clients se reconnectent).

sql "SELECT nom,version,date FROM @:/Elysee/version/"

The kernelLe noyau

The kernel is updated the same way: when the repository carries a new one, update upgrade installs it first and stops. Restart (reboot), then run update upgrade again for the programs. The noyau command (root) shows the kernel state, installs a kernel file, or goes back to the previous one; a new kernel takes effect at the next boot, and a power cut during its installation simply leaves the previous one in place. A kernel too old to install another one says so: that last change needs an image. Le noyau se met à jour de la même façon : quand le dépôt en porte un nouveau, update upgrade l'installe d'abord et s'arrête. Redémarrez (reboot), puis relancez update upgrade pour les programmes. La commande noyau (root) montre l'état du noyau, installe un fichier noyau, ou revient au précédent ; un nouveau noyau prend effet au démarrage suivant, et une coupure de courant pendant son installation laisse simplement le précédent en place. Un noyau trop ancien pour en installer un autre le dit : ce dernier changement passe par une image.

noyau            # state of the running and installed kernels# état du noyau courant et des noyaux installés
noyau precedent  # go back to the previous kernel (at the next boot)# revenir au noyau précédent (au prochain démarrage)
When a new image is neededQuand il faut une image neuve

Apart from the kernel's own case above, a change in the structure of the system tables needs a new disk image: those tables are protected and cannot be altered in place, so update is not enough. Installing an image overwrites the whole disk — accounts, sites, certificates obtained since: run compteadm sauve-tout first (next section). Hors le cas du noyau ci-dessus, un changement de structure des tables système exige une image disque neuve : ces tables sont protégées et ne peuvent pas être modifiées en place, update ne suffit donc pas. Installer une image écrase tout le disque — comptes, sites, certificats obtenus depuis : lancez d'abord compteadm sauve-tout (section suivante).

4. BackupsSauvegardes

One accountUn compte

compteadm sauve <compte> [archive|-]         # home + manifest needed to rebuild it# répertoire + manifeste pour le reconstruire
compteadm restaure <archive> <compte> <mdp>  # recreate the whole account# recréer le compte entier

The password hash is deliberately not saved: an archive may leave the site. On restore, set a password and let the customer change it from /comptes/motdepasse.php. L'empreinte du mot de passe n'est délibérément pas sauvegardée : une archive peut quitter le site. À la restauration, posez un mot de passe et laissez le client le changer depuis /comptes/motdepasse.php.

The whole server, before reinstallingTout le serveur, avant une réinstallation

compteadm sauve-tout [dossier] [--phrase-fichier F | --en-clair]          # default c:/user/root/sauvegardes/serveur; asks for a passphrase# défaut c:/user/root/sauvegardes/serveur ; demande une phrase de passe
compteadm restaure-tout <dossier> [--sans-courriel] [--phrase-fichier F]  # on the NEW machine, then reboot# sur la machine NEUVE, puis reboot

The folder holds everything an image does not carry: hosting accounts (record, home, backup area), certificates (ACME account, default certificate, site certificates), virtual hosts, configuration including the mail relay, cerbere services, and the forum database. Procedure: Le dossier contient tout ce que l'image ne porte pas : comptes d'hébergement (ligne, répertoire, zone de sauvegarde), certificats (compte ACME, certificat par défaut, certificats des sites), hôtes virtuels, configuration relais de courrier compris, services de cerbere, et la base du forum. Procédure :

Encrypted — keep the passphraseChiffrée — gardez la phrase de passe

The backup is encrypted with a passphrase of at least 12 characters, typed twice without being shown (or read from the first line of a file with --phrase-fichier, for a script); only a short LISEZMOI.txt stays in clear. Restoring tries the passphrase before changing anything: a wrong passphrase restores nothing. Without the passphrase the backup is lost — keep it apart from the backup. Because it is encrypted, the backup carries the accounts' (salted) passwords: restored holders keep theirs. --en-clair makes a clear backup instead — private keys and the SMTP password readable, no account passwords (each holder then receives a link, valid 7 days, to choose a new one). Restoring twice duplicates nothing — what already exists on the new machine is left as is. La sauvegarde est chiffrée par une phrase de passe d'au moins 12 caractères, saisie deux fois sans être affichée (ou lue sur la première ligne d'un fichier avec --phrase-fichier, pour un script) ; seul un court LISEZMOI.txt reste en clair. La restauration éprouve la phrase avant de rien changer : une phrase fausse ne restaure rien. Sans la phrase, la sauvegarde est perdue — gardez-la à part de la sauvegarde. Parce qu'elle est chiffrée, la sauvegarde transporte les mots de passe (salés) des comptes : les titulaires restaurés gardent le leur. --en-clair fait une sauvegarde en clair — clés privées et mot de passe SMTP lisibles, sans les mots de passe des comptes (chaque titulaire reçoit alors un lien, valable 7 jours, pour en choisir un nouveau). Restaurer deux fois ne double rien — ce qui existe déjà sur la machine neuve est laissé tel quel.

Any tree — sauveN'importe quelle arborescence — sauve

sauve -c -f archive.tsr c:/user/alice  # create an archive# créer une archive
sauve -t -f archive.tsr                # list and verify it (chained hash)# la lister et la vérifier (hachage chaîné)

Unlike tar, sauve keeps what is specific to TauriFS: creation dates, expiry, identifiers and the content of database tables (which tar would store as empty folders). It reads strictly sequentially, so it works through a pipe (-f -). Contrairement à tar, sauve garde ce qui est propre à TauriFS : dates de création, expiration, identifiants et contenu des tables de base de données (que tar rangerait en dossiers vides). Il lit de façon strictement séquentielle, donc fonctionne dans un tuyau (-f -).

5. Growing the disk — agrandirÉtendre le disque — agrandir

agrandir -n  # measure only, writes nothing# mesurer seulement, n'écrit rien
agrandir     # apply, live, without reboot# appliquer, à chaud, sans redémarrage

After copying the image to a larger disk (or qemu-img resize), the file system still declares the size it was built with. agrandir aligns it on the real capacity. It extends the shared reserve, not each logical disk: in df, c: keeps its size and draws from the reserve as needed — watch the reserve line. If the capacity is read as zero, agrandir refuses and says why. On a machine with several disks, check with agrandir -n that the disk probed is the system disk. Après copie de l'image sur un disque plus grand (ou qemu-img resize), le système de fichiers déclare encore la taille du build. agrandir l'aligne sur la capacité réelle. Il étend la réserve commune, pas chaque disque logique : dans df, c: garde sa taille et puise dans la réserve au besoin — c'est la ligne de réserve qu'il faut regarder. Si la capacité est lue à zéro, agrandir refuse et dit pourquoi. Sur une machine à plusieurs disques, vérifiez avec agrandir -n que le disque interrogé est bien le disque système.

6. Mirroring two disksMiroir de deux disques

Not available in this versionIndisponible dans cette version

The miroir command exists, but disk mirroring is disabled in the current system: miroir reports it as such and the second disk is neither read nor written. Protect the data with the backups above. La commande miroir existe, mais le miroir des disques est désactivé dans le système actuel : miroir le signale et le second disque n'est ni lu ni écrit. Protégez les données par les sauvegardes ci-dessus.