Le catalogue de services
Les services sont les briques auto-hébergées du réseau. On les active par
hôte, dans etc/config.yaml. Le profil de l’hôte n’a pas d’importance.
Activer un service
Section intitulée « Activer un service »Sous la clé services d’un hôte, chaque entrée active un service. La valeur
(facultative) le personnalise :
services: immich: title: "Photos" description: "Mes photos & vidéos" domain: "photos" # sous-domaine du service global: true # → https://photos.domain.tld (public, sans zone) nextcloud: domain: "cloud" # → cloud.<zone>.domain.tld (non global) restic: # valeurs par défaut| Champ | Rôle |
|---|---|
| (clé) | Le service à activer (ex. immich) |
title | Nom affiché sur le portail |
description | Sous-titre sur le portail |
domain | Sous-domaine (défaut : nom du service). FQDN : <domain>.<zone>.domain.tld |
global | Expose publiquement via le HCS : <domain>.domain.tld, sans la zone (DNS public) |
icon | Icône du portail |
Joindre un service de zone depuis l’extérieur
Section intitulée « Joindre un service de zone depuis l’extérieur »Un service de zone (non global) garde son URL de zone
<domain>.<zone>.domain.tld et ne répond normalement que sur le LAN, les autres
zones et le tailnet. Certains services sont en plus marqués externalAccess dans
le registre du framework (dnf/config/modules.nix) : le HCS les publie alors
vers l’extérieur tout en conservant l’URL de zone.
Routage : internet → DNS public → HCS → (tailnet) → passerelle de zone → backend. Le HCS termine le certificat TLS public et relaie la requête vers la
passerelle de zone, dont le propre vhost gère le SSO
et le backend. La résolution interne est inchangée (directe vers l’hôte/la
passerelle).
| Exposer un service… | Drapeau | Résultat |
|---|---|---|
| Publiquement, tout le réseau | global: true (par service, config.yaml) | <domain>.domain.tld, sans zone, servi par le HCS |
| Publiquement, en gardant l’URL de zone | externalAccess (registre) | <domain>.<zone>.domain.tld, fronté par le HCS |
Le catalogue
Section intitulée « Le catalogue »| Catégorie | Services |
|---|---|
| Authentification | idm (Kanidm), vaultwarden |
| Fichiers & cloud | nextcloud, oxicloud, immich, garage, minio, nfs |
| Communication | matrix, element, jitsi-meet, turn |
| Médias & loisirs | jellyfin, mealie, geneweb |
| Productivité | outline, docs, searx |
| IA | ai (Open WebUI + Ollama) |
| Réseau | dnsmasq, adguardhome, headscale, tailscale, homepage |
| Développement | forgejo, harmonia, nix-cache |
| Supervision & sauvegarde | monitoring, loki, restic |
| Système | fail2ban, postfix, printing, audio, home-assistant |
Portail et accès
Section intitulée « Portail et accès »- Portail : le service
homepagedresse une page d’accueil des services, par zone. - Authentification unique : la plupart des services passent par le SSO Kanidm.
- Local ou global : un service reste dans sa zone, sauf
global: truequi l’expose publiquement.
Services à version épinglée
Section intitulée « Services à version épinglée »Quelques services ne peuvent pas suivre la version par défaut de nixpkgs : leur éditeur interdit de sauter une version majeure. DNF épingle donc le paquet dans le module, et la montée se fait une majeure à la fois.
| Service | Option | Contrainte amont |
|---|---|---|
idm (Kanidm) | services.kanidm.package | Une seule version maintenue, fin de vie 30 jours après la sortie de la suivante |
nextcloud | services.nextcloud.package | 33 → 34 possible, 33 → 35 impossible |
Le signal d’une montée à planifier est un warning à l’évaluation, émis dès que
la version épinglée est dépréciée. La procédure détaillée de Kanidm, transposable
aux autres, est décrite en fin de page
SSO et identités.
Sauvegarder avant de monter
Section intitulée « Sauvegarder avant de monter »Ces migrations réécrivent le schéma de la base au premier démarrage de la nouvelle version, sans retour arrière. La sauvegarde préalable n’est pas une précaution de confort.
Kanidm stocke en SQLite, donc service arrêté :
sudo systemctl stop kanidmsudo install -d -o kanidm -g kanidm /var/lib/kanidm/pre-upgradesudo cp -a /var/lib/kanidm/kanidm.db* /var/lib/kanidm/pre-upgrade/sudo kanidmd database backup /var/lib/kanidm/pre-upgrade/dump.json -c /etc/kanidm/server.tomlsudo chown -R kanidm:kanidm /var/lib/kanidmsudo systemctl start kanidmLe * est essentiel : le journal d’écriture kanidm.db-wal survit à
l’arrêt du service et porte les dernières transactions.
Nextcloud stocke en PostgreSQL, donc sans interruption : pg_dump -Fc
prend un instantané transactionnel cohérent sur une base vive.
sudo install -d -o nextcloud -g nextcloud -m 0750 /var/lib/nextcloud/pre-upgradesudo -u postgres pg_dump -Fc nextcloud > /var/lib/nextcloud/pre-upgrade/nextcloud.dumpsudo cp -a /var/lib/nextcloud/config/config.php /var/lib/nextcloud/pre-upgrade/sudo chown -R nextcloud:nextcloud /var/lib/nextcloud/pre-upgradeNe pas omettre config.php : c’est lui qui porte le numéro de version
installée, sans lequel une base restaurée ne repart pas.