Aller au contenu

Modules de service

AdGuard Home entièrement configuré pour passerelle / routeur local.

  • enable bool Active le service adguardhome local
darkone.service.adguardhome.enable = false;

Intelligence artificielle locale (open-webui + ollama + llms).

  • enable bool Activer le service d’IA local
darkone.service.ai.enable = false;

Services audio : alsa, pulse (pas jack pour le moment). Ajoute automatiquement les utilisateurs au groupe audio quand il est activé.

  • enable bool Activer le système sonore
darkone.service.audio.enable = false;

dnsmasq pré-configuré pour la passerelle locale / routeur.

  • enable bool Activer le service dnsmasq local
darkone.service.dnsmasq.enable = false;

Un module LaSuite Docs entièrement configuré.

  • enable bool Activer le service de documentation local
  • s3Host str Nom d’hôte du backend S3
  • s3Port port Port du backend S3
  • s3Bucket str Nom du bucket S3 pour le stockage des documents
darkone.service.docs = {
enable = false;
s3Host = "127.0.0.1";
s3Port = dnfConfig.network.ports.garage;
s3Bucket = "docs";
};

Client web Element pour le service matrix local.

  • enable bool Activer le service element local
darkone.service.element.enable = false;

Module fail2ban spécifique à DNF.

  • enable bool Activer fail2ban avec les spécificités DNF
darkone.service.fail2ban.enable = false;

Une forge git forgejo entièrement configurée.

  • enable bool Activer le service forgejo local
darkone.service.forgejo.enable = false;

Un service Garage S3 local entièrement configuré.

Fournit un serveur de stockage d’objets compatible S3 interne accessible uniquement sur 127.0.0.1:3900.

  • enable bool Activer le service Garage S3 local
  • srvPort port Port S3 API exposé sur l’IP interne
  • s3Region str Nom de la région S3 (doit correspondre à la config du consommateur)
  • capacity str Indice de capacité de stockage du nœud transmis à garage layout assign. Utilisé uniquement au premier démarrage pour l’initialisation de la disposition ; n’agit pas comme un quota strict sur le système de fichiers sous-jacent. Suffixes supportés : B, KB, MB, GB, TB, PB.
darkone.service.garage = {
enable = false;
srvPort = srvPort;
s3Region = s3Region;
capacity = "500GB";
};

GeneWeb — Service de généalogie puissant.

  • enable bool Activer le service de généalogie GeneWeb local
  • enablePasswords bool Activer les mots de passe sops (non recommandé)
darkone.service.geneweb = {
enable = false;
enablePasswords = false;
};

Harmonia : serveur de cache binaire Nix local (sert /nix/store de cet hôte).

Expose les chemins de stockage construits/réalisés localement via HTTP simple (port 5000), signés avec la clé de cache binaire du déploiement. Activez par hôte à partir de usr/config.yaml (services.harmonia), comme tout autre service DNF.

  • enable bool Activer un serveur de cache binaire Nix Harmonia local
darkone.service.harmonia.enable = false;

Un service headscale entièrement configuré pour HCS.

  • enable bool Activer le service DNF headscale
  • enableGRPC bool Ouvrir le port TCP GRPC
darkone.service.headscale = {
enable = false;
enableGRPC = false;
};

Un Home Assistant avec certains plugins (en cours).

  • enable bool Activer home-assistant
darkone.service.home-assistant.enable = false;

Tableau de bord d’accueil dynamiquement configuré pour votre réseau local.

  • enable bool Activer le tableau de bord d’accueil + httpd + hôte
  • localServices listOf attrs Services à ajouter dans la section Applications locales
  • globalServices listOf attrs Services communs et accessibles publiquement sur l’ensemble du réseau
  • remoteServices listOf attrs Services à ajouter dans la section Applications distantes
  • bookmarks listOf attrs Remplacer les signets par défaut (liens)
  • widgets listOf attrs Remplacer les widgets par défaut
darkone.service.homepage = {
enable = false;
localServices = [ ];
globalServices = [ ];
remoteServices = [ ];
bookmarks = [ ];
widgets = [ ];
};

Service DNF Kanidm (gestionnaire d’identité).

  • enable bool Activer l’authentification unique locale avec Kanidm
  • oauth2 attrs Modèles de client OAuth2/OIDC fournis par les modules de service. Kanidm provisionne un client par entrée correspondante dans network.services, avec clientId = dnfLib.oauth2ClientName.
    • enable bool Indique s’il faut provisionner des clients OAuth2 pour ce modèle.
    • clientName nullOr str Remplacer le nom du client kanidm. Par défaut : dnfLib.oauth2ClientName.
    • displayName str Nom lisible montré sur l’écran de consentement kanidm.
    • imageFile path Icône de l’application. Téléchargée de nouveau à chaque exécution de kanidm-provision.
    • redirectPaths listOf str Chemins de redirection OAuth2 (un par URL de rappel acceptée).
    • landingPath str Chemin du point d’entrée de connexion automatique sur le service.
    • enableLegacyCrypto bool Autoriser les anciens algorithmes de signature JWT (par ex. RS256).
    • allowInsecureClientDisablePkce bool Désactiver PKCE sur le client (uniquement pour les clients qui ne l’implémentent pas).
    • preferShortUsername nullOr bool Utiliser le nom d’utilisateur court (sans domaine) dans la réclamation preferred_username.
    • extra attrs Attributs supplémentaires fusionnés dans le client provisionné (claimMaps, etc.).
darkone.service.idm = {
enable = false;
oauth2.enable = true;
oauth2.clientName = null;
oauth2.displayName = null;
oauth2.imageFile = null;
oauth2.redirectPaths = [ ];
oauth2.landingPath = "/";
oauth2.enableLegacyCrypto = false;
oauth2.allowInsecureClientDisablePkce = false;
oauth2.preferShortUsername = null;
oauth2.extra = { };
};

Service Immich (gestion de photos) entièrement configuré.

  • enable bool Activer le service immich local
  • enableMachineLearning bool Activer les fonctionnalités d’apprentissage automatique (reconnaissance faciale, détection d’objets)
  • enableRedis bool Activer Redis pour la mise en cache (recommandé pour les performances)
darkone.service.immich = {
enable = false;
enableMachineLearning = false;
enableRedis = false;
};

Un serveur jellyfin entièrement configuré.

  • enable bool Activer le service jellyfin
darkone.service.jellyfin.enable = false;

Un service jitsi-meet entièrement configuré.

  • enable bool Activer le service jitsi-meet local
darkone.service.jitsi-meet.enable = false;

Loki + Alloy, statistiques HTTP avec grafana.

  • enable bool Déploie le serveur Loki + la source de données Grafana (colocalisée avec Grafana).
  • isClient bool Déploie Alloy pour collecter les journaux d’accès Caddy locaux.
  • retentionTime str Durée de rétention des journaux dans Loki (30 jours par défaut).
darkone.service.loki = {
enable = config.darkone.service.monitoring.enable;
isClient = config.services.caddy.enable;
retentionTime = "720h";
};

Serveur DNF matrix (synapse).

  • enable bool Activer le service matrix (synapse)
darkone.service.matrix.enable = false;

Gestion de recettes Mealie

  • enable bool Activer le service mealie
darkone.service.mealie.enable = false;

Un service MinIO S3 local entièrement configuré. (wip)

Fournit un backend de stockage d’objets compatible S3 interne accessible uniquement sur 127.0.0.1:9000. L’interface Web de la console s’exécute sur 127.0.0.1:9001 pour l’administration et le débogage.

  • enable bool Activer le service MinIO S3 local
darkone.service.minio.enable = false;

Module de supervision avec prometheus, grafana et node exporter.

  • enable bool Activer la surveillance avec prometheus, grafana et node exporter
  • isNode bool Est un nœud de surveillance
  • retentionTime str Durée de rétention des métriques Prometheus
  • kioskTarget str Cible (relative, pas de /) pour la redirection automatique vers Grafana à partir de la racine du domaine de surveillance. Remplacée par le module Loki lorsqu’il est actif pour pointer vers un tableau de bord d’accueil multi-sources.
darkone.service.monitoring = {
enable = false;
isNode = lib.hasAttrByPath [ "features" "monitoring-node" ] host;
retentionTime = "30d";
kioskTarget = "d/dnf-monitoring-home/home?kiosk";
};

Proxy de cache Nix avec le module NCPS.

Ce module est activé par le cœur. Le serveur et les clients sont automatiquement détectés.

  • enable bool Activer le proxy de cache nix pour les packages
  • dataPath str Dossier de cache du proxy de cache nix
  • extraOptions attrs Options supplémentaires de services.ncps
darkone.service.ncps = {
enable = false;
dataPath = "/var/cache/ncps";
extraOptions = { };
};

Service Nextcloud entièrement configuré.

  • enable bool Activer le service nextcloud local
  • adminUser str Nom d’utilisateur administrateur pour Nextcloud
darkone.service.nextcloud = {
enable = false;
adminUser = "admin";
};

Serveur NFS + client pour les partages résidentiels.

  • enable bool Activer le serveur NFS DNF (éviter d’activer manuellement)
  • serverDomain str FQDN du serveur NFS
darkone.service.nfs = {
enable = hasServer && (isServer || isClient);
serverDomain = "nfs";
};

Un wiki outline complètement configuré.

  • enable bool Activer le service outline local
darkone.service.outline.enable = false;

OxiCloud — Cloud souverain rapide (stockage de fichiers, WebDAV, CalDAV et CardDAV).

  • enable bool Activer le service OxiCloud local
darkone.service.oxicloud.enable = false;

Relais SMTP Postfix.

  • enable bool Activer le relais SMTP Postfix
darkone.service.postfix.enable = false;

Imprimantes et scanners.

  • enable bool Paquets utiles par défaut
  • loadAll bool Imprimantes et scanners complets
  • enableScanners bool Activer les scanners
  • enableHpPrinters bool Imprimantes HP uniquement
  • enableManualInstall bool Installation manuelle des pilotes
darkone.service.printing = {
enable = false;
loadAll = false;
enableScanners = false;
enableHpPrinters = false;
enableManualInstall = false;
};

Module de sauvegarde Restic : serveur REST + cibles de sauvegarde par hôte.

Exemple (machine config) :

darkone.service.restic = {
enable = true;
targets = [
{ name = "main"; root = "rest:http://restic.ag.poncon.fr:8888";
zone = "ag"; categories = [ "system" "nfs" ]; }
];
};

Structure du dépôt par cible :

<root>/<hostname>/system <- catégorie « system » (/ moins les exclusions)
<root>/<hostname>/srv/nfs <- catégorie « nfs » (/srv/nfs/<...>)
<root>/<hostname>/srv/medias <- catégorie « medias » (/srv/medias/<...>)
  • enable bool Activer le client de sauvegarde restic
  • enableDryRun bool Mode simulation
  • enableWaitRemoteFs bool Exécuter les sauvegardes seulement après remote-fs.target
  • enableServer bool Activer le serveur REST restic
  • enableServerPrivateRepos bool Appliquer l’isolation du dépôt par hôte (restic —private-repos). N’activer qu’une fois que chaque client déploie avec son identifiant REST par hôte.
  • serverDataDir str Racine de stockage locale du serveur REST (dépôts de tous les hôtes)
  • targets listOf ( submodule { options = { name = lib.mkOption { type = str; default = "main"; description = "Target id, used in backup/unit names (<category>-<name>)"; }; root = lib.mkOption { type = str; default = "/mnt/backup/restic"; example = "rest:http://restic.${zone.domain}:${toString srvPort}"; description = "Repository root: local path or REST URL"; }; zone = lib.mkOption { type = str; default = zone.name; description = "Zone selecting the repo passphrase (restic-password-<zone>)"; }; categories = lib.mkOption { type = listOf ( enum [ "system" "nfs" "medias" ] ); default = [ "system" ]; description = "What to back up to this target"; }; }; } ) Destinations de sauvegarde pour cet hôte (chemin local ou URL REST)
    • name str Identifiant de cible, utilisé dans les noms des sauvegardes/unités (<catégorie>-<nom>)
    • root str Racine du dépôt : chemin local ou URL REST
    • zone str Zone sélectionnant la phrase de passe du dépôt (restic-password-<zone>)
    • categories listOf ( enum [ "system" "nfs" "medias" ] ) Quoi sauvegarder vers cette cible
  • nfsPaths listOf str Répertoires NFS (/srv/nfs/<xxx>) inclus dans la catégorie « nfs »
  • mediasPaths listOf str Répertoires médias (/srv/medias/<xxx>) inclus dans la catégorie « medias »
darkone.service.restic = {
enable = false;
enableDryRun = false;
enableWaitRemoteFs = false;
enableServer = false;
enableServerPrivateRepos = false;
serverDataDir = "/mnt/backup/restic";
targets = [ ];
targets.name = "main";
targets.root = "rest:http://restic.${zone.domain}:${toString srvPort}";
targets.zone = zone.name;
targets.categories = [ ];
nfsPaths = [ ];
mediasPaths = [ ];
};

Un moteur de recherche durci et entièrement configuré.

  • enable bool Activer le proxy de recherche local
darkone.service.searx.enable = false;

Service client Tailscale pour HCS.

  • enable bool Activer le client Tailscale pour connecter HCS
  • isGateway bool Ce nœud Tailscale est une passerelle de sous-réseau
  • isExitNode bool Configurer ce client comme nœud de sortie
darkone.service.tailscale = {
enable = false;
isGateway = false;
isExitNode = false;
};

Serveur Coturn (matrix).

Ajouter des entrées DNS pour optimiser :

Type,Name,Priority,Pds,Port,Target
SRV,_stun._udp,0,0,3478,turn.mydomain.tld
SRV,_stun._tcp,0,0,3478,turn.mydomain.tld
SRV,_turn._udp,0,0,3478,turn.mydomain.tld
SRV,_turn._tcp,0,0,3478,turn.mydomain.tld
SRV,_turns._tcp,0,0,5349,turn.mydomain.tld
  • enable bool Activer le service turn local (visio)
darkone.service.turn.enable = false;

Un serveur vaultwarden entièrement configuré (wip).

  • enable bool Activer le service Vaultwarden local
  • enableSmtp bool Activer SMTP pour envoyer des emails (recommandé)
darkone.service.vaultwarden = {
enable = false;
enableSmtp = true;
};