Modules de service
✨ darkone.service.adguardhome
Section intitulée « ✨ darkone.service.adguardhome »AdGuard Home entièrement configuré pour passerelle / routeur local.
- enable
boolActive le service adguardhome local
darkone.service.adguardhome.enable = false;✨ darkone.service.ai
Section intitulée « ✨ darkone.service.ai »Intelligence artificielle locale (open-webui + ollama + llms).
- enable
boolActiver le service d’IA local
darkone.service.ai.enable = false;✨ darkone.service.audio
Section intitulée « ✨ darkone.service.audio »Services audio : alsa, pulse (pas jack pour le moment).
Ajoute automatiquement les utilisateurs au groupe audio quand il est activé.
- enable
boolActiver le système sonore
darkone.service.audio.enable = false;✨ darkone.service.dnsmasq
Section intitulée « ✨ darkone.service.dnsmasq »dnsmasq pré-configuré pour la passerelle / routeur local.
- enable
boolActive le service dnsmasq local
darkone.service.dnsmasq.enable = false;✨ darkone.service.docs
Section intitulée « ✨ darkone.service.docs »Un module LaSuite Docs entièrement configuré.
- enable
boolActiver le service de documentation local - s3Host
strNom d’hôte du backend S3 - s3Port
portPort du backend S3 - s3Bucket
strNom 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";};✨ darkone.service.element
Section intitulée « ✨ darkone.service.element »Client web Element pour le service matrix local.
- enable
boolActiver le service element local
darkone.service.element.enable = false;✨ darkone.service.fail2ban
Section intitulée « ✨ darkone.service.fail2ban »Module fail2ban spécifique à DNF.
- enable
boolActiver fail2ban avec les spécificités DNF
darkone.service.fail2ban.enable = false;✨ darkone.service.forgejo
Section intitulée « ✨ darkone.service.forgejo »Une forge git forgejo entièrement configurée.
- enable
boolActive le service forgejo local
darkone.service.forgejo.enable = false;✨ darkone.service.garage
Section intitulée « ✨ darkone.service.garage »Un service Garage S3 local entièrement configuré.
Fournit un stockage d’objets interne compatible S3 accessible uniquement sur 127.0.0.1:3900.
- enable
boolActiver le service Garage S3 local - srvPort
portPort de l’API S3 exposé sur l’IP interne - s3Region
strNom de la région S3 (doit correspondre à la config du consommateur) - capacity
strIndication de capacité de stockage du nœud transmise àgarage layout assign. Utilisée uniquement au premier démarrage pour l’initialisation du layout ; n’agit pas comme un quota strict sur le système de fichiers sous-jacent. Suffixes pris en charge : B, KB, MB, GB, TB, PB.
darkone.service.garage = { enable = false; srvPort = srvPort; s3Region = s3Region; capacity = "500GB";};✨ darkone.service.geneweb
Section intitulée « ✨ darkone.service.geneweb »GeneWeb — Service de généalogie puissant.
- enable
boolActiver le service de généalogie GeneWeb local - enablePasswords
boolActiver les mots de passe sops (non recommandé)
darkone.service.geneweb = { enable = false; enablePasswords = false;};✨ darkone.service.harmonia
Section intitulée « ✨ darkone.service.harmonia »Harmonia : serveur local de cache binaire Nix (sert le /nix/store de cet hôte).
Expose les chemins du store construits / réalisés localement sur HTTP simple (port 5000), signés avec la clé de cache binaire déployée sur tout le réseau. À activer par hôte depuis usr/config.yaml (services.harmonia), comme tout autre service DNF.
- enable
boolActive un serveur de cache binaire Nix Harmonia local
darkone.service.harmonia.enable = false;✨ darkone.service.headscale
Section intitulée « ✨ darkone.service.headscale »Un service headscale entièrement configuré pour HCS.
- enable
boolActiver le service DNF headscale - enableGRPC
boolOuvrir le port TCP GRPC
darkone.service.headscale = { enable = false; enableGRPC = false;};✨ darkone.service.home-assistant
Section intitulée « ✨ darkone.service.home-assistant »Un Home Assistant avec certains plugins (en cours).
- enable
boolActiver home-assistant
darkone.service.home-assistant.enable = false;✨ darkone.service.homepage
Section intitulée « ✨ darkone.service.homepage »Tableau de bord de page d’accueil configuré dynamiquement pour votre réseau local.
- enable
boolActiver le tableau de bord de la page d’accueil + httpd + hôte - protect
boolRestreindre la page d’accueil aux utilisateurs Kanidm authentifiés (oauth2-proxy forward auth) - localServices
listOf attrsServices à ajouter dans la section Applications locales - globalServices
listOf attrsServices communs du réseau & accessibles publiquement - remoteServices
listOf attrsServices à ajouter dans la section Applications distantes - bookmarks
listOf attrsRemplacer les favoris par défaut (liens) - widgets
listOf attrsRemplacer les widgets par défaut
darkone.service.homepage = { enable = false; protect = true; localServices = [ ]; globalServices = [ ]; remoteServices = [ ]; bookmarks = [ ]; widgets = [ ];};✨ darkone.service.idm
Section intitulée « ✨ darkone.service.idm »Service DNF Kanidm (gestionnaire d’identités).
- enable
boolActiver le SSO local avec Kanidm - oauth2
attrsModèles de clients OAuth2/OIDC fournis par les modules de services. Kanidm provisionne un client pour chaque entrée correspondante dansnetwork.services, avecclientId = dnfLib.oauth2ClientName.- enable
boolWhether to provision OAuth2 clients for this template. - clientName
nullOr strOverride the kanidm client name. Defaults to dnfLib.oauth2ClientName. - displayName
strHuman-readable name shown on the kanidm consent screen. - imageFile
pathApplication icon. Re-uploaded on every kanidm-provision run. - redirectPaths
listOf strOAuth2 redirect paths (one per accepted callback URL). - landingPath
strAuto-connect entry point path on the service. - enableLegacyCrypto
boolAllow legacy JWT signing algorithms (eg. RS256). - allowInsecureClientDisablePkce
boolDisable PKCE on the client (only for clients that do not implement it). - preferShortUsername
nullOr boolUse the short username (no domain) in thepreferred_usernameclaim. - extra
attrsExtra attributes merged into the provisioned client (claimMaps, etc).
- enable
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 = { };};✨ darkone.service.immich
Section intitulée « ✨ darkone.service.immich »Service Immich (gestion de photos) entièrement configuré.
- enable
boolActiver le service immich local - enableMachineLearning
boolActiver les fonctionnalités d’apprentissage automatique (reconnaissance faciale, détection d’objets) - enableRedis
boolActiver Redis pour la mise en cache (recommandé pour les performances)
darkone.service.immich = { enable = false; enableMachineLearning = false; enableRedis = false;};✨ darkone.service.jellyfin
Section intitulée « ✨ darkone.service.jellyfin »Un serveur jellyfin entièrement configuré.
- enable
boolActiver le service jellyfin
darkone.service.jellyfin.enable = false;✨ darkone.service.jitsi-meet
Section intitulée « ✨ darkone.service.jitsi-meet »Un service jitsi-meet entièrement configuré.
- enable
boolActiver le service jitsi-meet local
darkone.service.jitsi-meet.enable = false;✨ darkone.service.loki
Section intitulée « ✨ darkone.service.loki »Loki + Alloy, statistiques HTTP avec Grafana.
- enable
boolDéploie le serveur Loki + le datasource Grafana (co-localisé avec Grafana). - isClient
boolDéploie Alloy pour collecter les logs d’accès Caddy locaux. - retentionTime
strDurée de rétention des logs dans Loki (30 jours par défaut).
darkone.service.loki = { enable = config.darkone.service.monitoring.enable; isClient = config.services.caddy.enable && hasMonitoringHost; retentionTime = "720h";};✨ darkone.service.matrix
Section intitulée « ✨ darkone.service.matrix »Serveur Matrix (synapse) DNF avec les ponts mautrix.
Les ponts (whatsapp, signal, telegram, messenger, discord) sont utilisables par
tout compte local : chaque utilisateur lie son propre compte distant en
discutant avec le bot du pont (@whatsappbot, @signalbot, … puis login) ;
les sessions sont isolées par utilisateur. Le network.matrix.admin déclaré
administre les ponts.
Le double puppeting utilise la méthode officielle appservice
(https://docs.mau.fi/bridges/general/double-puppeting.html 🡕) : un jeton
doublepuppet appservice partagé permet aux ponts d’envoyer les messages
provenant du distant en tant que vrai compte matrix de l’utilisateur. Secrets
sops requis : mautrix-doublepuppet-as-token et
mautrix-doublepuppet-hs-token (openssl rand -hex 32 chacun).
Les jetons as/hs appservice de chaque pont sont fournis par sops plutôt qu’auto-générés : le fichier d’enregistrement devient une fonction pure des secrets, donc réinitialiser le répertoire d’état d’un pont n’invalide jamais l’enregistrement que synapse a chargé (ce qui autrement nécessiterait un wipe d’enregistrement + redémarrage de synapse et produirait des erreurs « as_token was not accepted »).
Fédération
Section intitulée « Fédération »La fédération se configure via darkone.service.matrix.federation :
enable = false: bloque toute fédération (liste blanche de domaines vide).enable = true; whitelist = [ ]: fédération ouverte avec tous les serveurs.enable = true; whitelist = [ "ami.org" ]: liste blanche (entrante + sortante).
La découverte reste verrouillée dans tous les cas (salles absentes des annuaires distants, profils privés sur la fédération), donc le réseau est joignable mais pas recherchable.
L’auto-inscription des proches (friendRegistration.enable) ouvre des comptes
locaux protégés par jeton aux côtés des utilisateurs OIDC Kanidm. Sans MAS, la
frappe d’un jeton passe par l’API admin de Synapse (un admin serveur est
requis) ; avec MAS, frappez-le sur l’hôte avec
sudo dnf-mas manage issue-user-registration-token.
Authentification nouvelle génération (MAS)
Section intitulée « Authentification nouvelle génération (MAS) »mas.enable délègue toute l’authentification au Matrix Authentication Service
(requis par Element X, la connexion par QR code, le portail self-service
/account). Kanidm reste la source d’identité : MAS devient le client OIDC
à la place de synapse, et synapse se contente de demander à MAS d’inspecter
les jetons. Servi sur le même vhost : MAS possède la racine + les points
d’entrée d’auth compat, synapse conserve /_matrix/* et
/_synapse/* ; la découverte client est automatique (synapse sert
lui-même auth_metadata), donc pas de changement well-known.
Secrets sops requis, tous créés par just configure-admin-host :
mas-encryption-secret, mas-synapse-secret et mas-rsa-private-key.
dnf-mas (racine) encapsule mas-cli pour l’administration côté hôte : jetons
d’inscription, promote-admin, register-user, syn2mas. MAS tourne avec
DynamicUser et lit ses secrets depuis les credentials systemd, qui
n’existent pas en dehors de l’unité en cours ; le wrapper reconstitue un
répertoire de credentials équivalent à partir des fichiers sops, ce qui
fonctionne que le service soit en marche ou non (syn2mas nécessite qu’il
soit arrêté).
- enable
boolActiver le service matrix (synapse) - federation.enable
boolAutoriser la fédération serveur-à-serveur. Faux bloque toute la fédération. - federation.whitelist
listOf strVide = fédérer avec tous les serveurs ; non vide = uniquement ces domaines (entrant + sortant). - mas.enable
boolDéléguer toute l’authentification au Matrix Authentication Service (support Element X). - matrixRtc.enable
boolActiver le backend MatrixRTC (LiveKit SFU) pour les appels de groupe Element Call. - friendRegistration.enable
boolAutoriser les amis à s’auto-inscrire avec un jeton d’invitation (contrôlé par jeton). - bridges.whatsapp.enable
boolBridge Mautrix WhatsApp (connexion par QR code). - bridges.signal.enable
boolBridge Mautrix Signal (connexion par QR code). - bridges.telegram.enable
boolBridge Mautrix Telegram (connexion par numéro de téléphone). - bridges.messenger.enable
boolBridge Mautrix Facebook Messenger (connexion par cookies). - bridges.discord.enable
boolBridge Mautrix Discord (connexion par QR code, expérimental).
darkone.service.matrix = { enable = false; federation.enable = false; federation.whitelist = [ ]; mas.enable = false; matrixRtc.enable = false; friendRegistration.enable = false; bridges.whatsapp.enable = true; bridges.signal.enable = true; bridges.telegram.enable = true; bridges.messenger.enable = true; bridges.discord.enable = false;};✨ darkone.service.mealie
Section intitulée « ✨ darkone.service.mealie »Gestion de recettes Mealie
- enable
boolActiver le service mealie
darkone.service.mealie.enable = false;✨ darkone.service.minio
Section intitulée « ✨ darkone.service.minio »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
boolActiver le service MinIO S3 local
darkone.service.minio.enable = false;✨ darkone.service.monitoring
Section intitulée « ✨ darkone.service.monitoring »Module de supervision : tableaux de bord Grafana + exportateur par nœud.
- enable
boolActiver la supervision avec prometheus, grafana et l’exportateur de nœud - isNode
boolEst un nœud de supervision - kioskTarget
strCible (relative, sans/) pour la redirection automatique vers Grafana depuis la racine du domaine de supervision. 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; kioskTarget = "d/dnf-monitoring-home/home?kiosk";};✨ darkone.service.nextcloud
Section intitulée « ✨ darkone.service.nextcloud »Service Nextcloud entièrement configuré.
-
enable
boolActiver le service nextcloud local -
adminUser
strNom d’utilisateur administrateur pour Nextcloud -
enableSsoRedirect
boolEnvoyer les utilisateurs directement à Kanidm au lieu d’afficher le formulaire de connexion Nextcloud (user_oidcallow_multiple_user_backends). Économise un clic à chaque connexion, y compris le Login Flow v2 du client desktop.Sans effet lorsque Kanidm est absent du réseau.
-
plugins
listOf (enum (appstoreApps ++ shippedToggleableApps))Applications Nextcloud à activer. Seulscalendaretcontactssont activés par défaut ; Talk (spreed), le tableau de bord, le flux d’activité, les photos et toutes les autres applications restent désactivés tant qu’ils ne figurent pas ici.user_oidcest requis pour le SSO Kanidm et est inclus de force indépendamment de cette liste.
darkone.service.nextcloud = { enable = false; adminUser = "admin"; enableSsoRedirect = true; plugins = [ ];};✨ darkone.service.nfs
Section intitulée « ✨ darkone.service.nfs »Serveur + client NFS pour les partages domestiques.
- enable
boolActive le serveur NFS DNF (éviter l’activation manuelle) - serverDomain
strFQDN du serveur NFS
darkone.service.nfs = { enable = hasServer && (isServer || isClient); serverDomain = "nfs";};✨ darkone.service.nix-cache
Section intitulée « ✨ darkone.service.nix-cache »Proxy de cache binaire Nix par zone (nginx proxy_cache).
Met en cache le cache Nix public (cache.nixos.org) sur la passerelle de la
zone afin qu’un déploiement à l’échelle de la flotte tire chaque closure du WAN
une seule fois, puis la sert sur le LAN à tous les autres hôtes. Les chemins
construits localement sont servis directement par harmonia (voir
harmonia.nix) ; ce proxy ne se place jamais devant harmonia.
- enable
boolle proxy de cache binaire Nix par zone (nginx devant cache.nixos.org) - maxSize
strTaille maximale du cache sur disque ; au-delà, nginx évince les entrées les moins récemment utilisées. - roaming
boolHôte nomade (portable déplacé entre zones) : remplacer les substituters épinglés à la zone par les noms neutres de zone que le DNS de chaque zone résout vers ses propres services de cache. En dehors de toute zone DNF, les noms répondent NXDOMAIN instantanément et Nix retombe sur cache.nixos.org.
darkone.service.nix-cache = { enable = false; maxSize = "40g"; roaming = false;};✨ darkone.service.outline
Section intitulée « ✨ darkone.service.outline »Un wiki outline complètement configuré.
- enable
boolActiver le service outline local
darkone.service.outline.enable = false;✨ darkone.service.oxicloud
Section intitulée « ✨ darkone.service.oxicloud »OxiCloud — Cloud souverain rapide (stockage de fichiers, WebDAV, CalDAV et CardDAV).
- enable
boolActiver le service OxiCloud local
darkone.service.oxicloud.enable = false;✨ darkone.service.postfix
Section intitulée « ✨ darkone.service.postfix »Relais SMTP Postfix.
- enable
boolActiver le relais SMTP Postfix
darkone.service.postfix.enable = false;✨ darkone.service.printing
Section intitulée « ✨ darkone.service.printing »Imprimantes et scanners.
- enable
boolPaquets utiles par défaut - loadAll
boolImprimantes et scanners complets - enableScanners
boolActiver les scanners - enableHpPrinters
boolImprimantes HP uniquement - enableManualInstall
boolInstallation manuelle des pilotes
darkone.service.printing = { enable = false; loadAll = false; enableScanners = false; enableHpPrinters = false; enableManualInstall = false;};✨ darkone.service.prometheus
Section intitulée « ✨ darkone.service.prometheus »Serveur de supervision Prometheus avec escalade déclarative via Alertmanager.
-
enable
boolActiver le serveur de métriques + d’alerting Prometheus -
retentionTime
strDurée de rétention des métriques Prometheus -
alerting.enable
boolActiver Alertmanager (activé par défaut une fois les salons Matrix d’alerte provisionnés) -
alerting.matrix.enable
boolDiffuser les alertes dans les salons Matrix via le bot matrix-alertmanager -
alerting.matrix.userId
strID utilisateur Matrix du bot d’alerte (par défaut depuis network.matrix.bot) -
alerting.matrix.warningsRoom
strID du salon Matrix pour les avertissements (par défaut depuis network.matrix.warningsRoom) -
alerting.matrix.incidentsRoom
strID du salon Matrix pour les incidents (par défaut depuis network.matrix.incidentsRoom) -
alerting.email.enable
boolEnvoyer aussi les alertes critiques par mail (via le relais Postfix local) -
alerting.email.to
strDestinataire des mails d’alerte critique -
alerting.network.enable
boolSonder l’atteignabilité réseau (passerelle/tailnet/DNS) avec blackbox_exporter -
alerting.network.internetProbeTargets
listOf strAdresses IP externes que la passerelle de zone ping pour détecter une coupure WAN. Si toutes échouent,ZoneInternetDownse déclenche et inhibe les alertes de down (erronées) des hôtes accessibles uniquement via le WAN (par ex. le HCS). Liste vide = désactivé. -
alerting.network.httpProbeUrls
listOf strURLs HTTP(S) sondées pour la vivacité (ServiceEndpointDown) et l’expiration du certificat TLS (CertificateExpiringSoon/Critical). Vide par défaut : lister les endpoints web publics à surveiller. Les redirections vers un login SSO (3xx) sont comptées comme up ; l’expiration du certificat est lue depuis la poignée de main TLS quelle que soit la réponse HTTP. -
alerting.silenceOnRebuild
boolÉmettre le flag dnf-maintenance (textfile collector) afin que les reconstructions inhibent les alertes d’un nœud -
alerting.thresholds
attrsRemplacer les seuils d’alerte de ressources (voir les valeurs par défaut dans dnf/lib/alerts.nix) -
alerting.silences
listOf submoduleAlertes connues et acceptées qui ne doivent jamais notifier. Chaque entrée devient une route Alertmanager vers le récepteurnull: l’alerte se déclenche toujours et reste visible dans les interfaces Prometheus/Alertmanager/Grafana, elle ne parvient simplement plus à Matrix ni par mail.Déclaré sur l’hôte qui fait tourner Prometheus, car c’est là que les règles et routes de la zone sont générées. Un module consommateur à l’échelle de la flotte (
usr/modules/alerts.nix) est l’endroit pratique : il est importé partout et ne prend effet que là où Prometheus tourne.- alert
strNom de l’alerte à mettre en sourdine (labelalertname). Toujours restreint, afin que les niveaux de gravité voisins restent armés. - host
nullOr strRestreindre le silence à un seul hôte. Null met en sourdine l’alerte pour toute la flotte. - matchers
attrsÉtiquettes de correspondance exacte supplémentaires, combinées en ET avec les autres (par ex. le point de montage ou le device visé par l’alerte). - reason
strPourquoi cette alerte est acceptée, et ce qui rendrait le silence supprimable.
- alert
darkone.service.prometheus = { enable = false; retentionTime = "30d"; alerting.enable = roomsReady; alerting.matrix.enable = true; alerting.matrix.userId = "@alertbot:domain.tld"; alerting.matrix.warningsRoom = "!warnings:domain.tld"; alerting.matrix.incidentsRoom = "!incidents:domain.tld"; alerting.email.enable = true; alerting.email.to = "admin@${network.domain}"; alerting.network.enable = true; alerting.network.internetProbeTargets = [ ]; alerting.network.httpProbeUrls = [ ]; alerting.silenceOnRebuild = true; alerting.thresholds = { }; alerting.silences = [ ]; alerting.silences.alert = "DiskSpaceLow"; alerting.silences.host = "srv-main"; alerting.silences.matchers = { }; alerting.silences.reason = null;};✨ darkone.service.restic
Section intitulée « ✨ darkone.service.restic »Module de sauvegarde Restic : serveur REST + cibles de sauvegarde par hôte.
Exemple (configuration machine) :
darkone.service.restic = { enable = true; targets = [ { name = "main"; root = "rest:http://restic.my-zone.my-domain.tld:8888"; zone = "ag"; categories = [ "system" "nfs" ]; } ];};Structure du dépôt par cible : un dépôt par catégorie, nommé d’après celle-ci.
<root>/<hostname>/system <- catégorie "system" (/ moins les exclusions)<root>/<hostname>/nfs <- catégorie "nfs" (/srv/nfs/<...>)<root>/<hostname>/medias <- catégorie "medias" (/srv/medias/<...>)- enable
boolActiver le client de sauvegarde restic - enableDryRun
boolMode simulation - enableWaitRemoteFs
boolLancer les sauvegardes uniquement après remote-fs.target - enableServer
boolActiver le serveur REST restic - listenAll
boolLier le serveur REST sur 0.0.0.0 (clients hors site) - serverDataDir
strRacine de stockage locale du serveur REST (dépôts de tous les hôtes) - targets
listOf submoduleDestinations de sauvegarde pour cet hôte (chemin local ou URL REST)- name
strIdentifiant de cible, utilisé dans les noms de sauvegarde/unités (<category>-<name>) - root
strRacine du dépôt : chemin local ou URL REST - zone
strZone sélectionnant la phrase de passe du dépôt (restic-password-<zone>) - categories
listOf ( enum [ "system" "nfs" "medias" ] )Contenu à sauvegarder vers cette cible
- name
- nfsPaths
listOf strRépertoires NFS (/srv/nfs/<xxx>) inclus dans la catégorie ‘nfs’ - mediasPaths
listOf strRépertoires Médias (/srv/medias/<xxx>) inclus dans la catégorie ‘medias’
darkone.service.restic = { enable = false; enableDryRun = false; enableWaitRemoteFs = false; enableServer = false; listenAll = 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 = [ ];};✨ darkone.service.searx
Section intitulée « ✨ darkone.service.searx »Un moteur de recherche durci et entièrement configuré.
- enable
boolActiver le proxy de recherche local
darkone.service.searx.enable = false;✨ darkone.service.tailscale
Section intitulée « ✨ darkone.service.tailscale »Service client Tailscale pour le HCS.
- enable
boolActiver le client tailscale pour connecter le HCS - isGateway
boolCe nœud tailscale est une passerelle de sous-réseau - isExitNode
boolConfigurer ce client comme nœud de sortie - selfHeal.enable
boolChien de garde : détecter la déconnexion de headscale et redémarrer tailscaled. - autoPauseOnLan.enable
boolClient nomade : mettre en pause tailscale (down) tant qu’il est branché sur un LAN d’une zone DNF connue, le reprendre ailleurs. Clients NetworkManager non-passerelles uniquement.
darkone.service.tailscale = { enable = false; isGateway = false; isExitNode = false; selfHeal.enable = true; autoPauseOnLan.enable = false;};✨ darkone.service.turn
Section intitulée « ✨ darkone.service.turn »Serveur Coturn (matrix).
Ajouter des entrées DNS pour optimiser :
Type,Name,Priority,Pds,Port,TargetSRV,_stun._udp,0,0,3478,turn.mydomain.tldSRV,_stun._tcp,0,0,3478,turn.mydomain.tldSRV,_turn._udp,0,0,3478,turn.mydomain.tldSRV,_turn._tcp,0,0,3478,turn.mydomain.tldSRV,_turns._tcp,0,0,5349,turn.mydomain.tld- enable
boolActiver le service turn local (visio)
darkone.service.turn.enable = false;✨ darkone.service.vaultwarden
Section intitulée « ✨ darkone.service.vaultwarden »Un serveur vaultwarden entièrement configuré (wip).
- enable
boolActiver le service Vaultwarden local - enableSmtp
boolActiver SMTP pour envoyer des emails (recommandé)
darkone.service.vaultwarden = { enable = false; enableSmtp = true;};