Aller au contenu

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.

Sous la clé services d’un hôte, chaque entrée active un service. La valeur (facultative) le personnalise :

etc/config.yaml
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
ChampRôle
(clé)Le service à activer (ex. immich)
titleNom affiché sur le portail
descriptionSous-titre sur le portail
domainSous-domaine (défaut : nom du service). FQDN : <domain>.<zone>.domain.tld
globalExpose publiquement via le HCS : <domain>.domain.tld, sans la zone (DNS public)
iconIcône du portail

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…DrapeauRésultat
Publiquement, tout le réseauglobal: true (par service, config.yaml)<domain>.domain.tld, sans zone, servi par le HCS
Publiquement, en gardant l’URL de zoneexternalAccess (registre)<domain>.<zone>.domain.tld, fronté par le HCS
CatégorieServices
Authentificationidm (Kanidm), vaultwarden
Fichiers & cloudnextcloud, oxicloud, immich, garage, minio, nfs
Communicationmatrix, element, jitsi-meet, turn
Médias & loisirsjellyfin, mealie, geneweb
Productivitéoutline, docs, searx
IAai (Open WebUI + Ollama)
Réseaudnsmasq, adguardhome, headscale, tailscale, homepage
Développementforgejo, harmonia, nix-cache
Supervision & sauvegardemonitoring, loki, restic
Systèmefail2ban, postfix, printing, audio, home-assistant
  • Portail : le service homepage dresse 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: true qui l’expose publiquement.

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.

ServiceOptionContrainte amont
idm (Kanidm)services.kanidm.packageUne seule version maintenue, fin de vie 30 jours après la sortie de la suivante
nextcloudservices.nextcloud.package33 → 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.

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é :

Fenêtre de terminal
sudo systemctl stop kanidm
sudo install -d -o kanidm -g kanidm /var/lib/kanidm/pre-upgrade
sudo 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.toml
sudo chown -R kanidm:kanidm /var/lib/kanidm
sudo systemctl start kanidm

Le * 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.

Fenêtre de terminal
sudo install -d -o nextcloud -g nextcloud -m 0750 /var/lib/nextcloud/pre-upgrade
sudo -u postgres pg_dump -Fc nextcloud > /var/lib/nextcloud/pre-upgrade/nextcloud.dump
sudo cp -a /var/lib/nextcloud/config/config.php /var/lib/nextcloud/pre-upgrade/
sudo chown -R nextcloud:nextcloud /var/lib/nextcloud/pre-upgrade

Ne 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.