This is guix.fr.info, produced by makeinfo version 6.7 from
guix.fr.texi.

Copyright © 2012-2022 Ludovic Courtès
Copyright © 2013, 2014, 2016 Andreas Enge
Copyright © 2013 Nikita Karetnikov
Copyright © 2014, 2015, 2016 Alex Kost
Copyright © 2015, 2016 Mathieu Lirzin
Copyright © 2014 Pierre-Antoine Rault
Copyright © 2015 Taylan Ulrich Bayırlı/Kammer
Copyright © 2015, 2016, 2017, 2019, 2020, 2021 Leo Famulari
Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo
Wurmus
Copyright © 2016 Ben Woodcroft
Copyright © 2016, 2017, 2018, 2021 Chris Marusich
Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner
Copyright © 2016 John Darrington
Copyright © 2016, 2017 Nikita Gillmann
Copyright © 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller
Copyright © 2016 Alex ter Weele
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines
Copyright © 2017, 2018, 2019 Clément Lassieur
Copyright © 2017, 2018, 2020, 2021, 2022 Mathieu Othacehe
Copyright © 2017 Federico Beffa
Copyright © 2017, 2018 Carlo Zancanaro
Copyright © 2017 Thomas Danckaert
Copyright © 2017 humanitiesNerd
Copyright © 2017, 2021 Christine Lemmer-Webber
Copyright © 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke
Copyright © 2017, 2019, 2020, 2022 Hartmut Goebel
Copyright © 2017, 2019, 2020, 2021, 2022 Maxim Cournoyer
Copyright © 2017–2022 Tobias Geerinckx-Rice
Copyright © 2017 George Clemmer
Copyright © 2017 Andy Wingo
Copyright © 2017, 2018, 2019, 2020 Arun Isaac
Copyright © 2017 nee
Copyright © 2018 Rutger Helling
Copyright © 2018, 2021 Oleg Pykhalov
Copyright © 2018 Mike Gerwitz
Copyright © 2018 Pierre-Antoine Rouby
Copyright © 2018, 2019 Gábor Boskovits
Copyright © 2018, 2019, 2020, 2022 Florian Pelz
Copyright © 2018 Laura Lazzati
Copyright © 2018 Alex Vong
Copyright © 2019 Josh Holland
Copyright © 2019, 2020 Diego Nicola Barbato
Copyright © 2019 Ivan Petkov
Copyright © 2019 Jakob L. Kreuze
Copyright © 2019 Kyle Andrews
Copyright © 2019 Alex Griffin
Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant
Copyright © 2020 Liliana Marie Prikler
Copyright © 2019, 2020, 2021, 2022 Simon Tournier
Copyright © 2020 Wiktor Żelazny
Copyright © 2020 Damien Cassou
Copyright © 2020 Jakub Kądziołka
Copyright © 2020 Jack Hill
Copyright © 2020 Naga Malleswari
Copyright © 2020, 2021 Brice Waegeneire
Copyright © 2020 R Veera Kumar
Copyright © 2020, 2021 Pierre Langlois
Copyright © 2020 pinoaffe
Copyright © 2020 André Batista
Copyright © 2020, 2021 Alexandru-Sergiu Marton
Copyright © 2020 raingloom
Copyright © 2020 Daniel Brooks
Copyright © 2020 John Soo
Copyright © 2020 Jonathan Brielmaier
Copyright © 2020 Edgar Vincent
Copyright © 2021, 2022 Maxime Devos
Copyright © 2021 B. Wilson
Copyright © 2021 Xinglu Chen
Copyright © 2021 Raghav Gururajan
Copyright © 2021 Domagoj Stolfa
Copyright © 2021 Hui Lu
Copyright © 2021 pukkamustard
Copyright © 2021 Alice Brenon
Copyright © 2021, 2022 Josselin Poiret
Copyright © 2021 muradm
Copyright © 2021, 2022 Andrew Tropin
Copyright © 2021 Sarah Morgensen
Copyright © 2022 Remco van ’t Veer
Copyright © 2022 Aleksandr Vityazev
Copyright © 2022 Philip M^{c}Grath
Copyright © 2022 Karl Hallsby
Copyright © 2022 Justin Veilleux
Copyright © 2022 Reily Siegel
Copyright © 2022 Simon Streit
Copyright © 2022 (
Copyright © 2022 John Kehayias

   Vous avez la permission de copier, distribuer ou modifier ce document
sous les termes de la Licence GNU Free Documentation, version 1.3 ou
toute version ultérieure publiée par la Free Software Foundation ; sans
section invariante, texte de couverture et sans texte de quatrième de
couverture. Une copie de la licence est incluse dans la section
intitulée « GNU Free Documentation License ».
INFO-DIR-SECTION Administration système
START-INFO-DIR-ENTRY
* Guix: (guix.fr).           Gérer les logiciels installés et la
                               configuration du système.
* guix package : (guix.fr)Invoquer guix package.  Installer, supprimer et
                                                      mettre à jour des
                                                      paquets.
* guix gc : (guix.fr)Invoquer guix gc.  Récupérer de l’espace disque
                                            inutilisé.
* guix pull : (guix.fr)Invoquer guix pull.  Mettre à jour la liste des
                                                paquets disponibles.
* guix system : (guix.fr)Invoquer guix system.  Gérer la configuration du
                                                    système d’exploitation.
* guix deploy: (guix.fr)Invoquer guix deploy.  Gérer la configuration du
                                                 système d’exploitation
                                                 d’hôtes distants.
END-INFO-DIR-ENTRY

INFO-DIR-SECTION Développement logiciel
START-INFO-DIR-ENTRY
* guix shell: (guix.fr)Invoquer guix shell.  Créer des environnements
                                               logiciels.
* guix environment : (guix.fr)Invoquer guix environment.  Construire des
                                                              environnements
                                                              de construction
                                                              avec Guix.
* guix build : (guix.fr)Invoquer guix build.  Construire des paquets.
* guix pack : (guix.fr) Invoquer guix pack.  Créer des lots binaires.
END-INFO-DIR-ENTRY


File: guix.fr.info,  Node: Services de téléphonie,  Next: Services de partage de fichiers,  Prev: Services de messagerie,  Up: Services

12.9.14 Services de téléphonie
------------------------------

Le module ‘(gnu services telephony)’ contient des définitions de
services Guix pour les services de téléphonie. Actuellement il fournit
les services suivants :

Jami
....

Cette section décrit comment configurer un serveur Jami que vous pouvez
utiliser pour héberger des conférence vidéo (ou audio) entre autres
choses. L’exemple suivant montre comment spécifier les archives de
compte Jami (les sauvegardes) automatiquement :

     (service jami-service-type
              (jami-configuration
               (accounts
                (list (jami-account
                       (archive "/etc/jami/unencrypted-account-1.gz"))
                      (jami-account
                       (archive "/etc/jami/unencrypted-account-2.gz"))))))

   Lorsque le champ de comptes est spécifié, les fichiers de compte Jami
du service trouvés dans ‘/var/lib/jami’ seront recréés à chaque
redémarrage du service.

   Les comptes Jami et leurs sauvegardes correspondantes peuvent être
générés avec les clients ‘jami’ ou ‘jami-gnome’. Les comptes ne
devraient pas être protégés par un mot de passe, mais il vaut mieux vous
assurer que leurs fichiers ne sont lisibles que par ‘root’.

   L’exemple suivant montre comme déclarer que seuls certains contact
devraient pouvoir communiquer avec un compte donné :

     (service jami-service-type
              (jami-configuration
               (accounts
                (list (jami-account
                       (archive "/etc/jami/unencrypted-account-1.gz")
                       (peer-discovery? #t)
                       (rendezvous-point? #t)
                       (allowed-contacts
                        '("1dbcb0f5f37324228235564b79f2b9737e9a008f"
                          "2dbcb0f5f37324228235564b79f2b9737e9a008f")))))))

   dans ce mode, seuls les ‘allowed-contacts’ déclarés peuvent débuter
une communication avec le compte Jami. Vous pouvez utiliser cela par
exemple avec des comptes de point de rendez-vous pour créer un espace de
vidéo-conférence privé.

   Pour que l’administrateur système ait le contrôle complet des
conférences hébergées sur son système, le service Jami prend en charge
les actions suivantes :

     # herd doc jami list-actions
     (list-accounts
      list-account-details
      list-banned-contacts
      list-contacts
      list-moderators
      add-moderator
      ban-contact
      enable-account
      disable-account)

   Les actions ci-dessus ont pour but de fournir les actions les plus
utiles pour la modération, pas de couvrir l’ensemble de l’API de Jami.
Si vous souhaitez interagir avec le démon Jami depuis Guile, vous pouvez
expérimenter le module ‘(gnu build jami-service)’, qui propulse les
actions Shepherd ci-dessus.

   Les action ‘add-moderator’ et ‘ban-contact’ acceptent _l’empreinte_
d’un contact (un hash long de 40 caractères) comme premier argument et
l’empreinte d’un compte ou un nom d’utilisateur comme second argument :

     # herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f \
       f3345f2775ddfe07a4b0d95daea111d15fbc1199

     # herd list-moderators jami
     Moderators for account f3345f2775ddfe07a4b0d95daea111d15fbc1199:
       - 1dbcb0f5f37324228235564b79f2b9737e9a008f


   dans le cas de ‘ban-contact’, le second argument est facultatif ;
lorsqu’il est omis, le compte est banni de tous les comptes de Jami :

     # herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f

     # herd list-banned-contacts jami
     Banned contacts for account f3345f2775ddfe07a4b0d95daea111d15fbc1199:
       - 1dbcb0f5f37324228235564b79f2b9737e9a008f


   Les contacts bannis n’ont plus non plus de privilèges administrateur.

   L’action ‘disable-account’ permet de déconnecter entièrement un
compte du réseau, le rendant injoignable, tandis que ‘enable-account’
fait l’inverse. Ils acceptent un seul nom de compte ou empreinte comme
premier argument :

     # herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199

     # herd list-accounts jami
     The following Jami accounts are available:
       - f3345f2775ddfe07a4b0d95daea111d15fbc1199 (dummy) [disabled]


   L’action ‘list-account-details’ affiche les paramètres détaillés de
chaque compte au format Recutils, ce qui signifie que vous pouvez
utiliser la commande ‘recsel’ pour choisir les comptes qui vous
intéressent (*note (recutils)Selection Expressions::). Remarquez que les
caractères point (‘.’) qui se trouvent la les clés des paramètres
deviennent des underscores (‘_’) dans la sortie, pour satisfaire les
exigences du format Recutils. L’exemple suivant vous montre comment
afficher les empreintes des comptes qui opèrent en mode rendez-vous :

     # herd list-account-details jami | \
       recsel -p Account.username -e 'Account.rendezVous ~ "true"'
     Account_username: f3345f2775ddfe07a4b0d95daea111d15fbc1199

   Les autres actions devraient être évidentes.

   L’ensemble des options de configuration disponibles est donné
ci-dessous.

 -- Type de données : jami-configuration
     Les champs de ‘jami-configuration’ disponibles sont :

     ‘libjami’ (par défaut : ‘libjami’) (type : paquet)
          Le paquet du démon Jami à utiliser.

     ‘dbus’ (par défaut : ‘dbus-for-jami’) (type : paquet)
          Le paquet D-Bus à utiliser pour démarrer la session D-Bus
          requise.

     ‘nss-certs’ (par défaut : ‘nss-certs’) (type : paquet)
          Le paquet nss-certs à utiliser pour utiliser les certificats
          TLS fournis.

     ‘enable-logging?’ (par défaut : ‘#t’) (type : booléen)
          Indique s’il faut activer la journalisation vers syslog.

     ‘debug?’ (par défaut : ‘#f’) (type : booléen)
          Indique s’il faut activer les messages de débogage.

     ‘auto-answer?’ (par défaut : ‘#f’) (type : booléen)
          Indique s’il faut forcer la réponse automatique aux appels
          entrants.

     ‘accounts’ (type : peut-être-liste-de-jami-account)
          Une liste de comptes Jami à (re-)provisionner à chaque fois
          que le service du démon Jami démarre. Lorsque le champ est
          spécifié, les répertoires des comptes dans ‘/var/lib/jami/’
          sont recréés à chaque fois que le service démarre, pour
          assurer un état cohérent.

 -- Type de données : jami-account
     Les champs de ‘jami-account’ disponibles sont :

     ‘archive’ (type : string-or-computed-file)
          Le nom de fichier de l’archive (sauvegarde) du compte. C’est
          utilisé pour provisionner le compte quand le service démarre.
          L’archive du compte ne devrait _pas_ être chiffrée. Il est
          fortement recommandé de la rendre lisible uniquement à
          l’utilisateur ‘root’ (c.-à-d. pas dans le dépôt), pour vous
          prémunir contre la fuite de la clé secrète du compte Jami
          sauvegardé.

     ‘allowed-contacts’ (type : peut-être-liste-de-account-fingerprint)
          La liste des contacts permis pour le compte, saisis avec leur
          empreinte longue de 40 caractères. Les messages et les appels
          des comptes qui ne sont pas dans la liste seront rejetés.
          Lorsque la valeur n’est pas spécifiée, la configuration de
          l’archive du compte est utilisée telle-quelle par rapport aux
          permissions d’appels et de messages entrants, ce qui se résume
          par défaut à accepter tous les contacts à communiquer avec le
          compte.

     ‘moderators’ (type : peut-être-liste-de-account-fingerprint)
          La liste des contacts qui devraient avoir des privilèges de
          modération (pour bannir, rendre muet, etc les autres
          utilisateur·rices) dans les conférences en rendez-vous, saisis
          avec leur empreinte longue de 40 caractères. Lorsque la valeur
          n’est pas spécifiée, la configuration de l’archive du compte
          est utilisée telle-quelle pour la modération, ce qui se résume
          par défaut à permettre à n’importe qui de modérer.

     ‘rendezvous-point?’ (type : peut-être-booléen)
          Indique si le compte devrait opérer en mode rendez-vous. Dans
          ce mode, tous les appels audio et vidéos entrants sont
          fusionnés en une conférence. Lorsque la valeur n’est pas
          spécifiée, la valeur de l’archive du compte est utilisée.

     ‘peer-discovery?’ (type : peut-être-booléen)
          Indique si la découverte de pairs devrait être activée. La
          découverte de pairs est utilisée pour découvrir d’autres nœuds
          OpenDHT sur le réseau local, ce qui peut être utile pour
          maintenir une connexion entre appareils locaux sur le réseau
          même si la connexion internet est perdue. Lorsque la valeur
          n’est pas spécifiée, celle de l’archive du compte est
          utilisée.

     ‘bootstrap-hostnames’ (type : peut-être-liste-de-chaine)
          Une liste des noms d’hôte ou IP pointant vers des nœuds
          OpenDHT, qui devraient être utilisés pour rejoindre le réseau
          OpenDHT au départ. Lorsque la valeur n’est pas spécifiée, la
          valeur de l’archive du compte est utilisée.

     ‘name-server-uri’ (type : peut-être-chaine)
          L’URI du serveur de nom à utiliser, qui peut être utilisé pour
          récupérer l’empreinte du compte pour un nom d’utilisateur
          enregistré.

Serveur Mumble
..............

Cette section décrit comment configurer et lancer un serveur Mumble
(https://mumble.info) (précédemment connu sous le nom de Murmur).

 -- Type de données : mumble-server-configuration
     Le type de service pour le serveur Mumble. Voici un exemple de
     configuration :

          (service mumble-server-service-type
                   (mumble-server-configuration
                    (welcome-text
                      "Bienvenue sur ce serveur Mumble qui tourne sur Guix !")
                    (cert-required? #t) ;désactive les connections par mot de passe
                    (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
                    (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))

     Après avoir reconfiguré votre système, vous pouvez manuellement
     indiquer le mot de passe ‘SuperUser’ de mumble-server avec la
     commande qui s’affiche pendant la phase d’activation.

     Il est recommandé d’enregistrer un compte utilisateur Mumble normal
     et de lui donner les droits admin ou modérateur. Vous pouvez
     utiliser le client ‘mumble’ pour vous connecter en tant que nouvel
     utilisateur normal, vous enregistrer et vous déconnecter. Pour
     l’étape suivante, connectez-vous avec le nom ‘SuperUser’ en
     utilisant le mot de passe ‘SuperUser’ que vous avez indiqué
     précédemment et accordez les droits administrateur ou modérateur à
     vous utilisateur mumble nouvellement enregistré et créez quelques
     salons.

     Les champs de ‘mumble-server-configuration’ disponibles sont :

     ‘package’ (par défaut : ‘mumble’)
          Paquet qui contient ‘bin/mumble-server’.

     ‘user’ (par défaut : ‘"mumble-server"’)
          Utilisateur qui lancera le serveur Mumble.

     ‘group’ (par défaut : ‘"mumble-server"’)
          Groupe de l’utilisateur qui lancera le serveur Mumble.

     ‘port’ (par défaut : ‘64738’)
          Port sur lequel le serveur écoutera.

     ‘welcome-text’ (par défaut : ‘""’)
          Texte de bienvenue envoyé aux clients lors de leur connexion.

     ‘server-password’ (par défaut : ‘""’)
          Mot de passe que les clients devront entrer pour se connecter.

     ‘max-users’ (par défaut : ‘100’)
          Nombre maximum d’utilisateurs qui peuvent se connecter à ce
          serveur en même temps.

     ‘max-user-bandwidth’ (par défaut : ‘#f’)
          Trafic de voix maximum qu’un utilisateur peut envoyer par
          seconde.

     ‘database-file’ (par défaut : ‘"/var/lib/mumble-server/db.sqlite"’)
          Nom de fichier de la base de données sqlite. L’utilisateur du
          service deviendra propriétaire du répertoire.

     ‘log-file’ (par défaut : ‘"/var/log/mumble-server/mumble-server.log"’)
          Nom du fichier de journal. L’utilisateur du service deviendra
          propriétaire du répertoire.

     ‘autoban-attempts’ (par défaut : ‘10’)
          Nombre maximum de connexions qu’un utilisateur peut faire
          pendant ‘autoban-timeframe’ sans être banni automatiquement
          pour ‘autoban-time’.

     ‘autoban-timeframe’ (par défaut : ‘120’)
          Durée du temps pendant lequel le nombre de connexions est
          compté.

     ‘autoban-time’ (par défaut : ‘300’)
          Durée du bannissement automatique en secondes.

     ‘opus-threshold’ (par défaut : ‘100’)
          Pourcentage des clients qui doivent supporter opus avant de
          passer sur le codec audio opus.

     ‘channel-nesting-limit’ (par défaut : ‘10’)
          Profondeur maximum des canaux.

     ‘channelname-regex’ (par défaut : ‘#f’)
          Une chaîne de la forme d’une expression régulière Qt que les
          noms de canaux doivent respecter.

     ‘username-regex’ (par défaut : ‘#f’)
          Une chaîne de la forme d’une expression régulière Qt que les
          noms d’utilisateurs doivent respecter.

     ‘text-message-length’ (par défaut : ‘5000’)
          Taille maximum en octets qu’un utilisateur peut envoyer en un
          seul message textuel.

     ‘image-message-length’ (par défaut : ‘(* 128 1024)’)
          Taille maximum en octets qu’un utilisateur peut envoyer en une
          seule image.

     ‘cert-required?’ (par défaut : ‘#f’)
          Si la valeur est ‘#t’ les clients utilisant une
          authentification par mot de passe faible ne seront pas
          acceptés. Les utilisateurs doivent compléter l’assistant de
          configuration des certificats pour rejoindre le serveur.

     ‘remember-channel?’ (paramètre de : ‘#f’)
          Indique si mumble-server devrait se rappeler du dernier canal
          dans lequel étaient les utilisateurs au moment de leur
          déconnexion et les y remettre lorsqu’ils se reconnectent.

     ‘allow-html?’ (par défaut : ‘#f’)
          Indique si le html est autorisé dans les messages textuels,
          les commentaires utilisateurs et les descriptions des canaux.

     ‘allow-ping?’ (par défaut : ‘#f’)
          Mettre à vrai expose le nombre d’utilisateurs, le nombre
          d’utilisateurs maximum et la bande passante maximale du
          serveur par client aux utilisateurs non connectés. Dans le
          client Mumble, cette information est affichée dans la boîte de
          dialogue de connexion.

          Désactiver ce paramètre empêchera le serveur d’être
          publiquement listé.

     ‘bonjour?’ (par défaut : ‘#f’)
          Indique si le serveur s’annonce sur le réseau local à travers
          le protocole bonjour.

     ‘send-version?’ (par défaut : ‘#f’)
          Indique si la version du serveur mumble-server doit être
          exposée dans les requêtes ping.

     ‘log-days’ (par défaut : ‘31’)
          Mumlbe stocke aussi les journaux en base de données, qui sont
          accessible via RPC. La valeur par défaut est 31 jours, mais
          vous pouvez le mettre à 0 pour les garder pour toujours ou à
          -1 pour désactiver la journalisation dans la base de données.

     ‘obfuscate-ips?’ (par défaut : ‘#t’)
          Indique si les IP enregistrées doivent être cachées pour
          protéger la vie privée des utilisateurs.

     ‘ssl-cert’ (par défaut : ‘#f’)
          Nom de fichier du certificat SSL/TLS utilisé pour les
          connexions chiffrées.

               (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
     ‘ssl-key’ (par défaut : ‘#f’)
          Chemin de fichier vers la clef privée ssl pour les connexions
          chiffrées.
               (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")

     ‘ssl-dh-params’ (par défaut : ‘#f’)
          Nom de fichier d’un fichier encodé en PEM avec les paramètres
          Diffie-Hellman pour le chiffrement SSL/TLS. Autrement vous
          pouvez indiquer ‘"@ffdhe2048"’, ‘"@ffdhe3072"’,
          ‘"@ffdhe4096"’, ‘"@ffdhe6144"’ ou ‘"@ffdhe8192"’ pour utiliser
          les paramètres inclus de la RFC 7919.

     ‘ssl-ciphers’ (par défaut : ‘#f’)
          L’option ‘ssl-ciphers’ permet de choisir les suites de
          chiffrement disponibles pour SSL/TLS.

          Cette option est spécifiée en utilisant l’OpenSSL cipher list
          notation
          (https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT).

          Nous vous recommandons d’essayer votre chaîne de suites de
          chiffrements avec « openssl ciphers <chaîne> » avant de
          l’indiquer ici, pour avoir une idée des suites de chiffrement
          que vous aurez. Après avoir indiqué cette option, nous vous
          recommandons d’inspecter les journaux du serveur Mumble pour
          vous assurer que Mumble utilise les suites de chiffrements
          auxquelles vous vous attendez.

               Remarque : Modifier cette option peut impacter la
               rétrocompatibilité de votre serveur Mumble, et peut
               empêcher que des clients Mumble anciens se connectent.

     ‘public-registration’ (par défaut : ‘#f’)
          Doit être un enregistrement
          ‘<mumble-server-public-registration-configuration>’ ou ‘#f’.

          Vous pouvez aussi enregistrer votre serveur dans la liste des
          serveurs publiques que le client ‘mumble’ affiche au
          démarrage. Vous ne pouvez pas enregistrer votre serveur si
          vous avez un ‘server-password’ ou ‘allow-ping’ à ‘#f’.

          Cela peut prendre quelques heures avant d’arriver sur la liste
          publique.

     ‘file’ (par défaut : ‘#f’)
          Version alternative de cette configuration : si vous indiquez
          quelque chose, le reste est ignoré.

 -- Type de données : mumble-server-public-registration-configuration
     Configuration pour l’enregistrement public du service
     mumble-server.

     ‘name’
          C’est le nom d’affichage de votre serveur. Ne pas le confondre
          avec le nom d’hôte.

     ‘password’
          Un mot de passe pour identifier votre enregistrement. Les
          mises à jours suivantes devront utiliser le même mot de passe.
          Ne le perdez pas.

     ‘url’
          Cela devrait être le lien ‘http://’ ou ‘https://’ vers votre
          site web.

     ‘hostname’ (par défaut : ‘#f’)
          Par défaut votre serveur sera listé par son adresse IP. Si
          cette option est indiquée votre serveur sera listé par son nom
          d’hôte.

     Avertissement d’obsolescence : Pour des raisons historiques, toutes
     les procédures ‘mumble-server-’ ci-dessus sont aussi exportées avec
     le préfixe ‘murmur-’ à la place. Il est recommandé de commencer à
     utiliser ‘mumble-server-’ à partir de maintenant.


File: guix.fr.info,  Node: Services de partage de fichiers,  Next: Services de surveillance,  Prev: Services de téléphonie,  Up: Services

12.9.15 Services de partage de fichiers
---------------------------------------

Le module ‘(gnu services file-sharing)’ fournit des services qui aident
au transfert de fichiers sur des réseaux de partage en pair-à-pair.

Service du démon Transmission
.............................

Transmission (https://transmissionbt.com/) est un client BitTorrent
flexibe qui propose un éventail d’interfaces graphiques et en ligne de
commande. Un service ‘transmission-daemon-service-type’ fournit la
variante sans interface de Transmission, ‘transmission-daemon’, en tant
que service du système, ce qui permet aux utilisateurs de partager des
fichiers via BitTorrent même lorsqu’ils ne sont pas connectés.

 -- Variable Scheme : transmission-daemon-service-type
     Le type de service pour le démon du client BitTorrent Transmission.
     Sa valeur doit être un enregistrement
     ‘trasnmission-daemon-configuration’ comme dans cet exemple :

          (service transmission-daemon-service-type
                   (transmission-daemon-configuration
                    ;; Restreint l'accès à l'interface RPC ("control")
                    (rpc-authentication-required? #t)
                    (rpc-username "transmission")
                    (rpc-password
                     (transmission-password-hash
                      "transmission" ; mot de passe souhaité
                      "uKd1uMs9"))   ; valeur de sel arbitraire

                    ;; Accepte les requêtes de cet hôte et d'autres sur le
                    ;; réseau local
                    (rpc-whitelist-enabled? #t)
                    (rpc-whitelist '("::1" "127.0.0.1" "192.168.0.*"))

                    ;; Limite la bande passant utilisée pendant les heures de bureau
                    (alt-speed-down (* 1024 2)) ;   2 Mo/s
                    (alt-speed-up 512)          ; 512 ko/s

                    (alt-speed-time-enabled? #t)
                    (alt-speed-time-day 'weekdays)
                    (alt-speed-time-begin
                     (+ (* 60 8) 30))           ; 8:30
                    (alt-speed-time-end
                     (+ (* 60 (+ 12 5)) 30))))  ; 17:30

   Une fois le service démarré, vous pouvez interagir avec le démon à
travers son interface web (sur ‘https://localhost:9091’ ou en utilisant
la ligne de commande ‘transmission-remote’, disponible dans le paquet
‘transmission’. (les utilisateurs d’Emacs peuvent aussi regarder le
paquet ‘emacs-transmission’). Les deux communiquent avec le démon à
travers son interface d’appel de procédure distante (RPC), qui est
disponible par défaut pour tous les utilisateurs du système ; vous
voudrez peut-être changer cela en indiquant des valeurs dans les
paramètres ‘rpc-authentication-required?’, ‘rpc-username’ et
‘rpc-password’, comme cela est montré et documenté plus bas.

   La valeur de ‘rpc-password’ doit toujours être un hash de mot de
passe du type généré et utilisé par les clients Transmission. Il peut
être copié directement d’un fichier ‘settings.json’ existant, si au
autre client Transmission est déjà utilisé. Sinon, les procédures
‘transmission-password-hash’ et ‘transmission-random-salt’ fournies par
ce module peuvent être utilisées pour obtenir un hash convenable.

 -- Procédure Scheme : transmission-password-hash PASSWORD SALT
     Renvoie une chaîne contenant le résultat du hash de PASSWORD avec
     SALT, au format reconnu par les clients Transmission pour leur
     paramètre ‘rpc-password’.

     SALT doit être une chaîne de huit caractères. La procédure
     ‘transmission-random-salt’ est utile pour générer une valeur
     correcte au hasard.

 -- Procédure Scheme : transmission-random-salt
     Renvoie une chaîne contenant une valeur de sel à huit caractères
     aléatoires du type généré et utilisé par les clients de
     Transmission, utilisable avec la procédure
     ‘transmission-password-hash’.

   Ces procédures sont disponibles dans la REPL Guile démarrée avec
‘guix repl’ (*note Invoquer guix repl::). C’est utile pour obtenir une
valeur de sel aléatoire à donner au second paramètres de
‘transmission-password-hash’ comme dans cet exemple de session :

     $ guix repl
     scheme@(guix-user)> ,use (gnu services file-sharing)
     scheme@(guix-user)> (transmission-random-salt)
     $1 = "uKd1uMs9"

   Autrement, vous pouvez générer un hash de mot de passe complet en une
seule étape :

     scheme@(guix-user)> (transmission-password-hash "transmission"
     (transmission-random-salt))
     $2 = "{c8bbc6d1740cd8dc819a6e25563b67812c1c19c9VtFPfdsX"

   La chaîne qui en résulte peut être utilisée telle quelle comme valeur
de ‘rpc-password’, ce qui permet de garder les mots de passes cachés
même dans la configuration du système d’exploitation.

   Les fichiers torrent téléchargés par le démon ne sont directement
accessibles qu’aux utilisateurs dans le groupe « transmission », qui
reçoivent l’accès en lecture seule au répertoire spécifié dans le
paramètre ‘download-dir’ (et aussi le répertoire spécifié par
‘incomplete-dir’ si ‘incomplete-dir-enabled?’ vaut ‘#t’). Les fichiers
téléchargés peuvent être déplacés vers un autre répertoire ou supprimés
complètement avec ‘transmission-remote’ avec les options ‘--move’ et
‘--remove-and-delete’.

   Si le paramètre ‘watch-dir-enabled?’ vaut ‘#t’, les utilisateurs du
groupe « transmission » peuvent aussi placer des fichiers ‘.torrent’
dans le répertoire spécifié par ‘watch-dir’ pour que les torrents
correspondants soient ajoutés par le démon. Le paramètre
‘trash-original-torrent-files?’ indique si le démon doit supprimer ces
fichiers après les avoir traités.

   Certains paramètres de configuration du démon peuvent être changés
temporairement par ‘transmission-remote’ et des outils similaires. Pour
annuler ces changements, utiliser l’action ‘reload’ du service pour que
le démon recharge ses paramètres sur disque :

     # herd reload transmission-daemon

   La liste complète des paramètres disponibles est définie par le type
de données ‘transmission-daemon-configuration’.

 -- Type de données : transmission-daemon-configuration
     Le type de données représentant les paramètres de configuration du
     démon Transmission. Ils correspondent directement aux paramètres
     reconnus par les clients Transmission dans le fichier
     ‘settings.json’.

   Les champs de ‘transmission-daemon-configuration’ disponibles sont :

 -- paramètre de ‘transmission-daemon-configuration’ : package
          transmission
     Le paquet Transmission à utiliser.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif stop-wait-period
     Le temps d’attente à l’arrêt du service avant que
     ‘transmission-daemon’ ne termine et tue ses processus. Cela permet
     au démon de tout mettre en ordre et d’envoyer une dernière mise à
     jour aux trackers avant de s’arrêter. Vous devrez peut-être
     augmenter cette valeur pour les hôtes lents, ou les hôtes avec une
     connexion réseau lente.

     La valeur par défaut est ‘10’.

 -- paramètre de ‘transmission-daemon-configuration’ : string
          download-dir
     Le répertoire dans lequel les fichiers torrent sont téléchargés.

     La valeur par défaut est
     ‘"/var/lib/transmission-daemon/downloads"’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          incomplete-dir-enabled?
     Si la valeur est ‘#t’, les fichiers seront gardés dans
     ‘incomplete-dir’ tant que leur torrent est en cours de
     téléchargement, puis déplacés vers ‘download-dir’ une fois le
     torrent terminé. Sinon, les fichiers pour tous les torrents (dont
     ceux qui sont toujours en cours) seront placés dans ‘download-dir’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : peut-être-chaine
          incomplete-dir
     Le répertoire dans lequel les fichiers des torrents incomplets
     seront gardé si ‘incomplete-dir-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ : umask umask
     Le masque de droits d’accès à la création des fichiers téléchargés.
     voir la page de manuel de ‘umask’ pour plus d’informations.

     La valeur par défaut est ‘18’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          name-partial-files?
     Lorsque la valeur est ‘#t’, « .part » est ajouté à la fin du nom
     des fichiers partiellement téléchargés.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          preallocation-mode preallocation
     Le mode de préallocation d’espace pour les fichiers téléchargés,
     parmi ‘none’, ‘fast’ (ou ‘sparse’) ou ‘full’. Spécifiez ‘full’ pour
     minimiser la fragmentation du disque en sacrifiant un peu de
     vitesse de création du fichier.

     La valeur par défaut est ‘fast’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          watch-dir-enabled?
     Si la valeur est ‘#t’, le répertoire spécifié par ‘watch-dir’ sera
     surveillé en attendant de nouveaux fichiers ‘.torrent’ et les
     torrents qu’ils décrivent seront ajoutés automatiquement (et le
     fichier d’origine supprimé, si ‘trash-original-torrent-files?’ vaut
     ‘#t’).

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : peut-être-chaine
          watch-dir
     Le répertoire à surveiller pour les fichiers ‘.torrent’ indiquant
     de nouveaux torrents à ajouter, lorsque ‘watch-dir-enabled’ vaut
     ‘#t’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          transh-original-torrent-files?
     Lorsque la valeur est ‘#t’, les fichiers ‘.torrent’ seront
     supprimés du répertoire de surveillance une fois leur torrent
     ajouté (voir ‘watch-directory-enabled?’).

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          speed-limit-down-enabled?
     Lorsque la valeur est ‘#t’, la vitesse de téléchargement du démon
     sera limitée par la vitesse spécifiée par ‘speed-limit-down’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif speed-limit-down
     La vitesse de téléchargement par défaut maximale, en kilooctets par
     seconde.

     La valeur par défaut est ‘100’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          speed-limit-up-enabled?
     Lorsque la valeur est ‘#t’, la vitesse de téléversement du démon
     sera limitée par la vitesse spécifiée par ‘speed-limit-up’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif speed-limit-up
     La vitesse globale de téléversement maximale par défaut, en
     kilooctets par seconde.

     La valeur par défaut est ‘100’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          alt-speed-enabled?
     Lorsque la valeur est ‘#t’, les limites de vitesse alternatives
     ‘alt-speed-down’ et ‘alt-speed-up’ sont utilisée (au lieu de
     ‘speed-limit-down’ et ‘speed-limit-up’, si elles sont activées)
     pour contraindre l’utilisation de la bande passante par le démon.
     Elles peuvent être programmées automatiquement à certains moment de
     la semaine ; voir ‘alt-speed-time-enabled?’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif alt-speed-down
     La vitesse de téléchargement globale alternative maximale, en
     kilooctets par seconde.

     La valeur par défaut est ‘50’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif alt-speed-up
     La vitesse de téléversement globale alternative maximale, en
     kilooctets par seconde.

     La valeur par défaut est ‘50’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          alt-speed-time-enabled?
     Lorsque la valeur est ‘#t’, les limites de vitesses alternatives
     ‘alt-speed-down’ et ‘alt-speed-up’ seront activées automatiquement
     aux périodes spécifiées par ‘alt-speed-time-day’,
     ‘alt-speed-time-begin’ et ‘alt-time-speed-end’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : day-list
          alt-speed-time-day
     Les jours de la semaine pendant lesquels le programme de vitesse
     alternative devrait être utilisé, spécifié soit comme une liste de
     jours (‘sunday’, ‘monday’, etc), soit en utilisant les symboles
     ‘weekdays’, ‘weekends’ ou ‘all’.

     La valeur par défaut est ‘all’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif alt-speed-time-begin
     Le moment de la journée auquel activer les limites de vitesse
     alternatives, en nombre de minutes à partir de minuit.

     La valeur par défaut est ‘540’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif alt-speed-time-end
     Le moment de la journée auquel désactiver les limites de vitesses
     alternatives, en nombre de minutes à partir de minuit.

     La valeur par défaut est ‘1020’.

 -- paramètre de ‘transmission-daemon-configuration’ : string
          bind-address-ipv4
     L’IP sur laquelle écouter les connexions de pairs, ou « 0.0.0.0 »
     pour écouter sur toutes les interfaces réseaux.

     La valeur par défaut est ‘"0.0.0.0"’.

 -- paramètre de ‘transmission-daemon-configuration’ : string
          bind-address-ipv6
     L’adresse IPv6 sur laquelle écouter les connexions de pairs, ou «
     :: » pour écouter sur toutes les interfaces réseaux.

     La valeur par défaut est ‘"::"’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          peer-port-random-on-start?
     Si la valeur est ‘#t’, lorsque le démon démarre il choisira un port
     au hasard sur lequel écouter les connexions des pairs, à partir
     d’un intervalle spécifié (inclusivement) par ‘peer-port-random-low’
     et ‘peer-port-random-high’. Sinon, il écoutera sur le port spécifié
     par ‘peer-port’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : port-number
          peer-port-random-low
     Le plus petit numéro de port possible lorsque
     ‘peer-port-random-on-start?’ vaut ‘#t’.

     La valeur par défaut est ‘49152’.

 -- paramètre de ‘transmission-daemon-configuration’ : port-number
          peer-port-random-high
     Le plus grand numéro de port possible lorsque
     ‘peer-port-random-on-start’ vaut ‘#t’.

     La valeur par défaut est ‘65535’.

 -- paramètre de ‘transmission-daemon-configuration’ : port-number
          peer-port
     Le port sur lequel écouter pour les connexions des pairs lorsque
     ‘peer-port-random-on-start?’ vaut ‘#f’.

     La valeur par défaut est ‘51413’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          port-forwarding-enabled?
     Si la valeur est ‘#t’, le démon essayera de configurer le renvoie
     de port vers une passerelle amont automatiquement avec UPnP et
     NAT-PMP.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : encryption-mode
          encryption
     Vos préférences de chiffrement pour les connexions avec les pairs,
     parmi ‘prefer-unencrypted-connections’,
     ‘prefer-encrypted-connections’ et ‘require-encrypted-connections’.

     La valeur par défaut est ‘prefer-encrypted-connections’.

 -- paramètre de ‘transmission-daemon-configuration’ : peut-être-chaine
          peer-congestion-algorithm
     L’algorithme de contrôle de congestion TCP à utiliser pour les
     connexions avec les pairs, spécifié avec une chaîne reconnue par le
     système d’exploitation dans les appels à ‘setsockopt’. Lorsque la
     valeur n’est pas spécifiée, le système d’exploitation utilise la
     valeur par défaut.

     Remarquez que sur les systèmes GNU/Linux, le noyau doit être
     configuré pour permettre aux processus d’utiliser un algorithme de
     contrôle de congestion qui n’est pas dans l’ensemble par défaut ;
     sinon, il refusera les demande avec « Opération non autorisée ».
     Pour voir les algorithmes disponibles sur votre système et ceux qui
     sont actuellement autorisés, regardez le contenu des fichiers
     ‘tcp_available_congestion_control’ et
     ‘tcp_allowed_congestion_control’ dans le répertoire
     ‘/proc/sys/net/ipv4’.

     Par exemple, pour que le démon Transmission utilise l’algorithme de
     contrôle de congestion TCP de basse priorité
     (http://www-ece.rice.edu/networks/TCP-LP/), vous devrez modifier la
     configuration de votre noyau pour construire la prise en charge de
     cet algorithme, puis mettre à jour votre configuration de système
     d’exploitation pour permettre son utilisation en ajoutant un
     service ‘sysctl-service-type’ (ou en mettant à jour la
     configuration de ce service s’il existe déjà) avec les lignes
     suivantes :

          (service sysctl-service-type
                   (sysctl-configuration
                    (settings
                     ("net.ipv4.tcp_allowed_congestion_control" .
                      "reno cubic lp"))))

     La configuration de démon Transmission peut être mise à jour avec

          (peer-congestion-algorithm "lp")

     et le système peut être reconfiguré pour que les changements
     prennent effet.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          tcp-type-of-service peer-soket-tos
     Le type de service à demander pour les paquets TCP sortants, entre
     ‘default’, ‘low-cost’, ‘throughput’, ‘low-delay’ et ‘reliability’.

     La valeur par défaut est ‘default’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif peer-limit-global
     La limite globale pour le nombre de pairs connectés.

     La valeur par défaut est ‘200’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif peer-limit-per-torrent
     La limite par torrent de pairs connectés.

     La valeur par défaut est ‘50’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif upload-slots-per-torrent
     Le nombre maximum de pairs auxquels le démon enverra des données en
     même temps pour chaque torrent.

     La valeur par défaut est ‘14’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif peer-id-ttl-hours
     La durée maximum, en heures, de l’identifiant de pair associé à
     chaque torrent public avant qu’il ne soit régénéré.

     La valeur par défaut est ‘6’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          blocklist-enabled?
     Lorsque la valeur est ‘#t’, le démon ignorera les pairs mentionnés
     dans la dernière liste de blocage téléchargée depuis
     ‘blocklist-url’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : peut-être-chaine
          blocklist-url
     L’URL d’une liste de blocage de pairs (au format P2P-plaintext ou
     eMule ‘.dat’) périodiquement téléchargés et appliqués lorsque
     ‘blocklist-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          download-queue-enabled?
     Si la valeur est ‘#t’, le démon sera limité à téléchargé au plus
     ‘download-queue-size’ torrents non bloqués en même temps.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif download-queue-size
     La taille de la queue de téléchargement du démon, qui limite le
     nombre de torrents non bloqués qu’il télécharge en même temps
     lorsque ‘download-queue-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          seed-queue-enabled?
     Si la valeur est ‘#t’, le démon sera limité à envoyer au plus
     ‘seed-queue-size’ torrents non bloqués en même temps.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif seed-queue-size
     La taille de la queue d’envoi du démon, qui limite le nombre de
     torrents non bloqué qu’il enverra en même temps lorsque
     ‘seed-queue-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘10’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          queue-stalled-enabled?
     Lorsque la valeur est ‘#t’, le démon considère les torrents pour
     lesquels il n’a pas partagé de données dans les dernières
     ‘queue-stalled-minutes’ comme bloqué et ne les contera pas dans les
     limites ‘download-queue-size’ et ‘seed-queue-size’.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif queue-stalled-minutes
     La période maximale, en minutes, pendant laquelle un torrent peut
     être inactif avant d’être considéré comme bloqué, lorsque
     ‘queue-stalled-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘30’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          ratio-limit-enabled?
     Lorsque la valeur est ‘#t’, un torrent téléchargé sera
     automatiquement mis en pause une fois qu’il atteint le ratio
     spécifié par ‘ratio-limit’.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          non-negative-rational ratio-limit
     Le ratio auquel un torrent téléchargé sera mis en pause, lorsque
     ‘ratio-limit-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘2.0’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          idle-seeding-limit-enabled?
     Lorsque la valeur est ‘#t’, un torrent téléchargé sera
     automatiquement mis en pause s’il est inactif depuis
     ‘idle-seeding-limit’ minutes.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif idle-seeding-limit
     La durée maximum, en minutes, pendant laquelle un torrent
     téléchargé peut être inactif avant d’être mis en pause, quand
     ‘idle-seeding-limit-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘30’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          dht-enabled?
     Active le protocole de table de hash (DHT) distribuée
     (http://bittorrent.org/beps/bep_0005.html), qui prend en charge les
     torrents sans tracker.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          lpd-enabled?
     Active la découverte de pairs locaux
     (https://en.wikipedia.org/wiki/Local_Peer_Discovery) (LPD), qui
     permet de découvrir des pairs sur le réseau local et peut réduire
     la quantité de données envoyées sur Internet.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          pex-enabled?
     Active l’échange de pairs
     (https://en.wikipedia.org/wiki/Peer_exchange) (PEX), qui réduit la
     dépendance du démon aux trackers externes et peut améliorer les
     performances.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          utp-enabled?
     Active le protocole de micro transport
     (http://bittorrent.org/beps/bep_0029.html) (uTP), qui cherche à
     réduire l’impact du trafic BitTorrent sur les autres utilisateurs
     du réseau local tout en utilisant toute la bande passante
     disponible.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          rpc-enabled?
     Si la valeur est ‘#t’, active l’interface d’appel de procédures
     distantes (RPC), qui permet de contrôler le démon à distance via
     son interface web, le client ‘transmission-remote’ en ligne de
     commande et des outils similaires.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : string
          rpc-bind-address
     L’adresse IP sur laquelle écouter les connexions RPC, ou « 0.0.0.0
     » pour écouter sur toutes les adresses IP.

     La valeur par défaut est ‘"0.0.0.0"’.

 -- paramètre de ‘transmission-daemon-configuration’ : port-number
          rpc-port
     Le port sur lequel écouter les connexions RPC entrantes.

     La valeur par défaut est ‘9091’.

 -- paramètre de ‘transmission-daemon-configuration’ : string rpc-url
     Le préfixe de chemin à utiliser dans l’URL du point d’accès RPC.

     La valeur par défaut est ‘"/transmission/"’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          rpc-authentication-required?
     Lorsque la valeur est ‘#t’, les clients doivent s’authentifier
     (voir ‘rpc-username’ et ‘rpc-password’) quand ils utilisent
     l’interface RPC. Remarquez que cela a pour effet de bord de
     désactiver la liste d’hôtes (voir ‘rpc-host-whitelist-enabled?’).

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ : peut-être-chaine
          rpc-username
     Le nom d’utilisateur requis par les clients pour accéder à
     l’interface RPC lorsque ‘rpc-authentication-required?’ vaut ‘#t’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          peut-être-transmission-password-hash rpc-password
     Le mot de passe requis pour permettre aux clients d’accéder à
     l’interface RPC lorsque ‘rpc-authentication-required?’ vaut ‘#t’.
     Il doit être spécifié avec un hash de mot de passe au format
     reconnu par les clients de Transmission, soit copié d’un fichier
     ‘settings.json’ existant, soit généré avec la procédure
     ‘transmission-password-hash’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          rpc-whitelist-enabled?
     Lorsque la valeur est ‘#t’, les requêtes de RPC seront acceptées
     seulement si elles proviennent d’une adresse spécifiée dans
     ‘rpc-whitelist’.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : string-list
          rpc-whitelist
     La liste des adresse IP et IPv6 pour lesquelles les requêtes RPC
     sont acceptées lorsque ‘rpc-whitelist-enabled?’ vaut ‘#t’. Vous
     pouvez spécifier des jokers avec ‘*’.

     La valeur par défaut est ‘("127.0.0.1" "::1")’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          rpc-host-whitelist-enabled?
     Lorsque la valeur est ‘#t’, les requêtes RPC seront acceptée
     lorsqu’elles sont adressées à un hôte nommé dans
     ‘rpc-host-whitelist’. Remarquez que les requêtes adressées à «
     localhost » ou « localhost. » ou à une adresse numérique, sont
     toujours acceptées indépendamment de ce paramètre.

     Remarquez aussi que cette fonctionnalité est désactivée lorsque
     ‘rpc-authentication-required?’ vaut ‘#t’.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : string-list
          rpc-host-whitelist
     La liste des noms d’hôte reconnus par le serveur RPC lorsque
     ‘rpc-host-whitelist-enabled?’ vaut ‘#t’.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘transmission-daemon-configuration’ : message-level
          message-level
     Le niveau de sévérité minimum des messages à enregistrer dans les
     journaux (dans ‘/var/log/transmission.log’) par le démon, entre
     ‘none’ (par de journalisation), ‘error’, ‘info’ et ‘debug’.

     La valeur par défaut est ‘info’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          start-added-torrents?
     Lorsque la valeur est ‘#t’, les torrents sont démarrés dès qu’ils
     sont ajoutés ; sinon ils sont ajouté et mis en pause.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          script-torrent-done-enabled?
     Lorsque la valeur est ‘#t’, le script spécifié par
     ‘script-torrent-done-filename’ sera invoqué à chaque fois qu’un
     torrent termine.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          peut-être-objet-fichier script-torrent-done-filename
     Un nom de fichier ou un simili-fichier spécifiant un script à
     lancer à chaque fois qu’un torrent termine, lorsque
     ‘script-torrent-done-enabled?’ est ‘#t’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          scrape-paused-torrents-enabled?
     Lorsque la valeur est ‘#t’, le démon contactera les trackers pour
     le torrent même si le torrent est en pause.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘transmission-daemon-configuration’ :
          entier-non-négatif cache-size-mb
     La quantité de mémoire, en mégaoctets, à allouer pour le cache
     mémoire du démon. Une grande valeur peut améliorer les performances
     en réduisant le fréquence des entrées-sorties sur le disque.

     La valeur par défaut est ‘4’.

 -- paramètre de ‘transmission-daemon-configuration’ : boolean
          prefetch-enabled?
     Lorsque la valeur est ‘#t’, le démon essaiera d’améliorer les
     performances des entrées-sorties en disant au système quelles
     données seront probablement bientôt lues pour satisfaire les
     requêtes des pairs.

     La valeur par défaut est ‘#t’.


File: guix.fr.info,  Node: Services de surveillance,  Next: Services Kerberos,  Prev: Services de partage de fichiers,  Up: Services

12.9.16 Services de surveillance
--------------------------------

Service Tailon
..............

Tailon (https://tailon.readthedocs.io/) est une application web pour
visualiser et chercher des fichiers de journaux.

   L’exemple suivant configurera le service avec les valeurs par défaut.
Par défaut, on peut accéder à Tailon sur le pour 8080
(‘http://localhost:8080’).

     (service tailon-service-type)

   L’exemple suivant personnalise un peu plus la configuration de
Tailon, en ajoutant ‘sed’ à la liste des commandes autorisées.

     (service tailon-service-type
              (tailon-configuration
                (config-file
                  (tailon-configuration-file
                    (allowed-commands '("tail" "grep" "awk" "sed"))))))

 -- Type de données : tailon-configuration
     Type de données représentant la configuration de Tailon. Ce type a
     les paramètres suivants :

     ‘config-file’ (par défaut : ‘(tailon-configuration-file)’)
          Le fichier de configuration à utiliser pour Tailon. Ce champ
          peut contenir un enregistrement “tailon-configuration-file” ou
          n’importe quelle gexp (*note G-Expressions::).

          Par exemple, pour utiliser un fichier local à la place, on
          peut utiliser la fonction ‘local-file’ :

               (service tailon-service-type
                        (tailon-configuration
                          (config-file (local-file "./my-tailon.conf"))))

     ‘package’ (par défaut : ‘tailon’)
          Le paquet tailon à utiliser.

 -- Type de données : tailon-configuration-file
     Type de données représentant les options de configuration de
     Tailon. Ce type a les paramètres suivants :

     ‘files’ (par défaut : ‘(list "/var/log")’)
          Liste des fichiers à afficher. La liste peut inclure des
          chaînes pour des fichiers simple ou des répertoires, ou une
          liste, où le premier élément est le nom d’un sous-section et
          le reste des fichiers ou des répertoires de cette
          sous-section.

     ‘bind’ (par défaut : ‘"localhost:8080"’)
          Adresse et port sur lesquels Tailon écoute.

     ‘relative-root’ (par défaut : ‘#f’)
          Chemin de l’URL à utiliser pour Tailon, ou ‘#f’ pour ne pas
          utiliser de chemin.

     ‘allow-transfers?’ (par défaut : ‘#t’)
          Permet de télécharger les journaux dans l’interface web.

     ‘follow-names?’ (par défaut : ‘#t’)
          Permet de surveiller des fichiers qui n’existent pas encore.

     ‘tail-lines’ (par défaut : ‘200’)
          Nombre de lignes à lire initialement dans chaque fichier.

     ‘allowed-commands’ (par défaut : ‘(list "tail" "grep" "awk")’)
          Commandes autorisées. Par défaut, ‘sed’ est désactivé.

     ‘debug?’ (par défaut : ‘#f’)
          Configurez ‘debug?’ à ‘#t’ pour montrer les messages de
          débogage.

     ‘wrap-lines’ (par défaut : ‘#t’)
          État initial du retour à la ligne dans l’interface web.
          Configurez l’option à ‘#t’ pour retourner à la ligne (par
          défaut) ou à ‘#f’ pour ne pas retourner à la ligne au début.

     ‘http-auth’ (par défaut : ‘#f’)
          Type d’authentification HTTP à utiliser. Indiquez ‘#f’ pour
          désactiver l’authentification (par défaut). Les valeur
          supportées sont ‘"digest"’ et ‘"basic"’.

     ‘users’ (par défaut : ‘#f’)
          Si l’authentification HTTP est activée (voir ‘http-auth’),
          l’accès sera restreint aux identifiants fournis ici. Pour
          configurer des utilisateurs, utilisez une liste de paires, où
          le premier élément de la paire est le nom d’utilisateur et le
          second élément est le mot de passe.

               (tailon-configuration-file
                 (http-auth "basic")
                 (users     '(("user1" . "password1")
                              ("user2" . "password2"))))

Service Darkstat
................

Darkstat est un « renifleur de paquets » qui capture le trafic réseau,
calcul des statistiques sur l’utilisation et sert des rapport sur HTTP.

 -- Variable : Variable Scheme darkstat-service-type
     C’est le type de service pour le service darkstat
     (https://unix4lyfe.org/darkstat/), sa valeur doit être un
     enregistrement ‘darkstat-configuration’ comme dans cet exemple :

          (service darkstat-service-type
                   (darkstat-configuration
                     (interface "eno1")))

 -- Type de données : darkstat-configuration
     Type de données représentant la configuration de ‘darkstat’.

     ‘package’ (par défaut : ‘darkstat’)
          Le paquet darkstat à utiliser.

     ‘interface’
          Capture le trafic sur l’interface réseau spécifiée.

     ‘port’ (par défaut : ‘"667"’)
          Lie l’interface web sur le port spécifié.

     ‘bind-address’ (par défaut : ‘"127.0.0.1"’)
          Lie l’interface web sur l’adresse spécifiée.

     ‘base’ (par défaut : ‘"/"’)
          Spécifie le chemin de base des URL. C’est utile si on accède à
          ‘darkstat’ à travers un proxy inverse.

Service d’export de nœud de Prometheus
......................................

L’exportateur de nœuds de Prometheus rend disponible les statistiques
sur le matériel et le système d’exploitation fournies par le noyau Linux
pour le système de surveillance Prometheus. Ce service devrait être
déployé sur tous les nœuds physiques et les machines virtuelles, où vous
voulez surveiller ces statistiques.

 -- Variable : Variable Scheme prometheus-node-exporter-service-type
     C’est le type de service pour le service prometheus-node-exporter
     (https://github.com/prometheus/node_exporter/), sa valeur doit être
     un enregistrement ‘prometheus-node-exporter-configuration’.

          (service prometheus-node-exporter-service-type)

 -- Type de données : prometheus-node-exporter-configuration
     Type de données représentant la configuration de ‘node_exporter’.

     ‘package’ (par défaut : ‘go-github-com-prometheus-node-exporter’)
          Le paquet prometheus-node-exporter à utiliser.

     ‘web-listen-address’ (par défaut : ‘":9100"’)
          Lie l’interface web sur l’adresse spécifiée.

     ‘textfile-directory’ (par défaut : ‘"/var/lib/prometheus/node-exporter"’)
          Ce répertoire est utilisable pour exporter des métriques
          spécifiques à cette machine. Les fichiers contenant les
          métriques au format texte, dont le nom de fichier termine par
          ‘.prom’ devraient être placés dans ce répertoire.

     ‘extra-options’ (par défaut : ‘'()’)
          Options supplémentaires à passer au lancement de l’exportateur
          de nœuds de Prometheus.

Server zabbix
.............

Zabbix est un système de surveillance très performant qui peut récupérer
des données de plusieurs sources et fournir les résultats sur une
interface web. Les alertes et les rapport sont inclus, ainsi que les
“modèles” pour les métriques communes des systèmes d’exploitation comme
l’utilisation du réseau, la charge CPU et la consommation de l’espace
disque.

   Ce service fournit le service de surveillance Zabbix central. Vous
aurez aussi besoin de *note ‘zabbix-front-end-service-type’:
zabbix-front-end. pour configurer Zabbix et afficher les résultats et
éventuellement de *note ‘zabbix-agent-service-type’: zabbix-agent. sur
les machines qui doivent être surveillées (d’autres sources de données
sont prises en charge, comme *note Prometheus Node Exporter:
prometheus-node-exporter.).

 -- Variable : Variable Scheme zabbix-server-service-type
     C’est le type de service pour le service du serveur Zabbix. Sa
     valeur doit être un enregistrement ‘zabbix-serveur-configuration’,
     décrit ci-dessous.

 -- Type de données : zabbix-server-configuration
     Les champs de ‘zabbix-server-configuration’ disponibles sont :

     ‘zabbix-server’ (par défaut : ‘zabbix-server’) (type : simili-fichier)
          Le paquet zabbix-server.

     ‘user’ (par défaut : ‘"zabbix"’) (type : chaine)
          Utilisateur qui lancera le serveur Zabbix.

     ‘group’ (par défaut : ‘"zabbix"’) (type : groupe)
          Groupe qui lancera le serveur Zabbix.

     ‘db-host’ (par défaut : ‘"127.0.0.1"’) (type : chaine)
          Le nom d’hôte de la base de données.

     ‘db-name’ (par défaut : ‘"zabbix"’) (type : chaine)
          Nom de la base de données.

     ‘db-user’ (par défaut : ‘"zabbix"’) (type : chaine)
          Utilisateur de la base de données.

     ‘db-password’ (par défaut : ‘""’) (type : chaine)
          Mot de passe de la base de données. Utilisez plutôt
          ‘include-files’ avec ‘DBPassword=SECRET’ dans le fichier
          spécifié à la place.

     ‘db-port’ (par défaut : ‘5432’) (type : entier)
          Port de la base de données.

     ‘log-type’ (par défaut : ‘""’) (type : chaine)
          Spécifie où les messages de journalisation seront écrits :

             • ‘system’ - syslog.

             • ‘file’ - fichier spécifié par le paramètre ‘log-file’.

             • ‘console’ - sortie standard.

     ‘log-file’ (par défaut : ‘"/var/log/zabbix/server.log"’) (type : chaine)
          Nom du fichier de journal lorsque le paramètre ‘log-type’ vaut
          ‘file’.

     ‘pid-file’ (par défaut : ‘"/var/run/zabbix/zabbix_server.pid"’) (type : chaine)
          Nom du fichier de PID.

     ‘ssl-ca-location’ (par défaut : ‘"/etc/ssl/certs/ca-certificates.crt"’) (type : chaine)
          Emplacement des fichiers d’autorités de certification (AC)
          pour la vérification des certificats SSL du serveur.

     ‘ssl-cert-location’ (par défaut : ‘"/etc/ssl/certs"’) (type : chaine)
          Emplacement des certificats SSL des clients.

     ‘extra-options’ (par défaut : ‘""’) (type : extra-options)
          Options supplémentaires ajoutées à la fin du fichier de
          configuration du serveur Zabbix.

     ‘include-files’ (par défaut : ‘()’) (type : include-files)
          Vous pouvez inclure des fichiers individuels ou tous les
          fichiers d’un répertoire dans le fichier de configuration.

Agent zabbix
............

L’agent Zabbix récupère les informations sur le système pour le serveur
de surveillance Zabbix. Il a plusieurs vérificateurs intégrés et peut
être étendu avec des “paramètres utilisateurs”
(https://www.zabbix.com/documentation/current/en/manual/config/items/userparameters)
personnalisés.

 -- Variable : Variable Scheme zabbix-agent-service-type
     C’est le type de service du service de l’agent Zabbix. Sa valeur
     doit être un enregistrement ‘zabbix-agent-configuration’, décrit
     ci-dessous.

 -- Type de données : zabbix-agent-configuration
     Les champs de ‘zabbix-agent-configuration’ disponibles sont :

     ‘zabbix-agent’ (par défaut : ‘zabbix-agentd’) (type : simili-fichier)
          Le paquet zabbix-agent.

     ‘user’ (par défaut : ‘"zabbix"’) (type : chaine)
          Utilisateur qui lancera l’agent Zabbix.

     ‘group’ (par défaut : ‘"zabbix"’) (type : groupe)
          Groupe qui lancera l’agent Zabbix.

     ‘hostname’ (par défaut : ‘""’) (type : chaine)
          Noms d’hôte unique et sensible à la casse requis pour les
          vérifications actives et qui doit correspondre au nom d’hôte
          configuré sur le serveur.

     ‘log-type’ (par défaut : ‘""’) (type : chaine)
          Spécifie où les messages de journalisation seront écrits :

             • ‘system’ - syslog.

             • ‘file’ — fichier spécifié par le paramètre ‘log-file’.

             • ‘console’ - sortie standard.

     ‘log-file’ (par défaut : ‘"/var/log/zabbix/agent.log"’) (type : chaine)
          Nom du fichier de journal lorsque le paramètre ‘log-type’ vaut
          ‘file’.

     ‘pid-file’ (par défaut : ‘"/var/run/zabbix/zabbix_agent.pid"’) (type : chaine)
          Nom du fichier de PID.

     ‘server’ (par défaut : ‘("127.0.0.1")’) (type : liste)
          Liste d’adresses IP, éventuellement en notation CIDR ou de
          noms d’hôtes de serveurs Zabbix et de mandataires Zabbix. Les
          connexions entrantes ne seront acceptées que si elles viennent
          des hôtes listés ici.

     ‘server-active’ (par défaut : ‘("127.0.0.1")’) (type : liste)
          Liste de paires d’IP:port (ou nom d’hôte:port) de serveurs
          Zabbix et de mandataires Zabbix pour les vérifications
          actives. Si le port n’est pas spécifié, le port par défaut est
          utilisé. Si ce paramètre n’est pas spécifié, les vérifications
          actives sont désactivées.

     ‘extra-options’ (par défaut : ‘""’) (type : extra-options)
          Options supplémentaires ajoutées à la fin du fichier de
          configuration du serveur Zabbix.

     ‘include-files’ (par défaut : ‘()’) (type : include-files)
          Vous pouvez inclure des fichiers individuels ou tous les
          fichiers d’un répertoire dans le fichier de configuration.

Interface utilisateur Zabbix
............................

L’interface Zabbix fournit une interface web à Zabbix. Il n’a pas besoin
de tourner sur la même machine que le serveur Zabbix. Ce service
fonctionne en étendant les service *note PHP-FPM:: et *note NGINX:: avec
la configuration nécessaire à charger l’interface utilisateur Zabbix.

 -- Variable : Variable Scheme zabbix-front-end-service-type
     C’est le type de service de l’interface web de Zabbix. Sa valeur
     doit être un enregistrement ‘virtlog-configuration’, décrit plus
     bas.

 -- Type de données : zabbix-front-end-configuration
     Les champs de ‘zabbix-front-end-configuration’ disponibles sont :

     ‘zabbix-server’ (par défaut : ‘zabbix-server’) (type : simili-fichier)
          Le paquet du serveur Zabbix à utiliser.

     ‘nginx’ (par défaut : ‘()’) (type : liste)
          Liste de blocs *note ‘nginx-server-configuration’:
          nginx-server-configuration. pour l’interface Zabbix. Lorsque
          la valeur est vide, un bloc par défaut qui écoute sur le port
          80 est utilisé.

     ‘db-host’ (par défaut : ‘"localhost"’) (type : chaine)
          Le nom d’hôte de la base de données.

     ‘db-port’ (par défaut : ‘5432’) (type : entier)
          Port de la base de données.

     ‘db-name’ (par défaut : ‘"zabbix"’) (type : chaine)
          Nom de la base de données.

     ‘db-user’ (par défaut : ‘"zabbix"’) (type : chaine)
          Utilisateur de la base de données.

     ‘db-password’ (par défaut : ‘""’) (type : chaine)
          Mot de passe de la base de données. Utilisez plutôt
          ‘db-secret-file’.

     ‘db-secret-file’ (par défaut : ‘""’) (type : chaine)
          Fichier de secrets qui sera ajouté au fichier
          ‘zabbix.conf.php’. Ce fichier contient les paramètres
          d’authentification utilisés par Zabbix. On s’attend à ce que
          vous le créiez manuellement.

     ‘zabbix-host’ (par défaut : ‘"localhost"’) (type : chaine)
          Nom d’hôte du serveur Zabbix.

     ‘zabbix-port’ (par défaut : ‘10051’) (type : nombre)
          Port du serveur Zabbix.


File: guix.fr.info,  Node: Services Kerberos,  Next: Services LDAP,  Prev: Services de surveillance,  Up: Services

12.9.17 Services Kerberos
-------------------------

Le module ‘(gnu services kerberos)’ fournit des services liés au
protocole d’authentification “Kerberos”.

Service Krb5
............

Les programmes qui utilisent une bibliothèque cliente Kerberos
s’attendent à trouver un fichier de configuration dans ‘/etc/krb5.conf’.
Ce service génère un tel fichier à partir d’une définition fournie par
la déclaration de système d’exploitation. Il ne démarre aucun démon.

   Aucun fichier « keytab » n’est fourni par ce service — vous devez les
créer explicitement. Ce service est connu pour fonctionner avec la
bibliothèque cliente MIT, ‘mit-krb5’. Les autres implémentations n’ont
pas été testées.

 -- Variable Scheme : krb5-service-type
     Un type de service pour les clients Kerberos 5.

Voici un exemple d’utilisation :
     (service krb5-service-type
              (krb5-configuration
               (default-realm "EXAMPLE.COM")
               (allow-weak-crypto? #t)
               (realms (list
                        (krb5-realm
                         (name "EXAMPLE.COM")
                         (admin-server "groucho.example.com")
                         (kdc "karl.example.com"))
                        (krb5-realm
                         (name "ARGRX.EDU")
                         (admin-server "kerb-admin.argrx.edu")
                         (kdc "keys.argrx.edu"))))))

Cet exemple fournit une configuration cliente Kerberos 5 qui :
   • Reconnais deux domaines : « EXAMPLE.COM » et « ARGREX.EDU », tous
     deux aillant des serveurs d’administration et des centres de
     distribution de clefs distincts ;
   • Utilisera le domaine « EXAMPLE.COM » pr défaut si le domaine n’est
     pas spécifié explicitement par les clients ;
   • Acceptera les services qui ne supportent que des types de
     chiffrements connus pour être faibles.

   Les types ‘krb5-realm’ et ‘krb5-configuration’ ont de nombreux
champs. Seuls les plus communs sont décrits ici. Pour une liste
complète, et plus de détails sur chacun d’entre eux, voir la
documentation de MIT krb5.conf.

 -- Type de données : krb5-realm
     ‘name’
          Ce champ est une chaîne identifiant le nom d’un domaine. Une
          convention courante est d’utiliser le nom pleinement qualifié
          de votre organisation, converti en majuscule.

     ‘admin-server’
          Ce champ est une chaîne identifiant l’hôte où le serveur
          d’administration tourne.

     ‘kdc’
          Ce champ est une chaîne identifiant le centre de distribution
          de clefs pour ce domaine.

 -- Type de données : krb5-configuration

     ‘allow-weak-crypto?’ (par défaut : ‘#f’)
          Si ce drapeau est ‘#t’ les services qui n’offrent que des
          algorithmes de chiffrement faibles seront acceptés.

     ‘default-realm’ (par défaut : ‘#f’)
          Ce champ devrait être une chaîne identifiant le domaine
          Kerberos par défaut pour le client. Vous devriez mettre le nom
          de votre domaine Kerberos dans ce champ. Si cette valeur est
          ‘#f’ alors un domaine doit être spécifié pour chaque principal
          Kerberos à l’invocation des programmes comme ‘kinit’.

     ‘realms’
          Cela doit être une liste non-vide d’objets ‘krb5-realm’,
          auxquels les clients peuvent accéder. Normalement, l’un
          d’entre eux aura un champ ‘name’ qui correspond au champ
          ‘default-realm’.

Service PAM krb5
................

Le service ‘pam-krb5’ permet la connexion et la gestion des mots de
passe par Kerberos. Vous aurez besoin de ce service si vous voulez que
les applications qui utilisent PAM puissent authentifier automatiquement
les utilisateurs avec Kerberos.

 -- Variable Scheme : pam-krb5-service-type
     Un type de service pour le module PAM Kerberos 5.

 -- Type de données : pam-krb5-configuration
     Type de données représentant la configuration du module PAM
     Kerberos 5. Ce type a les paramètres suivants :
     ‘pam-krb5’ (par défaut : ‘pam-krb5’)
          Le paquet pam-krb5 à utiliser.

     ‘minimum-uid’ (par défaut : ‘1000’)
          Le plus petite ID utilisateur pour lequel les
          authentifications Kerberos devraient être tentées. Les comptes
          locaux avec une valeur plus petite échoueront silencieusement
          leur authentification Kerberos.


File: guix.fr.info,  Node: Services LDAP,  Next: Services web,  Prev: Services Kerberos,  Up: Services

12.9.18 Services LDAP
---------------------

Le module ‘(gnu services authentication)’ fournit le type de service
‘nslcd-service-type’, qui peut être utilisé pour l’authentification par
LDAP. En plus de configurer le service lui-même, vous pouvez ajouter
‘ldap’ comme service de noms au Name Service Switch. *Note Name Service
Switch:: pour des informations détaillées.

   Voici une déclaration de système d’exploitation simple avec une
configuration par défaut pour ‘nslcd-service-type’ et une configuration
du Name Service Switch qui consulte le service de noms ‘ldap’ en dernier
:

     (use-service-modules authentication)
     (use-modules (gnu system nss))
     ...
     (operating-system
       ...
       (services
         (cons*
           (service nslcd-service-type)
           (service dhcp-client-service-type)
           %base-services))
       (name-service-switch
        (let ((services (list (name-service (name "db"))
                              (name-service (name "files"))
                              (name-service (name "ldap")))))
          (name-service-switch
           (inherit %mdns-host-lookup-nss)
           (password services)
           (shadow   services)
           (group    services)
           (netgroup services)
           (gshadow  services)))))

   Les champs de ‘nslcd-configuration’ disponibles sont :

 -- paramètre de ‘nslcd-configuration’ : package nss-pam-ldapd
     Le paquet ‘nss-pam-ldapd’ à utiliser.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre threads
     Le nombre de threads à démarrer qui peuvent gérer les requête et
     effectuer des requêtes LDAP. Chaque thread ouvre une connexion
     séparée au serveur LDAP. La valeur par défaut est de 5 threads.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : string uid
     Cela spécifie l’id de l’utilisateur sous lequel le démon devrait
     tourner.

     La valeur par défaut est ‘"nslcd"’.

 -- paramètre de ‘nslcd-configuration’ : string gid
     Cela spécifie l’id du groupe sous lequel le démon devrait tourner.

     La valeur par défaut est ‘"nslcd"’.

 -- paramètre de ‘nslcd-configuration’ : log-option log
     Cette option contrôle la journalisation via une liste contenant le
     schéma et le niveau. Le schéma peut être soit un symbole ‘none’,
     ‘syslog’, soit un nom de fichier absolu. Le niveau est facultatif
     et spécifie le niveau de journalisation. Le niveau de
     journalisation peut être l’un des symboles suivants :‘crit’,
     ‘error’, ‘warning’, ‘notice’, ‘info’ ou ‘debug’. Tous les messages
     avec le niveau spécifié ou supérieurs sont enregistrés.

     La valeur par défaut est ‘("/var/log/nslcd" info)’.

 -- paramètre de ‘nslcd-configuration’ : list uri
     La liste des URI des serveurs LDAP. Normalement, seul le premier
     serveur sera utilisé avec les serveurs suivants comme secours.

     La valeur par défaut est ‘("ldap://localhost:389/")’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine ldap-version
     La version du protocole LDAP à utiliser. La valeur par défaut est
     d’utiliser la version maximum supportée par la bibliothèque LDAP.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine binddn
     Spécifie le nom distingué avec lequel se lier au serveur de
     répertoire pour les recherches. La valeur par défaut est de se lier
     anonymement.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine bindpw
     Spécifie le mot de passe avec lequel se lier. Cette option n’est
     valable que lorsqu’elle est utilisée avec binddn.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine rootpwmoddn
     Spécifie le nom distingué à utiliser lorsque l’utilisateur root
     essaye de modifier le mot de passe d’un utilisateur avec le module
     PAM.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine rootpwmodpw
     Spécifie le mot de passe à utiliser pour se lier si l’utilisateur
     root essaye de modifier un mot de passe utilisateur. Cette option
     n’est valable que si elle est utilisée avec rootpwmoddn

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine sasl-mech
     Spécifie le mécanisme SASL à utiliser lors de l’authentification
     SASL.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine sasl-realm
     Spécifie le royaume SASL à utiliser pour effectuer une
     authentification SASL.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine sasl-authcid
     Spécifie l’identité d’authentification à utiliser pour effectuer
     une authentification SASL.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine sasl-authzid
     Spécifie l’identité d’autorisation à utiliser lors d’une
     authentification SASL.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen
          sasl-canonicalize?
     Détermine si le nom d’hôte du serveur LDAP devrait être canonalisé.
     Si c’est activé la bibliothèque LDAP effectuera une recherche de
     nom d’hôte inversée. Par défaut, il est laissé à la bibliothèque
     LDAP le soin de savoir si la vérification doit être effectuée ou
     non.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine krb5-ccname
     Indique le nom du cache d’informations de connexion de GSS-API
     Kerberos.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : string base
     La base de recherche de répertoires.

     La valeur par défaut est ‘"dc=example,dc=com"’.

 -- paramètre de ‘nslcd-configuration’ : scope-option scope
     Spécifie la portée de la recherche (subtree, onelevel, base ou
     children). La portée par défaut est subtree ; la portée base n’est
     presque jamais utile pour les recherches de service de noms ; la
     portée children n’est pas prise en charge par tous les serveurs.

     La valeur par défaut est ‘(subtree)’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-deref-option deref
     Spécifie la politique de déréférencement des alias. La politique
     par défaut est de ne jamais déréférencer d’alias.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen referrals
     Spécifie s’il faut activer le suivi de référence. Le comportement
     par défaut est de suivre les références.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : list-of-map-entries maps
     Cette option permet d’ajouter des attributs personnalisés à
     rechercher à la place des attributs par défaut de la RFC 2307.
     C’est une liste de correspondances, consistant chacune en un nom,
     en l’attribut RFC 2307 à utiliser et l’expression de la requête
     pour l’attribut tel qu’il sera disponible dans le répertoire.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘nslcd-configuration’ : list-of-filter-entries filters
     Une liste de filtres consistant en le nom d’une correspondance à
     laquelle applique le filtre et en une expression de filtre de
     recherche LDAP.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre bind-timelimit
     Spécifie la limite de temps en seconds à utiliser lors de la
     connexion au serveur de répertoire. La valeur par défaut est de 10
     secondes.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre timelimit
     Spécifie la limite de temps (en secondes) à attendre une réponse
     d’un serveur LDAP. La valeur de zéro, par défaut, permet d’attendre
     indéfiniment la fin des recherches.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre idle-timelimit
     Spécifie la période d’inactivité (en seconde) après laquelle la
     connexion au serveur LDAP sera fermée. La valeur par défaut est de
     ne jamais la fermer.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre
          reconnect-sleeptime
     Spécifie le nombre de secondes pendant laquelle attendre lorsque la
     connexion à tous les serveurs LDAP a échouée. Par défaut, il y a
     une seconde d’attente entre le premier échec et la tentative
     suivante.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre
          reconnect-retrytime
     Spécifie la durée après laquelle le serveur LDAP est considéré
     comme définitivement inatteignable. Une fois cette durée atteinte,
     les tentatives de connexions n’auront plus lieu qu’une fois par cet
     intervalle de temps. La valeur par défaut est de 10 secondes.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-ssl-option ssl
     Spécifie s’il faut utiliser SSL/TLS ou non (la valeur par défaut
     est non). Si ’start-tls est spécifié alors StartTLS est utilisé à
     la place de LDAP sur SSL.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-tls-reqcert-option
          tls-reqcert
     Spécifie quelles vérifications effectuer sur les certificats donnés
     par les serveurs. La signification des valeurs est décrite dans la
     page de manuel de ldap.conf(5).

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-cacertdir
     Spécifie le répertoire contenant les certificats X.509 pour
     l’authentification des pairs. Ce paramètre est ignoré quand il est
     utilisé avec GnuTLS.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-cacertfile
     Spécifie le chemin des certificats X.509 pour l’authentification
     des pairs.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-randfile
     Spécifie le chemin d’une source d’entropie. Ce paramètre est ignoré
     quand il est utilisé avec GnuTLS.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-ciphers
     Spécifie les suites de chiffrements à utiliser pour TLS en tant que
     chaîne de caractères.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-cert
     Spécifie le chemin vers le fichier contenant le certificat local
     pour l’authentification TLS du client.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine tls-key
     Spécifie le chemin du fichier contenant la clef privée pour
     l’authentification TLS du client.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre pagesize
     Indiquez un nombre plus grand que 0 pour demander des résultats
     paginés au serveur LDAP en accord avec la RFC 2696. La valeur par
     défaut (0) est de ne pas demander de pagination des résultats.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-ignore-users-option
          nss-initgroups-ignoreusers
     Cette option évite les recherches d’appartenance au groupe à
     travers le LDAP pour les utilisateurs spécifiés. Autrement, la
     valeur ’all-local peut être utilisée. Avec cette valeur nslcd
     construit une liste complète des utilisateurs non-LDAP au
     démarrage.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre nss-min-uid
     Cette option s’assure que les utilisateurs LDAP avec un id
     utilisateur numérique plus petit que la valeur spécifiée sont
     ignorés.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre nss-uid-offset
     Cette option spécifie un décalage à ajouter à tous les id
     utilisateurs numériques LDAP. Cela peut être utile pour éviter des
     collisions d’id utilisateurs avec des utilisateurs locaux.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-nombre nss-gid-offset
     Cette option spécifie un décalage à ajouter à tous les id de groupe
     numériques LDAP. Cela peut être utile pour éviter des collisions
     d’id utilisateurs avec des groupes locaux.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen
          nss-nested-groups
     Si cette option est indiquée, l’attribut de membre de groupe peut
     pointer vers un autre groupe. Les membres de groupes imbriqués sont
     aussi renvoyés dans le groupe de haut-niveau et les groupes parents
     sont renvoyés lorsqu’on recherche un utilisateur spécifique. La
     valeur par défaut est de ne pas effectuer de recherche
     supplémentaire sur les groupes imbriqués.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen
          nss-getgrent-skipmembers
     Si cette option est indiqée, la liste de membres du groupe n’est
     pas récupérée lorsqu’on cherche un groupe. Les recherches pour
     trouver les groupes auxquels un utilisateur appartient resteront
     fonctionnelles donc l’utilisateur obtiendra probablement les bons
     groupes à la connexion.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen
          nss-disable-enumeration
     Si cette option est indiquée, les fonctions qui causent le
     chargement de toutes les entrées d’utilisateur et de groupe depuis
     le répertoire ne pourront pas le faire. Cela peut grandement
     diminuer la charge du serveur LDAP dans des situations où il y a
     beaucoup d’utilisateurs et de groupes. Cette option n’est pas
     recommandées pour la plupart des configurations.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine validnames
     Cette option peut être utilisée pour spécifier comment les noms
     d’utilisateurs et de groupes sont vérifiés sur le système. Ce motif
     est utilisé pour vérifier tous les noms d’utilisateurs et de
     groupes qui sont demandés et renvoyés par le LDAP.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen ignorecase
     Cela spécifie s’il faut ou non effectuer des recherches avec une
     correspondance sensible à la casse. Activer cela pourrait mener à
     des vulnérabilités de type contournement d’authentification sur le
     système et introduire des vulnérabilité d’empoisonnement de cache
     nscd qui permettent un déni de service.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-booléen
          pam-authc-ppolicy
     Cette option spécifie si des contrôles de la politique de mots de
     passe sont demandés et gérés par le serveur LDAP à
     l’authentification de l’utilisateur.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine
          pam-authc-search
     Par défaut nslcd effectue une recherche LDAP avec le mot de passe
     de l’utilisateur après BIND (authentification) pour s’assurer que
     l’opération BIND a bien réussi. La recherche par défaut est une
     simple vérification que le DN de l’utilisateur existe. Un filtre de
     recherche peut être spécifié pour l’utiliser à la place. Il devrait
     renvoyer au moins une entrée.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine
          pam-authz-search
     Cette option permet la configuration fine et flexible de la
     vérification d’autorisation qui devrait être effectuée. Le filtre
     de recherche est exécuté et si une entrée correspond, l’accès est
     autorisé, sinon il est refusé.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : peut-être-chaine
          pam-password-prohibit-message
     Si cette option est indiquée, la modification de mot de passe par
     pam_ldap sera refusée et le message spécifié sera présenté à
     l’utilisateur à la place. Le message peut être utilisé pour
     rediriger les utilisateurs vers une autre méthode pour changer leur
     mot de passe.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘nslcd-configuration’ : list pam-services
     Liste de noms de service pam pour lesquels l’authentification LDAP
     devrait suffire.

     La valeur par défaut est ‘()’.


File: guix.fr.info,  Node: Services web,  Next: Services de certificats,  Prev: Services LDAP,  Up: Services

12.9.19 Services web
--------------------

Le module ‘(gnu services web)’ fournit le serveur Apache HTTP, le
serveur web nginx et aussi un démon fastcgi.

Serveur Apache HTTP
...................

 -- Variable Scheme : httpd-service-type
     Type de service pour le serveur Apache HTTP
     (https://httpd.apache.org/) (“httpd”). La valeur de ce type de
     service est un enregistrement ‘httpd-configuration’.

     Un exemple de configuration simple est donné ci-dessous.

          (service httpd-service-type
                   (httpd-configuration
                     (config
                       (httpd-config-file
                         (server-name "www.example.com")
                         (document-root "/srv/http/www.example.com")))))

     D’autres services peuvent aussi étendre ‘httpd-service-type’ pour
     être ajouté à la configuration.

          (simple-service 'www.example.com-server httpd-service-type
                          (list
                            (httpd-virtualhost
                              "*:80"
                              (list (string-join '("ServerName www.example.com"
                                                    "DocumentRoot /srv/http/www.example.com")
                                                 "\n")))))

   Les détails des types d’enregistrement ‘httpd-configuration’,
‘httpd-module’, ‘httpd-config-file’ et ‘httpd-virtualhost’ sont donnés
plus bas.

 -- Type de données : httpd-configuration
     Ce type de données représente la configuration du service httpd.

     ‘package’ (par défaut : ‘httpd’)
          Le paquet httpd à utiliser.

     ‘pid-file’ (par défaut : ‘"/var/run/httpd"’)
          Le fichier de pid utilisé par le service shepherd.

     ‘config’ (par défaut : ‘(httpd-config-file)’)
          Le fichier de configuration à utiliser avec le service httpd.
          La valeur par défaut est un enregistrement ‘httpd-config-file’
          mais cela peut aussi être un G-expression qui génère un
          fichier, par exemple un ‘plain-file’. Un fichier en dehors du
          dépôt peut aussi être spécifié avec une chaîne de caractères.

 -- Type de données : httpd-module
     Ce type de données représente un module pour le service httpd.

     ‘name’
          Le nom du module.

     ‘file’
          Le fichier pour le module. Cela peut être relatif au paquet
          httpd utilisé, l’emplacement absolu d’un fichier ou une
          G-expression pour un fichier dans le dépôt, par exemple
          ‘(file-append mod-wsgi "/modules/mod_wsgi.so")’.

 -- Variable Scheme : %default-httpd-modules
     Une liste par défaut des objets ‘httpd-module’.

 -- Type de données : httpd-config-file
     Ce type de données représente un fichier de configuration pour le
     service httpd.

     ‘modules’ (par défaut : ‘%default-httpd-modules’)
          Les modules à charger. Les modules supplémentaires peuvent
          être ajoutés ici ou chargés par des configuration
          supplémentaires.

          Par exemple, pour gérer les requêtes pour des fichiers PHP,
          vous pouvez utiliser le module ‘mod_proxy_fcgi’ d’Apache avec
          ‘php-fpm-service-type’ :

               (service httpd-service-type
                        (httpd-configuration
                         (config
                          (httpd-config-file
                           (modules (cons*
                                     (httpd-module
                                      (name "proxy_module")
                                      (file "modules/mod_proxy.so"))
                                     (httpd-module
                                      (name "proxy_fcgi_module")
                                      (file "modules/mod_proxy_fcgi.so"))
                                     %default-httpd-modules))
                           (extra-config (list "\
               <FilesMatch \\.php$>
                   SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\"
               </FilesMatch>"))))))
               (service php-fpm-service-type
                        (php-fpm-configuration
                         (socket "/var/run/php-fpm.sock")
                         (socket-group "httpd")))

     ‘server-root’ (par défaut : ‘httpd’)
          Le ‘ServerRoot’ dans le fichier de configuration, par défaut
          le paquet httpd. Les directives comme ‘Include’ et
          ‘LoadModule’ sont prises relativement à la racine du serveur.

     ‘server-name’ (par défaut : ‘#f’)
          Le ‘ServerName’ dans le fichier de configuration, utilisé pour
          spécifier le schéma de requête, le nom d’hôte et le port que
          le serveur utilise pour s’identifier.

          Cela n’a pas besoin d’être dans la configuration du serveur,
          et peut être spécifié dans les hôtes virtuels. La valeur par
          défaut est ‘#f’ pour ne pas spécifier de ‘ServerName’.

     ‘document-root’ (par défaut : ‘"/srv/http"’)
          Le ‘DocumentRoot’ depuis lequel les fichiers seront servis.

     ‘listen’ (par défaut : ‘'("80")’)
          La liste des valeurs pour les directives ‘Listen’ dans le
          fichier de configuration. La valeur devrait être une liste de
          chaînes, où chacune spécifie le port sur lequel écouter et
          éventuellement une adresse IP et un protocole à utiliser.

     ‘pid-file’ (par défaut : ‘"/var/run/httpd"’)
          Le ‘PidFile’ à utiliser. Cela devrait correspondre à
          ‘pid-file’ indiqué dans ‘httpd-configuration’ pour que le
          service Shepherd soit correctement configuré.

     ‘error-log’ (par défaut : ‘"/var/log/httpd/error_log"’)
          Le ‘ErrorLog’ où le serveur écrit les journaux d’erreurs.

     ‘user’ (par défaut : ‘"httpd"’)
          Le ‘User’ en tant que lequel le serveur répondra aux requêtes.

     ‘group’ (par défaut : ‘"httpd"’)
          Le ‘Group’ que le serveur utilisera pour répondre aux
          requêtes.

     ‘extra-config’ (par défaut : ‘(list "TypesConfig etc/httpd/mime.types")’)
          Une liste plate de chaînes et de G-expressions qui seront
          ajoutées à la fin du fichier de configuration.

          N’importe quelle valeur avec laquelle le service est étendu
          sera ajouté à cette liste.

 -- Type de données : httpd-virtualhost
     Ce type de données représente la configuration d’un hôte virtuel
     pour le service httpd.

     Ils devraient être ajoutés à extra-config dans httpd-service.

          (simple-service 'www.example.com-server httpd-service-type
                          (list
                            (httpd-virtualhost
                              "*:80"
                              (list (string-join '("ServerName www.example.com"
                                                    "DocumentRoot /srv/http/www.example.com")
                                                 "\n")))))

     ‘addresses-and-ports’
          L’adresse et le port pour la directive ‘VirtualHost’.

     ‘contents’
          Le contenu de la directive ‘VirtualHost’, cela devrait être
          une liste de chaîne et de G-expressions.

NGINX
.....

 -- Variable Scheme : nginx-service-type
     Type de service pour le serveur web NGinx (https://nginx.org/). La
     valeur de ce service est un enregistrement ‘<nginx-configuration>’.

     Un exemple de configuration simple est donné ci-dessous.

          (service nginx-service-type
                   (nginx-configuration
                     (server-blocks
                       (list (nginx-server-configuration
                               (server-name '("www.example.com"))
                               (root "/srv/http/www.example.com"))))))

     En plus d’ajouter des blocs de serveurs dans la configuration du
     service directement, ce service peut être étendu par d’autres
     services pour ajouter des blocs de serveurs, comme dans cet exemple
     :

          (simple-service 'my-extra-server nginx-service-type
                          (list (nginx-server-configuration
                                  (root "/srv/http/extra-website")
                                  (try-files (list "$uri" "$uri/index.html")))))

   Au démarrage, ‘nginx’ n’a pas encore lu son fichier de configuration,
donc il utilise les fichiers par défaut pour les messages d’erreur. S’il
échoue à charger sa configuration, c’est là où les messages seront
enregistrés. Après la lecture du fichier de configuration, le fichier de
journal d’erreur par défaut change en fonction de celle-ci. Dans notre
cas, les messages d’erreur au démarrage se trouvent dans
‘/var/run/nginx/logs/error.log’ et après la configuration dans
‘/var/log/nginx/error.log’. Ce second emplacement peut être modifié avec
l’option de configuration LOG-DIRECTORY.

 -- Type de données : nginx-configuration
     Ce type de données représente la configuration de NGinx. Certaines
     configurations peuvent se faire ici et d’autres fournissent des
     types d’enregistrement ou éventuellement, on peut fournir un
     fichier de configuration.

     ‘nginx’ (par défaut : ‘nginx’)
          Le paquet nginx à utiliser.

     ‘rshepherd-equirement’ (par défaut : ‘'()’)
          C’est une liste de symboles nommant les services du Shepherd
          dont les services nginx dépendent.

          C’est utile si vous voulez que ‘nginx’ démarre après qu’un
          serveur web en arrière-plan ou qu’un service de journalisation
          comme Anonip a été démarré.

     ‘log-directory’ (par défaut : ‘"/var/log/nginx"’)
          Le répertoire dans lequel NGinx écrira ses fichiers journaux.

     ‘run-directory’ (par défaut : ‘"/var/run/nginx"’)
          Le répertoire dans lequel NGinx créera un fichier de pid et
          écrira des fichiers temporaires.

     ‘server-blocks’ (par défaut : ‘'()’)
          Une liste de “blocs serveur” à créer dans le fichier de
          configuration généré, dont les éléments sont de type
          ‘<nginx-server-configuration>’.

          L’exemple suivant paramètre NGinx pour servir
          ‘www.example.com’ depuis le répertoire
          ‘/srv/http/www.example.com’ sans utiliser HTTPS.
               (service nginx-service-type
                        (nginx-configuration
                          (server-blocks
                            (list (nginx-server-configuration
                                    (server-name '("www.example.com"))
                                    (root "/srv/http/www.example.com"))))))

     ‘upstream-blocks’ (par défaut : ‘'()’)
          Une liste de “blocs amont” à créer dans le fichier de
          configuration généré, dont les éléments sont de type
          ‘<nginx-upstream-configuration>’.

          Configurer les serveurs amont à travers les ‘upstream-blocks’
          peut être utile en combinaison avec ‘locations’ dans les
          enregistrements ‘<nginx-server-configuration>’. L’exemple
          suivant crée une configuration de serveur avec une
          configuration « location » qui sera mandataire pour une
          configuration amont, qui gérera les requêtes avec deux
          serveurs.

               (service
                 nginx-service-type
                 (nginx-configuration
                   (server-blocks
                     (list (nginx-server-configuration
                             (server-name '("www.example.com"))
                             (root "/srv/http/www.example.com")
                             (locations
                               (list
                                 (nginx-location-configuration
                                 (uri "/path1")
                                 (body '("proxy_pass http://server-proxy;"))))))))
                   (upstream-blocks
                     (list (nginx-upstream-configuration
                             (name "server-proxy")
                             (servers (list "server1.example.com"
                                            "server2.example.com")))))))

     ‘file’ (par défaut : ‘#f’)
          Si un fichier de configuration FILE est fourni, il sera
          utilisé au lieu de générer un fichier de configuration à
          partir des ‘log-directory’, ‘run-directory’, ‘server-blocks’
          et ‘upstream-blocks’ fournis. Pour un bon fonctionnement, ces
          arguments devraient correspondre à ce qui se trouve dans FILE
          pour s’assurer que les répertoires sont créé lorsque le
          service est activé.

          Cela peut être utile si vous avez déjà un fichier de
          configuration existant ou s’il n’est pas possible de faire ce
          dont vous avez besoin avec les autres parties de
          l’enregistrement nginx-configuration.

     ‘server-names-hash-bucket-size’ (par défaut : ‘#f’)
          Taille du seau pour les tables de hashage des noms de
          serveurs, par dauft ‘#f’ pour utilise la taille des lignes de
          cache du processeur.

     ‘server-names-hash-bucket-max-size’ (par défaut : ‘#f’)
          Taille maximum des seaux pour les tables de hashage des
          serveurs de noms.

     ‘modules’ (par défaut : ‘'()’)
          Liste de modules dynamiques de nginx à charger. Cela devrait
          être une liste de noms de fichiers de modules chargeables,
          comme dans cet exemple :

               (modules
                (list
                 (file-append nginx-accept-language-module "\
               /etc/nginx/modules/ngx_http_accept_language_module.so")
                 (file-append nginx-lua-module "\
               /etc/nginx/modules/ngx_http_lua_module.so")))

     ‘lua-package-path’ (par défaut : ‘'()’)
          Liste des paquets lua à charger. Cela devrait être une liste
          de noms de paquets de modules lua chargeables, comme dans cet
          exemple :

               (lua-package-path (list lua-resty-core
                                       lua-resty-lrucache
                                       lua-resty-signal
                                       lua-tablepool
                                       lua-resty-shell))

     ‘lua-package-cpath’ (par défaut : ‘'()’)
          Liste de paquets lua C à charger. cela devrait être une liste
          de noms de paquets de modules lua C, comme dans cet exemple :

               (lua-package-cpath (list lua-resty-signal))

     ‘global-directives’ (par défaut : ‘'((events . ()))’)
          Liste d’association des directives globales pour le plus haut
          niveau de la configuration de nginx. Les valeurs peuvent
          elles-mêmes être des listes d’association.

               (global-directives
                `((worker_processes . 16)
                  (pcre_jit . on)
                  (events . ((worker_connections . 1024)))))

     ‘extra-content’ (par défaut : ‘""’)
          Contenu supplémentaire du bloc ‘http’. Cela devrait être une
          chaîne ou un G-expression.

 -- Type de données : nginx-server-configuration
     Type de données représentant la configuration d’un bloc serveur de
     nginx. Ce type a les paramètres suivants :

     ‘listen’ (par défaut : ‘'("80" "443 ssl")’)
          Chaque directive ‘listen’ indique l’adresse et le port pour le
          protocole IP ou le chemin d’un socket UNIX-domain sur lequel
          le serveur acceptera les connexions. On peut spécifier
          l’adresse et le port, ou juste l’adresse ou juste le port. Une
          adresse peut aussi être un nom d’hôte, par exemple :

               '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000")

     ‘server-name’ (par défaut : ‘(list 'default)’)
          Une liste de noms de serveurs que ce serveur représente.
          ‘'default’ représente le serveur par défaut pour les
          connexions qui ne correspondent à aucun autre serveur.

     ‘root’ (par défaut : ‘"/srv/http"’)
          Racine du site web que sert nginx.

     ‘locations’ (par défaut : ‘'()’)
          Une liste d’enregistrements “nginx-location-configuration” ou
          “nginx-named-location-configuration” à utiliser dans ce bloc
          serveur.

     ‘index’ (par défaut : ‘(list "index.html")’)
          Fichiers d’index à chercher lorsque les clients demandent un
          répertoire. S’il ne peut pas être trouvé, Nginx enverra la
          liste des fichiers dans le répertoire.

     ‘try-files’ (par défaut : ‘'()’)
          Une liste de fichiers dont l’existence doit être vérifiée dans
          l’ordre spécifié. ‘nginx’ utilisera le premier fichier trouvé
          pour satisfaire la requête.

     ‘ssl-certificate’ (par défaut : ‘#f’)
          Où trouver les certificats pour les connexions sécurisées.
          Indiquez ‘#f’ si vous n’avez pas de certificats et que vous ne
          voulez pas utiliser HTTPS.

     ‘ssl-certificate-key’ (par défaut : ‘#f’)
          Où trouver la clef privée pour les connexions sécurisées.
          Indiquez ‘#f’ si vous n’avez pas de clef et que vous ne voulez
          pas utiliser HTTPS.

     ‘server-tokens?’ (par défaut : ‘#f’)
          Indique si le serveur devrait ajouter sa configuration dans
          les réponses.

     ‘raw-content’ (par défaut : ‘'()’)
          Une liste de lignes brutes à ajouter dans le bloc serveur.

 -- Type de données : nginx-upstream-configuration
     Type de données représentant la configuration d’un bloc ‘upstream’
     nginx. Ce type a les paramètres suivants :

     ‘name’
          Nome de ces groupe de serveurs.

     ‘serveurs’
          Spécifie les adresses des serveurs dans le groupe. L’adresse
          peut être spécifié avec une adresse IP (p. ex. ‘127.0.0.1’),
          un nom de domaine (p. ex. ‘backend1.example.com’) ou un chemin
          vers un socket UNIX avec le préfixe ‘unix:’. Pour les adresse
          utilisant une adresse IP ou un nom de domaine, le port par
          défaut est 80 et un port différent peut être spécifié
          explicitement.

     ‘extra-content’
          Une chaine ou une liste de chaines à ajouter au bloc amont.

 -- Type de données : nginx-location-configuration
     Type de données représentant la configuration d’un bloc ‘location’
     nginx. Ce type a les paramètres suivants :

     ‘uri’
          URI qui correspond à ce bloc.

     ‘body’
          Corps du block location, spécifié comme une liste de chaînes
          de caractères. Cela peut contenir de nombreuses directives de
          configuration. Par exemple, pour passer des requêtes à un
          groupe de serveurs amont définis dans un bloc
          ‘nginx-upstream-configuration’, la directive suivante peut
          être spécifiée dans le corps : ‘(list "proxy_pass
          http://upstream-name;")’.

 -- Type de données : nginx-named-location-configuration
     Type de données représentant la configuration d’un bloc location
     nginx nommé. Les blocs location nommés sont utilisé les
     redirections de requêtes et pas pour le traitement des requêtes
     normales. Ce type a les paramètres suivants :

     ‘name’
          Nom pour identifier ce bloc location.

     ‘body’
          *Note nginx-location-configuration body::, comme le corps d’un
          bloc location nommé peut être utilisé de la même manière que
          ‘nginx-location-configuration body’. Une restriction est que
          le corps d’un bloc location nommé ne peut pas contenir de bloc
          location.

Cache Varnish
.............

Varnish est un serveur de cache rapide qui se trouve entre les
applications web et les utilisateurs. Il sert de serveur mandataire pour
les requêtes des clients et met les URL accédées en cache pour que
plusieurs requêtes à la même ressource ne crée qu’une requête au moteur.

 -- Variable Scheme : varnish-service-type
     Type de service pour le démon Varnish.

 -- Type de données : varnish-configuration
     Type de données représentant la configuration du service ‘varnish’.
     Ce type a les paramètres suivants :

     ‘package’ (par défaut : ‘varnish’)
          Le paquet Varnish à utiliser.

     ‘name’ (par défaut : ‘"default"’)
          Un nom pour cet instance de Varnish. Varnish va créer un
          répertoire dans ‘/var/varnish/’ avec ce nom et gardera des
          fichiers temporaires à cet endroit. Si le nom commence par une
          barre oblique, il est interprété comme un nom de répertoire
          absolu.

          Passez l’argument ‘-n’ aux autres programmes Varnish pour vous
          connecter à l’instance nommée, p. ex. ‘varnishncsa -n
          default’.

     ‘backend’ (par défaut : ‘"localhost:8080"’)
          Le moteur à utiliser. Cette option n’a pas d’effet si ‘vcl’
          est vrai.

     ‘vcl’ (par défaut : #f)
          Le programme “VCL” (Varnish Configuration Language) à lancer.
          Si la valeur est ‘#f’, Varnsh servira de mandataire pour
          ‘backend’ avec la configuration par défaut. Sinon, ce doit
          être un objet simili-fichier avec une syntaxe VCL valide.

          Par exemple, pour créer un miroir de www.gnu.org
          (https://www.gnu.org) avec VCL vous pouvez faire quelque chose
          comme cela :

               (define %gnu-mirror
                 (plain-file "gnu.vcl"
                             "vcl 4.1;
               backend gnu { .host = \"www.gnu.org\"; }"))

               (operating-system
                 ;; ...
                 (services (cons (service varnish-service-type
                                          (varnish-configuration
                                           (listen '(":80"))
                                           (vcl %gnu-mirror)))
                                 %base-services)))

          On peut inspecter la configuration d’une instance Varnish
          actuellement lancée en utilisant le programme ‘varnishadm’.

          Consultez le guide utilisateur de varnish
          (https://varnish-cache.org/docs/) et le livre varnish
          (https://book.varnish-software.com/4.0/) pour une
          documentation complète sur Varnish et son langage de
          configuration.

     ‘listen’ (par défaut : ‘'("localhost:80")’)
          Liste des adresses sur lesquelles écoute Varnish.

     ‘storage’ (par défaut : ‘'("malloc,128m")’)
          Liste de moteurs de stockage qui seront disponibles en VCL.

     ‘parameters’ (par défaut : ‘'()’)
          Liste des paramètres à l’exécution de la forme ‘'(("parameter"
          . "value"))’.

     ‘extra-options’ (par défaut : ‘'()’)
          Arguments supplémentaires à passer au processus ‘varnishd’.

Patchwork
.........

Patchwork est un système de suivi de correctifs. Il peut récupérer des
correctifs envoyés à une liste de diffusion, et les afficher sur une
interface web.

 -- Variable Scheme : patchwork-service-type
     Type de service pour Patchwork.

   L’exemple suivant est un exemple de service Patchwork minimal, pour
le domaine ‘patchwork.example.com’.

     (service patchwork-service-type
              (patchwork-configuration
               (domain "patchwork.example.com")
               (settings-module
                (patchwork-settings-module
                 (allowed-hosts (list domain))
                 (default-from-email "patchwork@patchwork.example.com")))
               (getmail-retriever-config
                (getmail-retriever-configuration
                 (type "SimpleIMAPSSLRetriever")
                 (server "imap.example.com")
                 (port 993)
                 (username "patchwork")
                 (password-command
                  (list (file-append coreutils "/bin/cat")
                        "/etc/getmail-patchwork-imap-password"))
                 (extra-parameters
                 '((mailboxes . ("Patches"))))))))


   Il y a trois enregistrements pour configurer le service Patchwork. Le
‘<patchwork-configuration>’ correspond à la configuration de Patchwork
dans le service HTTPD.

   Le champ ‘settings-module’ dans l’enregistrement
‘<patchwork-configuration>’ peut être rempli avec l’enregistrement
‘<patchwork-settings-modules>’, qui décrit un module de paramètres
généré dans le dépôt de Guix.

   Pour le champ ‘database-configuration’ dans
‘<patchwork-settings-module>’, il faut utiliser un
‘<patchwork-dataase-configuration>’.

 -- Type de données : patchwork-configuration
     Type de données représentant la configuration du service Patchwork.
     Ce type a les paramètres suivants :

     ‘patchwork’ (par défaut : ‘patchwork’)
          Le paquet Patchwork à utiliser.

     ‘domain’
          Le domaine à utiliser pour Patchwork, utilisé comme hôte
          virtuel dans le service HTTPD.

     ‘settings-module’
          Le module de paramètres à utiliser pour Patchwork. En tant
          qu’application Django, Patchwork est configuré avec un module
          Python contenant les paramètres. Il peut s’agir d’une instance
          de l’enregistrement ‘<patchwork-settings-module>’, de
          n’importe quel enregistrement qui représente les paramètres
          dans le dépôt, ou un répertoire en dehors du dépôt.

     ‘static-path’ (par défaut : ‘"/static/"’)
          Le chemin dans lequel le service HTTPD devrait servir les
          fichiers statiques.

     ‘getmail-retriever-config’
          La valeur d’enregistrement getmail-retriever-configuration à
          utiliser avec Patchwork. getmail sera configuré avec cette
          valeur, les messages seront livrés à Patchwork.

 -- Type de données : patchwork-settings-module
     Type de données représentant le module de paramètres de Patchwork.
     Certains de ces paramètres sont liés à Patchwork, mais d’autres
     sont liés à Django, le cadriciel web utilisé par Patchwork, ou la
     bibliothèque Django Rest Framework. Ce type a les paramètres
     suivants :

     ‘database-configuration’ (par défaut : ‘(patchwork-database-configuration)’)
          Les paramètres de connexion à la base de données à utiliser
          pour Patchwork. Voir le type d’enregistrement
          ‘<patchwork-database-configuration>’ pour plus d’information.

     ‘secret-key-file’ (par défaut : ‘"/etc/patchwork/django-secret-key"’)
          Patchwork, en tant qu’application web Django, utilise une clé
          secrète pour signer des valeurs avec de la cryptographie. Ce
          fichier devrait contenir une valeur unique imprévisible.

          Si ce fichier n’existe pas, il sera créé avec une valeur
          aléatoire par le service patchwork-setup.

          Ce paramètre est lié à Django.

     ‘allowed-hosts’
          Une liste des hôtes valides pour ce service Patchwork. Cela
          doit au minimum inclure le domaine spécifié dans
          l’enregistrement ‘<patchwork-configuration>’.

          C’est un paramètre pour Django.

     ‘default-from-email’
          L’adresse de courriel sur laquelle Patchwork devrait envoyer
          les courriels par défaut.

          C’est un paramètre de Patchwork.

     ‘static-url’ (par défaut : ‘#f’)
          L’URL à utiliser pour servir les ressources statiques. Cela
          peut être un bout d’URL ou une URL complète, mais doit finir
          par ‘/’.

          Si la valeur par défaut est utilisée, la valeur ‘static-path’
          de ‘<patchwork-configuration>’ sera utilisée.

          C’est un paramètre pour Django.

     ‘admins’ (par défaut : ‘'()’)
          Adresses de courriel auxquelles envoyer le détails des erreurs
          s’il y en a. Chaque valeur de la liste contient deux éléments,
          le nom et l’adresse de courriel.

          C’est un paramètre pour Django.

     ‘debug?’ (par défaut : ‘#f’)
          Indique s’il faut lancer Patchwork en mode de débogage. Si la
          valeur est ‘#t’, les messages d’erreur détaillés seront
          affichés.

          C’est un paramètre pour Django.

     ‘enable-rest-api?’ (par défaut : ‘#t’)
          Indique s’il faut activer l’API REST de Patchwork.

          C’est un paramètre de Patchwork.

     ‘enable-xmlrpc?’ (par défaut : ‘#t’)
          Indique s’il faut active l’API RPC en XML.

          C’est un paramètre de Patchwork.

     ‘force-https-links?’ (par défaut : ‘#t’)
          Indique s’il faut utiliser des liens HTTPS sur les pages de
          Patchwork.

          C’est un paramètre de Patchwork.

     ‘extra-settings’ (par défaut : ‘""’)
          Code supplémentaire à placer à la fin du module de paramètres
          de Patchwork.

 -- Type de données : patchwork-database-configuration
     Type de données représentant la configuration de la base de données
     de Patchwork.

     ‘engine’ (par défaut : ‘"django.db.backends.postgresql_psycopg2"’)
          Le moteur de base de données à utiliser.

     ‘name’ (par défaut : ‘"patchwork"’)
          Le nom de la base de données à utiliser.

     ‘user’ (par défaut : ‘"httpd"’)
          L’utilisateur à utiliser pour se connecter à la base de
          données.

     ‘password’ (par défaut : ‘""’)
          Le mot de passe à utiliser lors de la connexion à la base de
          données.

     ‘host’ (par défaut : ‘""’)
          L’hôte sur lequel se connecter à la base de données.

     ‘port’ (par défaut : ‘""’)
          Le port sur lequel se connecter à la base de données.

Mumi
....

Mumi (https://git.elephly.net/gitweb.cgi?p=software/mumi.git) est une
interface Web pour le logiciel de suivi de bogues Debbugs, par défaut
pour l’instance de GNU (https://bugs.gnu.org). Mumi est un serveur Web,
mais il récupère et indexe aussi les courriels provenant de Debbugs.

 -- Variable Scheme : mumi-service-type
     Le type de service pour Mumi.

 -- Type de données : mumi-configuration
     Type de données représentant la configuration du service Mumi. Ce
     type a les champs suivants :

     ‘mumi’ (par défaut : ‘mumi’)
          Le paquet Mumi à utiliser.

     ‘mailer?’ (par défaut : ‘#true’)
          Indique s’il faut activer le composant d’envoie de courriels.

     ‘mumi-configuration-sender’
          L’adresse de courriel utilisée comme expéditeur pour les
          commentaires.

     ‘mumi-configuration-smtp’
          Une URI pour configurer les paramètres SMTP pour Mailutils.
          Cela peut être quelque chose comme
          ‘sendmail:///path/to/bin/msmtp’ ou toute autre URI prise en
          charge par Mailutils. *Note SMTP Mailboxes: (mailutils)SMTP
          Mailboxes.

FastCGI
.......

FastCGI est une interface entre le frontal et le moteur d’un service
web. C’est un dispositif quelque peu désuet ; les nouveaux services
devraient généralement juste parler HTTP entre le frontal et le moteur.
Cependant il y a un certain nombre de services de moteurs comme PHP ou
l’accès aux dépôts Git optimisé en HTTP qui utilisent FastCGI, donc nous
le supportons dans Guix.

   Pour utiliser FastCGI, vous configurez le serveur web frontal (p. ex.
nginx) pour envoyer un sous-ensemble de ses requêtes au moteur fastcgi,
qui écoute sur un socket UNIX ou TCP local. Il y a un programme
‘fcgiwrap’ intermédiaire qui se trouve entre le processus du moteur et
le serveur web. Le frontal indique quel moteur lancer, en passant cette
information au processus ‘fcgiwrap’.

 -- Variable Scheme : fcgiwrap-service-type
     Un type de service pour le mandataire FastCGI ‘fcgiwrap’.

 -- Type de données : fcgiwrap-configuration
     Type de données représentant la configuration du service
     ‘fcgiwrap’. Ce type a les paramètres suivants :
     ‘package’ (par défaut : ‘fcgiwrap’)
          Le paquet fcgiwrap à utiliser.

     ‘socket’ (par défaut : ‘tcp:127.0.0.1:9000’)
          Le socket sur lequel le processus ‘fcgiwrap’ écoute, en tant
          que chaîne de caractères. Les valeurs valides de SOCKET sont
          ‘unix:/PATH/TO/UNIX/SOCKET’, ‘tcp:DOT.TED.QU.AD:PORT’ et
          ‘tcp6:[IPV6_ADDR]:port’.

     ‘user’ (par défaut : ‘fcgiwrap’)
     ‘group’ (par défaut : ‘fcgiwrap’)
          Les noms de l’utilisateur et du groupe, en tant que chaînes de
          caractères, sous lesquels lancer le processus ‘fcgiwrap’. Le
          service ‘fastcgi’ s’assurera que si l’utilisateur demande les
          noms d’utilisateurs et de groupes ‘fcgiwrap’ l’utilisateur et
          le groupe correspondant seront présents sur le système.

          Il est possible de configurer un service web soutenu par
          FastCGI pour passer les informations d’authentification HTTP
          depuis le frontal jusqu’au moteur, et de permettre à
          ‘fcgiwrap’ dans lancer le processus de moteur avec
          l’utilisateur local correspondant. Pour activer cette
          fonctionnalité sur le moteur, lancez ‘fcgiwrap’ en tant
          qu’utilisateur et groupe ‘root’. Remarquez que cette
          fonctionnalité doit aussi être configurée sur le frontal.

PHP-FPM
.......

PHP-FPM (FastCGI Process Manager) est une implémentation FastCGI de PHP
alternative avec quelques fonctionnalités supplémentaires utiles pour
les sites de toutes tailles.

   Ces fonctionnalités comprennent :
   • La création de processus adaptative
   • Des statistiques de base (comme le mod_status d’Apache)
   • La gestion des processus avancée avec arrêt et démarrage sans
     heurts
   • La possibilité de démarrer des processus de travail avec différents
     uid/gid/chroot/environnement et différents php.ini (à la place de
     safe_mode)
   • L’enregistrement des journaux sur stdout et stderr
   • Le redémarrage d’urgence dans le cas de la destruction accidentelle
     du cache des opcodes
   • Le support des téléversements accélérés
   • Le support de « showlog »
   • Des améliorations à FastCGI, comme fastcgi_finish_request() - une
     fonction spéciale pour terminer la requête et nettoyer toutes les
     données tout en continuant à faire d’autres choses qui prennent du
     temps (conversion vidéo, gestion des stats, etc.).
   … et bien plus.

 -- Variable Scheme : php-fpm-service-type
     Un type de service pour ‘php-fpm’.

 -- Type de données : php-fpm-configuration
     Type de données pour la configuration du service php-fpm.
     ‘php’ (par défaut : ‘php’)
          Le paquet php à utiliser.
     ‘socket’ (par défaut : ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")’)
          L’adresse sur laquelle accepter les requêtes FastCGI. Les
          syntaxes valides sont :
          ‘"ip.add.re.ss:port"’
               Écoute sur un socket TCP sur l’adresse spécifiée sur un
               port spécifié.
          ‘"port"’
               Écoute sur un socket TCP sur toutes les adresse sur un
               port spécifique.
          ‘"/path/to/unix/socket"’
               Écoute sur un socket unix.

     ‘user’ (par défaut : ‘php-fpm’)
          Utilisateur à qui appartiendra le processus de travail de php.
     ‘group’ (par défaut : ‘php-fpm’)
          Groupe du processus de travail.
     ‘socket-user’ (par défaut : ‘php-fpm’)
          Utilisateur qui peut parler au socket php-fpm.
     ‘socket-group’ (par défaut : ‘nginx’)
          Groupe qui peut parler au socket php-fpm.
     ‘pid-file’ (par défaut : ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")’)
          Le pid de php-fpm est écrit dans ce fichier une fois que le
          service a démarré.
     ‘log-file’ (par défaut : ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")’)
          Fichier de journal pour le processus maître de php-fpm.
     ‘process-manager’ (par défaut : ‘(php-fpm-dynamic-process-manager-configuration)’)
          Configuration détaillée pour le gestionnaire de processus de
          php-fpm. Il doit s’agir soit de :
          ‘<php-fpm-dynamic-process-manager-configuration>’
          ‘<php-fpm-static-process-manager-configuration> ou’
          ‘<php-fpm-on-demand-process-manager-configuration>’
     ‘display-errors’ (par défaut : ‘#f’)
          Détermine si les erreurs et les avertissements php doivent
          être envoyés aux clients et affichés dans leur navigateur.
          Cela est utile pour un développement php local, mais un risque
          pour la sécurité pour les sites publics, comme les messages
          d’erreur peuvent révéler des mots de passes et des données
          personnelles.
     ‘timezone’ (par défaut : ‘#f’)
          Spécifie le paramètre ‘php_admin_value[date.timezone]’.
     ‘workers-logfile’ (par défaut : ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")’)
          Ce fichier enregistrera la sortie ‘stderr’ des processus de
          travail de php. On peut indiquer ‘#f’ pour désactiver la
          journalisation.
     ‘file’ (par défaut : ‘#f’)
          Une version alternative de la configuration complète. Vous
          pouvez utiliser la fonction ‘mixed-text-file’ ou un chemin de
          fichier absolu.
     ‘php-ini-file’ (par défaut : ‘#f’)
          Une version alternative de la configuration de php par défaut.
          Il peut s’agir de n’importe quel objet « simili-fichier »
          (*note file-like objects: G-Expressions.). Vous pouvez
          utiliser la fonction ‘mixed-text-file’ ou un chemin de fichier
          absolu.

          Pour le développement local il est utile d’indiquer un long
          délai d’attente et une limite mémoire plus importante pour les
          processus php créés. Cela se fait avec les bouts de
          configuration systèmes suivants :
               (define %local-php-ini
                 (plain-file "php.ini"
                             "memory_limit = 2G
               max_execution_time = 1800"))

               (operating-system
                 ;; ...
                 (services (cons (service php-fpm-service-type
                                          (php-fpm-configuration
                                           (php-ini-file %local-php-ini)))
                                 %base-services)))

          Consultez les principales directives de php.ini
          (https://www.php.net/manual/en/ini.core.php) pour une
          documentation complète sur les directives ‘php.ini’ possibles.

 -- Type de données : php-fpm-dynamic-process-manager-configuration
     Type de données pour le gestionnaire de processus ‘dynamic’ de
     php-fpm. Avec le gestionnaire de processus ‘dynamic’, des processus
     de travail de secours sont gardés en fonction des limites
     configurées.
     ‘max-children’ (par défaut : ‘5’)
          Nombre maximum de processus de travail.
     ‘start-servers’ (par défaut : ‘2’)
          Nombre de processus de travail au démarrage.
     ‘min-spare-servers’ (par défaut : ‘1’)
          Nombre de processus de travail de secours minimum qui doivent
          rester à disposition.
     ‘max-spare-servers’ (par défaut : ‘3’)
          Nombre maximum de processus de travail de secours qui peuvent
          rester à disposition.

 -- Type de données : php-fpm-static-process-manager-configuration
     Type de données pour le gestionnaire de processus ‘static’ de
     php-fpm. Avec le gestionnaire de processus ‘static’, un nombre
     constant de processus de travail est créé.
     ‘max-children’ (par défaut : ‘5’)
          Nombre maximum de processus de travail.

 -- Type de données : php-fpm-on-demand-process-manager-configuration
     Type de données pour le gestionnaire de processus ‘on-demand’ de
     php-fpm. Avec le gestionnaire de processus ‘on-demand’, les
     processus de travail ne sont créés que lorsque les requêtes
     arrivent.
     ‘max-children’ (par défaut : ‘5’)
          Nombre maximum de processus de travail.
     ‘process-idle-timeout’ (par défaut : ‘10’)
          La durée en secondes après laquelle un processus sans requête
          sera tué.

 -- Procédure Scheme : nginx-php-location [#:nginx-package nginx]
          [socket (string-append "/var/run/php" (version-major
          (package-version php)) "-fpm.sock")]
     Une fonction d’aide pour ajouter rapidement php à un
     ‘nginx-server-configuration’.

   Une configuration simple de services pour php ressemble à ceci :
     (services (cons* (service dhcp-client-service-type)
                      (service php-fpm-service-type)
                      (service nginx-service-type
                               (nginx-server-configuration
                                (server-name '("example.com"))
                                (root "/srv/http/")
                                (locations
                                 (list (nginx-php-location)))
                                (listen '("80"))
                                (ssl-certificate #f)
                                (ssl-certificate-key #f)))
                      %base-services))

   Le générateur d’avatar de chat est un simple service pour démontrer
l’utilisation de php-fpm dans ‘Nginx’. Il permet de générer des avatars
de chats à partir d’une graine, par exemple le hash de l’adresse de
courriel d’un utilisateur.

 -- Procédure Scheme : cat-avatar-generator-service [#:cache-dir
          "/var/cache/cat-avatar-generator"] [#:package
          cat-avatar-generator] [#:configuration
          (nginx-server-configuration)]
     Renvoie un nginx-server-configuration qui hérite de
     ‘configuration’. Il étend la configuration nginx pour ajouter un
     bloc de serveur qui sert ‘package’, une version de
     cat-avatar-generator. Pendant l’exécution, cat-avatar-generator
     pourra utiliser ‘cache-dir’ comme répertoire de cache.

   Une configuration simple de cat-avatar-generator ressemble à ceci :
     (services (cons* (cat-avatar-generator-service
                       #:configuration
                       (nginx-server-configuration
                         (server-name '("example.com"))))
                      ...
                      %base-services))

Hpcguix-web
...........

Le programme hpcguix-web (https://github.com/UMCUGenetics/hpcguix-web/)
est une interface web personnalisable pour naviguer dans les paquets
Guix, initialement conçue pour les utilisateurs des grappes de calcul de
haute performance (HPC).

 -- Variable Scheme : hpcguix-web-service-type
     Le type de service pour ‘hpcguix-web’.

 -- Type de données : hpcguix-web-configuration
     Type de données pour la configuration du service hpcguix-web.

     ‘specs’
          Une gexp (*note G-Expressions::) spécifiant la configuration
          du service hpcguix-web. Les éléments principaux disponibles
          dans cette spec sont :

          ‘title-prefix’ (par défaut : ‘"hpcguix | "’)
               Le préfixe du titre des pages.

          ‘guix-command’ (par défaut : ‘"guix"’)
               La commande ‘guix’.

          ‘package-filter-proc’ (par défaut : ‘(const #t)’)
               Une procédure qui spécifie comment filtrer les paquets
               qui seront affichés.

          ‘package-page-extension-proc’ (par défaut : ‘(const '())’)
               Paquet d’extensions pour ‘hpcguix-web’.

          ‘menu’ (par défaut : ‘'()’)
               Entrée supplémentaire dans la page ‘menu’.

          ‘channels’ (par défaut : ‘%default-channels’)
               Liste des canaux depuis lesquels la liste des paquets est
               construite (*note Canaux::).

          ‘package-list-expiration’ (par défaut : ‘(* 12 3600)’)
               Le temps d’expiration, en secondes, après lequel la liste
               des paquets est reconstruite depuis les dernières
               instance des canaux donnés.

          Voir le dépôt hpcguix-web pour un exemple complet
          (https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm).

     ‘package’ (par défaut : ‘hpcguix-web’)
          Le paquet hpcguix-web à utiliser.

     ‘address’ (par défaut : ‘"127.0.0.1"’)
          L’adresse IP sur laquelle écouter.

     ‘port’ (par défaut : ‘5000’)
          Le numéro de port sur lequel écouter.

   Une déclaration de service hpcguix-web typique ressemble à cela :

     (service hpcguix-web-service-type
              (hpcguix-web-configuration
               (specs
                #~(define site-config
                    (hpcweb-configuration
                     (title-prefix "Guix-HPC - ")
                     (menu '(("/about" "ABOUT"))))))))

     Remarque : Le service hpcguix-web met régulièrement à jour la liste
     des paquets qu’il publie en récupérant les canaux depuis Git. Pour
     cela, il doit accéder aux certificats X.509 pour qu’il puisse
     authentifier les serveurs Git quand il communique en HTTPS, et il
     suppose que ‘/etc/ssl/certs’ contient ces certificats.

     Ainsi, assurez-vous d’ajouter ‘nss-certs’ ou un autre paquet de
     certificats dans le champ ‘packages’ de votre configuration. *note
     Certificats X.509:: pour plus d’informations sur les certificats
     X.509.

gmnisrv
.......

Le programme gmnisrv (https://git.sr.ht/~sircmpwn/gmnisrv) est un
serveur simple pour le protocole Gemini
(https://gemini.circumlunar.space/).

 -- Variable Scheme : gmnisrv-service-type
     C’est le type du service gmnisrv, dont la valeur devrait être un
     objet ‘gmnisrv-configuration’ comme dans cet exemple :

          (service gmnisrv-service-type
                   (gmnisrv-configuration
                     (config-file (local-file "./my-gmnisrv.ini"))))

 -- Type de données : gmnisrv-configuration
     Type données qui représente la configuration de gmnisrv.

     ‘package’ (par défaut : GMNISRV)
          Objet de paquet du serveur gmnisrv.

     ‘config-file’ (par défaut : ‘%default-gmnisrv-config-file’)
          Objet simili-fichier du fichier de configuration de gmnisrv à
          utiliser. La configuration par défaut écoute sur le port 1965
          et sert les fichiers de ‘/srv/gemini’. Les certificats sont
          stockés dans ‘/var/lib/gemini/certs’. Pour plus
          d’informations, lancez ‘man gmnisrv’ et ‘man gmnisrv.ini’.

Agate
.....

Le programme Agate (gemini://qwertqwefsday.eu/agate.gmi) (page GitHub
sur HTTPS (https://github.com/mbrubeck/agate)) est un serveur simple
pour le protocole Gemini (https://gemini.circumlunar.space/) écrit en
Rust.

 -- Variable Scheme : agate-service-type
     C’est le type du service agate, dont la valeur devrait être un
     objet ‘agate-service-type’ comme dans cet exemple :

          (service agate-service-type
          	 (agate-configuration
          	   (content "/srv/gemini")
          	   (cert "/srv/cert.pem")
          	   (key "/srv/key.rsa")))

     L’exemple ci-dessus représente les changements minimaux nécessaires
     pour qu’Agate soit lancé. Spécifier le chemin du certificat et de
     la clé est toujours nécessaire, car le protocole Gemini nécessite
     TLS par défaut.

     Pour obtenir un certificat et une clé, vous pouvez par exemple
     utiliser OpenSSL, en lançant une commande telle que l’exemple
     suivant :

          openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem \
              -days 3650 -nodes -subj "/CN=example.com"

     Bien sûr, vous devez remplacer example.com par votre propre nom de
     domaine, puis pointer la configuration d’Agate vers le chemin de la
     clé et du certificats générés.

 -- Type de données : agate-configuration
     Type de données représentant la configuration d’Agate.

     ‘package’ (par défaut : ‘agate’)
          Objet de paquet du serveur Agate.

     ‘content’ (par défaut : ‘"/srv/gemini"’)
          Le répertoire à partir duquel Agate servira ses fichiers.

     ‘cert’ (par défaut : ‘#f’)
          Le chemin vers le certificat TLS en PEM à utiliser pour
          chiffrer les connexions. Il doit être rempli avec une valeur
          venant de l’utilisateur.

     ‘key’ (par défaut : ‘#f’)
          Le chemin de fichier vers la clef privée PKCS8 à utilise pour
          les connexions chiffrées. Elle doit être remplie avec une
          valeur de l’utilisateur.

     ‘addr’ (par défaut : ‘'("0.0.0.0:1965" "[::]:1965")’)
          Une liste des adresses sur lesquelles écouter.

     ‘hostname’ (par défaut : ‘#f’)
          Le nom de domaine de ce serveur Gemini. Facultatif.

     ‘lang’ (par défaut : ‘#f’)
          Codes de langues RFC 4646 pour les documents text/gemini.
          Facultatif.

     ‘silent?’ (par défaut : ‘#f’)
          Indiquez ‘#t’ pour désactiver la journalisation de la sortie.

     ‘serve-secret?’ (par défaut : ‘#f’)
          Indiquez ‘#t’ pour servir des fichiers secrets (des fichiers
          et répertoires commençant par un point).

     ‘log-ip?’ (par défaut : ‘#t’)
          Indique si l’adresse IP de sortie doit être journalisée.

     ‘user’ (par défaut : ‘"agate"’)
          Propriétaire du processus ‘agate’.

     ‘group’ (par défaut : ‘"agate"’)
          Groupe du propriétaire du processus ‘agate’.

     ‘log-file’ (par défaut : ‘"/var/log/agate.log"’)
          Le fichier qui devrait contenir la sortie de journal d’Agate.


File: guix.fr.info,  Node: Services de certificats,  Next: Services DNS,  Prev: Services web,  Up: Services

12.9.20 Services de certificats
-------------------------------

Le module ‘(gnu services certbot)’ fournit un service qui récupère
automatiquement un certificat TLS valide de l’autorité de certification
Let’s Encrypt. Ces certificats peuvent ensuite être utilisés pour servir
du contenu de manière sécurisée sur HTTPS et d’autres protocoles basés
sur TLS, en sachant que le client sera capable de vérifier
l’authenticité du serveur.

   Let’s Encrypt (https://letsencrypt.org/) fournit l’outil ‘certbot’
pour automatiser le processus de certification. Cet outil génère d’abord
un clef sur le serveur de manière sécurisée. Ensuite il demande à
l’autorité de certification Let’s Encrypt de signer la clef. La CA
vérifie que la requête provient de l’hôte en question en utilisant un
protocole de défi-réponse, ce qui requiert que le serveur fournisse sa
réponse par HTTP. Si ce protocole se passe sans encombre, la CA signe la
clef et on obtient un certificat. Ce certificat est valide pour une
durée limitée et donc, pour continuer à fournir des services en TLS, le
serveur doit régulièrement demander à la CA de renouveler sa signature.

   Le service certbot automatise ce processus : la génération initiale
de la clef, la demande de certification initiale au service Let’s
Encrypt, l’intégration du protocole de défi/réponse dans le serveur web,
l’écriture du certificat sur le disque, les renouvellements périodiques
et les tâches de déploiement avec le renouvellement (p. ex. recharger
les services, copier les clefs avec d’autres permissions).

   Certbot est lancé deux fois par jour, à une minute aléatoire dans
l’heure. Il ne fera rien sauf si vos certificats doivent être renouvelés
ou sont révoqués, mais le lancer régulièrement permettra à vos services
de rester en ligne si Let’s Encrypt décide de révoquer votre certificat.

   En utilisant ce service, vous acceptez le document « ACME Subscriber
Agreement », qu’on peut trouver ici :
<https://acme-v01.api.letsencrypt.org/directory>.

 -- Variable Scheme : certbot-service-type
     Un type de service pour le client Let’s Encrypt ‘certbot’. Sa
     valeur doit être un enregistrement ‘certbot-configuration’ comme
     dans cet exemple :

          (define %nginx-deploy-hook
            (program-file
             "nginx-deploy-hook"
             #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read)))
                 (kill pid SIGHUP))))

          (service certbot-service-type
                   (certbot-configuration
                    (email "toto@example.net")
                    (certificates
                     (list
                      (certificate-configuration
                       (domains '("example.net" "www.example.net"))
                       (deploy-hook %nginx-deploy-hook))
                      (certificate-configuration
                       (domains '("titi.example.net")))))))

     Voir plus bas pour des détails sur ‘certbot-configuration’.

 -- Type de données : certbot-configuration
     Type données représentant la configuration du service ‘certbot’. Ce
     type a les paramètres suivants :

     ‘package’ (par défaut : ‘certbot’)
          Le paquet certbot à utiliser.

     ‘webroot’ (par défaut : ‘/var/www’)
          Le répertoire depuis lequel servir les fichiers du
          défi/réponse de Let’s Encrypt.

     ‘certificates’ (par défaut : ‘()’)
          Une liste de ‘certificates-configuration’ pour lesquels
          générer des certificats et demander des signatures. Chaque
          certificat a un ‘name’ et plusieurs ‘domains’.

     ‘email’ (par défaut : ‘#f’)
          Adresse de courriel facultative pour la création de compte et
          le contact de récupération de compte. Il est recommandé de
          l’indiquer car cela vous permet de recevoir des notifications
          importantes à propos de votre compte et des certificats créés.

     ‘server’ (par défaut : ‘#f’)
          URL facultative d’un serveur ACME. Indiquer ce paramètre
          remplace la valeur de certbot par défaut, qui est le serveur
          de Let’s Encrypt.

     ‘rsa-key-size’ (par défaut : ‘2048’)
          Taille de la clef RSA.

     ‘default-location’ (par défaut : voir plus bas)
          Le ‘nginx-location-configuration’ par défaut. Comme ‘certbot’
          doit pouvoir servir les défis et les réponses, il doit être
          capable de lancer un serveur web. Cela se fait en étendant le
          service web ‘nginx’ avec un ‘nginx-server-configuration’ qui
          écoute sur les DOMAINS sur le port 80 et qui a un
          ‘nginx-location-configuration’ pour le chemin ‘/.well-known/’
          utilisé par Let’s Encrypt. *Note Services web:: pour plus
          d’information sur les types de données de la configuration de
          nginx.

          Les requêtes vers d’autres URL correspondra à
          ‘default-location’, qui, s’il est présent, sera ajout é à tous
          les ‘nginx-server-configuration’.

          Par défaut, le ‘default-location’ sera une redirection de
          ‘http://DOMAIN/…’ vers ‘https://DOMAIN/…’, en vous laissant
          définir ce que vous voulez servir sur votre site en ‘https’.

          Passez ‘#f’ pour ne pas utiliser de location par défaut.

 -- Type de données : certificate-configuration
     Type de données représentant la configuration d’un certificat. Ce
     type a les paramètres suivants :

     ‘name’ (par défaut : voir plus bas)
          Ce nom est utilisé par Certbot pour ses tâches quotidiennes et
          dans les chemins de fichiers ; il n’affecte pas le contenu des
          certificats eux-mêmes. Pour voir les noms des certificats,
          lancez ‘certbot certificates’.

          Sa valeur par défaut est le premier domaine spécifié.

     ‘domains’ (par défaut : ‘()’)
          Le premier domaine spécifié sera le CN du sujet du certificat,
          et tous les domaines seront les noms alternatifs du sujet dans
          le certificat.

     ‘challenge’ (par défaut : ‘#f’)
          Le type de défi à utiliser avec certbot. Si ‘#f’ est spécifié,
          le défi HTTP par défaut sera utilisé. Si une valeur est
          spécifiée, le greffon manuel sera utilisé par défaut (voir
          ‘authentication-hook’, ‘cleanup-hook’ et la documentation sur
          <https://certbot.eff.org/docs/using.html#hooks>), et donne à
          Let’s Encrypt la permission d’enregistrer l’adresse IP
          publique de la machine qui a fait la demande.

     ‘csr’ (par défaut : ‘#f’)
          Nom de fichier d’une Demande de Signature de Certificat (CSR)
          au format DER ou PEM. Si ‘#f’ est spécifié, cet argument ne
          sera pas passé à ‘certbot’. Si une valeur est spécifiée,
          ‘certbot’ l’utilisera pour obtenir un certificat, au lieu
          d’utiliser une CSR auto-signée. Le(s) nom(s) de domaine
          mentionné(s) dans ‘domains’ doivent être en cohérence avec
          ceux mentionné(s) dans le fichier CSR.

     ‘authentication-hook’ (par défaut : ‘#t’)
          Commande à lancer dans un shell une fois par défi de
          certificat auquel répondre. Pour cette commande, la variable
          shell ‘$CERTBOT_DOMAIN’ contiendra le domaine à authentifier,
          ‘$CERTBOT_VALIDATION’ contiendra la chaîne de validation et
          ‘$CERTBOT_TOKEN’ contiendra le nom de fichier de la ressource
          demandée pour le défi HTTP-01.

     ‘cleanup-hook’ (par défaut : ‘#f’)
          Commande à lancer dans un shell une fois par défi de
          certificat auquel ‘auth-hook’ a répondu. Pour cette commande,
          les variables shell disponibles dans le script ‘auth-hook’
          sont toujours disponibles, et en plus ‘$CERTBOT_AUTH_OUTPUT’
          contiendra la sortie standard du script ‘auth-hook’.

     ‘deploy-hook’ (par défaut : ‘#f’)
          Commande à lancer dans un shell une fois par certificat
          récupéré avec succès. Pour cette commande, la variable
          ‘$RENEWED_LINEAGE’ pointera sur le sous-répertoire live (par
          exemple, ‘"/etc/letsencrypt/live/example.com"’) contenant le
          nouveau certificat et la clef ; la variable ‘$RENEWED_DOMAINS’
          contiendra les noms de domaines séparés par des espaces (par
          exemple ‘"example.com www.example.com"’).

   Pour chaque ‘certificate-configuration’, le certificat est sauvegardé
dans ‘/etc/letsencrypt/live/NAME/fullchain.pem’ et la clef est
sauvegardée dans ‘/etc/letsencrypt/live/NAME/privkey.pem’.


File: guix.fr.info,  Node: Services DNS,  Next: Services VNC,  Prev: Services de certificats,  Up: Services

12.9.21 Services DNS
--------------------

Le module ‘(gnu services dns)’ fournit des services liés au “système de
noms de domaines” (DNS). Il fournit un service de serveur pour héberger
un serveur DNS _faisant autorité_ pour plusieurs zones, en esclave ou en
maître. Ce service utilise Knot DNS (https://www.knot-dns.cz/). Il
fournit aussi un service de cache et de renvoie DNS pour le LAN, qui
utilise dnsmasq (http://www.thekelleys.org.uk/dnsmasq/doc.html).

Service Knot
............

Voici un exemple de configuration pour un serveur faisant autorité sur
deux zone, un maître et un esclave :

     (define-zone-entries example.org.zone
     ;; Name TTL Class Type Data
       ("@"  ""  "IN"  "A"  "127.0.0.1")
       ("@"  ""  "IN"  "NS" "ns")
       ("ns" ""  "IN"  "A"  "127.0.0.1"))

     (define master-zone
       (knot-zone-configuration
         (domain "example.org")
         (zone (zone-file
                 (origin "example.org")
                 (entries example.org.zone)))))

     (define slave-zone
       (knot-zone-configuration
         (domain "plop.org")
         (dnssec-policy "default")
         (master (list "plop-master"))))

     (define plop-master
       (knot-remote-configuration
         (id "plop-master")
         (address (list "208.76.58.171"))))

     (operating-system
       ;; ...
       (services (cons* (service knot-service-type
                          (knot-configuration
                            (remotes (list plop-master))
                            (zones (list master-zone slave-zone))))
                        ;; ...
                        %base-services)))

 -- Variable Scheme : knot-service-type
     C’est le type pour le serveur DNS Knot.

     Knot DNS est un serveur DNS faisant autorité, ce qui signifie qu’il
     peut servir plusieurs zones, c’est-à-dire des noms de domaines que
     vous achetez à un registrar. Ce serveur n’est pas un résolveur, ce
     qui signifie qu’il ne peut pas résoudre les noms pour lesquels il
     ne fait pas autorité. Ce serveur peut être configuré pour servir
     des zones comme un serveur maître ou comme un serveur esclave, en
     fonction des zones. Les zones esclaves récupèrent leurs données des
     maîtres, et seront servies comme faisant autorité. Du point de vue
     d’un résolveur, il n’y a pas de différence entre un maître et un
     esclave(1).

     Les types de données suivants sont utilisés pour configurer le
     serveur DNS Knot :

 -- Type de données : knot-key-configuration
     Type de données représentant une clef. Ce type a les paramètres
     suivants :

     ‘id’ (par défaut : ‘""’)
          Un identifiant pour d’autres champs de configuration qui se
          réfèrent à cette clef. Les ID doivent être uniques et non
          vides.

     ‘algorithm’ (par défaut : ‘#f’)
          L’algorithme à utiliser. Choisissez entre ‘#f’, ‘'hmac-md5’,
          ‘'hmac-sha1’, ‘'hmac-sha224’, ‘'hmac-sha256’, ‘'hmac-sha384’
          et ‘'hmac-sha512’.

     ‘secret’ (par défaut : ‘""’)
          La clef secrète elle-même.

 -- Type de données : knot-acl-configuration
     Type de données représentant une configuration de liste de contrôle
     d’accès (ACL). Ce type a les paramètres suivants :

     ‘id’ (par défaut : ‘""’)
          Un identifiant pour d’autres champs de configuration qui se
          réfèrent à cette clef. Les ID doivent être uniques et non
          vides.

     ‘address’ (par défaut : ‘'()’)
          Une liste ordonnée d’adresses IP, de sous-réseaux ou
          d’intervalles de réseaux représentés par des chaînes de
          caractères. La requête doit correspondre à l’une d’entre
          elles. La valeur vide signifie que l’adresse n’a pas besoin de
          correspondre.

     ‘key’ (par défaut : ‘'()’)
          Une liste ordonnées de références à des clefs représentés par
          des chaînes. La chaîne doit correspondre à un ID définie dans
          un ‘knot-key-configuration’. Aucune clef signifie qu’une clef
          n’est pas nécessaire pour correspondre à l’ACL.

     ‘action’ (par défaut : ‘'()’)
          Une liste ordonnée d’actions permises ou interdites par cet
          ACL. Les valeurs possibles sont une liste de zéro ou plus
          d’éléments entre ‘'transfer’, ‘'notify’ et ‘'update’.

     ‘deny?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, l’ACL définie des restrictions.
          Les actions listées sont interdites. Lorsque la valeur est
          fausse, les actions listées sont autorisées.

 -- Type de données : zone-entry
     Type de données représentant une entrée dans un fichier de zone. Ce
     type a les paramètres suivants :

     ‘name’ (par défaut : ‘"@"’)
          Le nom de l’enregistrement. ‘"@"’ se réfère à l’origine de la
          zone. Les noms sont relatifs à l’origine de la zone. Par
          exemple, dans la zone ‘example.org’, ‘"ns.example.org"’ se
          réfère en fait à ‘ns.example.org.example.org’. Les noms qui
          finissent par un point sont absolus, ce qui signifie que
          ‘"ns.example.org."’ se réfère bien à ‘ns.example.org’.

     ‘ttl’ (par défaut : ‘""’)
          La durée de vie (TTL) de cet enregistrement. S’il n’est pas
          indiqué, le TTL par défaut est utilisé.

     ‘class’ (par défaut : ‘"IN"’)
          La classe de l’enregistrement. Knot ne supporte actuellement
          que ‘"IN"’ et partiellement ‘"CH"’.

     ‘type’ (par défaut : ‘"A"’)
          Le type d’enregistrement. Les types usuels sont A (une adresse
          IPv4), NS (serveur de nom) et MX (serveur de courriel). Bien
          d’autres types sont définis.

     ‘data’ (par défaut : ‘""’)
          Les données contenues dans l’enregistrement. Par exemple une
          adresse IP associée à un enregistrement A, ou un nom de
          domaine associé à un enregistrement NS. Rappelez-vous que les
          noms de domaines sont relatifs à l’origine à moins qu’ils ne
          finissent par un point.

 -- Type de données : zone-file
     Type données représentant le contenu d’un fichier de zone. Ce type
     a les paramètres suivants :

     ‘entries’ (par défaut : ‘'()’)
          La liste des entrées. On s’occupe de l’enregistrement SOA,
          donc vous n’avez pas besoin de l’ajouter dans la liste des
          entrées. Cette liste devrait contenir une entrée pour votre
          serveur DNS primaire faisant autorité. En plus d’utiliser une
          liste des entrées directement, vous pouvez utiliser
          ‘define-zone-entries’ pour définir un objet contenant la liste
          des entrées plus facilement, que vous pouvez ensuite passer au
          champ ‘entries’ de ‘zone-file’.

     ‘origin’ (par défaut : ‘""’)
          Le nom de votre zone. Ce paramètre ne peut pas être vide.

     ‘ns’ (par défaut : ‘"ns"’)
          Le domaine de votre serveur DNS primaire faisant autorité. Le
          nom est relatif à l’origine, à moins qu’il finisse par un
          point. Il est nécessaire que ce serveur DNS primaire
          corresponde à un enregistrement NS dans la zone et qu’il soit
          associé à une adresse IP dans la liste des entrées.

     ‘mail’ (par défaut : ‘"hostmaster"’)
          Une adresse de courriel pour vous contacter en tant que
          propriétaire de la zone. Cela se transforme en
          ‘<mail>@<origin>’.

     ‘serial’ (par défaut : ‘1’)
          Le numéro de série de la zone. Comme c’est utilisé pour
          vérifier les changements à la fois par les esclaves et par les
          résolveurs, il est nécessaire qu’il ne décroisse _jamais_.
          Incrémentez-le toujours quand vous faites un changement sur
          votre zone.

     ‘refresh’ (par défaut : ‘(* 2 24 3600)’)
          La fréquence à laquelle les esclaves demanderont un transfert
          de zone. Cette valeur est un nombre de secondes. On peut le
          calculer avec des multiplications ou avec
          ‘(string->duration)’.

     ‘retry’ (par défaut : ‘(* 15 60)’)
          La période après laquelle un esclave essaiera de contacter son
          maître lorsqu’il échoue à le faire la première fois.

     ‘expiry’ (par défaut : ‘(* 14 24 3600)’)
          TTL par défaut des enregistrements. Les enregistrements
          existants sont considérés corrects pour au moins cette durée.
          Après cette période, les résolveurs invalideront leur cache et
          vérifieront de nouveau qu’ils existent toujours.

     ‘nx’ (par défaut : ‘3600’)
          TTL par défaut des enregistrement inexistants. Ce TTL est
          habituellement court parce que vous voulez que vous nouveaux
          domaines soient disponibles pour tout le monde le plus
          rapidement possible.

 -- Type de données : knot-remote-configuration
     Type de données représentant une configuration de serveurs
     distants. Ce type a les paramètres suivants :

     ‘id’ (par défaut : ‘""’)
          Un identifiant pour que les autres champs de configuration se
          réfèrent à ce serveur distant. les ID doivent être uniques et
          non vides.

     ‘address’ (par défaut : ‘'()’)
          Une liste ordonnée d’adresses IP de destination. Ces adresses
          sont essayées en séquence. Un port facultatif peut être donné
          avec le séparateur @. Par exemple ‘(list "1.2.3.4"
          "2.3.4.5@53")’. Le port par défaut est le 53.

     ‘via’ (par défaut : ‘'()’)
          Une liste ordonnée d’adresses IP sources. Une liste vide fera
          choisir une IP source appropriée à Knot. Un port facultatif
          peut être donné avec le séparateur @. La valeur par défaut est
          de choisir aléatoirement.

     ‘key’ (par défaut : ‘#f’)
          Une référence à une clef, c’est-à-dire une chaîne contenant
          l’identifiant d’une clef définie dans un champ
          ‘knot-key-configuration’.

 -- Type de données : knot-keystore-configuration
     Type de données représentant une base de clefs pour garder les
     clefs dnssec. Ce type a les paramètres suivants :

     ‘id’ (par défaut : ‘""’)
          L’id de cette base de clefs. Il ne doit pas être vide.

     ‘backend’ (par défaut : ‘'pem’)
          Le moteur de stockage des clefs. Cela peut être ‘'pem’ ou
          ‘'pkcs11’.

     ‘config’ (par défaut : ‘"/var/lib/knot/keys/keys"’)
          La chaine de configuration du moteur. Voici un exemple pour
          PKCS#11 : ‘"pkcs11:token=knot;pin-value=1234
          /gnu/store/.../lib/pkcs11/libsofthsm2.so"’. Pour le moteur
          pem, la chaine représente un chemin dans le système de
          fichiers.

 -- Type de données : knot-policy-configuration
     Type de données représentant une politique dnssec. Knot DNS est
     capable de signer automatiquement vos zones. Il peut soit générer
     et gérer vos clefs automatiquement ou utiliser des clefs que vous
     générez.

     Dnssec est habituellement implémenté avec deux clefs : une KSK (key
     signing key) qui est utilisé pour signer une seconde, la ZSK (zone
     signing key) qui est utilisée pour signer la zone. Pour pouvoir
     être de confiance, la KSK doit être présente dans la zone parente
     (normalement un domaine de haut niveau). Si votre registrar
     supporte dnssec, vous devrez leur envoyer le hash de votre KSK pour
     qu’il puisse ajouter un enregistrement DS dans la zone parente. Ce
     n’est pas automatique et vous devrez le faire à chaque fois que
     vous changerez votre KSK.

     La politique définie aussi la durée de vie des clefs.
     Habituellement, la ZSK peut être changée facilement et utilise des
     fonctions cryptographiques plus faibles (avec un paramètre plus
     faible) pour signer les enregistrements rapidement, donc elles sont
     changées très régulièrement. La KSK en revanche requiert une
     interaction manuelle avec le registrar, donc elle change moins
     souvent et utilise des paramètres plus robustes puisqu’elle ne
     signe qu’un seul enregistrement.

     Ce type a les paramètres suivants :

     ‘id’ (par défaut : ‘""’)
          L’id de la politique. Il ne doit pas être vide.

     ‘keystore’ (par défaut : ‘"default"’)
          Une référence à une base de clefs, c’est-à-dire une chaîne
          contenant l’identifiant d’une base de clefs définie dans un
          champ ‘knot-keystore-configuration’. L’identifiant ‘"default"’
          signifie la base par défaut (une base de données kasp
          initialisée par ce service).

     ‘manual?’ (par défaut : ‘#f’)
          Indique si la clef est gérée manuellement ou automatiquement.

     ‘single-type-signing?’ (par défaut : ‘#f’)
          Lorsque la valeur est ‘#t’, utilise le schéma de signature
          Single-Type.

     ‘algorithm’ (par défaut : ‘"ecdsap256sha256"’)
          Un algorithme de clef de signature et de signatures.

     ‘ksk-size’ (par défaut : ‘256’)
          La longueur de la KSK. Remarquez que cette valeur est correcte
          pour l’algorithme par défaut, mais ne serait pas sécurisée
          pour d’autres algorithmes.

     ‘zsk-size’ (par défaut : ‘256’)
          La longueur de la ZSK. Remarquez que cette valeur est correcte
          pour l’algorithme par défaut, mais ne serait pas sécurisée
          pour d’autres algorithmes.

     ‘dnskey-ttl’ (par défaut : ‘'default’)
          La valeur du TTL pour les enregistrements DNSKEY ajoutés au
          sommet de la zone. La valeur spéciale ‘'default’ signifie la
          même valeur que le TTL du SOA de la zone.

     ‘zsk-lifetime’ (par défaut : ‘(* 30 24 3600)’)
          La période entre la publication d’une ZSK et l’initialisation
          d’un nouveau changement.

     ‘propagation-delay’ (par défaut : ‘(* 24 3600)’)
          Un délai supplémentaire pour chaque étape du changement. Cette
          valeur devrait être assez grande pour couvrir le temps de
          propagation des données entre le serveur primaire et tous les
          secondaires.

     ‘rrsig-lifetime’ (par défaut : ‘(* 14 24 3600)’)
          Une période de validité des nouvelles signatures.

     ‘rrsig-refresh’ (par défaut : ‘(* 7 24 3600)’)
          Une période qui indique combien de temps avant l’expiration
          d’une signature elle sera rafraîchie.

     ‘nsec3?’ (par défaut : ‘#f’)
          Lorsque la valeur est ‘#t’, on utilisera NSEC3 au lien de
          NSEC.

     ‘nsec3-iterations’ (par défaut : ‘5’)
          Le nombre de fois supplémentaires que le hash est effectué.

     ‘nsec3-salt-length’ (par défaut : ‘8’)
          La longueur du champ de sel en octets, ajouté au nom du
          propriétaire avant de hasher.

     ‘nsec3-salt-lifetime’ (par défaut : ‘(* 30 24 3600)’)
          La période de validité des nouveaux champs sel.

 -- Type de données : knot-zone-configuration
     Type de données représentant la zone servie par Knot. ce type a les
     paramètres suivants :

     ‘domain’ (par défaut : ‘""’)
          Le domaine servi par cette configuration. Il ne doit pas être
          vide.

     ‘file’ (par défaut : ‘""’)
          Le fichier où la zone est sauvegardée. Ce paramètre est ignoré
          pour les zones maîtres. La valeur vide signifie l’emplacement
          par défaut qui dépend du nom de domaine.

     ‘zone’ (par défaut : ‘(zone-file)’)
          Le contenu du fichier de zone. Ce paramètre est ignoré par les
          zones esclaves. Il doit contenir un enregistrement zone-file.

     ‘master’ (par défaut : ‘'()’)
          Une liste des serveurs distants maîtres. Lorsque la liste est
          vide, cette zone est un maître. Lorsque la valeur est
          indiquée, cette zone est un esclave. C’est al liste des
          identifiants des serveurs distants.

     ‘ddns-master’ (par défaut : ‘#f’)
          Le maître principal. Lorsque la valeur est vide, la valeur par
          défaut est le premier maître de la liste des maîtres.

     ‘notify’ (par défaut : ‘'()’)
          Une liste d’identifiants de groupe de serveurs esclaves.

     ‘acl’ (par défaut : ‘'()’)
          Une liste d’identifiants d’ACL.

     ‘semantic-checks?’ (par défaut : ‘#f’)
          Lorsque la valeur est indiquée, cela ajoute plus de
          vérifications sémantiques à la zone.

     ‘zonefile-sync’ (par défaut : ‘0’)
          Le délai entre une modification en mémoire et sur le disque. 0
          signifie une synchronisation immédiate.

     ‘zonefile-load’ (par défaut : ‘#f’)
          La manière dont le contenu du fichier de zone influe sur le
          chargement de la zone. Les valeurs possibles sont :

             • ‘#f’ pour utilise la valeur par défaut de Knot,
             • ‘'none’ pour ne pas utiliser le fichier de zone du tout,
             • ‘'difference’ pour calculer les différences entre le
               contenu déjà disponible et le contenu du fichier de zone
               et les appliquer au contenu actuel de la zone,
             • ‘'difference-no-serial’ pour la même chose que
               ‘'difference’, mais en ignorant le serial du SOA du
               fichier de zone, pour que le serveur s’en charge
               automatiquement.
             • ‘'whole’ pour charger le contenu de la zone depuis le
               fichier de zone.

     ‘journal-content’ (par défaut : ‘#f’)
          La manière dont le journal est utilisé pour stocker la zone et
          ses changements. Les valeurs possibles sont ‘'none’ pour ne
          pas l’utiliser du tout, ‘'changes’ pour stocker les
          changements et ‘'all’ pour stocker le contenu. ‘#f’ ne met pas
          en place cette option et la valeur par défaut de Knot est
          utilisée.

     ‘max-journal-usage’ (par défaut : ‘#f’)
          La taille maximale du journal sur le disque. ‘#f’ ne met pas
          en place cette option et la valeur par défaut de Knot est
          utilisée.

     ‘max-journal-depth’ (par défaut : ‘#f’)
          La taille maximale de l’historique. ‘#f’ ne met pas en place
          cette option et la valeur par défaut de Knot est utilisée.

     ‘max-zone-size’ (par défaut : ‘#f’)
          La taille maximale du fichier de zone. Cette limite est prise
          en charge pour les transferts entrants et les mises à jour.
          ‘#f’ ne met pas en place cette option et la valeur par défaut
          de Knot est utilisée.

     ‘dnssec-policy’ (par défaut : ‘#f’)
          Une référence à un enregistrement ‘knot-policy-configuration’,
          ou le nom spécial ‘"default"’. Si la valeur est ‘#f’, cette
          zone n’est pas signée.

     ‘serial-policy’ (par défaut : ‘'increment’)
          Une politique entre ‘'increment’ et ‘'unixtime’.

 -- Type de données : knot-configuration
     Type de données représentant la configuration de Knot. Ce type a
     les paramètres suivants :

     ‘knot’ (par défaut : ‘knot’)
          Le paquet Knot.

     ‘run-directory’ (par défaut : ‘"/var/run/knot"’)
          Le répertoire de travail. Ce répertoire sera utilisé pour le
          fichier pid et les sockets.

     ‘includes’ (par défaut : ‘'()’)
          Une liste plate de chaînes ou d’objets simili-fichiers qui
          seront inclus en haut du fichier de configuration.

          Cela peut être utile pour gérer des secrets hors-bande. Par
          exemple, on peut stocker des clefs secrètes dans un fichier
          hors-bande qui n’est pas géré par Guix, et donc pas visible
          dans ‘/gnu/store’ — p. ex. vous pouvez stocker la
          configuration des clefs secrètes dans ‘/etc/knot/secrets.conf’
          et ajouter ce fichier à la lite ‘includes’.

          On peut générer une clé secrète tsig (pour nsupdate et les
          transferts de zones) avec la commande keymgr du paquet knot.
          Remarquez que le paquet n’est pas automatiquement installé par
          le service. L’exemple suivant montre comment générer une
          nouvelle clé tsig :

               keymgr -t mysecret > /etc/knot/secrets.conf
               chmod 600 /etc/knot/secrets.conf

          Remarquez aussi que la clé générée sera nommée MYSECRET, donc
          c’est le nom qui est requis dans le champ KEY de
          l’enregistrement ‘knot-acl-configuration’ et aux autres
          endroits qui se réfèrent à cette clé.

          Cela peut aussi être utilisé pour ajouter des configurations
          qui ne sont pas prises en charge par cette interface.

     ‘listen-v4’ (par défaut : ‘"0.0.0.0"’)
          Une adresse IP sur laquelle écouter.

     ‘listen-v6’ (par défaut : ‘"::"’)
          Une adresse IP sur laquelle écouter.

     ‘listen-port’ (par défaut : ‘53’)
          Un port sur lequel écouter.

     ‘keys’ (par défaut : ‘'()’)
          La liste des knot-key-configuration utilisés par cette
          configuration.

     ‘acls’ (par défaut : ‘'()’)
          La liste des knot-acl-configuration utilisés par cette
          configuration.

     ‘remotes’ (par défaut : ‘'()’)
          La liste des knot-remote-configuration utilisés par cette
          configuration.

     ‘zones’ (par défaut : ‘'()’)
          La liste des knot-zone-configuration utilisés par cette
          configuration.

Service de résolveur Knot
.........................

 -- Variable Scheme : knot-resolver-service-type
     C’est le type du service de résolution de knot, dont la valeur
     devrait être un objet ‘knot-resolver-configuration’ comme dans cet
     exemple :

          (service knot-resolver-service-type
                   (knot-resolver-configuration
                     (kresd-config-file (plain-file "kresd.conf" "
          net.listen('192.168.0.1', 5353)
          user('knot-resolver', 'knot-resolver')
          modules = { 'hints > iterate', 'stats', 'predict' }
          cache.size = 100 * MB
          "))))

     Pour plus d’information, regardez manual
     (https://knot-resolver.readthedocs.org/en/stable/daemon.html#configuration).

 -- Type de données : knot-resolver-configuration
     Type de données représentant la configuration de knot-resolver.

     ‘package’ (par défaut : KNOT-RESOLVER)
          Objet de paquet du résolveur DNS knot.

     ‘kresd-config-file’ (par défaut : %kresd.conf)
          Objet simili-fichier du fichier de configuration de kresd à
          utiliser. Par défaut il écoutera sur ‘127.0.0.1’ et ‘::1’.

     ‘garbage-collection-interval’ (par défaut : 1000)
          Nombre de millisecondes correspondant à la périodicité avec
          laquelle ‘kres-cache-gc’ nettoie le cache.

Services Dnsmasq
................

 -- Variable Scheme : dnsmasq-service-type
     C’est le type du service dnsmasq, dont la valeur devrait être un
     objet ‘dnsmasq-configuration’ comme dans cet exemple :

          (service dnsmasq-service-type
                   (dnsmasq-configuration
                     (no-resolv? #t)
                     (servers '("192.168.1.1"))))

 -- Type de données : dnsmasq-configuration
     Type de données qui représente la configuration de dnsmasq.

     ‘package’ (par défaut : DNSMASQ)
          L’objet de paquet du serveur dnsmasq.

     ‘no-hosts?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, ne pas lire les noms d’hôte dans
          /etc/hosts.

     ‘port’ (par défaut : ‘53’)
          Le port sur lequel écouter. Le mettre à zéro désactive
          complètement les réponses DNS, ce qui ne laisse que les
          fonctions DHCP et TFTP.

     ‘local-service?’ (par défaut : ‘#t’)
          Accepte les requêtes DNS seulement des hôtes dont les adresses
          sont sur le sous-réseau local, c.-à-d. sur un sous-réseau pour
          lequel une interface existe sur le serveur.

     ‘listen-addresses’ (par défaut : ‘'()’)
          Écoute sur le adresses IP données.

     ‘resolv-file’ (par défaut : ‘"/etc/resolv.conf"’)
          Le fichier où lire l’adresse IP des serveurs de noms en amont.

     ‘no-resolv?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, ne pas lire RESOLV-FILE.

     ‘forward-private-reverse-lookup?’ (par défaut : ‘#t’)
          Lorsque la valeur est fausse, toutes les requêtes inverses
          pour les intervalles d’IP privées reçoivent la réponse « le
          domaine n’existe pas » plutôt qu’être renvoyé en amont.

     ‘query-servers-in-order?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, dnsmasq demande aux serveurs dans
          le même ordre qu’ils apparaissent dans SERVERS.

     ‘servers’ (par défaut : ‘'()’)
          Spécifiez l’adresse IP des serveurs en amont directement.

     ‘addresses’ (par défaut : ‘'()’)
          Pour chaque entrée, spécifie une adresse IP à renvoyer pour
          les hôtes des domaines donnés. Les requêtes dans les domaines
          ne sont jamais envoyés et la réponse sera toujours l’adresse
          IP spécifiée.

          C’est utile pour rediriger des hôtes localement, comme dans
          cet exemple :

               (service dnsmasq-service-type
                        (dnsmasq-configuration
                          (addresses
                            '(; Redirige vers un serveur web local.
                              "/example.org/127.0.0.1"
                              ; Redirige un sous-domaine vers une adresse IP spécifique.
                              "/subdomain.example.org/192.168.1.42"))))

          Remarquez que les règles dans ‘/etc/hosts’ prennent le pas sur
          celles-ci.

     ‘cache-size’ (par défaut : ‘150’)
          Indique la taille du cache de dnsmasq. Indiquer 0 désactive le
          cache.

     ‘negative-cache?’ (par défaut : ‘#t’)
          Lorsque la valeur est fausse, désactive le cache des réponses
          négatives.

     ‘cpe-id’ (par défaut : ‘#f’)
          Si une valeur est indiquée, ajoute un identifiant CPE
          (Customer-Premises Equipment) aux requêtes DNS qui sont
          renvoyées en amont.

     ‘tftp-enable?’ (par défaut : ‘#f’)
          Indique s’il faut activer le serveur TFTP inclus.

     ‘tftp-no-fail?’ (par défaut : ‘#f’)
          Si la valeur est vraie, dnsmasq n’échoue pas si le serveur
          TFTP ne peut pas démarrer.

     ‘tftp-single-port?’ (par défaut : ‘#f’)
          Indique s’il faut utiliser un seul port pour TFTP.

     ‘tftp-secure?’ (par défaut : ‘#f’)
          Si la valeur est vraie, seuls les fichiers appartenant à
          l’utilisateur sous lequel tourne dnsmasq sont accessibles.

          Si dnsmasq est lancé en root, des règles différentes
          s’appliquent : ‘tft-secure?’ n’a pas d’effet, mais seuls les
          fichiers qui ont le bit de lecture pour tout le monde sont
          accessibles.

     ‘tftp-max’ (par défaut : ‘#f’)
          Si une valeur est indiquée, indique le nombre maximal de
          connexions permises en parallèle.

     ‘tftp-mtu’ (par défaut : ‘#f’)
          Si une valeur est indiquée, indique le MTU pour les paquets
          TFTP.

     ‘tftp-no-blocksize?’ (par défaut : ‘#f’)
          Si la valeur est vraie, empêche que le serveur TFTP ne négocie
          la taille de bloc avec un client.

     ‘tftp-lowercase?’ (par défaut : ‘#f’)
          Indique s’il faut convertir tous les noms de fichiers dans les
          requêtes TFTP en minuscule.

     ‘tftp-port-range’ (par défaut : ‘#f’)
          Si une valeur est indiquée, fixe les ports dynamiques (un par
          client) à la zone données (‘"<début>,<fin>"’).

     ‘tftp-root’ (par défaut : ‘/var/empty,lo’)
          Cherche les fichiers à transférer avec TFTP relativement au
          répertoire donné. Lorsque la valeur est indiquée, les chemins
          TFTP qui contiennent ‘..’ sont rejeté, pour éviter que les
          client n’arrivent en dehors de la racine donnée. Les chemins
          absolus (commençant par ‘/’) sont permis, mais ils doivent
          être à l’intérieur de la racine de TFTP. Si un argument
          d’interface facultatif est donné, le répertoire n’est utilisé
          que pour les requêtes TFTP via cette interface.

     ‘tftp-unique-root’ (par défaut : ‘#f’)
          Si une valeur est indiquée, ajoute d’IP ou l’adresse
          matérielle du client TFTP en tant que composant du chemin à la
          fin de la racine TFTP. Valide uniquement si une racine TFTP
          est indiquée et que le répertoire existe. La valeur par défaut
          ajoute l’adresse IP (au format à trois points standard).

          Par exemple, si -‘-tftp-root’ est ‘/tftp’ et que le client
          ‘1.2.3.4’ demande le fichier ‘monfichier’ alors le chemin
          effectif sera ‘/tftp/1.2.3.4/monfichier’ si ‘/tftp/1.2.3.4’
          existe, ou ‘/tftp/monfichier’ sinon. Avec ‘=mac’, c’est
          l’adresse MAC qui sera ajoutée à la place, en utilisant des
          nombres en minuscule à taille fixe et séparés par des tirets,
          p. ex. : ‘01-02-03-04-aa-bb’. Remarquez que la résolution
          d’une adresse MAC n’est possible que si le client est sur le
          réseau local ou a obtenu un bail DHCP de dnsmasq.

service ddclient
................

Le service ddclient décrit plus bas lance le démon ddclient, qui prend
en charge la mise à jour automatique des entrées DNS pour les
fournisseurs de service comme Dyn (https://dyn.com/dns/).

   L’exemple suivant montre comment instantier le service avec sa
configuration par défaut :

     (service ddclient-service-type)

   Remarquez que ddclient a besoin d’accéder à des identifiants stockés
dans un “fichier de secrets”, par défaut ‘/etc/ddclient/secrets’ (voir
‘secret-file’ plus bas). On s’attend à ce que vous créiez ce fichier
manuellement, de manière externe à guix (vous _pourriez_ ajouter ce
fichier dans une partie de votre configuration, par exemple avec
‘plain-file’, mais il serait lisible pour tout le monde via
‘/gnu/store’). Vois les exemples dans le répertoire ‘share/ddclient’ du
paquet ‘ddclient’.

   Les champs de ‘ddclient-configuration’ disponibles sont :

 -- paramètre de ‘ddclient-configuration’ : package ddclient
     Le paquet ddclient.

 -- paramètre de ‘ddclient-configuration’ : integer daemon
     La période après laquelle ddclient réessaiera de vérifier l’IP et
     le nom de domaine.

     La valeur par défaut est ‘300’.

 -- paramètre de ‘ddclient-configuration’ : boolean syslog
     Utiliser syslog pour la sortie.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘ddclient-configuration’ : string mail
     Courriel de l’utilisateur.

     La valeur par défaut est ‘"root"’.

 -- paramètre de ‘ddclient-configuration’ : string mail-failure
     Courriel de l’utilisateur pour les échecs.

     La valeur par défaut est ‘"root"’.

 -- paramètre de ‘ddclient-configuration’ : string pid
     Le fichier de PID de ddclient.

     La valeur par défaut est ‘"/var/run/ddclient/ddclient.pid"’.

 -- paramètre de ‘ddclient-configuration’ : boolean ssl
     Activer le support de SSL.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘ddclient-configuration’ : string user
     Spécifie le nm d’utilisateur ou l’ID qui est utilisé pour lancer le
     programme ddclient.

     La valeur par défaut est ‘"ddclient"’.

 -- paramètre de ‘ddclient-configuration’ : string group
     Groupe de l’utilisateur qui lancera le programme ddclient.

     La valeur par défaut est ‘"ddclient"’.

 -- paramètre de ‘ddclient-configuration’ : string secret-file
     Fichier de secrets qui sera ajouté au fichier ‘ddclient.conf’. Ce
     fichier contient les paramètres d’authentification utilisés par
     ddclient. On s’attend à ce que vous le créiez manuellement.

     La valeur par défaut est ‘"/etc/ddclient/secrets.conf"’.

 -- paramètre de ‘ddclient-configuration’ : list extra-options
     Options supplémentaires qui seront ajoutées au fichier
     ‘ddclient.conf’.

     La valeur par défaut est ‘()’.

   ---------- Footnotes ----------

   (1) NdT : Voir la conférence en Français de Stéphane Bortzmeyer pour
en apprendre plus sur le DNS :
<https://iletaitunefoisinternet.fr/dns-bortzmeyer/index.html>


File: guix.fr.info,  Node: Services VNC,  Next: Services VPN,  Prev: Services DNS,  Up: Services

12.9.22 Services VNC
--------------------

le module ‘(gnu services vnc)’ fournit les services liés à
“l’informatique virtuelle en réseau” (VNC), qui rend possible
l’utilisation locale d’applications Xorg graphiques qui tournent sur une
machine distante. Avec un gestionnaire graphique qui prend en charge le
“protocole de contrôle de gestion de l’affichage X”, comme GDM (*note
gdm::) ou LightDM (*note lightdm::), il est possible de rendre un bureau
à distance complet pour un environnement multi-utilisateur.

Xvnc
....

Xvnc est un serveur VNC qui démarre son propre serveur X. Cela signifie
qu’il peut lancer des serveurs sans affichage. Les implémentations de
Xvnc fournies par ‘tigervnc-server’ et ‘turbovnc’ se veulent rapides et
efficaces.

 -- Variable : Variable Scheme xvnc-service-type

     Le service ‘xvnc-server-type’ peut être configuré via
     l’enregistrement ‘xvnc-configuration’, documenté ci-dessous. Un
     second affichage virtuel peut être créé sur une machine à distance
     via la configuration suivante :

     (service xvnc-service-type
              (xvnc-configuration (display-number 10)))

   Pour l’exemple, la commande ‘xclock’ peut ensuite être démarrée sur
la machine à distance sur l’affichage numéro 10, et elle peut être
affichée localement via la commande ‘vncviewer’ :
     # Démarre xclock sur la machine distante.
     ssh -L5910:localhost:5910 -- guix shell xclock -- env DISPLAY=:10 xclock
     # On y accède via VNC.
     guix shell tigervnc-client -- vncviewer localhost:5910

   La configuration suivante combine XDMCP et Inetd pour permettre à
plusieurs utilisateurs ou utilisatrices d’utiliser le système à distance
et de se connecter via le gestionnaire d’affichage GDM en même temps :

     (operating-system
       [...]
       (services (cons*
                  [...]
                  (service xvnc-service-type (xvnc-configuration
                                              (display-number 5)
                                              (localhost? #f)
                                              (xdmcp? #t)
                                              (inetd? #t)))
                  (modify-services %desktop-services
                    (gdm-service-type config => (gdm-configuration
                                                 (inherit config)
                                                 (auto-suspend? #f)
                                                 (xdmcp? #t)))))))

   Vous pouvez ensuite vous connecter à distance en utilisant la
commande ‘vncviewer’ ou un client VNC compatible et démarrer une session
de bureau de votre choix :
     vncviewer hôte-distant:5905

     Attention : À moins que votre machine ne se trouve dans un
     environnement contrôlé, pour des raisons de sécurité, la
     configuration ‘localhost?’ de l’enregistrement ‘xvnc-configuration’
     devrait garder sa valeur par défaut ‘#t’ et être exposé par un
     moyen sécurisé comme la redirection de port SSH. Le port XDMCP, UDP
     177 devrait aussi être bloqué de l’extérieur par un pare-feu, car
     ce n’est pas un protocole sécurisé et peut exposer les identifiants
     en clair.

 -- Type de données : xvnc-configuration
     Les champs de ‘xvnc-configuration’ disponibles sont :

     ‘xvnc’ (par défaut : ‘tigervnc-server’) (type : simili-fichier)
          Le paquet qui fournit le binaire Xvnc.

     ‘display-number’ (par défaut : ‘0’) (type : nombre)
          Le numéro d’affichage utilisé par Xvnc. Vous devriez le
          paramétrer à un numéro non utilisé par un serveur Xorg.

     ‘geometry’ (par défaut : ‘"1024x768"’) (type : chaine)
          La taille du bureau à créer.

     ‘depth’ (par défaut : ‘24’) (type : color-depth)
          La profondeur de pixel en bits du bureau à créer . Les valeurs
          possibles sont 16, 24 et 32.

     ‘port’ (type : peut-être-port)
          Le port sur lequel écouter les connexions entrantes des
          visualiseurs. Si la valeur n’est pas spécifiée, écoute sur le
          port 5900 plus le numéro d’affichage par défaut.

     ‘ipv4?’ (par défaut : ‘#t’) (type : booléen)
          Utiliser IPv4 pour les connexions entrantes et sortantes.

     ‘ipv6?’ (par défaut : ‘#t’) (type : booléen)
          Utiliser IPv6 pour les connexions entrantes et sortantes.

     ‘password-file’ (type : peut-être-chaine)
          Le mot de passe à utiliser, si vous en voulez un. Consultez
          vncpasswd(1) pour apprendre à générer un tel fichier.

     ‘xdmcp?’ (par défaut : ‘#f’) (type : booléen)
          Demande une session au serveur XDMCP. Cela permet aux
          utilisateurs et aux utilisatrices de se connecter à une
          session de bureau depuis l’écran du gestionnaire de connexion.
          Pour un scénario à plusieurs utilisateurs et utilisatrices,
          vous devrez également activer l’option ‘inetd?’ pour que
          chaque connexion au serveur VNC soit gérée séparément, plutôt
          qu’elles soient partagées.

     ‘inetd?’ (par défaut : ‘#f’) (type : booléen)
          Utiliser un service de type Inetd, qui lance le serveur Xvnc à
          la demande.

     ‘frame-rate’ (par défaut : ‘60’) (type : entier)
          Le nombre maximum de mise à jour par seconde envoyées à chaque
          client.

     ‘security-types’ (par défaut : ‘("None")’) (type : types-de-sécurité)
          Les schémas de sécurité autorisés à utiliser pour les
          connexions entrantes. La valeur par défaut est "None", ce qui
          est sûr étant donné que Xvnc est configuré pour authentifier
          les personnes via le gestionnaire d’affichage et seulement
          pour les connexions locales. Les valeurs acceptées sont les
          suivantes : ("None" "VncAuth" "Plain" "TLSNone" "TLSVnc"
          "TLSPlain" "X509None" "X509Vnc")

     ‘localhost?’ (par défaut : ‘#t’) (type : booléen)
          Ne permettre que les connexions de la même machine. La valeur
          est #true par défaut par sécurité, ce qui signifie que SSH ou
          d’autres manières sécurisées doivent être utilisés pour
          exposer le port distant.

     ‘log-level’ (par défaut : ‘30’) (type : niveau-de-journalisation)
          Le niveau de journalisation, un nombre entre 0 et 100, 100
          étant la sortie la plus verbeuse. Les messages de
          journalisation sont envoyés au syslog.

     ‘extra-options’ (par défaut : ‘()’) (type : chaines)
          On peut utiliser cette option pour fournir des options Xvnc
          supplémentaires qui ne sont pas proposées par cet
          enregistrement <xvnc-configuration>.


File: guix.fr.info,  Node: Services VPN,  Next: Système de fichiers en réseau,  Prev: Services VNC,  Up: Services

12.9.23 Services VPN
--------------------

Le module ‘(gnu services vpn)’ fournit des services liés aux “réseaux
privés virtuels” (VPN).

Bitmask
.......

 -- Variable Scheme : bitmask-service-type
     Un type de service pour le client VPN Bitmask
     (https://bitmask.net). Il rend le client disponible dans le système
     et charge sa politique Polkit. Remarquez que le client attend un
     ‘polkit-agent’ actif, lancé soit par votre environnement de bureau
     soit par vous manuellement.

OpenVPN
.......

Il fournit un service _client_ pour que votre machine se connecte à un
VPN et un service _serveur_ pour que votre machine héberge un VPN.

 -- Procédure Scheme : openvpn-client-service [#:config
          (openvpn-client-configuration)]

     Renvoie un service qui lance ‘openvpn’, un démon VPN, en tant que
     client.

 -- Procédure Scheme : openvpn-server-service [#:config
          (openvpn-server-configuration)]

     Renvoie un service qui lance ‘openvpn’, un démon VPN, en tant que
     serveur.

     Les deux services peuvent être lancés en même temps.

 -- Type de données : openvpn-client-configuration
     Les champs de ‘openvpn-client-configuration’ disponibles sont :

     ‘openvpn’ (par défaut : ‘openvin’) (type : simili-fichier)
          Le paquet OpenVPN.

     ‘pid-file’ (par défaut : ‘"/var/run/openvpn/openvpn.pid"’) (type : chaine)
          Le fichier de PID d’OpenVPN.

     ‘proto’ (par défaut : ‘udp’) (type : proto)
          Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre
          les clients et les serveurs.

     ‘dev’ (par défaut : ‘tun’) (type : dev)
          Le périphérique utilisé pour représenter la connexion VPN.

     ‘ca’ (par défaut : ‘"/etc/openvpn/ca.crt"’) (type : peut-être-chaine)
          L’autorité de certification qui sert à vérifier les
          connexions.

     ‘certe’ (par défaut : ‘"/etc/openvpn/client.crt"’) (type : peut-être-chaine)
          Le certificat de la machine sur laquelle tourne le démon. Il
          devrait être signé par l’autorité indiquée dans ‘ca’.

     ‘key’ (par défaut : ‘"/etc/openvpn/client.key"’) (type : peut-être-chaine)
          La clef de la machine sur laquelle tourne le démon. Elle doit
          être la clef dont le certificat est donné dans ‘cert’.

     ‘comp-lzo?’ (par défaut : ‘#t’) (type : booléen)
          Indique s’il faut utiliser l’algorithme de compression lzo.

     ‘persist-key?’ (par défaut : ‘#t’) (type : booléen)
          Ne pas relire les fichiers de clefs entre les SIGUSR1 et les
          –ping-restart.

     ‘persist-tun?’ (par défaut : ‘#t’) (type : booléen)
          Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer
          de scripts de démarrage/d’arrêt entre les SIGUSR1 et les
          –ping-restart.

     ‘fast-io?’ (par défaut : ‘#f’) (type : booléen)
          (Expérimental) Optimise les écritures TUN/TAP/UDP en évitant
          d’appeler poll/epoll/select avant l’opération d’écriture.

     ‘verbosity’ (par défaut : ‘3’) (type : entier)
          Niveau de verbosité.

     ‘tls-auth’ (par défaut : ‘#f’) (type : tls-auth-client)
          Ajoute une couche d’authentification HMAC supplémentaire au
          dessus du canal de contrôle TLS pour se protéger contre les
          attaques DoS.

     ‘auth-user-pass’ (type : peut-être-chaine)
          S’authentifie avec le serveur en utilisant le nom
          d’utilisateur et le mot de passe. L’option est un fichier
          contenant le nom d’utilisateur et le mot de passe sur deux
          lignes. N’utilisez pas un objet simili-fichier car il serait
          ajouté au dépôt et serait lisible pour n’importe quel
          utilisateur.

     ‘verify-key-usage?’ (par défaut : ‘#t’) (type : key-usage)
          Indique s’il faut vérifier que le certificat du serveur a
          l’extension d’utilisation.

     ‘bind?’ (par défaut : ‘#f’) (type : bind)
          Se lier à un port spécifique.

     ‘resolv-retry?’ (par défaut : ‘#t’) (type : resolv-retry)
          Réessayer de résoudre l’adresse du serveur.

     ‘remote’ (par défaut : ‘()’) (type : liste-de-openvpn-remote)
          Une liste de serveurs distants sur lesquels se connecter.

           -- Type de données : openvpn-remote-configuration
               Les champs de ‘openvpn-remote-configuration’ disponibles
               sont :

               ‘name’ (par défaut : ‘"my-server"’) (type : chaine)
                    Nom du serveur.

               ‘port’ (par défaut : ‘1194’) (type : nombre)
                    Numéro de port sur lequel écoute le serveur.

 -- Type de données : openvpn-server-configuration
     Les champs de ‘openvpn-server-configuration’ disponibles sont :

     ‘openvpn’ (par défaut : ‘openvin’) (type : simili-fichier)
          Le paquet OpenVPN.

     ‘pid-file’ (par défaut : ‘"/var/run/openvpn/openvpn.pid"’) (type : chaine)
          Le fichier de PID d’OpenVPN.

     ‘proto’ (par défaut : ‘udp’) (type : proto)
          Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre
          les clients et les serveurs.

     ‘dev’ (par défaut : ‘tun’) (type : dev)
          Le périphérique utilisé pour représenter la connexion VPN.

     ‘ca’ (par défaut : ‘"/etc/openvpn/ca.crt"’) (type : peut-être-chaine)
          L’autorité de certification qui sert à vérifier les
          connexions.

     ‘certe’ (par défaut : ‘"/etc/openvpn/client.crt"’) (type : peut-être-chaine)
          Le certificat de la machine sur laquelle tourne le démon. Il
          devrait être signé par l’autorité indiquée dans ‘ca’.

     ‘key’ (par défaut : ‘"/etc/openvpn/client.key"’) (type : peut-être-chaine)
          La clef de la machine sur laquelle tourne le démon. Elle doit
          être la clef dont le certificat est donné dans ‘cert’.

     ‘comp-lzo?’ (par défaut : ‘#t’) (type : booléen)
          Indique s’il faut utiliser l’algorithme de compression lzo.

     ‘persist-key?’ (par défaut : ‘#t’) (type : booléen)
          Ne pas relire les fichiers de clefs entre les SIGUSR1 et les
          –ping-restart.

     ‘persist-tun?’ (par défaut : ‘#t’) (type : booléen)
          Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer
          de scripts de démarrage/d’arrêt entre les SIGUSR1 et les
          –ping-restart.

     ‘fast-io?’ (par défaut : ‘#f’) (type : booléen)
          (Expérimental) Optimise les écritures TUN/TAP/UDP en évitant
          d’appeler poll/epoll/select avant l’opération d’écriture.

     ‘verbosity’ (par défaut : ‘3’) (type : entier)
          Niveau de verbosité.

     ‘tls-auth’ (par défaut : ‘#f’) (type : tls-auth-server)
          Ajoute une couche d’authentification HMAC supplémentaire au
          dessus du canal de contrôle TLS pour se protéger contre les
          attaques DoS.

     ‘port’ (par défaut : ‘1194’) (type : nombre)
          Spécifie le numéro de port sur lequel les serveurs écoutent.

     ‘server’ (par défaut : ‘"10.8.0.0 255.255.255.0"’) (type : ip-mask)
          Une ip et un masque de sous-réseau spécifiant le sous-réseau
          dans le réseau virtuel.

     ‘server-ipv6’ (par défaut : ‘#f’) (type : cidr6)
          Une notation CIDR pour spécifier le sous-réseau IPv6 dans le
          réseau virtuel.

     ‘dh’ (par défaut : ‘"/etc/openvpn/dh2048.pem"’) (type : chaine)
          Le fichier de paramètres Diffie-Hellman.

     ‘ifconfig-pool-persist’ (par défaut : ‘"/etc/openvpn/ipp.txt"’) (type : chaine)
          Le fichier qui enregistre les IP des clients.

     ‘redirect-gateway?’ (par défaut : ‘#f’) (type : gateway)
          Lorsque la valeur est vraie, le serveur agira comme une
          passerelle pour ses clients.

     ‘client-to-client?’ (par défaut : ‘#f’) (type : booléen)
          Lorsque la valeur est vraie, les clients sont autorisés à se
          parler entre eux dans le VPN.

     ‘keepalive’ (par défaut : ‘(10 120)’) (type : keepalive)
          Fait que des messages de ping sont envoyés régulièrement dans
          les deux sens pour que chaque côté sache quand l’autre n’est
          plus disponible. ‘keepalive’ a besoin d’une paire. Le premier
          élément est la période d’envoi du ping, et le second élément
          est le délai d’attente avant de considéré que l’autre côté
          n’est plus disponible.

     ‘max-clients’ (par défaut : ‘100’) (type : nombre)
          Le nombre maximum de clients.

     ‘status’ (par défaut : ‘"/var/run/openvpn/status"’) (type : chaine)
          Le fichier de statut. Ce fichier montre un court rapport sur
          les connexions actuelles. Il est tronqué et réécrit toutes les
          minutes.

     ‘client-config-dir’ (par défaut : ‘()’) (type : liste-de-openvpn-ccd)
          La liste des configuration pour certains clients.

strongSwan
----------

Pour l’instant, le service ‘strongSwan’ fournit seulement une
configuration héritée des version précédentes avec des fichiers
‘ipsec.conf’ et ‘ipsec.secrets’.

 -- Variable Scheme : strongswan-service-type
     Un type de service pour configurer strongSwan pour un VPN (réseau
     privé virtuel) IPsec. Sa valeur doit être un enregistrement
     ‘strongswan-configuration’ comme dans cet exemple :

          (service strongswan-service-type
                   (strongswan-configuration
                    (ipsec-conf "/etc/ipsec.conf")
                    (ipsec-secrets "/etc/ipsec.secrets")))

 -- Type de données : strongswan-configuration
     Le type de données représentant la configuration du service
     StrongSwan.

     ‘strongswan’
          Le paquet strongSwan à utiliser pour ce service.

     ‘ipsec-conf’ (par défaut : ‘#f’)
          Le nom de fichier de votre ‘ipsec.conf’. Si différent de ‘#f’,
          alors cette valeur et ‘ipsec-secrets’ doivent toutes deux être
          des chaînes de caractères.

     ‘ipsec-secrets’ (par défaut : ‘#f’)
          Le nom de fichier de votre ‘ipsec.secrets’. Si différent de
          ‘#f’, alors cette valeur et ‘ipsec-conf’ doivent toutes deux
          être des chaînes de caractères.

Wireguard
.........

 -- Variable Scheme : wireguard-service-type
     Un type de service pour une interface de tunnel Wireguard. Sa
     valeur doit être un enregistrement ‘wireguard-configuration’ comme
     dans cet exemple :

          (service wireguard-service-type
                   (wireguard-configuration
                    (peers
                     (list
                      (wireguard-peer
                       (name "my-peer")
                       (endpoint "my.wireguard.com:51820")
                       (public-key "hzpKg9X1yqu1axN6iJp0mWf6BZGo8m1wteKwtTmDGF4=")
                       (allowed-ips '("10.0.0.2/32")))))))

 -- Type de données : wireguard-configuration
     Le type de données représentant la configuration du service
     Wireguard.

     ‘wireguard’
          Le paquet wireguard à utiliser pour ce service.

     ‘interface’ (par défaut : ‘"wg0"’)
          Le nom d’interface pour le VPN.

     ‘addresses’ (par défaut : ‘"10.0.01/32"’)
          Les adresses IP à assigner à l’interface ci-dessus.

     ‘port’ (par défaut : ‘51820’)
          Le port sur lequel écouter les connexions entrantes.

     ‘dns’ (par défaut : ‘#f’)
          Les serveurs DNS à annoncer aux clients VPN via DHCP.

     ‘private-key’ (par défaut : ‘"/etc/wireguard/private.key"’)
          Le fichier de clé privée pour l’interface. Il est
          automatiquement généré si le fichier n’existe pas.

     ‘peers’ (par défaut : ‘'()’)
          Les pairs autorisés sur cette interface. C’est une liste
          d’enregistrements WIREGUARD-PEER.

     ‘pre-up’ (par défaut : ‘'()’)
          Les commandes de script à lancer avant de configurer
          l’interface.

     ‘post-up’ (par défaut : ‘'()’)
          Les commandes de script à lancer après la configuration de
          l’interface.

     ‘pre-down’ (par défaut : ‘'()’)
          Les commandes de script à lancer avec d’arrêter l’interface.

     ‘post-down’ (par défaut : ‘'()’)
          Les commandes de script à lancer après l’arrêt de l’interface.

     ‘table’ (par défaut : ‘"auto"’)
          La table de routage à laquelle les routes sont ajoutées, en
          tant que chaine. Il y a deux valeurs spéciales : ‘"off"’ qui
          désactive la création de route complètement, et ‘"auto"’ (par
          défaut) qui ajoute les routes à la table par défaut et active
          la gestion spéciale des routes par défaut.

 -- Type de données : wireguard-peer
     Type de données représentant un pair Wireguard attaché à une
     interface donnée.

     ‘name’
          Le nom du pair.

     ‘endpoint’ (par défaut : ‘#f’)
          Le point d’entrée facultatif du pair, comme
          ‘"demo.wireguard.com:51820"’.

     ‘public-key’
          La clé publique du pair, représentée par une chaîne en base64.

     ‘allowed-ips’
          Une liste d’adresses IP à partir desquelles le trafic entrant
          pour ce pair est autorisé et vers lesquelles le trafic à
          destination de ce pair est dirigé.

     ‘keep-alive’ (par défaut : ‘#f’)
          Une durée en seconde facultative. Un paquet sera régulièrement
          envoyé au serveur après cette durée. Cela aide à recevoir les
          connexions entrantes de ce pair si vous êtes derrière un NAT
          ou un pare-feu.


File: guix.fr.info,  Node: Système de fichiers en réseau,  Next: Services Samba,  Prev: Services VPN,  Up: Services

12.9.24 Système de fichiers en réseau
-------------------------------------

Le module ‘(gnu services nfs)’ fournit les services suivants, qui sont
tous utilisés pour monter et exporter des arborescences de répertoires
en “network file systems” (NFS).

   Bien qu’il soit possible d’utiliser des composants individuels qui
forment ensemble un service de système de fichiers en réseau, nous
recommandons de configurer un serveur NFS avec ‘nfs-service-type’.

Services NFS
............

Le service NFS s’occupe de paramétrer tous les services composant NFS,
les systèmes de fichiers de configuration du noyau et installe les
fichiers de configuration aux endroit attendus par NFS.

 -- Variable Scheme : nfs-service-type
     Un type de service pour un serveur NFS complet.

 -- Type de données : nfs-configuration
     Ce type de données représente la configuration d’un service NFS et
     de tous ses sous-systèmes.

     Il prend les paramètres suivants :
     ‘nfs-utils’ (par défaut : ‘nfs-utils’)
          Le paquet nfs-utils à utiliser.

     ‘nfs-versions’ (par défaut : ‘'("4.2" "4.1" "4.0")’)
          Si une liste de chaines est fournie, le démon ‘rpc.nfsd’ sera
          limité à la prise en charge des versions données du protocole
          NFS.

     ‘exports’ (par défaut : ‘'()’)
          C’est une liste de répertoires que le serveur NFS devrait
          exporter. Chaque entrée est une liste consistant en deux
          éléments : un nom de répertoire et une chaine de caractères
          contenant toutes les options. Voici un exemple dans lequel le
          répertoire ‘/export’ est servi à tous les clients en
          lecture-seule :

               (nfs-configuration
                (exports
                 '(("/export"
                    "*(ro,insecure,no_subtree_check,crossmnt,fsid=0)"))))

     ‘rpcmountd-port’ (par défaut : ‘#f’)
          Le port réseau que le démon ‘rpc.mountd’ devrait utiliser.

     ‘rpcstatd-port’ (par défaut : ‘#f’)
          Le port réseau que le démon ‘rpc.statd’ devrait utiliser.

     ‘rpcbind’ (par défaut : ‘rpcbind’)
          Le paquet rpcbind à utiliser.

     ‘idmap-domain’ (par défaut : ‘"localdomain"’)
          Le nom de domaine NFSv4 local.

     ‘nfsd-port’ (par défaut : ‘2049’)
          Le port réseau que le démon ‘nfsd’ devrait utiliser.

     ‘nfsd-threads’ (par défaut : ‘8’)
          Le nombre de thread à utiliser par le démon ‘nfsd’.

     ‘nfsd-tcp?’ (par défaut : ‘#t’)
          Indique si le démon ‘nfsd’ devrait écouter sur une socket TCP.

     ‘nfsd-udp?’ (par défaut : ‘#f’)
          Indique si le démon ‘nfsd’ devrait écouter sur une socket UDP.

     ‘pipefs-directory’ (par défaut : ‘"/var/lib/nfs/rpc_pipefs"’)
          Le répertoire où le système de fichier pipefs doit être monté.

     ‘debug’ (par défaut : ‘'()"’)
          Une liste des sous-systèmes pour lesquels la sortie de
          débogage est activée. C’est une liste de symboles. Ces
          symboles sont valides : ‘nfsd’, ‘nfs’, ‘rpc’, ‘idmap’, ‘statd’
          et ‘mountd’.

   Si vous n’avez pas besoin d’un service NFS complet ou préférez le
construire vous-même vous pouvez utiliser les composants individuels
décrit plus bas.

Service RPC Bind
................

Le service RPC Bind fournit un dispositif pour faire correspondre les
numéros de programmes à des adresses universelles. De nombreux services
liés à NFS utilisent ce dispositif. Donc il est automatiquement démarré
lorsqu’un service qui en dépend est démarré.

 -- Variable Scheme : rpcbind-service-type
     Un type de service pour le démon RPC portmapper.

 -- Type de données : rpcbind-configuration
     Type données représentant la configuration du service RPC Bind. Ce
     type a les paramètres suivants :
     ‘rpcbind’ (par défaut : ‘rpcbind’)
          Le paquet rpcbind à utiliser.

     ‘warm-start?’ (par défaut : ‘#t’)
          Si ce paramètre est ‘#t’, alors le démon lira un fichier
          d’état au démarrage ce qui lui fait recharger les informations
          d’états sauvegardés par une instance précédente.

Pseudo-système de fichiers Pipefs
.................................

Le système de fichiers pipefs est utilisé pour transférer des données
liées à NFS entre le noyau et les programmes en espace utilisateur.

 -- Variable Scheme : pipefs-service-type
     Un type de service pour le pseudo-système de fichiers pipefs.

 -- Type de données : pipefs-configuration
     Type de données représentant la configuration du service du
     pseudo-système de fichiers pipefs. Ce type a les paramètres
     suivants :
     ‘mount-point’ (par défaut : ‘"/var/lib/nfs/rpc_pipefs"’)
          Le répertoire dans lequel le système de fichiers est attaché.

Service de démon GSS
....................

Le démon du “système de sécurité global” (GSS) fournit une sécurité
forte pour les protocoles basés sur des RPC. Avant d’échanger des
requêtes RPC, un client RPC doit établir un contexte sécurisé.
Typiquement cela se fait avec la commande Kerberos ‘kinit’ ou
automatiquement à la connexion avec les services PAM (*note Services
Kerberos::).

 -- Variable Scheme : gss-service-type
     Un type de service pour le démon du système de sécurité global
     (GSS).

 -- Type de données : gss-configuration
     Type de données représentant la configuration du service du démon
     GSS. Ce type a les paramètres suivants :
     ‘nfs-utils’ (par défaut : ‘nfs-utils’)
          Le paquet dans lequel la commande ‘rpc.gssd’ se trouve.

     ‘pipefs-directory’ (par défaut : ‘"/var/lib/nfs/rpc_pipefs"’)
          Le répertoire où le système de fichier pipefs doit être monté.

Service de démon IDMAP
......................

Le service du démon idmap fournit une correspondance entre les ID
utilisateur et les noms d’utilisateurs. Typiquement, cela est requis
pour accéder aux systèmes de fichiers montés via NFSv4.

 -- Variable Scheme : idmap-service-type
     Un type de service pour le démon de correspondance d’identité
     (IDMAP).

 -- Type de données : idmap-configuration
     Type de données représentant la configuration du service du démon
     IDMAP. Ce type a les paramètres suivants :
     ‘nfs-utils’ (par défaut : ‘nfs-utils’)
          Le paquet dans lequel se trouve la commande ‘rpc.idmapd’.

     ‘pipefs-directory’ (par défaut : ‘"/var/lib/nfs/rpc_pipefs"’)
          Le répertoire où le système de fichier pipefs doit être monté.

     ‘domain’ (par défaut : ‘#f’)
          Le nom de domaine NFSv4 local. Il faut que ce soit une chaîne
          de caractères ou ‘#f’. Si la valeur est ‘#f’ le démon
          utilisera le nom de domaine pleinement qualifié de l’hôte.

     ‘verbosity’ (par défaut : ‘0’)
          Le niveau de verbosité du démon.


File: guix.fr.info,  Node: Services Samba,  Next: Intégration continue,  Prev: Système de fichiers en réseau,  Up: Services

12.9.25 Services Samba
----------------------

Le module ‘(gnu services samba)’ fournit des définitions de services
pour les services Samba ainsi que d’autres services utilitaires.
Actuellement il fournit les services suivants.

Samba
.....

Samba (https://www.samba.org) fournit des partages réseau pour les
répertoires et les imprimantes qui utilisent le protocole SMB/CIFS
souvent utilisé sous Windows. Il peut aussi se comporter comme un
contrôleur de domaine Active Directory (AD DC) pour les autres hôtes
dans un réseau hétérogène avec plusieurs types d’ordinateurs.

 -- Variable : Variable Scheme samba-service-type

     Le type de service pour activer les services samba ‘samba’, ‘nmbd’,
     ‘smbd’ et ‘winbindd’. Par défaut ce type de service ne lance aucun
     démon Samba. Ils doivent être activés individuellement.

     voici un exemple de base qui configure un partage de fichiers Samba
     simple et anonyme (sans authentification) qui expose le répertoire
     ‘/public’.

          Astuce : Le répertoire ‘/public’ et sont contenu doivent être
          disponible en lecture-écriture pour le monde entier, donc vous
          devrez utiliser ‘chmod -R 777 /public’ dessus.

          Attention : Une telle configuration Samba ne devrait être
          utilisée que dans des environnements contrôlés et vous ne
          devriez pas partage des fichiers privés avec, car n’importe
          qui se connectant à votre réseau y aurait accès.

          (service samba-service-type (samba-configuration
                                       (enable-smbd? #t)
                                       (config-file (plain-file "smb.conf" "\
          [global]
          map to guest = Bad User
          logging = syslog@1

          [public]
          browsable = yes
          path = /public
          read only = no
          guest ok = yes
          guest only = yes\n"))))

 -- Type de données : samba-service-configuration
     Enregistrement de configuration pour la suite Samba.

     ‘package’ (par défaut : ‘samba’)
          Le paquet samba à utiliser.

     ‘config-file’ (par défaut : ‘#f’)
          Le fichier de configuration à utiliser. Pour comprendre sa
          syntaxe, lancez ‘man smb.conf’.

     ‘enable-samba?’ (par défaut : ‘#f’)
          Active le démon ‘samba’.

     ‘enable-smbd?’ (par défaut : ‘#f’)
          Active le démon ‘smbd’.

     ‘enable-nmbd?’ (par défaut : ‘#f’)
          Active le démon ‘nmbd’.

     ‘enable-winbindd?’ (par défaut : ‘#f’)
          Active le démon ‘winbindd’.

Démon de découverte des services web
....................................

Le WSDD (démon de découverte des services web) implémente le protocole
de découverte dynamique des services web
(http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html)
qui permet des découvrir des hôtes sur le DNS multicast, de la même
manière que Avahi. C’est un remplaçant pour les hôtes SMB qui ont
désactivé leur SMBv1 pour des raisons de sécurité.

 -- Variable Scheme : wsdd-service-type
     Type pour le démon hôte WSD. La valeur de ce type de service est un
     enregistrement ‘wssd-configuration’. Les détails du type
     d’enregistrement ‘wsdd-configuration’ sont fournis plus bas.

 -- Type de données : wsdd-configuration
     Ce type de données représente la configuration du service wsdd.

     ‘package’ (par défaut : ‘wsdd’)
          Le paquet wsdd à utiliser.

     ‘ipv4only?’ (par défaut : ‘#f’)
          N’écoute que sur le adresses IPv4.

     ‘ipv6only’ (par défaut : ‘#f’)
          N’écoute que sur les adresses IPv6. Remarquez : activer les
          deux options n’est pas possible, car il n’y aurait aucune
          version d’IP sur laquelle écouter.

     ‘chroot’ (par défaut : ‘#f’)
          Entre dans un chroot dans un répertoire séparé pour empêcher
          l’accès à d’autres répertoires. Cela permet d’améliorer la
          sécurité en cas de vulnérabilité dans ‘wsdd’.

     ‘hop-limit’ (par défaut : ‘1’)
          Limite le niveau de sauts pour les paquets multicast. La
          valeur par défaut est 1, ce qui devrait éviter aux paquets de
          quitter le réseau local.

     ‘interface’ (par défaut : ‘'()’)
          Limite l’écoute aux interfaces listées. Par défaut wsdd
          écoutera sur toutes les interfaces. Sauf l’interface de
          rebouclage qui n’est jamais utilisée.

     ‘uuid-device’ (par défaut : ‘#f’)
          Le protocole WSD nécessite qu’un périphérique ait un UUID.
          Indiquez ce paramètre pour assigner manuellement un UUID au
          service.

     ‘domain’ (par défaut : ‘#f’)
          Notifie que cet hôte est membre d’un Active Directory.

     ‘host-name’ (par défaut : ‘#f’)
          Indique le nom d’hôte manuellement au lieu de laisser ‘wsdd’
          hériter du nom de cet hôte. Seul la partie du nom d’hôte d’un
          éventuel nom de domaine pleinement qualifié sera utilisé dans
          le cas par défaut.

     ‘preserve-case?’ (par défaut : ‘#f’)
          Par défaut ‘wsdd’ convertira le nom d’hôte dans le groupe de
          travail en majuscules. L’inverse est vrai pour les noms
          d’hôtes dans les domaines. Indiquer ce paramètre préservera la
          casse.

     ‘workgroup’ (par défaut : "WORKGROUP")
          Change le nom du groupe de travail. Par défaut ‘wsdd’ rapport
          cet hôte comme étant membre d’un groupe de travail.


File: guix.fr.info,  Node: Intégration continue,  Next: Services de gestion de l'énergie,  Prev: Services Samba,  Up: Services

12.9.26 Intégration continue
----------------------------

Cuirass (https://guix.gnu.org/fr/cuirass/) est un outil d’intégration
continue pour Guix. On peut l’utiliser aussi bien pour le développement
que pour fournir des substituts à d’autres (*note Substituts::).

   Le module ‘(gnu services cuirass)’ fournit le service suivant.

 -- Procédure Scheme : cuirass-service-type
     Le type du service Cuirass. Sa valeur doit être un objet
     ‘cuirass-configuration’, décrit ci-dessous.

   Pour ajouter des travaux de construction, vous devez indiquer le
champ ‘specifications’ de la configuration. Par exemple, voici un
exemple qui construira tous les paquets fournis par le canal
‘my-channel’.

     (define %cuirass-specs
       #~(list (specification
                (name "my-channel")
                (build '(channels my-channel))
                (channels
                 (cons (channel
                        (name 'my-channel)
                        (url "https://my-channel.git"))
                       %default-channels)))))

     (service cuirass-service-type
              (cuirass-configuration
               (specifications %cuirass-specs)))

   Pour construire le paquet ‘linux-libre’ défini par le canal Guix par
défaut, on peut utiliser la configuration suivante.

     (define %cuirass-specs
       #~(list (specification
                (name "my-linux")
                (build '(packages "linux-libre")))))

     (service cuirass-service-type
              (cuirass-configuration
               (specifications %cuirass-specs)))

   Les autres possibilités de configuration, ainsi que l’enregistrement
de spécification lui-même sont décrits dans le manuel de Cuirass (*note
(cuirass)Specifications::).

   Tandis que les informations liés aux travaux de construction sont
directement dans les spécifications, les paramètres globaux pour le
processus ‘cuirass’ sont accessibles dans les autres champs de
‘cuirass-configuration’.

 -- Type de données : cuirass-configuration
     Type de données représentant la configuration de Cuirass.

     ‘cuirass’ (par défaut : ‘cuirass’)
          Le paquet Cuirass à utiliser.

     ‘log-file’ (par défaut : ‘"/var/log/cuirass.log"’)
          Emplacement du fichier de journal.

     ‘web-log-file’ (par défaut : ‘"/var/log/cuirass-web.log"’)
          Emplacement du fichier journal utilisé par l’interface web.

     ‘cache-directory’ (par défaut : ‘"/var/cache/cuirass"’)
          Emplacement du cache du dépôt.

     ‘user’ (par défaut : ‘"cuirass"’)
          Propriétaire du processus ‘cuirass’.

     ‘group’ (par défaut : ‘"cuirass"’)
          Groupe du propriétaire du processus ‘cuirass’.

     ‘interval’ (par défaut : ‘60’)
          Nombre de secondes entre les mises à jour du dépôt suivis des
          travaux de Cuirass.

     ‘parameters’ (par défaut : ‘#f’)
          Lit les paramètres dans le fichier PARAMETERS. Les paramètres
          pris en charges sont décrits ici (*note
          (cuirass)Parameters::).

     ‘remote-server’ (par défaut : ‘#f’)
          Un enregistrement ‘cuirass-remote-server-configuration’ pour
          utiliser le mécanisme de construction distante ou ‘#f’ pour
          utiliser le mécanisme de construction par défaut.

     ‘database’ (par défaut : ‘"dbname=cuirass host=/var/run/postgresql"’)
          Utiliser DATABASE comme base de données contenant les travaux
          et les résultats des constructions passées. Comme Cuirass
          utilise PostgreSQL comme moteur de base de données, DATABASE
          doit être une chaîne de la même forme que ‘"dbname=cuirass
          host=localhost"’.

     ‘port’ (par défaut : ‘8081’)
          Numéro de port utilisé pour le serveur HTTP.

     ‘host’ (par défaut : ‘"localhost"’)
          Écoute sur l’interface réseau de HOST. La valeur par défaut
          est d’accepter les connexions depuis localhost.

     ‘specifications’ (par défaut : ‘#~'()’)
          Une gexp (*note G-Expressions::) qui s’évalue en une liste
          d’enregistrement de spécifications. L’enregistrement de
          spécification est décrit dans le manuel de Cuirass (*note
          (cuirass)Specifications::).

     ‘use-substitutes?’ (par défaut : ‘#f’)
          Cela permet d’utiliser des substituts pour éviter de
          construire toutes les dépendance d’un travail depuis les
          sources.

     ‘one-shot?’ (par défaut : ‘#f’)
          N’évaluer les spécification et construire les dérivations
          qu’une seule fois.

     ‘fallback?’ (par défaut : ‘#f’)
          Lorsque la substitution d’un binaire pré-construit échoue,
          revenir à la construction locale du paquet.

     ‘extra-options’ (par défaut : ‘'()’)
          Options supplémentaires à passer au lancement des processus de
          Cuirass.

Cuirass, construction distante
..............................

Cuirass prend en charge deux mécanisme pour construire les dérivations.

   • Par le démon Guix local. C’est le mécanisme de construction par
     défaut. Une fois les constructions évaluées, elles sont envoyées au
     démon Guix local. Cuirass écoute ensuite la sortie du démon Guix
     pour détecter les divers événements de construction.

   • Par le mécanisme de construction distante. Les constructions ne
     sont pas soumises au démon Guix local. À la place, un serveur
     distant distribue les requêtes de construction aux serveurs
     connectés, en fonction des priorités de construction.

   Pour active ce mode de construction, vous devez passer un
enregistrement ‘cuirass-remote-server-configuration’ au champ
‘remote-server’ de l’enregistrement ‘cuirass-configuration’.
L’enregistrement ‘cuirass-remote-server-configuration’ est décrit plus
bas.

   Ce mode de construction passe mieux à l’échelle que celui par défaut.
C’est le mode de construction utilisé sur la ferme de construction de
GNU Guix <https://ci.guix.gnu.org>. Vous devriez l’utiliser si vous
utilisez Cuirass pour construire un grand nombre de paquets.

 -- Type de données : cuirass-remote-server-configuration
     Le type de données représentant la configuration des serveurs
     distants de Cuirass.

     ‘backend-port’ (par défaut : ‘5555’)
          Le port TCP pour communiquer avec les processus
          ‘remote-worker’ via ZMQ. Sa valeur par défaut est ‘5555’.

     ‘log-port’ (par défaut : ‘5556’)
          Le port TCP du serveur de journalisation. Sa valeur par défaut
          est ‘5556’.

     ‘publish-port’ (par défaut : ‘5557’)
          Le port TCP du serveur de publication. Sa valeur par défaut
          est ‘5557’.

     ‘log-file’ (par défaut : ‘"/var/log/cuirass-remote-server.log"’)
          Emplacement du fichier de journal.

     ‘cache’ (par défaut : ‘"/var/cache/cuirass/remote"’)
          Utiliser le répertoire CACHE pour mettre les journaux en
          cache.

     ‘trigger-url’ (par défaut : ‘#f’)
          Lorsqu’un substitut a été correctement récupéré, cause la
          préparation d’un substitut sur TRIGGER-URL.

     ‘publish?’ (par défaut : ‘#t’)
          Si la valeur est fausse, ne démarre pas de serveur de
          publication et ignore l’argument ‘publish-port’. Ça peut être
          utile s’il y a déjà un serveur de publication indépendant qui
          se trouve à côté du serveur distant.

     ‘public-key’
     ‘private-key’
          Utilise les FICHIERs spécifiques comme pair de clefs utilisées
          pour signer les éléments avant de les publier.

   Au moins un serveur distant doit aussi être démarré sur une machine
du réseau local pour effectivement effectuer les constructions et
rapporter leur état.

 -- Type de données : cuirass-remote-worker-configuration
     Type de données représentant la configuration des serveurs distants
     de Cuirass.

     ‘cuirass’ (par défaut : ‘cuirass’)
          Le paquet Cuirass à utiliser.

     ‘workers’ (par défaut : ‘1’)
          Démarre WORKERS travailleurs en parallèle.

     ‘server’ (par défaut : ‘#f’)
          Ne pas utiliser Avahi pour découvrir des serveurs et se
          connecter à l’IP ‘server’ donnée à la place.

     ‘systems’ (par défaut : ‘(list (%current-system))’)
          Ne demander des constructions que pour les systèmes SYSTEMS
          donnés.

     ‘log-file’ (par défaut : ‘"/var/log/cuirass-remote-worker.log"’)
          Emplacement du fichier de journal.

     ‘publish-port’ (par défaut : ‘5558’)
          Le port TCP du serveur de publication. La valeur par défaut
          est ‘5558’.

     ‘substitute-urls’ (par défaut : ‘%default-substitute-urls’)
          La liste des URL où trouver des substituts par défaut.

     ‘public-key’
     ‘private-key’
          Utilise les FICHIERs spécifiques comme pair de clefs utilisées
          pour signer les éléments avant de les publier.

Laminar
.......

Laminar (https://laminar.ohwg.net/) est service d’intégration continue
léger et modulaire. Il n’a pas d’interface de configuration web et
utilise plutôt des fichiers de configuration et des scripts sous
contrôle de version.

   Laminar encourage l’utilisation d’outils existants comme bash et cron
au lieu de les réinventer.

 -- Procédure Scheme : laminar-service-type
     Le type du service Laminar. Sa valeur doit être un objet
     ‘laminar-configuration’, décrit ci-dessous.

     Toutes les configurations ont des valeurs par défaut, une
     configuration minimale pour lancer Laminar se trouve plus bas. Par
     défaut, l’interface web est disponible sur le port 8080.

          (service laminar-service-type)

 -- Type de données : laminar-configuration
     Type données qui représente la configuration de Laminar.

     ‘laminar’ (par défaut : ‘laminar’)
          Le paquet Laminar à utiliser.

     ‘home-directory’ (par défaut : ‘"/var/lib/laminar"’)
          Le répertoire de la configuration des travaux et des
          répertoires d’exécution.

     ‘bind-http’ (par défaut : ‘"*:8080"’)
          L’interface et le port ou la socket unix sur laquelle laminard
          écoutera les connexions entrantes sur l’interface web.

     ‘bind-rpc’ (par défaut : ‘"unix-abstract:laminar"’)
          L’interface et le port ou la socket unix sur laquelle laminard
          écoutera les commandes entrantes comme les requêtes de
          construction.

     ‘title’ (par défaut : ‘"Laminar"’)
          Le titre de la page à afficher sur l’interface web.

     ‘keep-rundirs’ (par défaut : ‘0’)
          Indiquez un entier indiquant le nombre de répertoire
          d’exécution garder par tâche. Les répertoires avec les numéros
          les plus petits seront supprimé. La valeur par défaut est 0,
          ce qui signifie que tous les répertoires d’exécution seront
          immédiatement supprimés.

     ‘archive-url’ (par défaut : ‘#f’)
          L’interface web servi par laminard utilisera cette URL pour
          former les liens vers les artefacts des travaux archivés.

     ‘base-url’ (par défaut : ‘#f’)
          URL de base à utiliser pour les liens vers laminar.


File: guix.fr.info,  Node: Services de gestion de l'énergie,  Next: Services audio,  Prev: Intégration continue,  Up: Services

12.9.27 Services de gestion de l’énergie
----------------------------------------

Démon TLP
.........

Le module ‘(gnu services pm)’ fournit une définition de service Guix
pour l’outil de gestion d’énergie Linux TLP.

   TLP active plusieurs modes un espace utilisateur et dans le noyau.
Contrairement à ‘upower-service’, ce n’est pas un outil passif de
surveillance, puisqu’il applique des paramètres personnalisés à chaque
fois qu’il détecte une nouvelle source d’énergie. Vous pouvez trouver
plus d’informations sur la page d’accueil de TLP
(https://linrunner.de/en/tlp/tlp.html).

 -- Variable Scheme : tlp-service-type
     Le type de service pour l’outil TLP. Les paramètres par défaut sont
     optimisés pour la durée de la batterie sur la plupart des systèmes,
     mais vous pouvez les modifier comme vous voulez en ajoutant un
     ‘tlp-configuration’ valide :
          (service tlp-service-type
                   (tlp-configuration
                    (cpu-scaling-governor-on-ac (list "performance"))
                    (sched-powersave-on-bat? #t)))

   Chaque définition de paramètre est précédée par son type ; par
exemple, ‘booléen toto’ indique que le paramètre ‘toto’ doit être
spécifié comme un booléen. Les types qui commencent par ‘peut-être-’
dénotent des paramètres qui n’apparaîtront pas dans la configuration de
TLP lorsque leur valeur est non spécifiée, ou est explicitement
initialisée à la valeur ‘%unset-value’.

   Les champs de ‘tlp-configuration’ disponibles sont :

 -- paramètre de ‘tlp-configuration’ : package tlp
     Le paquet TLP.

 -- paramètre de ‘tlp-configuration’ : boolean tlp-enable?
     Indiquez vrai si vous souhaitez activer TLP.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : string tlp-default-mode
     Mode par défaut lorsqu’aucune source d’énergie ne peut être
     détectée. Les possibilités sont AC et BAT.

     La valeur par défaut est ‘"AC"’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          disk-idle-secs-on-ac
     Nombre de secondes que le noyau Linux doit attendre après que les
     disques s’arrêtent pour se synchroniser quand il est sur secteur.

     La valeur par défaut est ‘0’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          disk-idle-secs-on-bat
     Comme ‘disk-idle-ac’ mais en mode batterie.

     La valeur par défaut est ‘2’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          max-lost-work-secs-on-ac
     Périodicité du nettoyage des pages invalidées, en secondes.

     La valeur par défaut est ‘15’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          max-lost-work-secs-on-bat
     Comme ‘max-lost-work-secs-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘60’.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          cpu-scaling-governor-on-ac
     Gouverneur de fréquence d’horloge sur secteur. Avec le pilote
     intel_pstate, les possibilités sont powersave et performance. Avec
     le pilote acpi-cpufreq, les possibilités sont ondemand, powersave,
     performance et conservative.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          cpu-scaling-governor-on-bat
     Comme ‘cpu-scaling-governor-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-scaling-min-freq-on-ac
     Indique la fréquence d’horloge minimale pour le gouverneur sur
     secteur.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-scaling-max-freq-on-ac
     Indique la fréquence d’horloge maximale pour le gouverneur sur
     secteur.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-scaling-min-freq-on-bat
     Indique la fréquence d’horloge minimale pour le gouverneur sur
     batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-scaling-max-freq-on-bat
     Indique la fréquence d’horloge maximale pour le gouverneur sur
     batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-min-perf-on-ac
     Limite le P-état minimum pour contrôler la dissipation de puissance
     dans le CPU, sur secteur. Les valeurs sont indiqués comme un
     pourcentage des performances disponibles.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-max-perf-on-ac
     Limite le P-état maximum pour contrôler la dissipation de puissance
     dans le CPU, sur secteur. Les valeurs sont indiqués comme un
     pourcentage des performances disponibles.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-min-perf-on-bat
     Comme ‘cpu-min-perf-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          cpu-max-perf-on-bat
     Comme ‘cpu-max-perf-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-booléen
          cpu-boost-on-ac?
     Active la fonctionnalité turbo boost du CPU sur secteur.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-booléen
          cpu-boost-on-bat?
     Comme ‘cpu-boost-on-ac?’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : boolean sched-powersave-on-ac?
     Permet au noyau Linux de minimiser le nombre de cœurs/hyper-threads
     CPU utilisés lorsque la charge est faible.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘tlp-configuration’ : boolean sched-powersave-on-bat?
     Comme ‘sched-powersave-on-ac?’ mais en mode batterie.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : boolean nmi-watchdog?
     Active le chien de garde NMI du noyau Linux.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘tlp-configuration’ : peut-être-chaine phc-controls
     Pour les noyaux Linux avec le correctif PHC, change le voltage du
     CPU. Une valeur serait par exemple ‘"F:V F:V F:V F:V"’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : string energy-perf-policy-on-ac
     Indique le niveau de performance du CPU par rapport à la politique
     de gestion de l’énergie sur secteur. Les possibilités sont
     performance, normal et powersave.

     La valeur par défaut est ‘"performance"’.

 -- paramètre de ‘tlp-configuration’ : string energy-perf-policy-on-bat
     Comme ‘energy-perf-policy-ac’ mais en mode batterie.

     La valeur par défaut est ‘"powersave"’.

 -- paramètre de ‘tlp-configuration’ : space-separated-string-list
          disks-devices
     Périphériques de disque dur.

 -- paramètre de ‘tlp-configuration’ : space-separated-string-list
          disk-apm-level-on-ac
     Niveau de gestion de l’énergie avancé des disques durs.

 -- paramètre de ‘tlp-configuration’ : space-separated-string-list
          disk-apm-level-on-bat
     Comme ‘disk-apm-bat’ mais en mode batterie.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          disk-spindown-timeout-on-ac
     Délai d’attente pour arrêter de faire tourner les disques. Une
     valeur doit être spécifiée pour chaque disque dur déclaré.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          disk-spindown-timeout-on-bat
     Comme ‘disk-spindown-timeout-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          disk-iosched
     Sélectionne l’ordonnanceur d’entrées-sorties pour le disque. Une
     valeur doit être spécifiée pour chaque disque déclaré. Les
     possibilités sont par exemple cfq, deadline et noop.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : string sata-linkpwr-on-ac
     Niveau de gestion de l’énergie des lien SATA aggressive (ALPM). Les
     possibilités sont min_power, medium_power et max_performance.

     La valeur par défaut est ‘"max_performance"’.

 -- paramètre de ‘tlp-configuration’ : string sata-linkpwr-on-bat
     Comme ‘sata-linkpwr-ac’ mais en mode batterie.

     La valeur par défaut est ‘"min_power"’.

 -- paramètre de ‘tlp-configuration’ : peut-être-chaine
          sata-linkpwr-blacklist
     Exclu les périphériques SATA spécifiés de la gestion de l’énergie
     des liens.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-booléen-on-off
          ahci-runtime-pm-on-ac?
     Active la gestion de l’énergie à l’exécution pour les contrôleurs
     AHCI et les disques, sur secteur.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-booléen-on-off
          ahci-runtime-pm-on-bat?
     Comme ‘ahci-runtime-pm-on-ac’ mais en mode batterie.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          ahci-runtime-pm-timeout
     Secondes d’inactivités avant de suspendre les disques.

     La valeur par défaut est ‘15’.

 -- paramètre de ‘tlp-configuration’ : string pcie-aspm-on-ac
     Niveau de gestion de l’énergie des états actifs de PCI Express. Les
     possibilités sont default, performance et powersave.

     La valeur par défaut est ‘"performance"’.

 -- paramètre de ‘tlp-configuration’ : string pcie-aspm-on-bat
     Comme ‘pcie-aspm-ac’ mais en mode batterie.

     La valeur par défaut est ‘"powersave"’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          start-charge-thresh-bat0
     Pourcentage à partir duquel la batterie 0 doit commencer à charger.
     Seulement pris en charge sur les ordinateurs portables.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          stop-charge-thresh-bat0
     Pourcentage à partir duquel la batterie 0 devrait arrêter de
     charger. Seulement pris en charge sur les ordinateurs portables.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          start-charge-thresh-bat1
     Pourcentage à partir duquel la batterie 1 devrait commencer à
     charger. Seulement pris en charge sur les ordinateurs portables.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-entier-non-négatif
          stop-charge-thresh-bat1
     Pourcentage à partir duquel la batterie 1 devrait arrêter de
     charger. Seulement pris en charge sur les ordinateurs portables.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : string radeon-power-profile-on-ac
     Niveau de vitesse de l’horloge des cartes graphiques Radeon. Les
     possibilités sont low, mid, high, auto et default.

     La valeur par défaut est ‘"high"’.

 -- paramètre de ‘tlp-configuration’ : string
          radeon-power-profile-on-bat
     Comme ‘radeon-power-ac’ mais en mode batterie.

     La valeur par défaut est ‘"low"’.

 -- paramètre de ‘tlp-configuration’ : string radeon-dpm-state-on-ac
     Méthode de gestion de l’énergie dynamique de Radeon (DPM). Les
     possibilités sont battery et performance.

     La valeur par défaut est ‘"performance"’.

 -- paramètre de ‘tlp-configuration’ : string radeon-dpm-state-on-bat
     Comme ‘radeon-dpm-state-ac’ mais en mode batterie.

     La valeur par défaut est ‘"battery"’.

 -- paramètre de ‘tlp-configuration’ : string
          radeon-dpm-perf-level-on-ac
     Niveau de performance de DPM. Les possibilités sont auto, low et
     high.

     La valeur par défaut est ‘"auto"’.

 -- paramètre de ‘tlp-configuration’ : string
          radeon-dpm-perf-level-on-bat
     Comme ‘radeon-dpm-perf-ac’ mais en mode batterie.

     La valeur par défaut est ‘"auto"’.

 -- paramètre de ‘tlp-configuration’ : on-off-boolean wifi-pwr-on-ac?
     Mode de gestion de l’énergie wifi.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘tlp-configuration’ : on-off-boolean wifi-pwr-on-bat?
     Comme ‘wifi-power-ac?’ mais en mode batterie.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : y-n-boolean wol-disable?
     Désactive wake on LAN.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          sound-power-save-on-ac
     Durée d’attente en secondes avant d’activer la gestion de l’énergie
     audio sur les périphériques Intel HDA et AC97. La valeur 0
     désactive la gestion de l’énergie.

     La valeur par défaut est ‘0’.

 -- paramètre de ‘tlp-configuration’ : entier-non-négatif
          sound-power-save-on-bat
     Comme ‘sound-powersave-ac’ mais en mode batterie.

     La valeur par défaut est ‘1’.

 -- paramètre de ‘tlp-configuration’ : y-n-boolean
          sound-power-save-controller?
     Désactive le contrôleur en mode de gestion de l’énergie sur les
     périphériques Intel HDA.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : boolean bay-poweroff-on-bat?
     Active le périphérique optique AltraBay/MediaBay en mode batterie.
     Le périphérique peut être de nouveau alimenté en lâchant (et en
     réinsérant) le levier d’éjection ou en appuyant sur le bouton
     d’éjection sur les modèles plus récents.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘tlp-configuration’ : string bay-device
     Nom du périphérique optique à éteindre.

     La valeur par défaut est ‘"sr0"’.

 -- paramètre de ‘tlp-configuration’ : string runtime-pm-on-ac
     Gestion de l’énergie à l’exécution sur les bus PCI(e). Les
     possibilités sont on et auto.

     La valeur par défaut est ‘"on"’.

 -- paramètre de ‘tlp-configuration’ : string runtime-pm-on-bat
     Comme ‘runtime-pm-ac’ mais en mode batterie.

     La valeur par défaut est ‘"auto"’.

 -- paramètre de ‘tlp-configuration’ : boolean runtime-pm-all?
     Gestion de l’énergie à l’exécution pour tous les bus PCI(e), sauf
     ceux en liste noire.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ :
          peut-être-liste-de-chaines-séparées-par-des-espaces
          runtime-pm-blacklist
     Exclue les adresses des périphériques PCI(e) spécifiés de la
     gestion de l’énergie à l’exécution.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : space-separated-string-list
          runtime-pm-driver-blacklist
     Exclue les périphériques PCI(e) assignés aux pilotes spécifiés de
     la gestion de l’énergie à l’exécution.

 -- paramètre de ‘tlp-configuration’ : boolean usb-autosuspend?
     Active la fonctionnalité de mise en veille automatique de l’USB.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : peut-être-chaine usb-blacklist
     Exclue les périphériques spécifiés de la mise en veille automatique
     de l’USB.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : boolean usb-blacklist-wwan?
     Exclue les périphériques WWAN de la mise en veille automatique de
     l’USB.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘tlp-configuration’ : peut-être-chaine usb-whitelist
     Inclue les périphériques spécifiés dans la mise en veille
     automatique de l’USB, même s’ils sont déjà exclus par le pilote ou
     via ‘usb-blacklist-wwan?’.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : peut-être-booléen
          usb-autosuspend-disable-on-shutdown?
     Active la mise en veille de l’USB avant l’arrêt.

     La valeur par défaut est ‘disabled’.

 -- paramètre de ‘tlp-configuration’ : boolean
          restore-device-state-on-startup?
     Restaure l’état des périphériques radio (bluetooth, wifi, wwan) du
     dernier arrêt au démarrage du système.

     La valeur par défaut est ‘#f’.

Démon Thermald
..............

Le module ‘(gnu services pm)’ fournit une interface pour thermald, un
service de gestion de l’horloge CPU qui aide à éviter la surchauffe.

 -- Variable Scheme : thermald-service-type
     C’est le type de service pour thermald
     (https://01.org/linux-thermal-daemon/), le démon de température de
     Linux, responsable du contrôle de l’état thermique des processeurs
     et d’éviter la surchauffe.

 -- Type de données : thermald-configuration
     Type de données représentant la configuration de
     ‘thermald-service-type’.

     ‘adptative?’ (par défaut : ‘#f’)
          Utilise les tables adaptatives DPTF (Dynamic Power and Thermal
          Framework) si elles sont présentes.

     ‘ignore-cpuid-check?’ (par défaut : ‘#f’)
          Ignore la vérification des modèles CPU supportés avec cpuid.

     ‘thermald’ (par défaut : THERMALD)
          Objet du paquet de thermald.


File: guix.fr.info,  Node: Services audio,  Next: Services de virtualisation,  Prev: Services de gestion de l'énergie,  Up: Services

12.9.28 Services audio
----------------------

Le module ‘(gnu services audio)’ fournit un service qui lance MPD (le
démon de lecture de musique).

Music Player Daemon
...................

Le démon de lecture de musique (MPD) est un service qui joue de la
musique tout en étant contrôlé depuis la machine locale ou à travers le
réseau par divers clients.

   L’exemple suivant montre comment on peut lancer ‘mpd’ en tant
qu’utilisateur ‘"bob"’ sur le port ‘6666’. Il utilise pulseaudio pour la
sortie audio.

     (service mpd-service-type
              (mpd-configuration
               (user "bob")
               (port "6666")))

 -- Variable Scheme : mpd-service-type
     Le type de service pour ‘mpd’

 -- Type de données : mpd-configuration
     Type de données représentant la configuration de ‘mpd’.

     ‘user’ (par défaut : ‘"mpd"’)
          L’utilisateur qui lance mpd.

     ‘music-dir’ (par défaut : ‘"~/Music"’)
          Le répertoire à scanner pour trouver les fichiers de musique.

     ‘playlist-dir’ (par défaut : ‘"~/.mpd/playlists"’)
          Le répertoire où stocker les playlists.

     ‘db-file’ (par défaut : ‘"~/.mpd/tag_cache"’)
          Emplacement de la base de données de musiques.

     ‘state-file’ (par défaut : ‘"~/.mpd/state"’)
          Emplacement du fichier qui stocke l’état actuel de MPD.

     ‘sticker-file’ (par défaut : ‘"~/.mpd/sticker.sql"’)
          Emplacement de la base de données de stickers.

     ‘port’ (par défaut : ‘"6600"’)
          Le port sur lequel lancer mpd.

     ‘address’ (par défaut : ‘"any"’)
          L’adresse sur laquelle se lie mpd. Pour utiliser un socket
          Unix domain, un chemin absolu peut être spécifié ici.

     ‘outputs’ (par défaut : ‘"(list (mpd-output))"’)
          Les sorties audio que MPD peut utiliser. Par défaut c’est une
          seule sortie audio utilisant pulseaudio.

 -- Type de données : mpd-output
     Type de données représentant une sortie audio de ‘mpd’.

     ‘name’ (par défaut : ‘"MPD"’)
          Le nom de la sortie audio.

     ‘type’ (par défaut : ‘"pulse"’)
          Le type de sortie audio.

     ‘enabled?’ (par défaut : ‘#t’)
          Spécifie si cette sortie audio est activée au démarrage de
          MPD. Par défaut, toutes les sorties audio sont activées. C’est
          le paramètre par défaut s’il n’y a pas de fichier d’état ;
          avec un fichier d’état, l’état précédent est restauré.

     ‘tags?’ (par défaut : ‘#t’)
          Si la valeur est ‘#f’, MPD n’enverra pas les tags à cette
          sortie. C’est utile uniquement pour les greffons de sortie qui
          peuvent recevoir les tags, comme le greffon de sortie ‘httpd’.

     ‘always-on?’ (par défaut : ‘#f’)
          Si la valeur est ‘#t’, alors MPD essaye de garder cette sortie
          audio toujours ouverte. Cela peut être utile pour les serveurs
          de streaming, lorsque vous ne voulez pas déconnecter tous les
          clients même si la lecture est accidentellement interrompue.

     ‘mixer-type’
          Ce champ accepte un symbole qiu spécifie quel mixeur utiliser
          pour cette sortie audio : le mixeur ‘hardware’, le mixeur
          ‘software’, le mixer ‘null’ (permet de gérer le volume, mais
          sans effet ; peut être utilisé pour implémenter un mixer
          externe) ou aucun mixeur (‘none’).

     ‘extra-options’ (par défaut : ‘'()’)
          Une liste d’association de symboles d’options à des valeurs à
          ajouter à la configuration de la sortie audio.

   L’exemple suivant montre comment configurer ‘mpd’ pour fournir une
sortie de streaming audio HTTP.

     (service mpd-service-type
              (mpd-configuration
                (outputs
                  (list (mpd-output
                          (name "streaming")
                          (type "httpd")
                          (mixer-type 'null)
                          (extra-options
                           `((encoder . "vorbis")
                             (port    . "8080"))))))))


File: guix.fr.info,  Node: Services de virtualisation,  Next: Services de contrôle de version,  Prev: Services audio,  Up: Services

12.9.29 Services de virtualisation
----------------------------------

Le module ‘(gnu services virtualization)’ fournit des services pour les
démons libvirt et virtlog, ainsi que d’autres services liés à la
virtualisation.

Démon libvirt
.............

‘libvirtd’ est le démon côté serveur du système de gestion de
virtualisation libvirt. Ce démon tourne sur des serveurs hôtes et
effectue les tâches de gestion requises pour les clients virtualisés.

 -- Variable Scheme : libvirt-service-type
     C’est le type du démon libvirt (https://libvirt.org). Sa valeur
     doit être un ‘libvirt-configuration’.

          (service libvirt-service-type
                   (libvirt-configuration
                    (unix-sock-group "libvirt")
                    (tls-port "16555")))

   Les champs de ‘libvirt-configuration’ disponibles sont :

 -- paramètre de ‘libvirt-configuration’ : package libvirt
     Paquet libvirt.

 -- paramètre de ‘libvirt-configuration’ : boolean listen-tls?
     Indique s’il faut écouter des connexions TLS sécurisées sur le port
     TCP/IP public. Vous devez remplir le champ ‘listen’ pour que cela
     ait un effet.

     Il est nécessaire de mettre en place une CA et de créer un
     certificat serveur avant d’utiliser cette fonctionnalité.

     La valeur par défaut est ‘#t’.

 -- paramètre de ‘libvirt-configuration’ : boolean listen-tcp?
     Écoute des connexions non-chiffrées sur le port TCP/IP public. Vous
     devez remplir le champ ‘listen’ pour que cela ait un effet.

     L’utilisation des sockets TCP requiert une authentification SASL
     par défaut. Seuls les mécanismes SASL qui prennent en charge le
     chiffrement des données sont permis. Il s’agit de DIGEST_MD5 et
     GSSAPI (Kerberos5).

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘libvirt-configuration’ : string tls-port
     Port pour accepter les connexions TLS sécurisées. Il peut s’agir
     d’un numéro de port ou d’un nom de service.

     La valeur par défaut est ‘"16514"’.

 -- paramètre de ‘libvirt-configuration’ : string tcp-port
     Port sur lequel accepter les connexions TCP non sécurisées. Cela
     peut être un numéro de port ou un nom de service.

     La valeur par défaut est ‘"16509"’.

 -- paramètre de ‘libvirt-configuration’ : string listen-addr
     Adresse IP ou nom d’hôte utilisé pour les connexions des clients.

     La valeur par défaut est ‘"0.0.0.0"’.

 -- paramètre de ‘libvirt-configuration’ : boolean mdns-adv?
     Indique s’il faut annoncer le service libvirt en mDNS.

     Autrement, vous pouvez désactiver cela pour tous les services en
     stoppant le démon Avahi.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘libvirt-configuration’ : string mdns-name
     Nom annoncé par défaut sur mDNS. Cela doit être unique sur le
     réseau local.

     La valeur par défaut est ‘"Virtualization Host <hostname>"’.

 -- paramètre de ‘libvirt-configuration’ : string unix-sock-group
     Groupe propriétaire du socket Unix domain. Cela peut être utilisé
     pour permettre à un ensemble d’utilisateurs « de confiance » de
     gérer les fonctionnalités sans devenir root.

     La valeur par défaut est ‘"root"’.

 -- paramètre de ‘libvirt-configuration’ : string unix-sock-ro-perms
     Permission Unix pour le socket en lecture seule. Il est utilisé
     pour surveiller le statut des VM uniquement.

     La valeur par défaut est ‘"0777"’.

 -- paramètre de ‘libvirt-configuration’ : string unix-sock-rw-perms
     Permission Unix pour le socket en lecture-écriture. La valeur par
     défaut n’autorise que root. Si PolicyKit est activé sur le socket,
     la valeur par défaut change et permet tout le monde (c.-à-d. 0777)

     La valeur par défaut est ‘"0770"’.

 -- paramètre de ‘libvirt-configuration’ : string unix-sock-admin-perms
     Permissions Unix pour le socket d’administration. La valeur par
     défaut ne permet que le propriétaire (root), ne la changez pas à
     moins que vous ne soyez sûr de savoir à qui vous exposez cet accès.

     La valeur par défaut est ‘"0777"’.

 -- paramètre de ‘libvirt-configuration’ : string unix-sock-dir
     Le répertoire dans lequel les sockets sont créés.

     La valeur par défaut est ‘"/var/run/libvirt"’.

 -- paramètre de ‘libvirt-configuration’ : string auth-unix-ro
     Schéma d’authentification pour les socket Unix en lecture-seule.
     Par défaut les permissions des socket permettent à n’importe qui de
     se connecter

     La valeur par défaut est ‘"polkit"’.

 -- paramètre de ‘libvirt-configuration’ : string auth-unix-rw
     Schéma d’authentification pour les socket UNIX en lecture-écriture.
     Par défaut les permissions du socket ne permettent que root. Si le
     support de PolicyKit a été compilé dans libvirt, la valeur par
     défaut utilise l’authentification « polkit ».

     La valeur par défaut est ‘"polkit"’.

 -- paramètre de ‘libvirt-configuration’ : string auth-tcp
     Schéma d’authentification pour les sockets TCP. Si vous n’avez pas
     activé SASL, alors tout le trafic TCP est en clair. Ne le faites
     pas en dehors de scénario de développement ou de test.

     La valeur par défaut est ‘"sasl"’.

 -- paramètre de ‘libvirt-configuration’ : string auth-tls
     Schéma d’authentification pour les sockets TLS. Les sockets TLS
     sont déjà chiffrés par la couche TLS, et une authentification
     limitée est effectuée avec les certificats.

     Il est possible d’utiliser de n’importe quel mécanisme
     d’authentification SASL en utilisant « sasl » pour cette option

     La valeur par défaut est ‘"none"’.

 -- paramètre de ‘libvirt-configuration’ : optional-list access-drivers
     Schéma de contrôle d’accès à l’API.

     Par défaut un utilisateur authentifié peut accéder à toutes les
     API. Les pilotes d’accès peuvent placer des restrictions là-dessus.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘libvirt-configuration’ : string key-file
     Chemin de fichier de la clef du serveur. Si la valeur est une
     chaîne vide, aucune clef privée n’est chargée.

     La valeur par défaut est ‘""’.

 -- paramètre de ‘libvirt-configuration’ : string cert-file
     Chemin de fichier de la clef du serveur. Si la chaîne est vide,
     aucun certificat n’est chargé.

     La valeur par défaut est ‘""’.

 -- paramètre de ‘libvirt-configuration’ : string ca-file
     Chemin de fichier de la clef du serveur. Si la chaîne est vide,
     aucun certificat de CA n’est chargé.

     La valeur par défaut est ‘""’.

 -- paramètre de ‘libvirt-configuration’ : string crl-file
     Chemin de la liste de révocation des certificats. Si la chaîne est
     vide, aucun CRL n’est chargé.

     La valeur par défaut est ‘""’.

 -- paramètre de ‘libvirt-configuration’ : boolean tls-no-sanity-cert
     Désactive la vérification de nos propres certificats serveurs.

     Lorsque libvirtd démarre il effectue des vérifications de routine
     sur ses propres certificats.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘libvirt-configuration’ : boolean tls-no-verify-cert
     Désactive la vérification des certificats clients.

     La vérification des certificats clients est le mécanisme
     d’authentification principal. Tout client qui ne présent pas de
     certificat signé par la CA sera rejeté.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘libvirt-configuration’ : optional-list
          tls-allowed-dn-list
     Liste blanche des Distinguished Name x509 autorisés.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘libvirt-configuration’ : optional-list
          sasl-allowed-usernames
     Liste blanche des noms d’utilisateur SASL permis. Le format des
     noms d’utilisateurs dépend du mécanisme d’authentification SASL.

     La valeur par défaut est ‘()’.

 -- paramètre de ‘libvirt-configuration’ : string tls-priority
     Modifie la chaine de priorité TLS par défaut fixée à la
     compilation. La valeur par défaut est typiquement ‘NORMAL’ à moins
     qu’elle n’ait été modifiée à la compilation. Ne l’indiquez que si
     vous voulez que libvirt agisse différemment des paramètres par
     défaut globaux.

     La valeur par défaut est ‘"NORMAL"’.

 -- paramètre de ‘libvirt-configuration’ : integer max-clients
     Nombre maximum de connexions clientes en même temps sur tous les
     sockets.

     La valeur par défaut est ‘5000’.

 -- paramètre de ‘libvirt-configuration’ : integer max-queued-clients
     Longueur maximum de la queue de connexions en attente d’acceptation
     du démon. Remarquez que certains protocoles supportant la
     retransmission peuvent obéir à ce paramètre pour qu’une connexion
     ultérieure réussisse.

     La valeur par défaut est ‘1000’.

 -- paramètre de ‘libvirt-configuration’ : integer max-anonymous-clients
     Longueur maximum de la queue des clients acceptés mais pas
     authentifiés. Indiquez zéro pour désactiver ce paramètre

     La valeur par défaut est ‘20’.

 -- paramètre de ‘libvirt-configuration’ : integer min-workers
     Nombre de processus de travail démarrés initialement.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer max-workers
     Nombre maximum de threads de travail.

     Si le nombre de clients actifs dépasse ‘min-workers’, plus de
     threads seront démarrés, jusqu’à la limite de max_workers.
     Typiquement vous voulez que max_workers soit égal au nombre maximum
     de clients permis.

     La valeur par défaut est ‘20’.

 -- paramètre de ‘libvirt-configuration’ : integer prio-workers
     Nombre de travailleurs prioritaires. Si tous les threads de travail
     du groupe ci-dessus sont bloqués, certains appels marqués comme
     prioritaires (notamment domainDestroy) peuvent être exécutés par ce
     groupe.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer max-requests
     Limite globale totale sur les appels RPC concurrents.

     La valeur par défaut est ‘20’.

 -- paramètre de ‘libvirt-configuration’ : integer max-client-requests
     Limite de requêtes concurrentes depuis une connexion cliente
     unique. Pour éviter qu’un client ne monopolise le serveur, vous
     devriez indiquer une petite partie des paramètres global
     max_requests et max_workers.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer admin-min-workers
     Comme ‘min-workers’ mais pour l’interface d’administration.

     La valeur par défaut est ‘1’.

 -- paramètre de ‘libvirt-configuration’ : integer admin-max-workers
     Comme ‘max-workers’ mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer admin-max-clients
     Comme ‘max-clients’ mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer
          admin-max-queued-clients
     Comme ‘max-queued-clients’ mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer
          admin-max-client-requests
     Comme ‘max-client-requests’ mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer log-level
     Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 :
     information, 1 : débogage.

     La valeur par défaut est ‘3’.

 -- paramètre de ‘libvirt-configuration’ : string log-filters
     Filtres de journalisation.

     Un filtre qui permet de sélectionner un niveau de journalisation
     différent pour une catégorie donnée. Le format d’un filtre est :

        • x:nom

        • x:+nom

     où ‘nom’ est une chaine de caractères qui correspond à la catégorie
     donnée dans ‘VIR_LOG_INIT()’ au début de chaque fichier source de
     libvirt, p. ex. ‘remote’, ‘qemu’ ou ‘util.json’ (le nom dans le
     filtre peut être une sous-chaine du nom complet de la catégorie,
     pour pouvoir correspondre à plusieurs catégories similaires), le
     préfixe facultatif ‘+’ dit à libvirt d’enregistrer les traces de
     piles pour chaque message qui correspond au nom, et ‘x’ est le
     niveau minimal des messages qui devraient être enregistrés :

        • 1 : DEBUG

        • 2 : INFO

        • 3 : WARNING

        • 4 : ERROR

     On peut définir plusieurs filtres dans une seule déclaration de
     filtres, ils doivent juste être séparés par des espaces.

     La valeur par défaut est ‘"3:remote 4:event"’.

 -- paramètre de ‘libvirt-configuration’ : string log-outputs
     Sorties de débogage.

     Une sortie est l’un des endroits où les journaux sont enregistrés.
     Le format d’une sortie peut être :

     ‘x:stderr’
          la sortie va vers stderr

     ‘x:syslog:nom’
          utilise syslog comme sortie et utilise le nom donné comme
          identifiant

     ‘x:file:chemin_fichier’
          la sortie va vers un fichier, avec le chemin donné

     ‘x:journald’
          la sortie va vers le système de journalisation journald

     Dans tous les cas, le préfixe x est le niveau minimal, qui agit
     comme un filtre

        • 1 : DEBUG

        • 2 : INFO

        • 3 : WARNING

        • 4 : ERROR

     Plusieurs sorties peuvent être définies, elles doivent juste être
     séparées par des espaces.

     La valeur par défaut est ‘"3:stderr"’.

 -- paramètre de ‘libvirt-configuration’ : integer audit-level
     Permet de modifier l’utilisation du sous-système d’audit

        • 0 : désactive tout audit

        • 1 : active l’audit, seulement s’il est activé sur l’hôte

        • 2 : active l’audit, et quitte s’il est désactivé sur l’hôte.

     La valeur par défaut est ‘1’.

 -- paramètre de ‘libvirt-configuration’ : boolean audit-logging
     Envoie les messages d’audit via l’infrastructure de journalisation
     de libvirt.

     La valeur par défaut est ‘#f’.

 -- paramètre de ‘libvirt-configuration’ : optional-string host-uuid
     UUID de l’hôte. L’UUID ne doit pas avoir tous ses nombres
     identiques.

     La valeur par défaut est ‘""’.

 -- paramètre de ‘libvirt-configuration’ : string host-uuid-source
     Source où lire l’UUID de l’hôte.

        • ‘smbios’ : récupère l’UUID à partir de ‘dmidecode -s
          system-uuid’

        • ‘machine-id’ : récupère l’UUID à partir de ‘/etc/machine-id’

     Si ‘dmidecode’ ne fournit pas un UUID valide, un UUID temporaire
     sera généré.

     La valeur par défaut est ‘"smbios"’.

 -- paramètre de ‘libvirt-configuration’ : integer keepalive-interval
     Un message keepalive est envoyé au client après
     ‘keepalive_interval’ secondes d’inactivité pour vérifier si le
     client répond toujours. Si la valeur est -1, libvirtd n’enverra
     jamais de requête keepalive ; cependant les clients peuvent
     toujours en envoyer et le démon y répondra.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer keepalive-count
     Nombre maximum de messages keepalive qui peuvent être envoyés au
     client sans réponse avant que la connexion ne soit considérée comme
     cassée.

     En d’autres termes, la connexion est approximativement fermée après
     ‘keepalive_interval * (keepalive_count + 1)’ secondes après le
     dernier message reçu de la part du client. Lorsque
     ‘keepalive-count’ est à 0, les connexions seront automatiquement
     fermées après ‘keepalive-interval’ secondes d’inactivité sans
     envoyer le moindre message keepalive.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer
          admin-keepalive-interval
     Comme précédemment, mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer admin-keepalive-count
     Comme précédemment, mais pour l’interface d’administration.

     La valeur par défaut est ‘5’.

 -- paramètre de ‘libvirt-configuration’ : integer ovs-timeout
     Délai d’attente pour les appels Open vSwitch.

     L’utilitaire ‘ovs-vsctl’ est utilisé pour la configuration et son
     option de délai d’attente est à 5 secondes pour éviter qu’une
     attente infinie ne bloque libvirt.

     La valeur par défaut est ‘5’.

Démon Virrlog
.............

Le service virtlogd est un démon côté serveur qui fait partie de
libvirt, utilisé pour gérer les journaux des consoles des machines
virtuelles.

   Ce démon n’est pas utilisé directement par les clients libvirt, mais
il est appelé pour eux par ‘libvirtd’. En maintenant les journaux dans
un démon séparé, le démon ‘libvirtd’ principal peut être redémarré sans
risque de perte de journaux. Le démon ‘virtlogd’ a la possibilité de
ré-exécuter exec() sur lui-même quand il reçoit ‘SIGUSR1’, pour
permettre des mises à jour à chaud sans temps mort.

 -- Variable Scheme : virtlog-service-type
     Le type de service pour le démon virtlogd. Sa valeur doit être un
     ‘virtlog-configuration’.

          (service virtlog-service-type
                   (virtlog-configuration
                    (max-clients 1000)))

 -- Variable : paramètre de ‘libvirt’ package libvirt
     Paquet libvirt.

 -- paramètre de ‘virtlog-configuration’ : integer log-level
     Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 :
     information, 1 : débogage.

     La valeur par défaut est ‘3’.

 -- paramètre de ‘virtlog-configuration’ : string log-filters
     Filtres de journalisation.

     Un filtre qui permet de sélectionner plusieurs niveaux de
     journalisation pour une catégorie donnée. Le format d’un filtre est
     :

        • x:nom

        • x:+nom

     où ‘nom’ est une chaîne de caractères qui correspond à la catégorie
     donnée dans ‘VIR_LOG_INIT()’ au début de chaque fichier source de
     libvirt, p. ex. « remote », « qemu » ou « util.json » (le nom dans
     le filtre peut être une sous-chaîne du nom complet de la catégorie,
     pour pouvoir correspondre à plusieurs catégories similaires), le
     préfixe facultatif « + » dit à libvirt d’enregistrer les traces de
     piles pour chaque message qui correspond au nom, et ‘x’ est le
     niveau minimal des messages qui devraient être enregistrés :

        • 1 : DEBUG

        • 2 : INFO

        • 3 : WARNING

        • 4 : ERROR

     On peut définir plusieurs filtres dans une seule déclaration de
     filtres, ils doivent juste être séparés par des espaces.

     La valeur par défaut est ‘"3:remote 4:event"’.

 -- paramètre de ‘virtlog-configuration’ : string log-outputs
     Sorties de débogage.

     Une sortie est l’un des endroits où les journaux sont enregistrés.
     Le format d’une sortie peut être :

     ‘x:stderr’
          la sortie va vers stderr

     ‘x:syslog:nom’
          utilise syslog comme sortie et utilise le nom donné comme
          identifiant

     ‘x:file:chemin_fichier’
          la sortie va vers un fichier, avec le chemin donné

     ‘x:journald’
          la sortie va vers le système de journalisation journald

     Dans tous les cas, le préfixe x est le niveau minimal, qui agit
     comme un filtre

        • 1 : DEBUG

        • 2 : INFO

        • 3 : WARNING

        • 4 : ERROR

     Plusieurs sorties peuvent être définies, elles doivent juste être
     séparées par des espaces.

     La valeur par défaut est ‘"3:stderr"’.

 -- paramètre de ‘virtlog-configuration’ : integer max-clients
     Nombre maximum de connexions clientes en même temps sur tous les
     sockets.

     La valeur par défaut est ‘1024’.

 -- paramètre de ‘virtlog-configuration’ : integer max-size
     Taille de fichier maximale avant roulement.

     La valeur par défaut est ‘2MB’

 -- paramètre de ‘virtlog-configuration’ : integer max-backups
     Nombre maximal de fichiers de sauvegardes à garder.

     La valeur par défaut est ‘3’

Émulation transparente avec QEMU
................................

‘qemu-binfmt-service-type’ fournit le support de l’émulation
transparente de binaires construits pour des architectures différentes —
p. ex. il permet d’exécuter de manière transparente des programmes ARMv7
sur une machine x86_64. Cela se fait en combinant l’émulateur QEMU
(https://www.qemu.org) et la fonctionnalité ‘binfmt_misc’ du noyau
Linux. Cette fonctionnalité ne vous permet que d’émuler GNU/Linux sur
une architecture différente, mais regardez plus bas pour GNU/Hurd.

 -- Variable Scheme : qemu-binfmt-service-type
     Le type du service QEMU/binfmt pour l’émulation transparente. Sa
     valeur doit être un objet ‘qemu-binfmt-configuration’, qui spécifie
     le paquet QEMU à utiliser ainsi que l’architecture que vous voulez
     émuler :

          (service qemu-binfmt-service-type
                   (qemu-binfmt-configuration
                     (platforms (lookup-qemu-platforms "arm" "aarch64"))))

     Dans cet exemple, on active l’émulation transparente pour les
     plateformes ARM et aarch64. Lancer ‘herd stop qemu-binfmt’ l’éteint
     et lancer ‘herd start qemu-binfmt’ le rallume (*note the ‘herd’
     command: (shepherd)Invoking herd.).

 -- Type de données : qemu-binfmt-configuration
     La configuration du service ‘qemu-binfmt’.

     ‘platforms’ (par défaut : ‘'()’)
          La liste des plates-formes émulées par QEMU. Chaque élément
          doit être un objet “platform object” tel que renvoyé par
          ‘lookup-qemu-platforms’ (voir plus bas).

          Par exemple, supposons que vous soyez sur une machine x86_64
          et que vous avez ce services :

               (service qemu-binfmt-service-type
                        (qemu-binfmt-configuration
                          (platforms (lookup-qemu-platforms "arm"))))

          Vous pouvez lancer :

               guix build -s armhf-linux inkscape

          et cela construira Inkscape pour ARMv7 _comme s’il s’agissait
          d’une construction native_, de manière transparente avec QEMU
          pour émuler un CPU ARMv7. Plutôt pratique si vous voulez
          tester un paquet construit pour une architecture à laquelle
          vous n’avez pas accès !

     ‘qemu’ (par défaut : ‘qemu’)
          Le paquet QEMU à utiliser.

 -- Procédure Scheme : lookup-qemu-platforms PLATFORMS...
     Renvoie la liste des objets de plates-formes QEMU correspondant à
     PLATFORMS.... PLATFORMS doit être une liste de chaînes de
     caractères correspondant aux noms de plates-formes, comme ‘"arm"’,
     ‘"sparc"’, ‘"mips64el"’ etc.

 -- Procédure Scheme : qemu-platform? OBJ
     Renvoie vrai s iOBJ est un objet de plate-forme.

 -- Procédure Scheme : qemu-platform-name PLATFORM
     Renvoie le nom de PLATFORM — une chaîne comme ‘"arm"’.

Agent invité de QEMU
....................

L’agent invité de QEMU permet de contrôler le système émulé à partir de
l’hôte. Le service ‘qemu-guest-agent’ lance l’agent sur les invités
Guix. Pour contrôler l’agent à partir de l’hôte, ouvrez un socket en
invoquant QEMU avec les arguments suivants :

     qemu-system-x86_64 \
     	-chardev socket,path=/tmp/qga.sock,server=on,wait=off,id=qga0 \
     	-device virtio-serial \
     	-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
     	...

   Cela crée un socket dans ‘/tmp/qga.sock’ sur l’hôte. Une fois l’agent
invité lancé vos pouvez exécuter des commandes avec ‘socat’ :

     $ guix shell socat -- socat unix-connect:/tmp/qga.sock stdio
     {"execute": "guest-get-host-name"}
     {"return": {"host-name": "guix"}}

   Voir la documentation de l’agent invité de QEMU
(https://wiki.qemu.org/Features/GuestAgent) pour les options et les
commandes supplémentaires.

 -- Variable Scheme : qemu-guest-agent-service-type
     Type de service pour l’agent invité de QEMU.

 -- Type de données : qemu-guest-agent-configuration
     La configuration du service ‘qemu-guest-agent’.

     ‘qemu’ (par défaut : ‘qemu-minimal’)
          Le paquet QEMU à utiliser.

     ‘device’ (par défaut : ‘""’)
          Le nom de périphérique ou de socket que l’agent utilise pour
          communiquer avec l’hôte. Si le nom est vide, QEMU utilisera un
          nom de fichier par défaut.

Exécuter le Hurd dans une machine virtuelle
...........................................

Le service ‘hurd-vm’ permet de lancer GNU/Hurd dans une machine
virtuelle (VM), un “childhurd”. Ce service est conçu pour être utilisé
sur GNU/Linux et la configuration du système GNU/Hurd donné est compilée
de manière croisée. La machine virtuelle est un service Shepherd qui a
les noms ‘hurd-vm’ et ‘childhurd’ et qui peut être contrôlé avec les
commandes suivantes :

     herd start hurd-vm
     herd stop childhurd

   Lorsque le service est lancé, vous pouvez voir sa console en vous y
connectant avec un client VNC, par exemple avec :

     guix shell tigervnc-client -- vncviewer localhost:5900

   La configuration par défaut (voir ‘hurd-vm-configuration’ ci-dessous)
crée un serveur secure shell (SSH) dans votre système GNU/Hurd, que QEMU
(l’émulateur de machine virtuelle) redirige sur le port 10222 de l’hôte.
Ainsi, vous pouvez vous connecter en SSH au childhurd avec :

     ssh root@localhost -p 10022

   Le childhurd est volatile et sans état . il démarre avec un nouveau
système de fichier à chaque fois que vous le redémarrez. Par défaut
cependant, tous les fichiers sous ‘/etc/childhurd’ sur l’hôte sont
copiés tels quels sur le système de fichiers racine du childhurd à son
démarrage. Cela vous permet d’initialiser des « secrets » à l’intérieur
de la VM : les clés hôtes SSH, les clés de substituts autorisés, etc —
voir l’explication de ‘secret-root’ ci-dessous.

 -- Variable Scheme : hurd-vm-service-type
     C’est le type du service du Hurd dans une machine virtuelle. Sa
     valeur doit être un objet ‘hurd-vm-configuration’, qui spécifie le
     système d’exploitation (*note référence de operating-system::) et
     la taille de disque pour la machine virtuelle du Hurd, le paquet
     QEMU à utiliser ainsi que les options pour le lancer.

     Par exemple :

          (service hurd-vm-service-type
                   (hurd-vm-configuration
                    (disk-size (* 5000 (expt 2 20))) ;5G
                    (memory-size 1024)))             ;1024MiB

     créerait une image disque assez grande pour construire GNU Hello,
     avec une peu de place en plus.

 -- Type de données : hurd-vm-configuration
     Type de données représentant la configuration de
     ‘hurd-vm-service-type’.

     ‘os’ (par défaut : %HURD-VM-OPERATING-SYSTEM)
          Le système d’exploitation à instancier. La valeur par défaut
          est le système minimal avec un démon OpenSSH permissif en
          écoute sur le port 2222 (*note ‘openssh-service-type’:
          Services réseau.).

     ‘qemu’ (par défaut : ‘qemu-minimal’)
          Le paquet QEMU à utiliser.

     ‘image’ (par défaut : HURD-VM-DISK-IMAGE)
          La procédure utilisée pour construire l’image disque
          construite à partir de cette configuration.

     ‘disk-size’ (par défaut : ‘'guess’)
          La taille de l’image disque.

     ‘memory-size’ (par défaut : ‘512’)
          La taille de mémoire de la machine virtuelle en mébioctets.

     ‘options’ (par défaut : ‘'("--snapshot")’)
          Options supplémentaires pour lancer QEMU.

     ‘id’ (par défaut : ‘#f’)
          Si l’option est indiquée, c’est un entier strictement positif
          utilisé créer plusieurs instances de childhurd. Il est ajouté
          au nom du service, p. ex. ‘childhurd1’.

     ‘net-options’ (par défaut : HURD-VM-NET-OPTIONS)
          La procédure utilisée pour produire une liste d’options réseau
          pour QEMU.

          Par défaut, elle produit

               '("--device" "rtl8139,netdev=net0"
                 "--netdev" (string-append
                             "user,id=net0,"
                             "hostfwd=tcp:127.0.0.1:SECRETS-PORT-:1004,"
                             "hostfwd=tcp:127.0.0.1:SSH-PORT-:2222,"
                             "hostfwd=tcp:127.0.0.1:VNC-PORT-:5900"))

          avec les ports renvoyés :

               SECRETS-PORT: (+ 11004 (* 1000 ID))
               SSH-PORT: (+ 10022 (* 1000 ID))
               VNC-PORT: (+ 15900 (* 1000 ID))

     ‘secret-root’ (par défaut : ‘/etc/childhurd’)
          Le répertoire racine avec des secrets externes à installer
          dans le childhurd une fois lancé. Les childhurds sont
          volatile, ce qiu signifie qu’à chaque démarrage, les secrets
          comme les clés hôtes SSH et la clé de signature de Guix sont
          recréés.

          Si le répertoire ‘/etc/childhurd’ n’existe pas, le
          ‘secret-service’ qui tourne dans le Childhurd recevra une
          liste vide de secrets.

          Par défaut, le service rempli automatiquement ‘/etc/childhurd’
          avec les secrets non-volatiles suivants, à moins qu’ils
          existent déjà :

               /etc/childhurd/etc/guix/acl
               /etc/childhurd/etc/guix/signing-key.pub
               /etc/childhurd/etc/guix/signing-key.sec
               /etc/childhurd/etc/ssh/ssh_host_ed25519_key
               /etc/childhurd/etc/ssh/ssh_host_ecdsa_key
               /etc/childhurd/etc/ssh/ssh_host_ed25519_key.pub
               /etc/childhurd/etc/ssh/ssh_host_ecdsa_key.pub

          Ces fichiers sont automatiquement envoyés à la VM Hurd invitée
          au démarrage, avec les permissions.

          Avec ces fichiers en place, il ne manque plus grand chose pour
          pouvoir permettre à l’hôte de décharger les constructions
          ‘i586-gnu’ au childhurd :

            1. Autoriser la clé du childhurd sur l’hôte pour que l’hôte
               puisse accepter les constructions venant du childhurd, ce
               qui peut se faire de cette manière :

                    guix archive --authorize < \
                      /etc/childhurd/etc/guix/signing-key.pub

            2. Ajouter le childhurd à ‘/etc/guix/machines.scm’ (*note
               Réglages du déchargement du démon::).

          Nous travaillons à rendre cela automatique — contactez nous
          sur <guix-devel@gnu.org> pour en discuter !

   Remarquez que par défaut l’image de la VM est volatile, c.-à-d.
qu’une fois arrêtée le contenu est perdu. Si vous voulez une image avec
état à la place, remplacez les champs ‘image’ et ‘options’ pour enlever
le drapeau ‘--snapshot’ avec quelque chose de ce style-là :

     (service hurd-vm-service-type
              (hurd-vm-configuration
               (image   (const "/out/of/store/writable/hurd.img"))
               (options '())))

Ganeti
......

     Remarque : Ce service est considéré comme étant expérimental. Les
     options de configuration peuvent changer de manière non compatible,
     et tous les paramètres n’ont pas été testés. Si vous utilisez ce
     service, nous vous encourageons à partager votre expérience avec
     <guix-devel@gnu.org>.

   Ganeti est un système de gestion de machines virtuelles. Il est conçu
pour faire tourner les machines virtuelles en continue sur une grappe de
serveurs même dans le cas d’une erreur matérielle, et pour rendre les
tâches de maintenance et de récupération faciles. Il consisste en
plusieurs services qui sont décrits plus loin dans cette section. En
plus du service Ganeti, vous aurez besoin du service OpenSSH (*note
‘openssh-service-type’: Services réseau.), et de mettre à jour le
fichier ‘/etc/hosts’ (*note ‘hosts-file’: référence de
operating-system.) avec le nom de la grappe et l’adresse (ou utiliser un
serveur DNS).

   Tous les nœuds participant dans une grappe Ganeti devraient avec la
même configuration de Ganeti et ‘/etc/hosts’. voici un exemple de
configuration pour un nœud d’une grappe Ganeti qui prend en charge
plusieurs moteurs de stockage et installe les “fournisseurs de systèmes”
‘debbotstrap’ et ‘guix’ :

     (use-package-modules virtualization)
     (use-service-modules base ganeti networking ssh)
     (operating-system
       ;; ...
       (host-name "node1")
       (hosts-file (plain-file "hosts" (format #f "
     127.0.0.1       localhost
     ::1             localhost

     192.168.1.200   ganeti.example.com
     192.168.1.201   node1.example.com node1
     192.168.1.202   node2.example.com node2
     ")))

       ;; Installe QEMU pour pouvoir utiliser les instances KVM, ainsi que LVM, DRBD et Ceph
       ;; pour utiliser les moteurs de stockage « plain », « drbd » et « rbd ».
       (packages (append (map specification->package
                              '("qemu" "lvm2" "drbd-utils" "ceph"
                                ;; Add the debootstrap and guix OS providers.
                                "ganeti-instance-guix" "ganeti-instance-debootstrap"))
                         %base-packages))
       (services
        (append (list (service static-networking-service-type
                               (list (static-networking
                                      (addresses
                                       (list (network-address
                                              (device "eth0")
                                              (value "192.168.1.201/24"))))
                                      (routes
                                       (list (network-route
                                              (destination "default")
                                              (gateway "192.168.1.254"))))
                                      (name-servers '("192.168.1.252"
                                                      "192.168.1.253")))))

                      ;; Ganeti utilise SSH pour communiquer entre les nœuds.
                      (service openssh-service-type
                               (openssh-configuration
                                (permit-root-login 'prohibit-password)))

                      (service ganeti-service-type
                               (ganeti-configuration
                                ;; cette liste spécifie les chemins du système de fichiers autorisés
                                ;; pour le stockage des images de machines virtuelles.
                                (file-storage-paths '("/srv/ganeti/file-storage"))
                                ;; Cette variable configure une « variante » pour
                                ;; Debootstrap et Guix qui fonctionne avec KVM.
                                (os %default-ganeti-os))))
                %base-services)))

   Nous vous encourageons à lire le guide d’administration de Ganeti
(https://docs.ganeti.org/docs/ganeti/3.0/html/admin.html) pour apprendre
les diverse options de grappes et les opérations de base. Il y a aussi
un billet de blog
(https://guix.gnu.org/blog/2020/running-a-ganeti-cluster-on-guix/)
décrivant comment configurer et initialiser une petite grappe.

 -- Variable Scheme : ganeti-service-type
     C’est le type de service qui inclus tous les service dont les nœuds
     Ganeti ont besoin.

     Sa valeur est un objet ‘ganeti-configurtaion’ qui définie le paquet
     pour utiliser les opérations en ligne de commande, ainsi que pour
     les divers démons. Les chemins de stockage autorisés et les
     systèmes d’exploitation invités disponibles sont aussi configurés à
     travers ce type de données.

 -- Type de données : ganeti-configuration
     Le service ‘ganeti’ prend les options de configuration suivante :

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser. Il sera installé sur le profil
          du système et rendra ‘gnt-cluster’, ‘gnt-instance’, etc
          disponibles. Remarquez que la valeur spécifiée ici n’affecte
          pas les autres services auxquels se réfère le paquet ‘ganeti’
          (voir plus bas).

     ‘noded-configuration’ (par défaut : ‘(ganeti-noded-configuration)’)
     ‘confd-configuration’ (par défaut : ‘(ganeti-confd-configuration)’)
     ‘wconfd-configuration’ (par défaut : ‘(ganeti-wconfd-configuration)’)
     ‘luxid-configuration’ (par défaut : ‘(ganeti-luxid-configuration)’)
     ‘rapi-configuration’ (par défaut : ‘(ganeti-rapi-configuration)’)
     ‘kvmd-configuration’ (par défaut : ‘(ganeti-kvmd-configuration)’)
     ‘mond-configuration’ (par défaut : ‘(ganeti-mond-configuration)’)
     ‘metad-configuration’ (par défaut : ‘(ganeti-metad-configuration)’)
     ‘watcher-configuration’ (par défaut : ‘(ganeti-watcher-configuration)’)
     ‘cleaner-configuration’ (par défaut : ‘(ganeti-cleaner-configuration)’)

          Ces options contrôlent les divers démons et tâches cron
          distribués avec Ganeti. Les valeurs possibles sont détaillées
          plus bas. Pour changer un paramètre, vous devez utiliser le
          type de configuration pour ce service :

               (service ganeti-service-type
                        (ganeti-configuration
                         (rapi-configuration
                          (ganeti-rapi-configuration
                           (interface "eth1"))))
                         (watcher-configuration
                          (ganeti-watcher-configuration
                           (rapi-ip "10.0.0.1"))))

     ‘file-storage-paths’ (par défaut : ‘'()’)
          Liste des répertoire autorisés pour le moteur de stockage de
          fichiers.

     ‘os’ (par défaut : ‘%default-ganeti-os’)
          Liste des enregistrements ‘<ganeti-os>’.

     En résumé ‘ganeti-service-type’ est un raccourci pour la
     déclaration de chaque service individuel :

          (service ganeti-noded-service-type)
          (service ganeti-confd-service-type)
          (service ganeti-wconfd-service-type)
          (service ganeti-luxid-service-type)
          (service ganeti-kvmd-service-type)
          (service ganeti-mond-service-type)
          (service ganeti-metad-service-type)
          (service ganeti-watcher-service-type)
          (service ganeti-cleaner-service-type)

     Plus une extension de service pour ‘etc-service-type’ qui configure
     le moteur de stockage de fichiers et les variantes de systèmes.

 -- Type de données : ganeti-os
     Ce type de données peut être passé au paramètre ‘os’ de
     ‘ganeti-configuration’. Il prend les paramètres suivants :

     ‘name’
          Le nom du fournisseur de système. Il est seulement utilisé
          pour spécifier où la configuration se trouve. Indiquer «
          debootstrap » créera ‘/etc/ganeti/intance-debootstrap’.

     ‘extension’ (par défaut : ‘#f’)
          L’extension de fichier pour les variantes de ce type de
          système. Par exemple ‘.conf’ ou ‘.scm’. Elle sera ajoutée à la
          fin du nom de fichier si elle est indiquée.

     ‘variants’ (par défaut : ‘'()’)
          Il doit s’agir soit d’une liste d’objets ‘ganeti-os-variant’
          pour cet OS ou un objet « simili-fichier » (*note file-like
          objects: G-Expressions.) représentant le répertoire des
          variantes.

          Pour utiliser le fournisseur Guix OS avec les définitions des
          variantes dans un répertoire local au lieu de déclarer des
          variantes individuelles (voir GUIX-VARIANTS ci-dessous), vous
          pouvez utiliser :

               (ganeti-os
                (name "guix")
                (variants (local-file "ganeti-guix-variants"
                                      #:recursive? #true)))

          Remarquez que vous devrez maintenir le fichier ‘variants.list’
          (voir ‘ganeti-os-interface(7)
          (https://docs.ganeti.org/docs/ganeti/3.0/man/ganeti-os-interface.html)’)
          manuellement dans ce cas.

 -- Type de données : ganeti-os-variant
     Type de données représentant une variante de système Ganeti. Il
     prend les paramètres suivants :

     ‘name’
          Le nom de cette variante.

     ‘configuration’
          Un fichier de configuration pour cette variante.

 -- Variable Scheme : %default-debootstrap-hooks
     Cette variable contient les crochet pour configurer le réseau et le
     chargeur d’amorçage GRUB.

 -- variable Scheme : %default-debootstrap-extra-pkgs
     Cette variable contient une liste de paquets requis pour un invité
     complètement virtualisé.

 -- Type de données : debootstrap-configuration

     Ce type de données crée des fichiers de configurations pour le
     fournisseur de système debootstrap.

     ‘hooks’ (par défaut : ‘%default-debootstrap-hooks’)
          Lorsque la valeur n’est pas ‘#f’, cela doit être une
          G-expression qui spécifie un répertoire avec les scripts qui
          seront lancés à l’installation du système. Elle peut aussi
          être une liste de pairs de ‘(nom, simili-fichier)’. Par
          exemple :

               `((99-hello-world . ,(plain-file "#!/bin/sh\necho Hello, World")))

          Cela va créer un répertoire avec un exécutable nommé
          ‘99-hello-world’ et le lancera à chaque fois que cette
          variante est installée. Si la valeur est ‘#f’, les crochets
          dans ‘/etc/ganeti/instance-debootstrap/hooks’ seront utilisés,
          s’ils existent.
     ‘proxy’ (par défaut : ‘#f’)
          Serveur mandataire HTTP facultatif à utiliser.
     ‘mirror’ (par défaut : ‘#f’)
          Le miroir Debian. Habituellement quelque chose comme
          ‘http://ftp.no.debian.org/debian’. La valeur par défaut dépend
          de la distribution.
     ‘arch’ (par défaut : ‘#f’)
          L’architecture pour dpkg. Indiquez ‘armhf’ pour debootstrap
          pour une instnace ARMv7 sur un hôte AArch64. La valeur par
          défaut est l’architecture système actuelle.
     ‘suite’ (par défaut : ‘"stable"’)
          Lorsqu’il est indiqué, ce paramètre doit être une distribution
          Debian comme ‘buster’ ou ‘focal’. Si la valeur est ‘#f’, la
          valeur par défaut du fournisseur de système est utilisée.
     ‘extra-pkgs’ (par défaut : ‘%default-debootstrap-extra-pkgs’)
          Liste des paquets supplémentaires qui seront installés par
          dpkg en plus du système minimal.
     ‘components’ (par défaut : ‘#f’)
          Lorsque la valeur est indiquée, doit être une liste de «
          composants » de répertoires Debian. Par exemple ‘'("main"
          "contrib")’.
     ‘generate-cache?’ (par défaut : ‘#t’)
          Indique s’il faut automatiquement mettre en cache l’archive
          debootstrap générée.
     ‘clean-cache’ (par défaut : ‘14’)
          Supprime le cache après ce nombre de jours. Utilisez ‘#f’ pour
          ne jamais vider le cache.
     ‘partition-style’ (par défaut : ‘'msdos’)
          Le type de partition à créer. Lorsqu’il est indiqué, ce
          paramètre doit être ‘'msdos’, ‘'none’ ou une chaine de
          caractères.
     ‘partition-alignment’ (par défaut : ‘2048’)
          Alignement des partitions en nombre de secteur.

 -- Procédure Scheme : debootstrap-variant NOM CONFIGURATION
     C’est une procédure auxiliaire qui crée un enregistrement
     ‘ganeti-os-variant’. Il prend deux paramètres . un nom et un objet
     ‘debootstrap-configuration’.

 -- Procédure Scheme : debootstrap-os VARIANTS...
     C’est une procédure auxiliaire qui crée un enregistrement
     ‘ganeti-os’. Elle prend une liste de variantes créé avec
     ‘debootstrap-variant’.

 -- Procédure Scheme : guix-variant NAME CONFIGURATION
     C’est une procédure auxiliaire qui crée un enregistrement
     ‘ganeti-os-variant’ à utiliser avec le fournisseur de système Guix.
     Il prend un nom et une G-expression qui renvoie un objet
     simili-fichier (*note file-like objects: G-Expressions.) contenant
     une configuration Guix System.

 -- Procédure Scheme : guix-os VARIANTS...
     C’est une procédure auxiliaire qui crée un enregistrement
     ‘ganeti-os’. Elle prend une liste de variantes produites par
     ‘guix-variant’.

 -- Variable Scheme : %default-debootstrap-variants
     C’est une variable pratique pour que le fournisseur debootstrap
     fonctionne directement sans avoir à déclarer des variantes
     manuellement. Elle contient une seule variante debootrstap avec la
     configuration par défaut :

          (list (debootstrap-variant
                 "default"
                 (debootstrap-configuration)))

 -- Variable Scheme : %default-guix-variants
     C’est une variable pratique pour que le fournisseur Guix fonctionne
     directement sans configuration supplémentaire. Elle crée une
     machine virtuelle qui a un serveur SSH, une console série et
     autorise les clés SSH des hôtes Ganeti.

          (list (guix-variant
                 "default"
                 (file-append ganeti-instance-guix
                              "/share/doc/ganeti-instance-guix/examples/dynamic.scm")))

   Les utilisateur·rices peuvent implémenter la prise en charge des
fournisseurs de systèmes inconnus de Guix en étendant les enregistrement
‘ganeti-os’ et ‘ganeti-os-variant’ comme il faut. Par exemple :

     (ganeti-os
      (name "custom")
      (extension ".conf")
      (variants
       (list (ganeti-os-variant
              (name "toto")
              (configuration (plain-file "titi" "this is fine"))))))

   Cela crée ‘/etc/ganeti/instance-custom/variants/toto.conf’ qui pointe
vers un fichier dans le dépôt qui contient ‘this is fine’. Cela crée
aussi ‘/etc/ganeti/instance-custom/variants/variants.list’ qui contient
‘toto’.

   Évidemment cela ne fonctionnera pas avec tous les fournisseurs d’OS
disponibles. Si vous trouvez que cette interface est trop limitée,
contactez-nous sur <guix-devel@gnu.org>.

   Le reste de cette section documente les divers services inclus par
‘ganeti-service-type’.

 -- Variable Scheme : ganeti-noded-service-type
     ‘ganeti-noded’ est le démon responsable des fonctions spécifiques
     au nœud dans le système Ganeti. La valeur de ce service doit être
     un objet ‘ganeti-noded-configuration’.

 -- Type de données : ganeti-noded-configuration
     La configuration du service ‘ganeti-noded’.

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘port’ (par défaut : ‘1811’)
          Port TCP sur lequel le démon de nœud écoute les requêtes
          réseaux.

     ‘address’ (par défaut : ‘"0.0.0.0"’)
          Adresse réseau sur laquelle le démon se lie. L’adresse par
          défaut signifie de se lier à toutes les adresse disponibles.

     ‘interface’ (par défaut : ‘#f’)
          Si une valeur est indiquée, elle doit être une interface
          réseau spécifique (p. ex. ‘eth0’) à laquelle le démon se
          liera.

     ‘max-clients’ (par défaut : ‘20’)
          Cela indique une limite du nombre de connexions clientes
          simultanées que le démon pourra prendre en charge. Les
          connexions au delà de ce nombre sont acceptées, mais aucune
          réponse ne sera envoyée avant que suffisamment de connexions
          ne soient fermées.

     ‘ssl?’ (par défaut : ‘#t’)
          Indique s’il faut utiliser SSL/TLS pour chiffrer les
          communications réseaux. Le certification est automatiquement
          intégré par la grappe et peut être modifié avec ‘gnt-cluster
          renew-crypto’.

     ‘ssl-key’ (par défaut : ‘"/var/lib/ganeti/server.pem"’)
          Cela peut être utilisé pour fournir une clé de chiffrement
          spécifique pour les communications TLS.

     ‘ssl-cert’ (par défaut : ‘"/var/lib/ganeti/server.pem"’)
          Cela peut être utilisé pour fournir un certification
          spécifique pour les communications TLS.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue plus de
          journalisation pour le débogage. Remarque que cela laissera
          fuiter des détails de chiffrement dans les journaux, utilisez
          cette option avec prudence.

 -- Variable Scheme : ganeti-confd-service-type
     ‘ganeti-confd’ répond aux requêtes liées à la configuration de la
     grappe Ganeti. Le but de ce démon est d’avoir une manière rapide et
     très disponible de demander les valeurs de configuration de la
     grappe. Il est automatiquement activé sur tous les “candidats
     maitres”. La valeur de ce service doit être un objet
     ‘ganeti-confd-configuration’.

 -- Type de données : ganeti-confd-configuration
     La configuration du service ‘ganeti-confd’.

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘port’ (par défaut : ‘1814’)
          Le port UDP sur lequel écouter les requêtes réseaux.

     ‘address’ (par défaut : ‘"0.0.0.0"’)
          L’adresse réseau sur laquelle le démon se liera.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-wconfd-service-type
     ‘ganeti-wconfd’ est le démon qui fait autorité sur la configuration
     de la grappe et est la seule entité qui peut y accepter des
     changements. Tous les travaux qui ont besoin de modifier la
     configuration le feront en envoyant les requêtes appropriées à ce
     démon. Il ne tourne que sur le “nœud maitre” et sera
     automatiquement désactivé sur les autres nœuds.

     La valeur de ce service est un objet ‘ganeti-wconfd-configuration’.

 -- Type de données : ganeti-wconfd-configuration
     La configuration du service ‘ganeti-wconfd’.

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘no-voting?’ (par défaut : ‘#f’)
          Le démon refusera de démarrer si la majorité des nœuds de la
          grappe ne sont pas d’accord pour dire qu’il est le nœud
          maitre. Indiquez ‘#t’ pour le démarre même si le quorum n’a
          pas été atteint (dangereux, utilisez avec prudence).

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-luxid-service-type
     ‘ganeti-luxid’ est un démon utilisé pour répondre aux requêtes
     liées à la configuration et à l’état actuel d’une grappe Ganeti. En
     plus, c’est le démon qui fait autorité pour la queue de travaux de
     Ganeti. les travaux peuvent être soumis via ce démon et il les
     programme et les démarre.

     Il prend un objet ‘ganeti-luxid-configuration’.

 -- Type de données : ganeti-luxid-configuration
     La configuration du service ‘ganeti-rapi’.

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘no-voting?’ (par défaut : ‘#f’)
          Le démon refusera de démarrer s’il ne peut pas vérifier que la
          majorité des nœuds de la grappe pensent qu’il est le nœud
          maitre. Indiquez ‘#t’ pour le démarre malgré tout (cela peut
          être dangereux).

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-rapi-service-type
     ‘ganeti-rapi’ fournit une API à distance pour les grappes Ganeti.
     Il est lancé sur le maitre et peut être utilisé pour effectuer des
     actions programmées sur la grappe via un protocole de RPC basé sur
     JSON.

     La plupart des opérations de requêtes sont permises sans
     authentification (à moins que REQUIRE-AUTHENTIFICATION? ne soit
     indiqué), alors que les opérations en écriture requièrent une
     autorisation explicite via le fichier /VAR/LIB/GANETI/RAPI/USERS.
     Voir la documentation de l’API distante de Ganeti
     (https://docs.ganeti.org/docs/ganeti/3.0/html/rapi.html) pour plus
     d’informations.

     La valeur de ce service doit être un objet
     ‘geneti-rapi-configuration’.

 -- Type de données : ganeti-rapi-configuration
     La configuration du service ‘ganeti-rapi’.

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘require-authentication?’ (par défaut : ‘#f’)
          Indique s’il faut demander une authentification même pour les
          opérations en lecture-seule.

     ‘port’ (par défaut : ‘5080’)
          Le port TCP sur lequel écouter les requêtes de l’API.

     ‘address’ (par défaut : ‘"0.0.0.0"’)
          L’adresse réseau sur laquelle le service de liera. Par défaut
          il écoute sur toutes les adresses.

     ‘interface’ (par défaut : ‘#f’)
          Si une valeur est indiquée, elle doit spécifier une interface
          réseau spécifique comme ‘eth0’ sur laquelle le démon se liera.

     ‘max-clients’ (par défaut : ‘20’)
          Le nombre maximum de requêtes clientes simultanées à prendre
          en charge. Les connexions supplémentaires sont permises, mais
          aucune réponse ne sera envoyée tant qu’il n’y aura pas assez
          de connexions fermées.

     ‘ssl?’ (par défaut : ‘#t’)
          Indique s’il faut utiliser le chiffrement SSL/TLS sur le port
          RAPI.

     ‘ssl-key’ (par défaut : ‘"/var/lib/ganeti/server.pem"’)
          Cela peut être utilisé pour fournir une clé de chiffrement
          spécifique pour les communications TLS.

     ‘ssl-cert’ (par défaut : ‘"/var/lib/ganeti/server.pem"’)
          Cela peut être utilisé pour fournir un certification
          spécifique pour les communications TLS.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue plus de
          journalisation pour le débogage. Remarque que cela laissera
          fuiter des détails de chiffrement dans les journaux, utilisez
          cette option avec prudence.

 -- Variable Scheme : ganeti-kvmd-service-type
     ‘ganeti-kvmd’ doit déterminer si une instance KVM donnée a été
     éteinte par un administrateur ou un utilisateur. Normalement Ganeti
     redémarre une instance qui a été arrêtée par Ganeti lui-même. Si
     l’option de grappe ‘user_shutdown’ est vraie, ce démon vérifie la
     socket ‘QMP’ fournie par QEMU et écoute les évènements
     d’extinction, et marque l’instance “USER down” au lieu de “ERROR
     down” lorsqu’elle s’éteint correctement par elle-même.

     Il prend un objet ‘ganeti-kvmd-configuration’.

 -- Type de données : ganeti-kvmd-configuration

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-mond-service-type
     ‘ganeti-mond’ est un démon facultatif qui propose des
     fonctionnalités de surveillance de Ganeti. Il est responsable des
     collecteurs de données et de la publication des informations
     récupérées sur une interface HTTP.

     Il prend un objet ‘ganeti-mond-configuration’.

 -- Type de données : ganeti-mond-configuration

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘port’ (par défaut : ‘1815’)
          Le port sur lequel le démon écoutera.

     ‘address’ (par défaut : ‘"0.0.0.0"’)
          L’adresse réseau sur laquelle le démon se liera. Par défaut,
          il se lie à toutes les interfaces disponibles.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-metad-service-type
     ‘ganeti-metad’ est un démon facultatif qui peut être utilisé pour
     fournir des informations sur la grappe aux instance ou aux scripts
     d’installation de systèmes.

     Il prend un objet ‘ganeti-metad-configuration’.

 -- Type de données : ganeti-metad-configuration

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘port’ (par défaut : ‘80’)
          Le port sur lequel le démon écoutera.

     ‘address’ (par défaut : ‘#f’)
          Si la valeur est indiquée, le démon se liera à cette adresse
          uniquement. Si la valeur n’est pas indiquée, le comportement
          dépend de la configuration de la grappe.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est vraie, le démon effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-watcher-service-type
     ‘ganeti-watcher’ est un script conçu pour se lancer périodiquement
     et s’assurer de la santé de la grappe. Il redémarrera
     automatiquement les instances qui sont arrêtées sans le
     consentement de Ganeti, et réparera les liens DRBD au cas où un
     nœud a redémarré. Il archive aussi les anciennes tâche de la grappe
     et redémarre les démons Ganeti qui ne sont pas lancés. Si le
     paramètres de grappe ‘ensure_node_health’ est indiqué, le gardien
     éteindra aussi les instances et les périphériques DRBD si le nœud
     sur lequel il est lancé est déclaré hors-ligne par un candidat
     maitre.

     Il peut être mis en pause sur tous les nœuds avec ‘gnt-cluster
     watcher-pause’.

     Le service prend un objet ‘ganeti-watcher-configuration’.

 -- Type de données : ganeti-watcher-configuration

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour ce service.

     ‘schedule’ (par défaut : ‘'(next-second-from (next-minute (range 0 60 5)))’)
          Indique quand lancer le script. Par défaut, toutes les cinq
          minutes.

     ‘rapi-ip’ (par défaut : ‘#f’)
          Cette option doit être spécifiée seulement si le démon RAPI
          est configuré pour utiliser une interface ou une adresse
          particulière. Par défaut l’adresse de grappe est utilisée.

     ‘job-age’ (par défaut : ‘(* 6 3600)’)
          Archive les tâches de grappe plus vieilles que cela, en
          secondes. Par défaut c’est 6 heure. Cela permet de garder un
          ‘gnt-job list’ gérable.

     ‘verify-disks?’ (par défaut : ‘#t’)
          Si la valeur est ‘#f’, le gardien n’essaiera pas de réparer
          les liens DRBD cassés automatiquement. Les
          administrateur·rices devront utiliser ‘gnt-cluster
          verify-disks’ manuellement à la place.

     ‘debug?’ (par défaut : ‘#f’)
          Lorsque la valeur est ‘#t’, le script effectue des actions de
          journalisation supplémentaires pour le débogage.

 -- Variable Scheme : ganeti-cleaner-service-type
     ‘ganeti-cleaner’ est un script conçu pour être lancé périodiquement
     et supprimer les anciens fichiers de la grappe. Ce type de service
     contrôle deux “tâches cron” : l’une est conçue pour le nœud maitre
     et purge de manière permanente les ancienne tâches de la grappe, et
     l’autre est conçue pour tous les nœuds et supprime les certificats
     X509, les clés et les informations ‘ganeti-watcher’ périmées. Comme
     tous les services Ganeti, on peut l’ajouter même sur les nœuds
     non-maitres car il se désactive tout seul en cas de besoin.

     Il prend un objet ‘ganeti-cleaner-configuration’.

 -- Type de données : ganeti-cleaner-configuration

     ‘ganeti’ (par défaut : ‘ganeti’)
          Le paquet ‘ganeti’ à utiliser pour la commande ‘gnt-cleaner’.

     ‘master-schedule’ (par défaut : ‘"45 1 * * *"’)
          La périodicité à laquelle lancer la tâche de nettoyage maitre.
          Par défaut c’est une fois par jour, à 01:45:00.

     ‘node-schedule’ (par défaut : ‘"45 2 * * *"’)
          La périodicité à laquelle lancer la tâche de nettoyage des
          nœuds. Par défaut une fois par jour, à 02:45:00.

