This is guix.es.info, produced by makeinfo version 6.7 from
guix.es.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

   Se garantiza el permiso de copia, distribución y/o modificación de
este documento bajo los términos de la licencia de documentación libre
de GNU (GNU Free Documentation License), versión 1.3 o cualquier versión
posterior publicada por la Free Software Foundation; sin secciones
invariantes, sin textos de cubierta delantera ni trasera.  Una copia de
la licencia está incluida en la sección titulada “GNU Free Documentation
License”.
INFO-DIR-SECTION Administración del sistema
START-INFO-DIR-ENTRY
* Guix: (guix.es).           Gestión del software instalado y la
                               configuración del sistema.
* guix package: (guix.es)Invocación de guix package.  Instalación, borrado
                                                         y actualización de
                                                         paquetes.
* guix gc: (guix.es)Invocación de guix gc.  Recuperar espacio de disco sin
                                               usar.
* guix pull: (guix.es)Invocación de guix pull.  Actualización de la lista
                                                   disponible de paquetes.
* guix system: (guix.es)Invocación de guix system.  Gestión de la
                                                       configuración del
                                                       sistema operativo.
* guix deploy: (guix.es)Invocación de guix deploy.  Gestión de
                                                       configuraciones de
                                                       sistemas operativos en
                                                       máquinas remotas.
END-INFO-DIR-ENTRY

INFO-DIR-SECTION Desarrollo de software
START-INFO-DIR-ENTRY
* guix shell: (guix)Invoking guix shell.  Creating software environments.
* guix environment: (guix.es)Invocación de guix environment.  Construcción
                                                                 de entornos
                                                                 de desarrollo
                                                                 con Guix.
* guix build: (guix.es)Invocación de guix build.  Construcción de
                                                     paquetes.
* guix pack: (guix.es)Invocación de guix pack.  Creación de empaquetados
                                                   binarios.
END-INFO-DIR-ENTRY


File: guix.es.info,  Node: Servicios de monitorización,  Next: Servicios Kerberos,  Prev: File-Sharing Services,  Up: Servicios

12.9.16 Servicios de monitorización
-----------------------------------

Servicio Tailon
...............

Tailon (https://tailon.readthedocs.io/) es una aplicación web para la
visualización y búsqueda en archivos de registro.

   El ejemplo siguiente configura el servicio con los valores
predeterminados.  Por omisión, se puede acceder a Tailon en el puerto
8080 (‘http://localhost:8080’).

     (service tailon-service-type)

   El ejemplo siguiente personaliza más la configuración de Tailon,
añadiendo ‘sed’ a la lista de órdenes permitidas.

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

 -- Tipo de datos: tailon-configuration
     Tipo de datos que representa la configuración de Tailon.  Este tipo
     tiene los siguientes parámetros:

     ‘config-file’ (predeterminado: ‘(tailon-configuration-file)’)
          The configuration file to use for Tailon.  This can be set to
          a “tailon-configuration-file” record value, or any gexp (*note
          Expresiones-G::).

          Por ejemplo, para usar un archivo local, se puede usar la
          función ‘local-file’:

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

     ‘package’ (predeterminado: ‘tailon’)
          El paquete tailon usado.

 -- Tipo de datos: tailon-configuration-file
     Tipo de datos que representa las opciones de configuración de
     Tailon.  Este tipo tiene los siguientes parámetros:

     ‘files’ (predeterminados: ‘(list "/var/log")’)
          List of files to display.  The list can include strings for a
          single file or directory, or a list, where the first item is
          the name of a subsection, and the remaining items are the
          files or directories in that subsection.

     ‘bind’ (predeterminado: ‘"localhost:8080"’)
          Dirección y puerto al que Tailon debe asociarse.

     ‘relative-root’ (predeterminado: ‘#f’)
          Ruta URL usada por Tailon, use ‘#f’ para no usar una ruta.

     ‘allow-transfers?’ (predeterminado: ‘#t’)
          Permite la descarga de archivos de registro en la interfaz
          web.

     ‘follow-names?’ (predeterminado: ‘#t’)
          Permite la lectura de archivos todavía no existentes.

     ‘tail-lines’ (predeterminado: ‘200’)
          Número de líneas a leer inicialmente de cada archivo.

     ‘allowed-commands’ (predeterminadas: ‘(list "tail" "grep" "awk")’)
          Commands to allow running.  By default, ‘sed’ is disabled.

     ‘debug?’ (predeterminado: ‘#f’)
          Proporcione el valor ‘#t’ en ‘debug?’ para mostrar mensajes de
          depuración.

     ‘wrap-lines’ (predeterminado: ‘#t’)
          Initial line wrapping state in the web interface.  Set to ‘#t’
          to initially wrap lines (the default), or to ‘#f’ to initially
          not wrap lines.

     ‘http-auth’ (predeterminado: ‘#f’)
          HTTP authentication type to use.  Set to ‘#f’ to disable
          authentication (the default).  Supported values are ‘"digest"’
          or ‘"basic"’.

     ‘users’ (predeterminado: ‘#f’)
          If HTTP authentication is enabled (see ‘http-auth’), access
          will be restricted to the credentials provided here.  To
          configure users, use a list of pairs, where the first element
          of the pair is the username, and the 2nd element of the pair
          is the password.

               (tailon-configuration-file
                 (http-auth "basic")
                 (users     '(("usuaria1" . "contraseña1")
                              ("usuaria2" . "contraseña2"))))

Servicio Darkstat
.................

Darkstat es un programa de interceptación de paquetes que captura el
tráfico de la red, calcula estadísticas sobre su uso y proporciona
informes a través de HTTP.

 -- Variable: Variable Scheme darkstat-service-type
     Este es el tipo de servicio del servicio darkstat
     (https://unix4lyfe.org/darkstat/), su valor debe ser un registro
     ‘darkstat-configuration’ como en este ejemplo:

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

 -- Tipo de datos: darkstat-configuration
     Tipo de datos que representa la configuración de ‘darkstat’.

     ‘package’ (predeterminado: ‘darkstat’)
          El paquete darkstat usado.

     ‘interface’
          Captura el tráfico en la interfaz de red especificada.

     ‘port’ (predeterminado: ‘"667"’)
          Asocia la interfaz web al puerto especificado.

     ‘bind-address’ (predeterminada: ‘"127.0.0.1"’)
          Asocia la interfaz web a la dirección especificada.

     ‘base’ (predeterminada: ‘"/"’)
          Specify the path of the base URL.  This can be useful if
          ‘darkstat’ is accessed via a reverse proxy.

Servicio del exportador de nodos Prometheus
...........................................

El “exportador de nodos” Prometheus pone a disposición del sistema de
monitorización Prometheus las estadísticas de hardware y el sistema
operativo proporcionadas por el núcleo Linux.  Este servicio debe
desplegarse en todos los nodos físicos y máquinas virtuales, donde la
monitorización de estas estadísticas sea deseable.

 -- Variable: Variable Scheme prometheus-node-exporter-service-type
     This is the service type for the prometheus-node-exporter
     (https://github.com/prometheus/node_exporter/) service, its value
     must be a ‘prometheus-node-exporter-configuration’.

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

 -- Tipo de datos: prometheus-node-exporter-configuration
     Tipo de datos que representa la configuración de ‘node_exporter’.

     ‘package’ (predeterminado: ‘go-github-com-prometheus-node-exporter’)
          El paquete prometheus-node-exporter usado.

     ‘web-listen-address’ (predeterminada: ‘":9100"’)
          Asocia la interfaz web a la dirección especificada.

     ‘textfile-directory’ (default: ‘"/var/lib/prometheus/node-exporter"’)
          This directory can be used to export metrics specific to this
          machine.  Files containing metrics in the text format, with
          the filename ending in ‘.prom’ should be placed in this
          directory.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Extra options to pass to the Prometheus node exporter.

Servidor Zabbix
...............

Zabbix is a high performance monitoring system that can collect data
from a variety of sources and provide the results in a web-based
interface.  Alerting and reporting is built-in, as well as “templates”
for common operating system metrics such as network utilization, CPU
load, and disk space consumption.

   This service provides the central Zabbix monitoring service; you also
need *note ‘zabbix-front-end-service-type’: zabbix-front-end. to
configure Zabbix and display results, and optionally *note
‘zabbix-agent-service-type’: zabbix-agent. on machines that should be
monitored (other data sources are supported, such as *note Prometheus
Node Exporter: prometheus-node-exporter.).

 -- Variable: Scheme variable zabbix-server-service-type
     This is the service type for the Zabbix server service.  Its value
     must be a ‘zabbix-server-configuration’ record, shown below.

 -- Data Type: zabbix-server-configuration
     Los campos disponibles de ‘zabbix-server-configuration’ son:

     ‘zabbix-server’ (default: ‘zabbix-server’) (type: file-like)
          El paquete zabbix-server.

     ‘user’ (default: ‘"zabbix"’) (type: string)
          Usuaria que ejecutará el servidor Zabbix.

     ‘group’ (default: ‘"zabbix"’) (type: group)
          Grupo que ejecutará el servidor Zabbix.

     ‘db-host’ (default: ‘"127.0.0.1"’) (type: string)
          El nombre de máquina de la base de datos.

     ‘db-name’ (default: ‘"zabbix"’) (type: string)
          Nombre de la base de datos.

     ‘db-user’ (default: ‘"zabbix"’) (type: string)
          Usuaria de la base de datos.

     ‘db-password’ (default: ‘""’) (type: string)
          Contraseña de la base de datos.  Por favor, en vez de esto use
          ‘include-files’ con ‘DBPassword=SECRET’ dentro de un archivo
          especificado.

     ‘db-port’ (default: ‘5432’) (type: number)
          Puerto de la base de datos.

     ‘log-type’ (default: ‘""’) (type: string)
          Especifica donde se escriben los mensajes de registro:

             • ‘system’ - syslog.

             • ‘file’ - archivo especificado con el parámetro
               ‘log-file’.

             • ‘console’ - salida estándar.

     ‘log-file’ (default: ‘"/var/log/zabbix/server.log"’) (type: string)
          Nombre del archivo de registro para el parámetro ‘file’ de
          ‘log-type’.

     ‘pid-file’ (default: ‘"/var/run/zabbix/zabbix_server.pid"’) (type: string)
          Nombre del archivo de PID.

     ‘ssl-ca-location’ (default: ‘"/etc/ssl/certs/ca-certificates.crt"’) (type: string)
          La localización de los archivos de autoridades de
          certificación (CA) para la verificación de certificados SSL de
          los servidores.

     ‘ssl-cert-location’ (default: ‘"/etc/ssl/certs"’) (type: string)
          Localización de los certificados SSL de los clientes.

     ‘extra-options’ (default: ‘""’) (type: extra-options)
          Opciones adicionales que se añadirán al final del archivo de
          configuración de Zabbix.

     ‘include-files’ (default: ‘()’) (type: include-files)
          Puede incluir archivos individuales o todos los archivos en un
          directorio en el archivo de configuración.

Agente Zabbix
.............

The Zabbix agent gathers information about the running system for the
Zabbix monitoring server.  It has a variety of built-in checks, and can
be extended with custom “user parameters”
(https://www.zabbix.com/documentation/current/en/manual/config/items/userparameters).

 -- Variable: Scheme variable zabbix-agent-service-type
     This is the service type for the Zabbix agent service.  Its value
     must be a ‘zabbix-agent-configuration’ record, shown below.

 -- Data Type: zabbix-agent-configuration
     Los campos disponibles de ‘zabbix-agent-configuration’ son:

     ‘zabbix-agent’ (default: ‘zabbix-agentd’) (type: file-like)
          El paquete zabbix-agent.

     ‘user’ (default: ‘"zabbix"’) (type: string)
          Usuaria que ejecutará el agente Zabbix.

     ‘group’ (default: ‘"zabbix"’) (type: group)
          Grupo que ejecutará el agente Zabbix.

     ‘hostname’ (default: ‘""’) (type: string)
          Nombre de máquina único y sensible a mayúsculas que es
          necesario para la comprobaciones activas y debe corresponder
          con el nombre de máquina configurado en el servidor.

     ‘log-type’ (default: ‘""’) (type: string)
          Especifica donde se escriben los mensajes de registro:

             • ‘system’ - syslog.

             • ‘file’ - file specified with ‘log-file’ parameter.

             • ‘console’ - salida estándar.

     ‘log-file’ (default: ‘"/var/log/zabbix/agent.log"’) (type: string)
          Nombre del archivo de registro para el parámetro ‘file’ de
          ‘log-type’.

     ‘pid-file’ (default: ‘"/var/run/zabbix/zabbix_agent.pid"’) (type: string)
          Nombre del archivo de PID.

     ‘server’ (default: ‘("127.0.0.1")’) (type: list)
          Lista de direcciones IP, opcionalmente en notación CIDR, o
          nombres de máquina de servidores y proxy Zabbix.  Se aceptarán
          conexiones entrantes únicamente desde las máquinas
          proporcionadas aquí.

     ‘server-active’ (default: ‘("127.0.0.1")’) (type: list)
          Lista de pares IP:puerto (o máquina:puerto) de servidores
          Zabbix y servidores Zabbix para las comprobaciones activas.
          Si no se especifica un puerto, se usa el puerto
          predeterminado.  Si no se especifica este parámetro, las
          comprobaciones activas se desactivan.

     ‘extra-options’ (default: ‘""’) (type: extra-options)
          Opciones adicionales que se añadirán al final del archivo de
          configuración de Zabbix.

     ‘include-files’ (default: ‘()’) (type: include-files)
          Puede incluir archivos individuales o todos los archivos en un
          directorio en el archivo de configuración.

Motor de visualización de Zabbix
................................

The Zabbix front-end provides a web interface to Zabbix.  It does not
need to run on the same machine as the Zabbix server.  This service
works by extending the *note PHP-FPM:: and *note NGINX:: services with
the configuration necessary for loading the Zabbix user interface.

 -- Variable: Scheme variable zabbix-front-end-service-type
     This is the service type for the Zabbix web frontend.  Its value
     must be a ‘zabbix-front-end-configuration’ record, shown below.

 -- Data Type: zabbix-front-end-configuration
     Los campos disponibles de ‘zabbix-front-end-configuration’ son:

     ‘zabbix-server’ (default: ‘zabbix-server’) (type: file-like)
          The Zabbix server package to use.

     ‘nginx’ (default: ‘()’) (type: list)
          List of *note ‘nginx-server-configuration’:
          nginx-server-configuration. blocks for the Zabbix front-end.
          When empty, a default that listens on port 80 is used.

     ‘db-host’ (default: ‘"localhost"’) (type: string)
          El nombre de máquina de la base de datos.

     ‘db-port’ (default: ‘5432’) (type: number)
          Puerto de la base de datos.

     ‘db-name’ (default: ‘"zabbix"’) (type: string)
          Nombre de la base de datos.

     ‘db-user’ (default: ‘"zabbix"’) (type: string)
          Usuaria de la base de datos.

     ‘db-password’ (default: ‘""’) (type: string)
          Contraseña de la base de datos.  Por favor, en vez de esto use
          ‘db-secret-file’.

     ‘db-secret-file’ (default: ‘""’) (type: string)
          Archivo secreto que se añadirá al final del archivo
          ‘zabbix.conf.php’.  Este archivo contiene las credenciales
          usadas por el motor de visualización de Zabbix.  Se espera que
          usted lo cree manualmente.

     ‘zabbix-host’ (default: ‘"localhost"’) (type: string)
          Nombre de máquina del servidor Zabbix.

     ‘zabbix-port’ (default: ‘10051’) (type: number)
          Puerto del servidor Zabbix.


File: guix.es.info,  Node: Servicios Kerberos,  Next: Servicios LDAP,  Prev: Servicios de monitorización,  Up: Servicios

12.9.17 Servicios Kerberos
--------------------------

El módulo ‘(gnu services kerberos)’ proporciona servicios relacionados
con el protocolo de identificación “Kerberos”.

Servicio Krb5
.............

Los programas que usan una biblioteca cliente de Kerberos habitualmente
esperan un archivo de configuración en la ruta ‘/etc/krb5.conf’.  Este
servicio genera dicho archivo desde una definición proporcionada en la
declaración de sistema operativo.  Esto no causa el inicio de ningún
daemon.

   Este servicio no crea ningún archivo “keytab”—debe crearlos
explícitamente usted.  Se ha comprobado que este servicio funciona con
la biblioteca de cliente ‘mit-krb5’ del MIT. No se han probado otras
implementaciones.

 -- Variable Scheme: krb5-service-type
     Un tipo de servicio para clientes Kerberos 5.

Este es un ejemplo de su uso:
     (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"))))))

Este ejemplo proporciona una configuración de cliente Kerberos 5 que:
   • Reconoce dos dominios, sean: “EXAMPLE.COM” y “ARGRX.EDU”, los
     cuales tienen distintos servidores administrativos y centros de
     distribución de claves;
   • El valor predeterminado será “EXAMPLE.COM” si no se especifica el
     dominio explícitamente por parte del cliente.
   • Acepta servicios cuyos únicos tipos de cifrado implementados se
     sabe que son débiles.

   Los tipos ‘krb5-realm’ y ‘krb5-configuration’ contienen muchos
campos.  Aquí se describen únicamente los más habitualmente usados.
Para obtener una lista complete y una explicación detallada de cada
campo, véase la documentación de krb5.conf.

 -- Tipo de datos: krb5-realm
     ‘name’
          Este campo es una cadena que identifica el nombre del dominio.
          Una convención habitual es el uso del nombre completo de DNS
          de su organización, convertido a mayúsculas.

     ‘admin-server’
          Este campo es una cadena que identifica la máquina donde se
          ejecuta el servidor administrativo.

     ‘kdc’
          Este campo es una cadena que identifica el centro de
          distribución de claves para el dominio.

 -- Tipo de datos: krb5-configuration

     ‘allow-weak-crypto?’ (predeterminado: ‘#f’)
          Si esta opción es ‘#t’ se aceptarán los servicios que
          únicamente ofrezcan algoritmos de cifrado que se conozca que
          son débiles.

     ‘default-realm’ (predeterminado: ‘#f’)
          Este campo debe ser una cadena que identifique el dominio
          predeterminado de Kerberos para los clientes.  Debería
          proporcionar el nombre de su dominio Kerberos.  Si este valor
          es ‘#f’, el dominio debe especificarse en cada principal de
          Kerberos cuando se invoquen programas como ‘kinit’.

     ‘realms’
          Debe ser una lista no vacía de objetos ‘krb5-realm’,
          accesibles por los clientes.  Normalmente, uno de ellos tendrá
          un campo ‘name’ que corresponda con el campo ‘default-realm’.

Servicio krb5 de PAM
....................

El servicio ‘pam-krb5’ le permite la identificación para el ingreso al
sistema y la gestión de contraseñas mediante Kerberos.  Este servicio es
necesario si desea que aplicaciones que permiten PAM lleven a cabo la
identificación de usuarias mediante el uso de Kerberos.

 -- Variable Scheme: pam-krb5-service-type
     Un tipo de servicio para el módulo PAM de Kerberos 5.

 -- Tipo de datos: pam-krb5-configuration
     Tipo de datos que representa la configuración del módulo PAM de
     Kerberos 5.  Este tipo tiene los siguientes parámetros:
     ‘pam-krb5’ (predeterminado: ‘pam-krb5’)
          El paquete pam-krb5 usado.

     ‘minimum-uid’ (predeterminado: ‘1000’)
          El ID de usuaria mínimo con el que se permitirán los intentos
          de identificación con Kerberos.  El proceso de identificación
          de las cuentas locales con valores menores fallará de manera
          silenciosa.


File: guix.es.info,  Node: Servicios LDAP,  Next: Servicios Web,  Prev: Servicios Kerberos,  Up: Servicios

12.9.18 Servicios LDAP
----------------------

El módulo ‘(gnu services authentication)’ proporciona el tipo
‘nslcd-service-type’, que puede usarse para la identificación a través
de un servidor LDAP. Además de la configuración del servicio en sí,
puede desear añadir ‘ldap’ como servicio de nombres en el selector de
servicios de nombres (NSS). *Note Selector de servicios de nombres::
para información detallada.

   Aquí se encuentra una declaración simple de sistema operativo con la
configuración predeterminada de ‘nslcd-service-type’ y una configuración
del selector de servicios de nombre que consulta en último lugar al
servicios de nombres ‘ldap’:

     (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)))))

   Los campos disponibles de ‘nslcd-configuration’ son:

 -- parámetro de ‘nslcd-configuration’: package nss-pam-ldapd
     El paquete ‘nss-pam-ldapd’ usado.

 -- parámetro de ‘nslcd-configuration’: maybe-number threads
     El número de hilos a iniciar que pueden gestionar peticiones y
     realizar consultas en LDAP. Cada hilo abre una conexión separada al
     servidor LDAP. Se inician 5 hilos de manera predeterminada.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: string uid
     Especifica el id de usuaria con el que debe ejecutarse el daemon.

     El valor predeterminado es ‘"nslcd"’.

 -- parámetro de ‘nslcd-configuration’: string gid
     Especifica el id de grupo con el que debe ejecutarse el daemon.

     El valor predeterminado es ‘"nslcd"’.

 -- parámetro de ‘nslcd-configuration’: opción-registro log
     This option controls the way logging is done via a list containing
     SCHEME and LEVEL.  The SCHEME argument may either be the symbols
     ‘none’ or ‘syslog’, or an absolute file name.  The LEVEL argument
     is optional and specifies the log level.  The log level may be one
     of the following symbols: ‘crit’, ‘error’, ‘warning’, ‘notice’,
     ‘info’ or ‘debug’.  All messages with the specified log level or
     higher are logged.

     El valor predeterminado es ‘("/var/log/nslcd" info)’.

 -- parámetro de ‘nslcd-configuration’: lista uri
     La lista de URI de servidores LDAP. Normalmente, únicamente se
     usará el primer servidor y los siguientes se usan en caso de fallo.

     El valor predeterminado es ‘"ldap://localhost:389/"’.

 -- parámetro de ‘nslcd-configuration’: maybe-string ldap-version
     La versión del protocolo LDAP usada.  El valor predeterminado usa
     la versión máxima implementada por la biblioteca LDAP.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string binddn
     Especifica el nombre distinguido con el que enlazarse en el
     servidor de directorio para las búsquedas.  El valor predeterminado
     se enlaza de forma anónima.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string bindpw
     Especifica las credenciales usadas para el enlace.  Esta opción
     tiene utilidad únicamente cuando se usa con binddn.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string rootpwmoddn
     Especifica el nombre distinguido usado cuando la usuaria root
     intenta modificar la contraseña de una usuaria mediante el módulo
     de PAM.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string rootpwmodpw
     Especifica las credenciales con las que enlazarse si la usuaria
     root intenta cambiar la contraseña de una usuaria.  Esta opción
     tiene utilidad únicamente cuando se usa con rootpwmoddn.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string sasl-mech
     Especifica el mecanismo de SASL usado cuando se realice la
     identificación con SASL.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string sasl-realm
     Especifica el dominio de SASL usado cuando se realice la
     identificación con SASL.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string sasl-authcid
     Especifica la identidad de verificación usada cuando se realice la
     identificación con SASL.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string sasl-authzid
     Especifica la identidad de autorización usada cuando se realice la
     identificación con SASL.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean sasl-canonicalize?
     Determina si el nombre de máquina del servidor LDAP debe
     transformarse a su forma canónica.  Si se activa, la librería LDAP
     realizará una búsqueda inversa de nombre de máquina.  De manera
     predeterminada, se delega en la biblioteca la decisión de realizar
     esta comprobación o no.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string krb5-ccname
     Establece el nombre para la caché de credenciales GSS-API de
     Kerberos.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: string base
     El directorio de búsqueda base.

     El valor predeterminado es ‘"dc=example,dc=com"’.

 -- parámetro de ‘nslcd-configuration’: opción-de-ámbito scope
     Especifica el ámbito de búsqueda (subtree, oneleve, base o
     children).  El ámbito predeterminado es subtree; el ámbito base
     casi nunca es útil para búsquedas del servicio de nombres; el
     ámbito children no está implementado en todos los servidores.

     El valor predeterminado es ‘(subtree)’.

 -- parámetro de ‘nslcd-configuration’: maybe-deref-option deref
     Especifica la política para seguir las referencias de los alias.
     La política predeterminada es nunca seguir las referencias de los
     alias.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean referrals
     Especifica si el seguimiento automático de referencias debe
     activarse.  El seguimiento de referencias es comportamiento
     predeterminado.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: lista-asociación-entrada maps
     Esta opción permite que se busquen atributos personalizados en vez
     de los atributos predeterminados de RFC 2307.  Es una lista de
     asociaciones, de las que cada una consiste en el nombre de la
     asociación, el atributo de RFC 2307 al que corresponde y la
     expresión de búsqueda del atributo en la forma que esté disponible
     en el directorio.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘nslcd-configuration’: lista-asociación-entrada filters
     Una lista de filtros que consiste en el nombre de una asociación a
     la que se aplica el filtro y una expresión de filtrado de búsqueda
     de LDAP.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘nslcd-configuration’: maybe-number bind-timelimit
     Especifica el tiempo límite usado en segundos durante la conexión
     al servidor de directorio.  El valor predeterminado son 10
     segundos.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number timelimit
     Especifica el tiempo límite (en segundos) durante el que se
     esperará una respuesta del servidor LDAP. Un valor de cero, por
     omisión, hace que se espere de manera indefinida hasta que las
     búsquedas se completen.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number idle-timelimit
     Especifica el periodo de inactividad (en segundos) tras el cual se
     cerrará la conexión con el servidor LDAP. El valor predeterminado
     no cierra las conexiones por inactividad.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number reconnect-sleeptime
     Especifica en número de segundos que se dormirá cuando falle la
     conexión a todos los servidores LDAP. De manera predeterminada se
     espera un segundo entre el primer fallo y el primer reintento.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number reconnect-retrytime
     Especifica el tiempo tras el cual el servidor LDAP se considera no
     disponible de manera permanente.  Una vez se alcance este tiempo,
     los reintentos se realizarán una vez en cada periodo de tiempo
     igual al especificado.  El valor predeterminado es 10 segundos.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-ssl-option ssl
     Determina si se usa SSL/TLS o no (el comportamiento predeterminado
     es no hacerlo).  Si se especifica ’start-tls, se usa StartTLS en
     vez de la transmisión del protocolo LDAP en crudo sobre SSL.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-tls-reqcert-option
          tls-reqcert
     Especifica las comprobaciones que se deben realizar con un
     certificado proporcionado por el servidor.  El significado de los
     valores se describe en la página de manual de ldap.conf(5).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-cacertdir
     Especifica el directorio que contiene los certificados X.509 para
     la identificación de pares.  Este parámetro se ignora si se usa
     GnuTLS.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-cacertfile
     Especifica la ruta al certificado X.509 para la identificación de
     pares.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-randfile
     Especifica la ruta de la fuente de entropía.  Este parámetro se
     ignora si se usa GnuTLS.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-ciphers
     Especifica como una cadena los algoritmos de cifrado usados para
     TLS.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-cert
     Especifica la ruta al archivo que contiene el certificado local
     para la identificación de clientes con TLS.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string tls-key
     Especifica la ruta al archivo que contiene la clave privada para la
     identificación de clientes con TLS.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number pagesize
     Proporcione un valor superior a 0 para solicitar al servidor LDAP
     que proporcione los resultados divididos en páginas de acuerdo con
     el RFC2696.  El valor predeterminado (0) no solicita resultados
     divididos en páginas.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-ignore-users-option
          nss-initgroups-ignoreusers
     Esta opción previene las búsquedas de pertenencia a grupos a través
     de LDAP sobre las usuarias especificadas.  De manera alternativa,
     se puede usar el valor ’all-local.  Con dicho valor nslcd construye
     al inicio una lista completa de usuarias que no se encuentren en
     LDAP.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number nss-min-uid
     Esta opción hace que se ignoren las usuarias de LDAP con un
     identificador numérico inferior al valor especificado.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number nss-uid-offset
     Esta opción especifica un desplazamiento que se añade a todos los
     identificadores numéricos de usuaria de LDAP. Puede usarse para
     evitar colisiones de identificadores con usuarias locales.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-number nss-gid-offset
     Esta opción especifica un desplazamiento que se añade a todos los
     identificadores numéricos de grupos de LDAP. Puede usarse para
     evitar colisiones de identificadores con grupos locales.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean nss-nested-groups
     Cuando se activa esta opción, un grupo puede contener como atributo
     la pertenencia a otro grupo.  Los miembros de grupos anidados se
     devuelven en el grupo superior y los grupos superiores se devuelven
     cuando se busquen los grupos de una usuaria específica.  El valor
     predeterminado determina que no se realicen búsquedas adicionales
     para grupos anidados.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean
          nss-getgrent-skipmembers
     Cuando se activa esta opción, la lista de miembros de un grupo no
     se obtiene en las búsquedas de grupos.  Las búsquedas que busquen
     los grupos de los que una usuaria es miembro continuarán
     funcionando de manera que probablemente a la usuaria se le asignen
     los grupos correctos durante el ingreso al sistema.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean
          nss-disable-enumeration
     Cuando se activa esta opción, las funciones que provocan la carga
     de todas las entradas usuaria/grupo del directorio no tendrán éxito
     al realizarlo.  Esto puede reducir de forma dramática la carga del
     servidor LDAP cuando existe un gran número de usuarias y/o grupos.
     Esta opción no se recomienda para la mayoría de las
     configuraciones.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string validnames
     Esta opción puede usarse para especificar cómo se verifican en el
     sistema los nombres de usuaria y grupo.  Este patrón se usa para
     comprobar todos los nombres de usuarias y grupos que se soliciten y
     proporcionen a través de LDAP.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean ignorecase
     Especifica si se realizarán las búsquedas sin diferenciar
     mayúsculas y minúsculas o no.  Su activación puede abrir puntos
     vulnerables que permitan la omisión de las comprobaciones de
     autorización e introducir vulnerabilidades que permitan el
     envenenamiento de la caché de nscd, lo que puede provocar la
     denegación del servicio.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-boolean pam-authc-ppolicy
     Esta opción determina si los controles de la política de
     contraseñas se solicitan y manejan desde el servidor LDAP cuando se
     realice la identificación de usuarias.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string pam-authc-search
     De manera predeterminada nslcd realiza una búsqueda LDAP con las
     credenciales de la usuaria tras la orden BIND (identificación) para
     asegurarse de que la opción BIND fue satisfactoria.  La búsqueda
     predeterminada es una simple comprobación de la existencia del DN
     de la usuaria.  Se puede especificar un filtro de búsqueda que se
     usará en vez de dicha búsqueda.  Debe devolver al menos una
     entrada.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string pam-authz-search
     Esta opción permite la configuración detallada de las
     comprobaciones de autorización que deben realizarse.  El filtro de
     búsqueda especificado es ejecutado, y si cualquier entrada
     corresponde se permite el acceso, el cual se deniega en caso
     contrario.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: maybe-string
          pam-password-prohibit-message
     Si se proporciona esta opción, se denegará la modificación de
     contraseñas a través de pam_ldap y en vez de ello el mensaje
     especificado se presentará a la usuaria.  El mensaje puede usarse
     para redirigir a la usuaria a un medio alternativo para el cambio
     de su contraseña.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘nslcd-configuration’: lista pam-services
     Lista de nombres de servicio de PAM para los que la identificación
     de LDAP debería ser suficiente.

     El valor predeterminado es ‘()’.


File: guix.es.info,  Node: Servicios Web,  Next: Servicios de certificados,  Prev: Servicios LDAP,  Up: Servicios

12.9.19 Servicios Web
---------------------

El módulo ‘(gnu services web)’ proporciona el servidor HTTP Apache, el
servidor web nginx y también un recubrimiento del daemon de fastcgi.

Servidor HTTP Apache
....................

 -- Variable Scheme: httpd-service-type
     Tipo de servicio para el servidor Apache HTTP
     (https://httpd.apache.org/) (“httpd”).  El valor para este tipo de
     servicio es un registro ‘httpd-configuration’.

     Un ejemplo de configuración simple se proporciona a continuación.

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

     Otros servicios también pueden extender el tipo
     ‘httpd-service-type’ para añadir su contribución a la
     configuración.

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

   Los detalles de los tipos de registro ‘httpd-configuration’,
‘httpd-module’, ‘httpd-config-file’ y ‘httpd-virtualhost’ se
proporcionan a continuación.

 -- Tipo de datos: httpd-configuration
     Este tipo de datos representa la configuración del servicio httpd.

     ‘package’ (predeterminado: ‘httpd’)
          El paquete httpd usado.

     ‘pid-file’ (predeterminado: ‘"/var/run/httpd"’)
          El archivo pid usado por el servicio de Shepherd.

     ‘config’ (predeterminado: ‘(httpd-config-file)’)
          The configuration file to use with the httpd service.  The
          default value is a ‘httpd-config-file’ record, but this can
          also be a different G-expression that generates a file, for
          example a ‘plain-file’.  A file outside of the store can also
          be specified through a string.

 -- Tipo de datos: httpd-module
     Este es el tipo de datos que representa un módulo para el servicio
     httpd.

     ‘name’
          El nombre del módulo.

     ‘file’
          The file for the module.  This can be relative to the httpd
          package being used, the absolute location of a file, or a
          G-expression for a file within the store, for example
          ‘(file-append mod-wsgi "/modules/mod_wsgi.so")’.

 -- Variable Scheme: %default-httpd-modules
     Una lista de objetos ‘httpd-module’ predeterminados.

 -- Tipo de datos: httpd-config-file
     Este tipo de datos representa un archivo de configuración para el
     servicio httpd.

     ‘modules’ (predeterminados: ‘%default-httpd-modules’)
          The modules to load.  Additional modules can be added here, or
          loaded by additional configuration.

          Por ejemplo, para manejar las peticiones de archivos PHP,
          puede usar el módulo ‘mod_proxy_fcgi’ de Apache junto con
          ‘php-fpm-service-type’:

               (service httpd-service-type
                        (httpd-configuration
                         (config
                          (httpd-config-file
                           (modules (cons*
                                     (httpd-module
                                      (name "modulo_proxy")
                                      (file "modules/mod_proxy.so"))
                                     (httpd-module
                                      (name "module_proxy_fcgi")
                                      (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’ (predeterminado: ‘httpd’)
          The ‘ServerRoot’ in the configuration file, defaults to the
          httpd package.  Directives including ‘Include’ and
          ‘LoadModule’ are taken as relative to the server root.

     ‘server-name’ (predeterminado: ‘#f’)
          El campo ‘ServerName’ (nombre del servidor) en el archivo de
          configuración, el cual se usa para especificar el esquema de
          peticiones, nombre de máquina y puerto que el servidor usa
          para su propia identificación.

          This doesn’t need to be set in the server config, and can be
          specified in virtual hosts.  The default is ‘#f’ to not
          specify a ‘ServerName’.

     ‘document-root’ (predeterminado: ‘"/srv/http"’)
          La raíz (‘DocumentRoot’) desde la que se proporcionan los
          archivos.

     ‘listen’ (predeterminado: ‘'("80")’)
          The list of values for the ‘Listen’ directives in the config
          file.  The value should be a list of strings, when each string
          can specify the port number to listen on, and optionally the
          IP address and protocol to use.

     ‘pid-file’ (predeterminado: ‘"/var/run/httpd"’)
          The ‘PidFile’ to use.  This should match the ‘pid-file’ set in
          the ‘httpd-configuration’ so that the Shepherd service is
          configured correctly.

     ‘error-log’ (predeterminado: ‘"/var/log/httpd/error_log"’)
          El archivo ‘ErrorLog’ en el que el servidor registrará los
          errores.

     ‘user’ (predeterminada: ‘"httpd"’)
          La usuaria como la que el servidor responderá a las
          peticiones.

     ‘group’ (predeterminado: ‘"httpd"’)
          El grupo como el que el servidor responderá a las peticiones.

     ‘extra-config’ (predeterminadas: ‘(list "TypesConfig etc/httpd/mime.types")’)
          Una lista de cadenas y expresiones-G que se añadirán al final
          del archivo de configuración.

          Los valores con los que se extiende el servicio se añaden al
          final de esta lista.

 -- Tipo de datos: httpd-virtualhost
     Este tipo de datos representa un bloque de configuración de máquina
     virtual del servicio httpd.

     Se deben añadir a la configuración adicional extra-config del
     servicio httpd-service.

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

     ‘addresses-and-ports’
          Las direcciones y puertos de la directiva ‘VirtualHost’.

     ‘contents’
          El contenido de la directiva ‘VirtualHost’; debe ser una lista
          de cadenas y expresiones-G.

NGINX
.....

 -- Variable Scheme: nginx-service-type
     Tipo de servicio para el servidor web NGinx (https://nginx.org/).
     El valor para este tipo de servicio es un registro
     ‘<nginx-configuration>’.

     Un ejemplo de configuración simple se proporciona a continuación.

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

     Además de añadiendo bloques de servidor a la configuración del
     servicio de manera directa, este servicio puede extenderse con
     otros servicios para añadir bloques de servidor, como en este
     ejemplo:

          (simple-service 'mi-servidor-adicional nginx-service-type
                          (list (nginx-server-configuration
                                  (root "/srv/http/sitio-adicional")
                                  (try-files (list "$uri" "$uri/index.html")))))

   Durante su inicio, ‘nginx’ no ha leído todavía su archivo de
configuración, por lo que usa un archivo predeterminado para registrar
los mensajes de error.  Si se produce algún fallo al cargar su archivo
de configuración, allí es donde se registran los mensajes de error.
Tras la carga del archivo de configuración, el archivo de registro de
errores predeterminado cambia al especificado allí.  En nuestro caso,
los mensajes de error durante el inicio se pueden encontrar en
‘/var/run/nginx/logs/error.log’, y tras la configuración en
‘/var/log/nginx/error.log’.  La segunda ruta puede cambiarse con las
opciones de configuración LOG-DIRECTORY.

 -- Tipo de datos: nginx-configuration
     This data type represents the configuration for NGinx.  Some
     configuration can be done through this and the other provided
     record types, or alternatively, a config file can be provided.

     ‘nginx’ (predeterminado: ‘nginx’)
          El paquete nginx usado.

     ‘shepherd-requirement’ (default: ‘'()’)
          This is a list of symbols naming Shepherd services the nginx
          service will depend on.

          This is useful if you would like ‘nginx’ to be started after a
          back-end web server or a logging service such as Anonip has
          been started.

     ‘log-directory’ (predeterminado: ‘"/var/log/nginx"’)
          Directorio en el que NGinx escribirá los archivos de registro.

     ‘run-directory’ (predeterminado: ‘"/var/run/nginx"’)
          Directorio en el que NGinx crea el archivo de PID, y escribe
          archivos temporales.

     ‘server-blocks’ (predeterminados: ‘'()’)
          Una lista de “bloques de servidor” que se crearán en el
          archivo de configuración generado; los elementos deben ser del
          tipo ‘<nginx-server-configuration>’.

          El ejemplo siguiente configura NGinx para proporcionar
          ‘www.example.com’ a partir del directorio
          ‘/srv/http/www.example.com’, sin usar 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’ (predeterminados: ‘'()’)
          Una lista de “bloques upstream” creada en el archivo de
          configuración generado, los elementos deben ser del tipo
          ‘<nginx-upstream-configuration>’.

          La configuración de proveedores a través de ‘upstream-blocks’
          puede ser útil al combinarse con ‘location’ en los registros
          ‘<nginx-server-configuration>’.  El siguiente ejemplo crea la
          configuración de un servidor con una configuración de ruta,
          que hará de intermediaria en las peticiones a la configuración
          de proveedores, que delegarán las peticiones en dos
          servidores.

               (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 "/ruta1")
                                 (body '("proxy_pass http://servidor-proxy;"))))))))
                   (upstream-blocks
                     (list (nginx-upstream-configuration
                             (name "servidor-proxy")
                             (servers (list "servidor1.example.com"
                                            "servidor2.example.com")))))))

     ‘file’ (predeterminado: ‘#f’)
          Si se proporciona un archivo de configuración con FILE, se
          usará este, en vez de generar un archivo de configuración a
          partir de los parámetros ‘log-directory’, ‘run-directory’,
          ‘server-blocks’ y ‘upstream-blocks’ proporcionados.  Para
          conseguir un funcionamiento adecuado, estos parámetros deben
          corresponder con el contenido de FILE, lo que asegura que los
          directorios se hayan creado durante la activación del
          servicio.

          Esto puede ser útil si ya dispone de un archivo de
          configuración, o no es posible hacer lo que necesita con el
          resto de opciones del registro nginx-configuration.

     ‘server-names-hash-bucket-size’ (predeterminado: ‘#f’)
          Tamaño del cubo para las tablas hash de los nombres de
          servidor, cuyo valor predeterminado es ‘#f’ para que se use el
          tamaño de la línea de caché de los procesadores.

     ‘server-names-hash-bucket-max-size’ (predeterminado: ‘#f’)
          Tamaño máximo del cubo para las tablas hash de nombres de
          servidor.

     ‘modules’ (predeterminados: ‘'()’)
          Lista de módulos dinámicos de nginx cargados.  Debe ser una
          lista de nombres de archivo de módulos cargables, como en este
          ejemplo:

               (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’ (predeterminada: ‘'()’)
          Lista de paquetes de lua para nginx cargados.  Debe ser una
          lista de nombres de archivo de módulos cargables, como en este
          ejemplo:

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

     ‘lua-package-cpath’ (predeterminada: ‘'()’)
          Lista de paquetes C de lua para nginx cargados.  Debe ser una
          lista de nombres de archivo de módulos cargables, como en este
          ejemplo:

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

     ‘global-directives’ (predeterminadas: ‘'((events . ()))’)
          Lista asociativa de directivas globales para el nivel superior
          de la configuración de nginx.  Los valores en sí mismos pueden
          ser listas asociativas.

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

     ‘extra-content’ (predeterminado: ‘""’)
          Contenido adicional para el bloque ‘http’.  Debe ser una
          cadena o una expresión-G que evalúe a una cadena.

 -- Tipo de datos: nginx-server-configuration
     Tipo de datos que representa la configuración de un bloque de
     servidor nginx.  Este tipo tiene los siguientes parámetros:

     ‘listen’ (predeterminadas: ‘'("80" "443 ssl")’)
          Cada directiva ‘listen’ establece la dirección y el puerto
          para IP, o la ruta para un socket de dominio de UNIX sobre el
          que el servidor acepta peticiones.  Se puede especificar tanto
          dirección y puerto como únicamente la dirección o únicamente
          el puerto.  Una dirección puede ser también un nombre de
          máquina, por ejemplo:

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

     ‘server-name’ (predeterminados: ‘(list 'default)’)
          Una lista de nombres de servidor que este servidor representa.
          ‘'default’ representa el servidor predeterminado para
          conexiones que no correspondan a otro servidor.

     ‘root’ (predeterminada: ‘"/srv/http"’)
          Raíz del sitio web que nginx proporcionará.

     ‘locations’ (predeterminado: ‘'()’)
          Una lista de registros “nginx-location-configuration” o
          “nginx-named-location-configuration” usados dentro de este
          bloque de servidor.

     ‘index’ (predeterminado: ‘(list "index.html")’)
          Archivos de índice buscados cuando los clientes solicitan un
          directorio.  Si no se encuentra ninguno, Nginx enviará la
          lista de archivos del directorio.

     ‘try-files’ (predeterminado: ‘'()’)
          Una lista de archivos cuya existencia se comprueba en el orden
          especificado.  ‘nginx’ usará el primer archivo que encuentre
          para procesar la petición.

     ‘ssl-certificate’ (predeterminado: ‘#f’)
          Lugar donde se encuentra el certificado para conexiones
          seguras.  Proporcione ‘#f’ si no dispone de un certificado o
          no desea usar HTTPS.

     ‘ssl-certificate-key’ (predeterminado: ‘#f’)
          Lugar donde se encuentra la clave privada para conexiones
          seguras.  Proporcione ‘#f’ si no dispone de una clave o no
          desea usar HTTPS.

     ‘server-tokens?’ (predeterminado: ‘#f’)
          Determina si el servidor debe añadir su configuración a las
          respuestas.

     ‘raw-content’ (predeterminado: ‘'()’)
          Una lista de líneas que se añadirán literalmente al bloque del
          servidor.

 -- Tipo de datos: nginx-upstream-configuration
     Tipo de datos que representa la configuración de un bloque
     ‘upstream’ de nginx.  Este tipo tiene los siguientes parámetros:

     ‘name’
          Nombre para este grupo de servidores.

     ‘servers’
          Especifica las direcciones de los servidores en el grupo.  Las
          direcciones se pueden proporcionar mediante direcciones IP
          (por ejemplo ‘127.0.0.1’), nombres de dominio (por ejemplo
          ‘maquina1.example.com’) o rutas de socket de UNIX mediante el
          prefijo ‘unix:’.  El puerto predeterminado para las
          direcciones IP o nombres de dominio es el 80, y se puede
          proporcionar un puerto de manera explícita.

     ‘extra-content’
          A string or list of strings to add to the upstream block.

 -- Tipo de datos: nginx-location-configuration
     Tipo de datos que representa la configuración de un bloque
     ‘location’ de nginx.  Este tipo tiene los siguientes parámetros:

     ‘uri’
          URI a la que corresponde este bloque de location.

     ‘body’
          Body of the location block, specified as a list of strings.
          This can contain many configuration directives.  For example,
          to pass requests to a upstream server group defined using an
          ‘nginx-upstream-configuration’ block, the following directive
          would be specified in the body ‘(list "proxy_pass
          http://upstream-name;")’.

 -- Tipo de datos: nginx-named-location-configuration
     Tipo de datos que representa la configuración de un bloque de
     localización con nombre de nginx.  Los bloques de localizaciones
     con nombre se usan para la redirección de peticiones, y no se usan
     para el procesamiento regular de peticiones.  Este tipo tiene los
     siguientes parámetros:

     ‘name’
          Nombre que identifica este bloque de dirección ‘location’.

     ‘body’
          *Note cuerpo de nginx-location-configuration::, como el cuerpo
          de los bloques de localizaciones con nombre puede usarse de
          manera similar al ‘cuerpo de nginx-location-configuration’.
          Una restricción es que el cuerpo de una localización con
          nombre no puede contener bloques de localizaciones.

Caché Varnish
.............

Varnish es un servidor de caché rápida que se coloca entre aplicaciones
web y usuarios finales.  Redirige peticiones a los clientes y almacena
en caché las URL a las que se accede de manera que múltiples peticiones
al mismo recurso únicamente creen una petición al motor.

 -- Variable Scheme: varnish-service-type
     Tipo de servicio para el daemon Varnish.

 -- Tipo de datos: varnish-configuration
     Tipo de datos que representa la configuración del servicio
     ‘varnish’.  Este tipo tiene los siguientes parámetros:

     ‘package’ (predeterminado: ‘varnish’)
          El paquete Varnish usado.

     ‘name’ (predeterminado: ‘"default"’)
          Un nombre para esta instancia de Varnish.  Varnish creará un
          directorio en ‘/var/varnish’ con este nombre y mantendrá allí
          los archivos temporales.  Si el nombre comienza con una barra,
          se interpreta como un nombre absoluto de directorio.

          Proporcione el parámetro ‘-n’ a otros programas de Varnish
          para que se conecten a la instancia de dicho nombre, por
          ejemplo ‘varnishncsa -n default’.

     ‘backend’ (predeterminado: ‘"localhost:8080"’)
          Motor usado.  Esta opción no tiene efecto si se usa ‘vcl’.

     ‘vcl’ (predeterminado: #f)
          El programa “VCL” (lenguaje de configuración de Varnish)
          ejecutado.  Si se proporciona ‘#f’, Varnish llevará a cabo las
          redirecciones al motor (‘backend’) usando la configuración
          predeterminada.  En otro caso debe ser un objeto
          “tipo-archivo” con sintaxis válida para VCL.

          Por ejemplo, para proporcionar un espejo de www.gnu.org
          (https://www.gnu.org) con VCL podría escribir algo parecido a
          esto:

               (define %espejo-gnu
                 (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 %espejo-gnu)))
                                 %base-services)))

          La configuración de una instancia de Varnish ya en ejecución
          se puede inspeccionar y cambiar mediante el uso de la orden
          ‘varnishadm’.

          Consulte la guía de usuaria de Varnish
          (https://varnish-cache.org/docs/) y el libro de Varnish
          (https://book.varnish-software.com/4.0/) para obtener la
          documentación completa de Varnish y su lenguaje de
          configuración.

     ‘listen’ (predeterminada: ‘'("localhost:80")’)
          Lista de direcciones en las que Varnish escucha.

     ‘storage’ (predeterminado: ‘'("malloc,128m")’)
          Lista de motores de almacenamiento que estarán disponibles en
          VCL.

     ‘parameters’ (predeterminados: ‘'()’)
          Lista de parámetros de tiempo de ejecución con la forma
          ‘'(("parámetro" . "valor"))’.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Parámetros adicionales a proporcional al proceso ‘varnishd’.

Patchwork
.........

Patchwork es un sistema de seguimiento de parches.  Puede recolectar
parches enviados a listas de correo y mostrarlos en una interfaz web.

 -- Variable Scheme: patchwork-service-type
     Tipo de servicio para Patchwork.

   El siguiente ejemplo muestra un servicio mínimo para Patchwork, para
el dominio ‘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 . ("Parches"))))))))


   Existen tres registros para la configuración del servicio de
Patchwork.  El registro ‘<patchwork-configuration>’ está relacionado con
la configuración de Patchwork dentro del servicio HTTPD.

   El campo ‘settings-module’ dentro del registro
‘<patchwork-configuration>’ puede rellenarse con un registro
‘<patchwork-settings-module>’, que describe un módulo de configuración
generado dentro del almacén de Guix.

   En el campo ‘database-configuration’ dentro del registro
‘<patchwork-settings-module>’, debe usarse
‘<patchwork-database-configuration>’.

 -- Tipo de datos: patchwork-configuration
     Tipo de datos que representa la configuración del servicio
     Patchwok.  Este tipo tiene los siguientes parámetros:

     ‘patchwork’ (predeterminado: ‘patchwork’)
          El paquete Patchwork usado.

     ‘domain’
          Dominio usado por Patchwork, se usa en el servicio HTTPD como
          “virtual host”.

     ‘settings-module’
          The settings module to use for Patchwork.  As a Django
          application, Patchwork is configured with a Python module
          containing the settings.  This can either be an instance of
          the ‘<patchwork-settings-module>’ record, any other record
          that represents the settings in the store, or a directory
          outside of the store.

     ‘static-path’ (predeterminada: ‘"/static/"’)
          Ruta bajo la cual el servicio HTTPD proporciona archivos
          estáticos.

     ‘getmail-retriever-config’
          The getmail-retriever-configuration record value to use with
          Patchwork.  Getmail will be configured with this value, the
          messages will be delivered to Patchwork.

 -- Tipo de datos: patchwork-settings-module
     Tipo de datos que representa un módulo de configuración de
     Patchwork.  Algunas de estas opciones están directamente
     relacionadas con Patchwork, pero otras son relativas a Django, el
     entorno web usado Patchwork, o la biblioteca Django Rest Framework.
     Este tipo tiene los siguientes parámetros:

     ‘database-configuration’ (predeterminada: ‘(patchwork-database-configuration)’)
          La configuración de la conexión a la base de datos usada para
          Patchwork.  Véase el tipo de registro
          ‘<patchwork-database-configuration>’ para más información.

     ‘secret-key-file’ (predeterminado: ‘"/etc/patchwork/django-secret-key"’)
          Patchwork, como una aplicación web Django, usa una clave
          secreta para firmar criptográficamente valores.  Este archivo
          debe contener un valor único e impredecible.

          Si este archivo no existe, el servicio de Shepherd
          patchwork-setup lo creará y rellenará con un valor aleatorio.

          Esta configuración está relacionada con Django.

     ‘allowed-hosts’
          A list of valid hosts for this Patchwork service.  This should
          at least include the domain specified in the
          ‘<patchwork-configuration>’ record.

          Esta es una opción de configuración de Django.

     ‘default-from-email’
          La dirección de correo desde de la que Patchwork debe enviar
          el correo de manera predeterminada.

          Esta es una opción de configuración de Patchwork.

     ‘static-url’ (predeterminada: ‘#f’)
          The URL to use when serving static assets.  It can be part of
          a URL, or a full URL, but must end in a ‘/’.

          Si se usa el valor predeterminado, se usará el valor de
          ‘static-path’ del registro ‘<patchwork-configuration>’.

          Esta es una opción de configuración de Django.

     ‘admins’ (predeterminadas: ‘'()’)
          Direcciones de correo electrónico a las que enviar los
          detalles de los errores que ocurran.  Cada valor debe ser una
          lista que contenga dos elementos, el nombre y la dirección de
          correo electrónico en dicho orden.

          Esta es una opción de configuración de Django.

     ‘debug?’ (predeterminado: ‘#f’)
          Determina si se ejecuta Patchwork en modo de depuración.  Si
          se proporciona ‘#t’, se mostrarán mensajes de error
          detallados.

          Esta es una opción de configuración de Django.

     ‘enable-rest-api?’ (predeterminado: ‘#t’)
          Determina si se activa el API REST de Patchwork.

          Esta es una opción de configuración de Patchwork.

     ‘enable-xmlrpc?’ (predeterminado: ‘#t’)
          Determina si se activa el API XML RPC.

          Esta es una opción de configuración de Patchwork.

     ‘force-https-links?’ (predeterminado: ‘#t’)
          Determina si se usan enlaces HTTPS en las páginas de
          Patchwork.

          Esta es una opción de configuración de Patchwork.

     ‘extra-settings’ (predeterminado: ‘""’)
          Código adicional que colocar al final del módulo de
          configuración de Patchwork.

 -- Tipo de datos: patchwork-database-configuration
     Tipo de datos que representa la configuración de base de datos de
     Patchwork.

     ‘engine’ (predeterminado: ‘"django.db.backends.postgresql_psycopg2"’)
          Motor de base de datos usado.

     ‘name’ (predeterminado: ‘"patchwork"’)
          Nombre de la base de datos usada.

     ‘user’ (predeterminada: ‘"httpd"’)
          Usuaria usada para la conexión a la base de datos.

     ‘password’ (predeterminada: ‘""’)
          Contraseña usada para la conexión a la base de datos.

     ‘host’ (predeterminada: ‘""’)
          Máquina usada para la conexión a la base de datos.

     ‘port’ (predeterminado: ‘""’)
          Puerto en el que se conecta a la base de datos.

Mumi
....

Mumi (https://git.elephly.net/gitweb.cgi?p=software/mumi.git) es una
interfaz web al gestor de incidencias Debbugs, de manera predeterminada
apunta a la instancia de GNU (https://bugs.gnu.org).  Mumi es un
servidor web, pero también obtiene e indexa los correos recibidos de
Debbugs.

 -- Variable Scheme: mumi-service-type
     El tipo de servicio para Mumi.

 -- Tipo de datos: mumi-configuration
     Tipo de datos que representa la configuración del servicio Mumi.
     Este tipo tiene los siguientes campos:

     ‘mumi’ (predeterminado: ‘mumi’)
          El paquete Mumi usado.

     ‘mailer?’ (predeterminado: ‘#true’)
          Determina si se activa o desactiva el componente de correo
          ‘mailer’.

     ‘mumi-configuration-sender’
          La dirección de correo usada como remitente para los
          comentarios.

     ‘mumi-configuration-smtp’
          Una URI para las opciones de configuración de SMTP de
          Mailutils.  Puede ser algo parecido a
          ‘sendmail:///ruta/de/bin/msmtp’ o cualquier otra URI
          implementada por Mailutils.  *Note SMTP Mailboxes:
          (mailutils)SMTP Mailboxes.

FastCGI
.......

FastCGI es una interfaz entre la presentación (front-end) y el motor
(back-end) de un servicio web.  Es en cierto modo una característica
antigua; los nuevos servicios web generalmente únicamente se comunican
con HTTP entre ambas partes.  No obstante, existe cierto número de
servicios de motor como PHP o el acceso HTTP optimizado para
repositorios Git que usan FastCGI, por lo que debemos incluirlo en Guix.

   Para usar FastCGI debe configurar el servidor web de entrada(1) (por
ejemplo, ngnix) para delegar un subconjunto de sus peticiones al motor
fastcgi, que escucha en un puerto TCP local o en un socket de UNIX.
Existe un programa de intermediación llamado ‘fcgiwrap’ que se posiciona
entre el proceso del motor y el servidor web.  El servidor indica el
programa del motor usado, proporcionando dicha información al proceso
‘fcgiwrap’.

 -- Variable Scheme: fcgiwrap-service-type
     El tipo de servicio para la pasarela FastCGI ‘fcgiwrap’.

 -- Tipo de datos: fcgiwrap-configuration
     Tipo de datos que representa la configuración del servicio
     ‘fcgiwrap’.  Este tipo tiene los siguientes parámetros:
     ‘package’ (predeterminado: ‘fcgiwrap’)
          El paquete fcgiwrap usado.

     ‘socket’ (predeterminado: ‘tcp:127.0.0.1:9000’)
          El socket donde el proceso ‘fcgiwrap’ deba escuchar, como una
          cadena.  Los valores adecuados para SOCKET socket incluyen
          ‘unix:/RUTA/AL/SOCKET/UNIX’,
          ‘tcp:DIRECCIÓN.IP.CON.PUNTOS:PUERTO’ and
          ‘tcp6:[DIRECCIÓN_IPV6]:puerto’.

     ‘user’ (predeterminado: ‘fcgiwrap’)
     ‘group’ (predeterminado: ‘fcgiwrap’)
          Los nombres de usuaria y grupo, como cadenas, con los que se
          ejecutará el proceso ‘fcgiwrap’.  El servicio ‘fastcgi’ se
          asegura, en caso de solicitar específicamente el uso de
          nombres de usuaria o grupo ‘fcgiwrap’, que la usuaria y/o
          grupo correspondientes se encuentren presentes en el sistema.

          Es posible configurar un servicio web proporcionado por
          FastCGI para que el servidor de fachada proporcione la
          información de identificación HTTP al motor, y para permitir
          que ‘fcgiwrap’ se ejecute en el proceso del motor como la
          usuaria local correspondiente.  Para activar esta
          funcionalidad en el motor, ejecute ‘fcgiwrap’ mediante la
          usuaria y grupo ‘root’.  Tenga en cuenta de que esta
          funcionalidad debe configurarse del mismo modo en el servidor
          de fachada.

PHP-FPM
.......

PHP-FPM (FastCGI Process Manager) es una implementación alternativa de
FastCGI en PHP con algunas características adicionales útiles para
sitios de cualquier tamaño.

   Estas características incluyen:
   • Lanzamiento adaptativo de procesos
   • Estadísticas básicas (similares a mod_status de Apache)
   • Gestión avanzada de procesos con parada/arranque coordinados
   • Capacidad de iniciar procesos de trbajo con diferentes
     uid/gid/chroor/entorno y diferentes php.ini (reemplaza a safe_mode)
   • Registro a través de la salida estándar y de error
   • Reinicio de emergencia en caso de destrucción accidental de la
     caché de opcode
   • Posibilidad de subida acelerada
   • Posibilidad de un "slowlog"
   • Mejoras a FastCGI, como fastcgi_finish_request() - una función
     especial para terminar una petición y enviar todos los datos
     mientras que se continua haciendo una tarea de alto consumo de
     tiempo (conversión de datos audiovisuales, procesamiento de
     estadísticas, etcétera).
   ... y muchas más.

 -- Variable Scheme: php-fpm-service-type
     Un tipo de servicio para ‘php-fpm’.

 -- Tipo de datos: php-fpm-configuration
     Tipo de datos para la configuración del servicio php-fpm.
     ‘php’ (predeterminado: ‘php’)
          El paquete php usado.
     ‘socket’ (predeterminado: ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")’)
          La dirección desde la que FastCGI acepta peticiones.  Las
          sintaxis válidas son:
          ‘"dir.ecc.ión.ip:puerto"’
               Escucha con un socket TCP en la dirección especificada en
               un puerto específico.
          ‘"puerto"’
               Escucha en un socket TCP en todas las direcciones sobre
               un puerto específico.
          ‘"/ruta/a/socket/unix"’
               Escucha en un socket Unix.

     ‘user’ (predeterminada: ‘php-fpm’)
          Usuaria que poseerá los procesos de trabajo de php.
     ‘group’ (predeterminado: ‘php-fpm’)
          Grupo de los procesos de trabajo.
     ‘socket-user’ (predeterminado: ‘php-fpm’)
          Usuaria que puede comunicarse con el socket de php-fpm.
     ‘socket-group’ (predeterminado: ‘nginx’)
          Grupo que puede comunicarse con el socket de php-fpm.
     ‘pid-file’ (predeterminado: ‘(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")’)
          El identificador de proceso del proceso de php-fpm se escribe
          en este archivo cuando se ha iniciado el servicio.
     ‘log-file’ (predeterminado: ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")’)
          Registro del proceso maestro de php-fpm.
     ‘process-manager’ (predeterminado: ‘(php-fpm-dynamic-process-manager-configuration)’)
          Configuración detallada para el gestor de procesos php-fpm.
          Debe ser uno de los siguientes tipos:
          ‘<php-fpm-dynamic-process-manager-configuration>’
          ‘<php-fpm-static-process-manager-configuration>’
          ‘<php-fpm-on-demand-process-manager-configuration>’
     ‘display-errors’ (predeterminado ‘#f’)
          Determina si los errores y avisos de php deben enviarse a los
          clientes para que se muestren en sus navegadores.  Esto es
          útil para la programación local con php, pero un riesgo para
          la seguridad de sitios públicos, ya que los mensajes de error
          pueden revelar contraseñas y datos personales.
     ‘timezone’ (predeterminado: ‘#f’)
          Especifica el parámetro ‘php_admin_value[date.timezone]’.
     ‘workers-logfile’ (predeterminado ‘(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")’)
          Este archivo registrará las salidas por ‘stderr’ de los
          procesos de trabajo de php.  Puede proporcionarse ‘#f’ para
          desactivar el registro.
     ‘file’ (predeterminado ‘#f’)
          Sustituye opcionalmente la configuración al completo.  Puede
          usar la función ‘mixed-text-file’ o una ruta absoluta de un
          archivo para hacerlo.
     ‘php-ini-file’ (predeterminado: ‘#f’)
          Sustituye opcionalmente la configuración predeterminada de
          php.  Puede ser cualquier objeto “tipo-archivo” (*note
          file-like objects: Expresiones-G.). Puede usar la función
          ‘mixed-text-file’ o una ruta absoluta de un archivo para
          hacerlo.

          Para el desarrollo local es útil proporcionar valores mayores
          para los plazos y límites de memoria de los procesos php
          lanzados.  Esto puede obtenerse con el siguiente fragmento de
          la configuración de sistema operativo:
               (define %php-ini-local
                 (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 %php-ini-local)))
                                 %base-services)))

          Consulte las directivas principales de php.ini
          (https://www.php.net/manual/en/ini.core.php) para obtener una
          documentación extensa de las directivas aceptables en el
          archivo ‘php.ini’.

 -- Tipo de datos: php-fpm-dynamic-process-manager-configuration
     Data Type for the ‘dynamic’ php-fpm process manager.  With the
     ‘dynamic’ process manager, spare worker processes are kept around
     based on its configured limits.
     ‘max-children’ (predeterminados: ‘5’)
          Número máximo de procesos de trabajo.
     ‘start-servers’ (predeterminados: ‘2’)
          Cuantos procesos de trabajo deben ejecutarse al inicio.
     ‘min-spare-servers’ (predeterminado: ‘1’)
          Cuantos procesos de trabajo deben mantenerse disponibles como
          mínimo.
     ‘max-spare-servers’ (predeterminados: ‘3’)
          Cuantos procesos de trabajo deben mantenerse disponibles como
          máximo.

 -- Tipo de datos: php-fpm-static-process-manager-configuration
     Tipo de datos para el gestor de procesos ‘static’ de php-fpm.  Con
     el gestor de procesos ‘static’, se crea un número fijo de procesos
     de trabajo.
     ‘max-children’ (predeterminados: ‘5’)
          Número máximo de procesos de trabajo.

 -- Tipo de datos: php-fpm-on-demand-process-manager-configuration
     Tipo de datos para el gestor de procesos ‘on-demand’ de php-fpm.
     Con el gestor de procesos ‘on-demand’, se crean procesos de trabajo
     únicamente cuando se reciben peticiones.
     ‘max-children’ (predeterminados: ‘5’)
          Número máximo de procesos de trabajo.
     ‘process-idle-timeout’ (predeterminado: ‘10’)
          El tiempo en segundos tras el cual un proceso sin peticiones
          será eliminado.

 -- Procedimiento Scheme: nginx-php-location [#:nginx-package nginx]
           [socket (string-append "/var/run/php" (version-major
          (package-version php))  "-fpm.sock")]
     Función auxiliar para añadir php a una configuración
     ‘nginx-server-configuration’ rápidamente.

   Una configuración simple de servicios para nginx con php puede ser
más o menos así:
     (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))

   El generadores de avatares de gato es un servicio simple para
demostrar el uso de php-fpm en ‘Nginx’.  Se usa para generar un avatar
de gato desde una semilla, por ejemplo el hash de la dirección de correo
de la usuaria.

 -- Procedimiento Scheme: cat-avatar-generator-service [#:cache-dir
          "/var/cache/cat-avatar-generator"]  [#:package
     cat-avatar-generator]  [#:configuration
     (nginx-server-configuration)] Devuelve una configuración de
     nginx-server-configuration que hereda de ‘configuration’.  Extiende
     la configuración de nginx para añadir un bloque de servidor que
     proporciona ‘package’, una versión de cat-avatar-generator.
     Durante su ejecución, cat-avatar-generator podrá usar ‘cache-dir’
     como su directorio de caché.

   Una configuración simple para cat-avatar-generator puede ser más o
menos así:
     (services (cons* (cat-avatar-generator-service
                       #:configuration
                       (nginx-server-configuration
                         (server-name '("example.com"))))
                      ...
                      %base-services))

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

El programa hpcguix-web (https://github.com/UMCUGenetics/hpcguix-web/)
es una interfaz web personalizable para buscar paquetes de Guix,
diseñado inicialmente para usuarias de clusters de computación de alto
rendimiento (HPC).

 -- Variable Scheme: hpcguix-web-service-type
     El tipo de servicio para ‘hpcguix-web’.

 -- Tipo de datos: hpcguix-web-configuration
     El tipo de datos para la configuración del servicio hpcguix-web.

     ‘specs’
          Una expresión-G (*note Expresiones-G::) que especifica la
          configuración del servicio hpcguix-web.  Los elementos
          principales en esta especificación son:

          ‘title-prefix’ (predeterminado: ‘"hpcguix | "’)
               El prefijo del título de la página.

          ‘guix-command’ (predeterminada: ‘"guix"’)
               La orden ‘guix’.

          ‘package-filter-proc’ (predeterminado: ‘(const #t)’)
               Un procedimiento que especifica cómo filtrar los paquetes
               mostrados.

          ‘package-page-extension-proc’ (predeterminado: ‘(const '())’)
               Paquete de extensión para ‘hpcguix-web’.

          ‘menu’ (predeterminadas: ‘'()’)
               Entradas adicionales en el menú de la página.

          ‘channels’ (predeterminados: ‘%default-channels’)
               Lista de canales desde los que se construye la lista de
               paquetes (*note Canales::).

          ‘package-list-expiration’ (predeterminado: ‘(* 12 3600)’)
               El tiempo de expiración, en segundos, tras el cual la
               lista de paquetes se reconstruye desde las últimas
               instancias de los canales proporcionados.

          Véase el repositorio de hpcguix-web para un ejemplo completo
          (https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm).

     ‘package’ (predeterminado: ‘hpcguix-web’)
          El paquete hpcguix-web usado.

     ‘address’ (default: ‘"127.0.0.1"’)
          The IP address to listen to.

     ‘port’ (default: ‘5000’)
          The port number to listen to.

   Una declaración típica del servicio hpcguix-web es más o menos así:

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

     Nota: El servicio hpcguix-web actualiza periódicamente la lista de
     paquetes que publica obteniendo canales con Git.  Para ello,
     necesita acceder a certificados X.509 de manera que pueda validar
     los servidores Git durante la comunicación con HTTPS, y asume que
     ‘/etc/ssl/certs’ contiene dichos certificados.

     Por lo tanto, asegúrese de añadir ‘nss-certs’ u otro paquete de
     certificados al campo ‘packages’ de su configuración.  *note
     Certificados X.509::, para más información sobre certificados
     X.509.

gmnisrv
.......

El programa gmnisrv (https://git.sr.ht/~sircmpwn/gmnisrv) es un servidor
simple del protocolo Gemini (https://gemini.circumlunar.space/).

 -- Variable Scheme: gmnisrv-service-type
     Es el tipo del servicio gmnisrv, cuyo valor debe ser un objeto
     ‘gmniserv-configuration’ como en este ejemplo:

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

 -- Tipo de datos: gmnisrv-configuration
     Tipo de datos que representa la configuración de gmnisrv.

     ‘package’ (predeterminado: GMNISRV)
          El objeto paquete del servidor gmnisrv.

     ‘config-file’ (predeterminado: ‘%default-gmnisrv-config-file’)
          Objeto tipo-archivo del archivo de configuración de gmnisrv
          usado.  La configuración predeterminada escucha en el puerto
          1965 y proporciona archivos desde ‘/srv/gemini’.  Los
          certificados se almacenan en ‘/var/lib/gemini/certs’.  Puede
          ejecutar las ordenes ‘man gmnisrv’ y ‘man gmnisrv.ini’ para
          obtener más información.

Agate
.....

The Agate (gemini://qwertqwefsday.eu/agate.gmi) (GitHub page over HTTPS
(https://github.com/mbrubeck/agate)) program is a simple Gemini
(https://gemini.circumlunar.space/) protocol server written in Rust.

 -- Scheme Variable: agate-service-type
     This is the type of the agate service, whose value should be an
     ‘agate-service-type’ object, as in this example:

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

     The example above represents the minimal tweaking necessary to get
     Agate up and running.  Specifying the path to the certificate and
     key is always necessary, as the Gemini protocol requires TLS by
     default.

     To obtain a certificate and a key, you could, for example, use
     OpenSSL, running a command similar to the following example:

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

     Of course, you’ll have to replace example.com with your own domain
     name, and then point the Agate configuration towards the path of
     the generated key and certificate.

 -- Data Type: agate-configuration
     Data type representing the configuration of Agate.

     ‘package’ (default: ‘agate’)
          The package object of the Agate server.

     ‘content’ (default: ‘"/srv/gemini"’)
          The directory from which Agate will serve files.

     ‘cert’ (default: ‘#f’)
          The path to the TLS certificate PEM file to be used for
          encrypted connections.  Must be filled in with a value from
          the user.

     ‘key’ (predeterminada: ‘#f’)
          The path to the PKCS8 private key file to be used for
          encrypted connections.  Must be filled in with a value from
          the user.

     ‘addr’ (default: ‘'("0.0.0.0:1965" "[::]:1965")’)
          A list of the addresses to listen on.

     ‘hostname’ (predeterminado: ‘#f’)
          The domain name of this Gemini server.  Optional.

     ‘lang’ (default: ‘#f’)
          RFC 4646 language code(s) for text/gemini documents.
          Optional.

     ‘silent?’ (default: ‘#f’)
          Set to ‘#t’ to disable logging output.

     ‘serve-secret?’ (default: ‘#f’)
          Set to ‘#t’ to serve secret files (files/directories starting
          with a dot).

     ‘log-ip?’ (default: ‘#t’)
          Whether or not to output IP addresses when logging.

     ‘user’ (default: ‘"agate"’)
          Owner of the ‘agate’ process.

     ‘group’ (default: ‘"agate"’)
          Owner’s group of the ‘agate’ process.

     ‘log-file’ (default: ‘"/var/log/agate.log"’)
          The file which should store the logging output of Agate.

   ---------- Footnotes ----------

   (1) NdT: Front-end en inglés.


File: guix.es.info,  Node: Servicios de certificados,  Next: Servicios DNS,  Prev: Servicios Web,  Up: Servicios

12.9.20 Servicios de certificados
---------------------------------

El módulo ‘(gnu services certbot)’ proporciona un servicio para la
obtención automática de un certificado TLS válido de la autoridad de
certificación Let’s Encrypt.  Estos certificados pueden usarse para
proporcionar contenido de forma segura sobre HTTPS u otros protocolos
basados en TLS, con el conocimiento de que el cliente podrá verificar la
autenticidad del servidor.

   Let’s Encrypt (https://letsencrypt.org/) provides the ‘certbot’ tool
to automate the certification process.  This tool first securely
generates a key on the server.  It then makes a request to the Let’s
Encrypt certificate authority (CA) to sign the key.  The CA checks that
the request originates from the host in question by using a
challenge-response protocol, requiring the server to provide its
response over HTTP.  If that protocol completes successfully, the CA
signs the key, resulting in a certificate.  That certificate is valid
for a limited period of time, and therefore to continue to provide TLS
services, the server needs to periodically ask the CA to renew its
signature.

   El servicio certbot automatiza este proceso: la generación inicial de
la clave, la petición inicial de certificación al servicio Let’s
Encrypt, la integración del desafío/respuesta en el servidor web, la
escritura del certificado en disco, las renovaciones periódicas
automáticas y el despliegue de tareas asociadas con la renovación (por
ejemplo la recarga de servicios y la copia de claves con diferentes
permisos).

   Certbot se ejecuta dos veces al día, en un minuto aleatorio dentro de
la hora.  No hará nada hasta que sus certificados estén pendientes de
renovación o sean revocados, pero su ejecución regular propociona a su
servicio la oportunidad de permanecer en línea en caso de que se
produzca una revocación iniciada por Let’s Encrypt por alguna razón.

   Mediante el uso de este servicio, usted acepta el acuerdo de
suscripción ACME, que se puede encontrar aquí:
<https://acme-v01.api.letsencrypt.org/directory>.

 -- Variable Scheme: certbot-service-type
     Un tipo de servicio para el cliente de Let’s Encrypt ‘certbot’.  Su
     valor debe ser un registro ‘certbot-configuration’ como en este
     ejemplo:

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

          (service certbot-service-type
                   (certbot-configuration
                    (email "foo@example.net")
                    (certificates
                     (list
                      (certificate-configuration
                       (domains '("example.net" "www.example.net"))
                       (deploy-hook %procedimiento-de-despliegue-nginx))
                      (certificate-configuration
                       (domains '("bar.example.net")))))))

     Véase a continuación los detalles de ‘certbot-configuration’.

 -- Tipo de datos: certbot-configuration
     Tipo de datos que representa la configuración del servicio
     ‘certbot’.  Este tipo tiene los siguientes parámetros:

     ‘package’ (predeterminado: ‘certbot’)
          El paquete certbot usado.

     ‘webroot’ (predeterminado: ‘/var/www’)
          Directorio desde el que se proporcionan los archivos de
          desafío/respuesta de Let’s Encrypt.

     ‘certificates’ (predeterminados: ‘()’)
          Una lista de configuraciones ‘certificates-configuration’ para
          los cuales se generan certificados y se solicitan firmas.
          Cada certificado tiene un nombre (‘name’) y varios dominios
          (‘domains’).

     ‘email’ (predeterminado: ‘#f’)
          Dirección de correo electrónico opcional usada para el
          registro y el contacto de recuperación.  Se recomienda que
          proporcione un valor ya que le permite recibir importantes
          notificaciones acerca de la cuenta y los certificados
          emitidos.

     ‘server’ (predeterminada: ‘#f’)
          URL opcional del servidor ACME. Esta configuración cambia el
          valor predeterminado de certbot, que es el servidor de Let’s
          Encrypt.

     ‘rsa-key-size’ (predeterminado: ‘2048’)
          Tamaño de la clave RSA.

     ‘default-location’ (predeterminada: véase a continuación)
          La configuración ‘nginx-location-configuration’
          predeterminada.  Debido a que ‘certbot’ necesita proporcionar
          desafíos y respuestas, necesita ser capaz de ejecutar un
          servidor web.  Se lleva a cabo extendiendo el servicio web
          ‘nginx’ con una configuración ‘nginx-server-configuration’ que
          escucha en los dominios DOMAINS en el puerto 80, y que
          contiene una configuración ‘nginx-location-configuration’ para
          el subespacio de rutas URI ‘/.well-known/’ usado por Let’s
          Encrypt.  *Note Servicios Web::, para más información sobre
          estos tipos de datos de configuración de nginx.

          Las peticiones a otras rutas URL se compararán contra la
          dirección predeterminada ‘default-location’, la cual, en caso
          de estar presente, se añade a todas las configuraciones
          ‘nginx-server-configuration’.

          De manera predeterminada, la dirección predeterminada
          ‘default-location’ emitirá una redirección
          ‘http://DOMINIO/...’ a ‘https://DOMINIO/...’, lo que le
          permite definir qué proporcionará en su sitio web a través de
          ‘https’.

          Proporcione ‘#f’ para no emitir una dirección predeterminada.

 -- Tipo de datos: certificate-configuration
     Tipo de datos que representa la configuración de un certificado.
     Este tipo tiene los siguientes parámetros:

     ‘name’ (predeterminado: vea a continuación)
          Este nombre se usa por Certbot para su mantenimiento interno y
          en las rutas de archivos; no afecta al contenido del
          certificado en sí mismo.  Para ver los nombres de
          certificados, ejecute ‘certbot certificates’.

          Su valor predeterminado es el primer dominio proporcionado.

     ‘domains’ (predeterminado: ‘()’)
          El primer dominio proporcionado será el sujeto del nombre
          común (CN) del certificado, y todos los dominios serán nombres
          alternativos (Subject Alternative Names) en el certificado.

     ‘challenge’ (predeterminado: ‘#f’)
          El tipo de desafío que debe ejecutar certbot.  Si se
          especifica ‘#f’, el valor por omisión es desafío HTTP. Si se
          especifica un valor, el valor por omisión es el módulo manual
          (véase ‘authentication-hook’, ‘cleanup-hook’ y la
          documentación en
          <https://certbot.eff.org/docs/using.html#hooks>), y concede
          permiso a Let’s Encrypt para registrar la IP pública de la
          máquina que realiza la petición.

     ‘csr’ (default: ‘#f’)
          File name of Certificate Signing Request (CSR) in DER or PEM
          format.  If ‘#f’ is specified, this argument will not be
          passed to certbot.  If a value is specified, certbot will use
          it to obtain a certificate, instead of using a self-generated
          CSR. The domain-name(s) mentioned in ‘domains’, must be
          consistent with the domain-name(s) mentioned in CSR file.

     ‘authentication-hook’ (predeterminado: ‘#t’)
          Orden ejecutada en un shell una vez por cada desafío de
          certificado que debe contestarse.  Durante su ejecución, la
          variable del shell ‘$CERTBOT_DOMAIN’ contiene el dominio que
          se está validando, ‘$CERTBOT_VALIDATION’ contiene la cadena de
          validación y ‘$CERTBOT_TOKEN’ contiene el nombre de archivo
          del recurso solicitado cuando se realiza el desafío HTTP-01.

     ‘cleanup-hook’ (predeterminado: ‘#f’)
          Orden ejecutada en un shell una vez por cada desafío de
          certificado que haya sido contestado por ‘auth-hook’.  Durante
          su ejecución, las variables del shell disponibles en el script
          ‘auth-hook’ todavía están disponibles, y adicionalmente
          ‘$CERTBOT_AUTH_OUTPUT’ contendrá la salida estándar que
          produjo ‘auth-hook’.

     ‘deploy-hook’ (predeterminado: ‘#f’)
          Orden ejecutada en un shell una vez por cada certificado
          emitido satisfactoriamente.  Durante su ejecución, la variable
          del shell ‘$RENEWED_LINEAGE’ apuntará al subdirectorio live de
          configuración (por ejemplo,
          ‘"/etc/letsencrypt/live/example.com"’) que contiene las nuevas
          claves y certificados; la variable del shell
          ‘$RENEWED_DOMAINS’ contendrá una lista delimitada por espacios
          de certificados de dominio renovados (por ejemplo,
          ‘"example.com www.example.com"’).

   Para cada configuración ‘certificate-configuration’, el certificado
se almacena ‘/etc/letsencrypt/live/NAME/fullchain.pem’ y la clave se
almacena en ‘/etc/letsencrypt/live/NAME/privkey.pem’.


File: guix.es.info,  Node: Servicios DNS,  Next: VNC Services,  Prev: Servicios de certificados,  Up: Servicios

12.9.21 Servicios DNS
---------------------

El módulo ‘(gnu services dns)’ proporciona servicios relacionados con el
“sistema de nombres de dominio” (DNS). Proporciona un servicio de
servidor para el alojamiento de un servidor _autorizado_ DNS para
múltiples zonas, esclavo o maestro.  Este servicio usa Knot DNS
(https://www.knot-dns.cz/).  Y también un servidor de caché y reenvío de
DNS para la red local, que usa dnsmasq
(http://www.thekelleys.org.uk/dnsmasq/doc.html).

Servicio Knot
.............

Esta es una configuración de ejemplo de un servidor de autoridad para
dos zonas, una maestra y otra esclava:

     (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
     Este es el tipo de datos para el servidor DNS Knot.

     Knot DNS es un servidor de autoridad de DNS, lo que significa que
     puede servir múltiples zonas, es decir, nombres de dominio que
     compraría a una autoridad de registro de nombres.  Este servidor no
     es un resolvedor, lo que significa que sólo puede resolver nombres
     para los que tiene autoridad.  Este servidor puede configurarse
     para servir zonas como servidor maestro o como servidor esclavo con
     una granularidad al nivel de zona.  Las zonas esclavas obtendrán
     sus datos de los servidores maestros, y las proporcionarán como un
     servidor de autoridad.  Desde el punto de vista de un resolvedor,
     no hay diferencia entre servidor maestro y esclavo.

     Los siguientes tipos de datos se usan para configurar el servidor
     DNS Knot:

 -- Tipo de datos: knot-key-configuration
     Tipo de datos que representa una clave.  Este tipo tiene los
     siguientes parámetros:

     ‘id’ (predeterminado: ‘""’)
          An identifier for other configuration fields to refer to this
          key.  IDs must be unique and must not be empty.

     ‘algorithm’ (predeterminado: ‘#f’)
          El algoritmo usado.  Debe seleccionarse entre ‘#f’,
          ‘'hmac-md5’, ‘'hmac-sha1’, ‘'hmac-sha224’, ‘'hmac-sha256’,
          ‘'hmac-sha384’ y ‘'hmac-sha512’.

     ‘secret’ (predeterminado: ‘""’)
          La clave secreta en sí.

 -- Tipo de datos: knot-acl-configuration
     Tipo de datos que representa una configuración de lista de control
     de acceso (ACL). Este tipo tiene los siguientes parámetros:

     ‘id’ (predeterminado: ‘""’)
          An identifier for other configuration fields to refer to this
          key.  IDs must be unique and must not be empty.

     ‘address’ (predeterminada: ‘'()’)
          Lista ordenada de direcciones IP, subredes o rangos de red
          representadas como cadenas.  La búsqueda debe corresponder con
          alguna.  El valor vacío significa que la comprobación de
          correspondencia de la dirección no es necesaria.

     ‘key’ (predeterminada: ‘'()’)
          Lista ordenada de referencias a claves representadas como
          cadenas.  La cadena debe corresponder con un ID de clave
          definido en ‘knot-key-configuration’.  Ninguna clave significa
          que la comprobación de claves no es necesaria para este
          control de acceso (ACL).

     ‘action’ (predeterminada: ‘'()’)
          An ordered list of actions that are permitted or forbidden by
          this ACL.  Possible values are lists of zero or more elements
          from ‘'transfer’, ‘'notify’ and ‘'update’.

     ‘deny?’ (predeterminado: ‘#f’)
          Cuando es verdadero, este ACL define restricciones.  Las
          acciones enumeradas no se permiten.  Cuando es falso, las
          acciones enumeradas se permiten.

 -- Tipo de datos: zone-entry
     Tipo de datos que representa una entrada de registro en un archivo
     de zona.  Este tipo tiene los siguientes parámetros:

     ‘name’ (predeterminado: ‘"@"’)
          El nombre del registro.  ‘"@"’ hace referencia al origen de la
          zona.  Los nombres son relativos al origen de la zona.  Por
          ejemplo, en la zona ‘example.org’, ‘"ns.example.org"’ en
          realidad hace referencia a ‘ns.example.org.example.org’.  Los
          nombres que terminan en un punto se consideran absolutos, lo
          que significa que ‘"ns.example.org."’ hace referencia a
          ‘ns.example.org’.

     ‘ttl’ (predeterminado: ‘""’)
          El tiempo de vida (TTL) de este registro.  Si no se
          proporciona, se usa el TTL predeterminado.

     ‘class’ (predeterminada: ‘"IN"’)
          La clase del registro.  Actualmente Knot implementa únicamente
          ‘"IN"’ y parcialmente ‘"CH"’.

     ‘type’ (predeterminado: ‘"A"’)
          El tipo del registro.  Los tipos comunes incluyen A (dirección
          IPv4), AAAA (dirección IPv6), NS (servidor de nombres(1)) y MX
          (pasarela de correo(2)).  Otros muchos tipos distintos se
          encuentran definidos.

     ‘data’ (predeterminados: ‘""’)
          Los datos que contiene el registro.  Por ejemplo, una
          dirección IP asociada con un registro A, o un nombre de
          dominio asociado con un registro NS. Recuerde que los nombres
          de dominio son relativos al origen a menos que terminen con
          punto.

 -- Tipo de datos: zone-file
     Tipo de datos que representa el contenido de un archivo de zona.
     Este tipo tiene los siguientes parámetros:

     ‘entries’ (predeterminadas: ‘'()’)
          La lista de entradas.  El registro SOA se genera
          automáticamente, por lo que no necesita ponerlo en la lista de
          entradas.  Esta lista probablemente debería contener una
          entrada apuntando a su servidor DNS de autoridad.  En vez de
          usar una lista de entradas directamente, puede usar
          ‘define-zone-entries’ para definir un objeto que contenga la
          lista de entradas más fácilmente, que posteriormente puede
          proporcionar en el campo ‘entries’ del archivo ‘zone-file’.

     ‘origin’ (predeterminado: ‘""’)
          El nombre de su zona.  Este parámetro no puede estar vacío.

     ‘ns’ (predeterminado: ‘"ns"’)
          El dominio de su servidor DNS primario de autoridad.  El
          nombre es relativo al origen, a menos que termine en punto.
          Es obligatorio que este servidor DNS primario corresponda con
          un registro NS en la zona y que esté asociado a una dirección
          IP en la lista de entradas.

     ‘mail’ (predeterminado: ‘"hostmaster"’)
          Dirección de correo a través de la cual la gente puede
          contactar con usted, como propietaria de la zona.  Se traduce
          a ‘<mail>@<origin>’.

     ‘serial’ (predeterminado: ‘1’)
          Número serie de la zona.  Como se usa para tener constancia de
          los cambios tanto en servidores esclavos como en resolvedores,
          es obligatorio que _nunca_ decremente.  Incremente su valor
          siempre que haga cambios en su zona.

     ‘refresh’ (predeterminado: ‘(* 2 24 3600)’)
          La frecuencia con la que los servidores esclavos realizarán
          una transferencia de zona.  Este valor es un número de
          segundos.  Puede calcularse con multiplicaciones o con
          ‘(string->duration)’.

     ‘retry’ (predeterminado: ‘(* 15 60)’)
          El periodo tras el cual un servidor esclavo reintentará el
          contacto con su maestro cuando falle al intentarlo la primera
          vez.

     ‘expiry’ (predeterminado: ‘(* 14 24 3600)’)
          Tiempo de vida (TTL) predeterminado de los registros.  Los
          registros existentes se consideran correctos durante al menos
          este periodo de tiempo.  Tras este periodo, los resolvedores
          invalidarán su caché y comprobarán de nuevo que todavía
          exista.

     ‘nx’ (predeterminado: ‘3600’)
          Default TTL of inexistent records.  This delay is usually
          short because you want your new domains to reach everyone
          quickly.

 -- Tipo de datos: knot-remote-configuration
     Tipo de datos que representa una configuración remota.  Este tipo
     tiene los siguientes parámetros:

     ‘id’ (predeterminado: ‘""’)
          An identifier for other configuration fields to refer to this
          remote.  IDs must be unique and must not be empty.

     ‘address’ (predeterminada: ‘'()’)
          Una lista ordenada de direcciones IP de destino.  Las
          direcciones se prueban en secuencia.  Opcionalmente se puede
          proporcionar el puerto con el separador @.  Por ejemplo:
          ‘(list "1.2.3.4" "2.3.4.5@53")’.  El puerto predeterminado es
          el 53.

     ‘via’ (predeterminada: ‘'()’)
          An ordered list of source IP addresses.  An empty list will
          have Knot choose an appropriate source IP.  An optional port
          can be given with the @ separator.  The default is to choose
          at random.

     ‘key’ (predeterminada: ‘#f’)
          Referencia a una clave, esto es una cadena que contiene el
          identificador de una clave definida en el campo
          ‘knot-key-configuration’.

 -- Tipo de datos: knot-keystore-configuration
     Tipo de datos que representa un almacén de claves para alojar
     claves de dnssec.  Este tipo tiene los siguientes parámetros:

     ‘id’ (predeterminado: ‘""’)
          El identificador del almacén de claves.  No debe estar vacío.

     ‘backend’ (predeterminado: ‘'pem’)
          El motor en el que se almacenan las claves.  Puede ser ‘'pem’
          o ‘'pkcs11’.

     ‘config’ (predeterminada: ‘"/var/lib/knot/keys/keys"’)
          La cadena de configuración del motor.  Un ejemplo para PKCS#11
          es: ‘"pkcs11:token=knot;pin-value=1234
          /gnu/store/.../lib/pkcs11/libsofthsm2.so"’.  La cadena
          representa una ruta en el sistema de archivos para el motor
          pem.

 -- Tipo de datos: knot-policy-configuration
     Tipo de datos que representa una política de dnssec.  El DNS Knot
     es capaz de firmar automáticamente sus zonas.  Puede generar y
     gestionar sus claves de manera automática o usar las claves que
     usted genere.

     Dnssec se implementa habitualmente usando dos claves: una clave
     para firma de claves (KSK) que se usa para firmar la segunda, y una
     clave para firma de zona (ZSK) que se usa para firmar la zona.
     Para establecer la confianza, la KSK necesita estar presente en la
     zona padre (habitualmente un dominio de nivel superior).  Si su
     entidad de registro permite dnssec, debe mandarle el hash de su KSK
     de manera que puedan añadir un registro DS en su zona.  No es
     automático y debe realizarse cada vez que cambie su KSK.

     La política también define el tiempo de vida de las claves.
     Habitualmente, la ZSK puede cambiarse fácilmente y usa funciones
     criptográficas más débiles (usa parámetros de menor magnitud) para
     firmar los registros rápidamente, ya que cambian habitualmente.  No
     obstante, la KSK requiere interacción manual con la entidad de
     registro, por lo que se cambia menos habitualmente y usa parámetros
     más fuertes debido a que únicamente firma un registro.

     Este tipo tiene los siguientes parámetros:

     ‘id’ (predeterminado: ‘""’)
          El identificador de la política.  No debe estar vacío.

     ‘keystore’ (predeterminado: ‘"default"’)
          Referencia a un almacén de claves, es decir una cadena que
          contiene el identificador de un almacén de claves definido en
          un campo de ‘knot-keystore-configuration’.  El identificador
          predeterminado ‘"default"’ implica el uso del almacén de
          claves predeterminado (una base de datos kasp que se configura
          para este servicio).

     ‘manual?’ (predeterminado: ‘#f’)
          Si la gestión de claves es manual o automática.

     ‘single-type-signing?’ (predeterminado: ‘#f’)
          Cuando sea ‘#t’, usa el esquema de firma de tipo único
          (Single-Type Signing Scheme).

     ‘algorithm’ (predeterminado: ‘"ecdsap256sha256"’)
          Algoritmo para las claves de firma y las firmas emitidas.

     ‘ksk-size’ (predeterminado: ‘256’)
          The length of the KSK.  Note that this value is correct for
          the default algorithm, but would be unsecure for other
          algorithms.

     ‘zsk-size’ (predeterminado: ‘256’)
          The length of the ZSK.  Note that this value is correct for
          the default algorithm, but would be unsecure for other
          algorithms.

     ‘dnskey-ttl’ (predeterminado: ‘'default’)
          El valor del tiempo de vida (TTL) de los registros DNSKEY
          añadidos al “apex” de la zona.  El valor especial ‘'default’
          significa el mismo valor que el TTL del SOA de la zona.

     ‘zsk-lifetime’ (predeterminado: ‘(* 30 24 3600)’)
          El periodo entre la publicación de la ZSK y el inicio del
          siguiente ciclo de renovación.

     ‘propagation-delay’ (predeterminado: ‘(* 24 3600)’)
          Retraso adicional añadido por cada paso del ciclo de
          renovación de clave.  Este valor debe ser suficientemente alto
          para cubrir la propagación de datos del servidor maestro a
          todos los esclavos.

     ‘rrsig-lifetime’ (predeterminado: ‘(* 14 24 3600)’)
          Periodo de validez para las nuevas firmas emitidas.

     ‘rrsig-refresh’ (predeterminado: ‘(* 7 24 3600)’)
          Periodo de antelación con el que se realiza el refresco de la
          firma antes de una expiración de la misma.

     ‘nsec3?’ (predeterminado: ‘#f’)
          Si es ‘#t’, se usa NSEC3 en vez de NSEC.

     ‘nsec3-iterations’ (predeterminado: ‘5’)
          Número de ejecuciones adicionales de la operación de hash.

     ‘nsec3-salt-length’ (predeterminado: ‘8’)
          La longitud del campo “salt” en octetos, que se añade al
          nombre de la propietaria original antes de ejecutar la
          operación de hash.

     ‘nsec3-salt-lifetime’ (predeterminado: ‘(* 30 24 3600)’)
          El periodo de validez de los campos “salt” que se generen.

 -- Tipo de datos: knot-zone-configuration
     Tipo de datos que representa una zona ofrecida por Knot.  Este tipo
     tiene los siguientes parámetros:

     ‘domain’ (predeterminado: ‘""’)
          El dominio ofrecido con esta configuración.  No debe estar
          vacío.

     ‘file’ (predeterminado: ‘""’)
          El archivo donde se almacena esta zona.  Este parámetro se
          ignora para zonas maestras.  Vacío significa la ruta
          predeterminada que depende del nombre del dominio.

     ‘zone’ (predeterminado: ‘(zone-file)’)
          El contenido del archivo de zona.  Este parámetro se ignora
          para zonas esclavas.  Debe contener un registro de archivo de
          zona.

     ‘master’ (predeterminado: ‘'()’)
          Lista de maestros remotos.  Cuando está vacía, esta zona es
          maestra.  Cuando tiene contenido, esta zona es esclava.  Es
          una lista de identificadores remotos.

     ‘ddns-master’ (predeterminado: ‘#f’)
          Maestro principal.  Cuando está vacío, apunta de manera
          predeterminada al primer maestro en la lista de maestros.

     ‘notify’ (predeterminado: ‘'()’)
          Una lista de identificadores remotos de esclavos.

     ‘acl’ (predeterminado: ‘'()’)
          Lista de identificadores acl.

     ‘semantic-checks?’ (predeterminado: ‘#f’)
          Cuando es verdadero, añade más comprobaciones semánticas a la
          zona.

     ‘zonefile-sync’ (predeterminado: ‘0’)
          El retraso entre una modificación en memoria y en disco.  0
          significa sincronización inmediata.

     ‘zonefile-load’ (predeterminado: ‘#f’)
          La forma en la que los contenidos del archivo de zona se
          aplican durante la carga de la zona.  Los valores posibles
          son:

             • ‘#f’ para obtener el valor predeterminado de Knot,
             • ‘'none’ para no usar el archivo de zona en absoluto,
             • ‘'difference’ para calcular la diferencia entre los
               contenidos disponibles actualmente y los contenidos de la
               zona y los aplica a los contenidos actuales de la zona
               actual,
             • ‘'difference-no-serial’ es igual que ‘'difference’, pero
               ignora el código serie SOA en el archivo de zona,
               mientras que el servidor se hace cargo de él de manera
               automática.
             • ‘'whole’ para cargar los contenidos de la zona del
               archivo de zona.

     ‘journal-content’ (predeterminado: ‘'()’)
          La forma en la que se usa el diario para almacenar la zona y
          sus cambios.  Los posibles valores son ‘'none’ para no usarlo
          en absoluto, ‘'changes’ para almacenar los cambios y ‘'all’
          para almacenar los contenidos.  ‘#f’ proporciona un valor a
          esta opción, por lo que se usa el valor predeterminado de
          Knot.

     ‘max-journal-usage’ (predeterminado: ‘#f’)
          Tamaño máximo del diario en disco.  ‘#f’ no proporciona un
          valor a esta opción, por lo que se usa el valor predeterminado
          de Knot.

     ‘max-journal-depth’ (predeterminado: ‘#f’)
          Tamaño máximo de la historia.  ‘#f’ proporciona un valor a
          esta opción, por lo que se usa el valor predeterminado de
          Knot.

     ‘max-zone-size’ (predeterminado: ‘#f’)
          Tamaño máximo del archivo de zona.  Este límite se usa para
          transferencias entrantes y actualizaciones.  ‘#f’ no
          proporciona un valor a esta opción, por lo que se usa el valor
          predeterminado de Knot.

     ‘dnssec-policy’ (predeterminado: ‘#f’)
          Una referencia a un registro de ‘knot-policy-configuration’, o
          el nombre especial ‘"default"’.  Si el valor es ‘#f’, no se
          realiza firma dnssec en esta zona.

     ‘serial-policy’ (predeterminado: ‘'increment’)
          Una política entre ‘'increment’ y ‘'unixtime’.

 -- Tipo de datos: knot-configuration
     Tipo de datos que representa la configuración Knot.  Este tipo
     tiene los siguientes parámetros:

     ‘knot’ (predeterminado: ‘knot’)
          El paquete Knot.

     ‘run-directory’ (predeterminado: ‘"/var/run/knot"’)
          El directorio de ejecución.  Este directorio se usará para los
          archivos de PID y de sockets.

     ‘includes’ (predeterminada: ‘'()’)
          Una lista de cadenas u objetos “tipo-archivo” que denota otros
          archivos que deben incluirse al inicio del archivo de
          configuración.

          Puede usarse para gestionar secretos en un canal separado.
          Por ejemplo, las claves secretas pueden almacenarse en un
          archivo fuera de banda no gestionado por Guix, y por tanto no
          visible en ‘/gnu/store’—por ejemplo, puede almacenar su
          configuración de clave secreta en ‘/etc/knot/secrets.conf’ e
          incluir este archivo en la lista ‘includes’.

          Se puede generar una clave secreta tsig (para nsupdate y
          transferencias de zona) con la orden keymgr del paquete knot.
          Tenga en cuenta que el paquete no se instala automáticamente
          con el servicio.  El ejemplo siguiente muestra como generar
          una clave tsig nueva:

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

          Tenga también en cuenta que la clave generada se llamará
          MISECRETO, de modo que ese nombre es el que debe usarse en el
          campo KEY del registro ‘knot-acl-configuration’ y en otros
          lugares que hagan referencia a esa clave.

          También puede usarse para añadir configuración no implementada
          por esta interfaz.

     ‘listen-v4’ (predeterminada: ‘"0.0.0.0"’)
          La dirección IP en la que escuchar.

     ‘listen-v6’ (predeterminada: ‘"::"’)
          La dirección IP en la que escuchar.

     ‘listen-port’ (predeterminado: ‘53’)
          El puerto en el que escuchar.

     ‘keys’ (predeterminada: ‘'()’)
          La lista de configuraciones knot-key-configuration usadas por
          esta configuración.

     ‘acls’ (predeterminado: ‘'()’)
          La lista de configuraciones knot-acl-configuration usadas por
          esta configuración.

     ‘remotes’ (predeterminada: ‘'()’)
          La lista de configuraciones knot-remote-configuration usadas
          por esta configuración.

     ‘zones’ (predeterminada: ‘'()’)
          La lista de configuraciones knot-zone-configuration usadas por
          esta configuración.

Servicio de resolución de Knot
..............................

 -- Variable Scheme: knot-resolver-service-type
     El tipo del servicio de resolución de knot, cuyo valor debe ser un
     objeto ‘knot-resolver-configuration’ como en este ejemplo:

          (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
          "))))

     Para más información, véase su manual
     (https://knot-resolver.readthedocs.org/en/stable/daemon.html#configuration).

 -- Tipo de datos: knot-resolver-configuration
     Tipo de datos que representa la configuración de knot-resolver.

     ‘package’ (predeterminado: KNOT-RESOLVER)
          El objeto paquete de la resolución de DNS de knot.

     ‘kresd-config-file’ (predeterminado: %kresd.conf)
          Objeto “tipo-archivo” con el archivo de configuración de kresd
          usado, de manera predeterminada escucha en ‘127.0.0.1’ y
          ‘::1’.

     ‘garbage-collection-interval’ (predeterminado: 1000)
          Número de milisegundos tras los que ‘kres-cache-gc’ realiza
          una limpieza periódica de la caché.

Servicio Dnsmasq
................

 -- Variable Scheme: dnsmasq-service-type
     Es el tipo del servicio dnsmasq, cuyo valor debe ser un objeto
     ‘dnsmasq-configuration’ como en este ejemplo:

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

 -- Tipo de datos: dnsmasq-configuration
     Tipo de datos que representa la configuración de dnsmasq.

     ‘package’ (predeterminado: DNSMASQ)
          El objeto paquete del servidor dnsmasq.

     ‘no-hosts?’ (predeterminado: ‘#f’)
          Cuando es verdadero, no lee los nombres de máquina en
          /etc/hosts.

     ‘port’ (predeterminado: ‘53’)
          El puerto sobre el que se escucha.  Proporcionar el valor cero
          deshabilita las respuestas DNS completamente, dejando las
          funciones DHCP y/o TFTP únicamente.

     ‘local-service?’ (predeterminado: ‘#t’)
          Acepta peticiones DNS únicamente de máquinas cuya dirección
          esté en una subred local, es decir, subred para la que existe
          una interfaz en el servidor.

     ‘listen-addresses’ (predeterminadas: ‘'()’)
          Escucha en las direcciones IP proporcionadas.

     ‘resolv-file’ (predeterminado: ‘"/etc/resolv.conf"’)
          Archivo en el que se obtienen las direcciones IP de los
          servidores de nombres desde los que se obtienen datos.

     ‘no-resolv?’ (predeterminado: ‘#f’)
          Cuando tiene valor verdadero, no se lee RESOLV-FILE.

     ‘forward-private-reverse-lookup?’ (default: ‘#t’)
          When false, all reverse lookups for private IP ranges are
          answered with "no such domain" rather than being forwarded
          upstream.

     ‘query-servers-in-order?’ (default: ‘#f’)
          When true, dnsmasq queries the servers in the same order as
          they appear in SERVERS.

     ‘servers’ (predeterminados: ‘'()’)
          Especifica directamente la dirección IP de los servidores
          proveedores.

     ‘addresses’ (predeterminado: ‘'()’)
          Cada entrada especifica una dirección IP devuelta por
          cualquiera de las máquinas en los dominios proporcionados.
          Las búsquedas dentro de los dominios nunca se redirigen y
          siempre se devuelve la dirección IP especificada.

          Es útil para redirigir máquinas localmente, como en este
          ejemplo:

               (service dnsmasq-service-type
                        (dnsmasq-configuration
                          (addresses
                            '(; Redirecciona a un servidor web local.
                              "/example.org/127.0.0.1"
                              ; Redirecciona un dominio a una IP específica.
                              "/subdomain.example.org/192.168.1.42"))))

          Tenga en cuenta que las reglas en el archivo ‘/etc/hosts’
          tienen precedencia sobre esto.

     ‘cache-size’ (predeterminado: ‘150’)
          Establece el tamaño de la caché de dnsmasq.  Proporcionar el
          valor cero desactiva el almacenamiento en caché.

     ‘negative-cache?’ (predeterminado: ‘#t’)
          Cuando es falso, desactiva la caché negativa.

     ‘cpe-id’ (default: ‘#f’)
          If set, add a CPE (Customer-Premises Equipment) identifier to
          DNS queries which are forwarded upstream.

     ‘tftp-enable?’ (predeterminado: ‘#f’)
          Determina si se activa el servidor TFTP incluido.

     ‘tftp-no-fail?’ (predeterminado: ‘#f’)
          Si es verdadero, dnsmasq no falla si el servidor TFTP no se ha
          podido arrancar.

     ‘tftp-single-port?’ (predeterminado: ‘#f’)
          Determina si se un único puerto para TFTP.

     ‘tftp-secure?’ (predeterminado: ‘#f’)
          Si es verdadero, únicamente los archivos propiedad de la
          cuenta que ejecuta el proceso dnsmasq están accesibles.

          Si se ejecuta dnsmasq como “root”, se aplican diferentes
          reglas: ‘tftp-secure?’ no tiene efecto, únicamente los
          archivos que tengan permiso de lectura global el mundo serán
          accesibles.

     ‘tftp-max’ (predeterminado: ‘#f’)
          Cuando se proporciona un valor indica el número máximo de
          conexiones simultáneas permitidas.

     ‘tftp-mtu’ (predeterminado: ‘#f’)
          Si se proporciona un valor, establece el tamaño de la unidad
          de transmisión de mensajes (MTU) para los paquetes TFTP a
          dicho valor.

     ‘tftp-no-blocksize?’ (predeterminado: ‘#f’)
          Si es verdadero, impide al servidor TFTP la negociación del
          tamaño del bloque con un cliente.

     ‘tftp-lowercase?’ (predeterminado: ‘#f’)
          Determina si se convierten a minúsculas todos los nombres de
          archivo en peticiones TFTP.

     ‘tftp-port-range’ (predeterminado: ‘#f’)
          Si se proporciona un valor, este establece el rango
          (‘"<inicio>,<fin>"’) de puertos dinámicos (uno por cliente)
          usados.

     ‘tftp-root’ (predeterminado: ‘/var/empty,lo’)
          Look for files to transfer using TFTP relative to the given
          directory.  When this is set, TFTP paths which include ‘..’
          are rejected, to stop clients getting outside the specified
          root.  Absolute paths (starting with ‘/’) are allowed, but
          they must be within the TFTP-root.  If the optional interface
          argument is given, the directory is only used for TFTP
          requests via that interface.

     ‘tftp-unique-root’ (predeterminado: ‘#f’)
          Si se proporciona un valor, añade la dirección IP o hardware
          del cliente TFTP como un componente de la ruta tras el final
          de ‘tftp-root’.  Es válido únicamente si se proporciona una
          raíz para TFTP y el directorio existe.  El valor
          predeterminado añade la dirección IP (en el formato estándar
          de cuatro cifras separadas por puntos).

          For instance, if ‘--tftp-root’ is ‘/tftp’ and client ‘1.2.3.4’
          requests file ‘myfile’ then the effective path will be
          ‘/tftp/1.2.3.4/myfile’ if ‘/tftp/1.2.3.4’ exists or
          ‘/tftp/myfile’ otherwise.  When ‘=mac’ is specified it will
          append the MAC address instead, using lowercase zero padded
          digits separated by dashes, e.g.: ‘01-02-03-04-aa-bb’.  Note
          that resolving MAC addresses is only possible if the client is
          in the local network or obtained a DHCP lease from dnsmasq.

Servicio ddclient
.................

El servicio de ddclient descrito a continuación ejecuta el daemon
ddclient, que se encarga de actualizar automáticamente entradas DNS para
proveedores de servicio como Dyn (https://dyn.com/dns/).

   El ejemplo siguiente muestra como instanciar el servicio con su
configuración predeterminada.

     (service ddclient-service-type)

   Fíjese que ddclient necesita acceder a las credenciales que se
almacenan en un “archivo de secretos”, de manera predeterminada
‘/etc/ddclient/secrets’ (véase ‘secret-file’ a continuación).  Se espera
que genere este archivo manualmente, “fuera de banda” (_puede_ incluir
este archivo en la configuración del servicio, por ejemplo mediante el
uso de ‘plain-file’, pero sera legible por todo el mundo a través de
‘/gnu/store’).  Véase los ejemplos en el directorio ‘share/ddclient’ del
paquete ‘ddclient’.

   Los campos disponibles de ‘ddclient-configuration’ son:

 -- parámetro de ‘ddclient-configuration’: package ddclient
     El paquete ddclient.

 -- parámetro de ‘ddclient-configuration’: integer daemon
     Periodo tras el cual ddclient reintentará la comprobación de IP y
     de nombre de dominio.

     El valor predeterminado es ‘300’.

 -- parámetro de ‘ddclient-configuration’: boolean syslog
     Usa syslog para la salida.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘ddclient-configuration’: string mail
     Envía por correo a la usuaria.

     El valor predeterminado es ‘"root"’.

 -- parámetro de ‘ddclient-configuration’: string mail-failure
     Envía por correo las actualizaciones fallidas a la usuaria.

     El valor predeterminado es ‘"root"’.

 -- parámetro de ‘ddclient-configuration’: string pid
     El archivo de PID de ddclient.

     El valor predeterminado es ‘"/var/run/ddclient/ddclient.pid"’.

 -- parámetro de ‘ddclient-configuration’: boolean ssl
     Permite el uso de SSL.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘ddclient-configuration’: string user
     Especifica el nombre de usuaria o ID usado para la ejecución del
     programa ddclient.

     El valor predeterminado es ‘"ddclient"’.

 -- parámetro de ‘ddclient-configuration’: string group
     Grupo de la usuaria que ejecutará el servidor ddclient.

     El valor predeterminado es ‘"ddclient"’.

 -- parámetro de ‘ddclient-configuration’: string secret-file
     Archivo secreto que se añadirá al final del archivo
     ‘ddclient.conf’.  Este archivo contiene las credenciales usadas por
     ddclient.  Se espera que usted lo cree manualmente.

     El valor predeterminado es ‘"/etc/ddclient/secrets.conf"’.

 -- parámetro de ‘ddclient-configuration’: lista extra-options
     Opciones adicionales a agregar al final del archivo
     ‘ddclient.conf’.

     El valor predeterminado es ‘()’.

   ---------- Footnotes ----------

   (1) Name Server en inglés.

   (2) Mail eXchange en inglés


File: guix.es.info,  Node: VNC Services,  Next: Servicios VPN,  Prev: Servicios DNS,  Up: Servicios

12.9.22 VNC Services
--------------------

The ‘(gnu services vnc)’ module provides services related to “Virtual
Network Computing” (VNC), which makes it possible to locally use
graphical Xorg applications running on a remote machine.  Combined with
a graphical manager that supports the “X Display Manager Control
Protocol”, such as GDM (*note gdm::) or LightDM (*note lightdm::), it is
possible to remote an entire desktop for a multi-user environment.

Xvnc
....

Xvnc is a VNC server that spawns its own X window server; which means it
can run on headless servers.  The Xvnc implementations provided by the
‘tigervnc-server’ and ‘turbovnc’ aim to be fast and efficient.

 -- Variable: Scheme Variable xvnc-service-type

     The ‘xvnc-server-type’ service can be configured via the
     ‘xvnc-configuration’ record, documented below.  A second virtual
     display could be made available on a remote machine via the
     following configuration:

     (service xvnc-service-type
              (xvnc-configuration (display-number 10)))

   As a demonstration, the ‘xclock’ command could then be started on the
remote machine on display number 10, and it could be displayed locally
via the ‘vncviewer’ command:
     # Start xclock on the remote machine.
     ssh -L5910:localhost:5910 -- guix shell xclock -- env DISPLAY=:10 xclock
     # Access it via VNC.
     guix shell tigervnc-client -- vncviewer localhost:5910

   The following configuration combines XDMCP and Inetd to allow
multiple users to concurrently use the remote system, login in
graphically via the GDM display manager:

     (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)))))))

   A remote user could then connect to it by using the ‘vncviewer’
command or a compatible VNC client and start a desktop session of their
choosing:
     vncviewer remote-host:5905

     Aviso: Unless your machine is in a controlled environment, for
     security reasons, the ‘localhost?’ configuration of the
     ‘xvnc-configuration’ record should be left to its default ‘#t’
     value and exposed via a secure means such as an SSH port forward.
     The XDMCP port, UDP 177 should also be blocked from the outside by
     a firewall, as it is not a secure protocol and can expose login
     credentials in clear.

 -- Data Type: xvnc-configuration
     Available ‘xvnc-configuration’ fields are:

     ‘xvnc’ (default: ‘tigervnc-server’) (type: file-like)
          The package that provides the Xvnc binary.

     ‘display-number’ (default: ‘0’) (type: number)
          The display number used by Xvnc.  You should set this to a
          number not already used a Xorg server.

     ‘geometry’ (default: ‘"1024x768"’) (type: string)
          The size of the desktop to be created.

     ‘depth’ (default: ‘24’) (type: color-depth)
          The pixel depth in bits of the desktop to be created.
          Accepted values are 16, 24 or 32.

     ‘port’ (type: maybe-port)
          The port on which to listen for connections from viewers.
          When left unspecified, it defaults to 5900 plus the display
          number.

     ‘ipv4?’ (default: ‘#t’) (type: boolean)
          Use IPv4 for incoming and outgoing connections.

     ‘ipv6?’ (default: ‘#t’) (type: boolean)
          Use IPv6 for incoming and outgoing connections.

     ‘password-file’ (type: maybe-string)
          The password file to use, if any.  Refer to vncpasswd(1) to
          learn how to generate such a file.

     ‘xdmcp?’ (default: ‘#f’) (type: boolean)
          Query the XDMCP server for a session.  This enables users to
          log in a desktop session from the login manager screen.  For a
          multiple users scenario, you’ll want to enable the ‘inetd?’
          option as well, so that each connection to the VNC server is
          handled separately rather than shared.

     ‘inetd?’ (default: ‘#f’) (type: boolean)
          Use an Inetd-style service, which runs the Xvnc server on
          demand.

     ‘frame-rate’ (default: ‘60’) (type: number)
          The maximum number of updates per second sent to each client.

     ‘security-types’ (default: ‘("None")’) (type: security-types)
          The allowed security schemes to use for incoming connections.
          The default is "None", which is safe given that Xvnc is
          configured to authenticate the user via the display manager,
          and only for local connections.  Accepted values are any of
          the following: ("None" "VncAuth" "Plain" "TLSNone" "TLSVnc"
          "TLSPlain" "X509None" "X509Vnc")

     ‘localhost?’ (default: ‘#t’) (type: boolean)
          Only allow connections from the same machine.  It is set to
          #true by default for security, which means SSH or another
          secure means should be used to expose the remote port.

     ‘log-level’ (default: ‘30’) (type: log-level)
          The log level, a number between 0 and 100, 100 meaning most
          verbose output.  The log messages are output to syslog.

     ‘extra-options’ (default: ‘()’) (type: strings)
          This can be used to provide extra Xvnc options not exposed via
          this <xvnc-configuration> record.


File: guix.es.info,  Node: Servicios VPN,  Next: Sistema de archivos en red,  Prev: VNC Services,  Up: Servicios

12.9.23 Servicios VPN
---------------------

The ‘(gnu services vpn)’ module provides services related to “virtual
private networks” (VPNs).

Bitmask
.......

 -- Scheme Variable: bitmask-service-type
     A service type for the Bitmask (https://bitmask.net) VPN client.
     It makes the client available in the system and loads its polkit
     policy.  Please note that the client expects an active
     polkit-agent, which is either run by your desktop-environment or
     should be run manually.

OpenVPN
.......

It provides a _client_ service for your machine to connect to a VPN, and
a _server_ service for your machine to host a VPN.

 -- Procedimiento Scheme: openvpn-client-service [#:config
          (openvpn-client-configuration)]

     Devuelve un servicio que ejecuta ‘openvpn’, un daemon VPN, como
     cliente.

 -- Procedimiento Scheme: openvpn-server-service [#:config
          (openvpn-server-configuration)]

     Devuelve un servicio que ejecuta ‘openvpn’, un daemon VPN, como
     servidor.

     Pueden ejecutarse simultáneamente.

 -- Data Type: openvpn-client-configuration
     Los campos disponibles de ‘openvpn-client-configuration’ son:

     ‘openvpn’ (default: ‘openvpn’) (type: file-like)
          El paquete OpenVPN.

     ‘pid-file’ (default: ‘"/var/run/openvpn/openvpn.pid"’) (type: string)
          El archivo de pid de OpenVPN.

     ‘proto’ (default: ‘udp’) (type: proto)
          El protocolo (UDP o TCP) usado para la apertura del canal
          entre clientes y servidores.

     ‘dev’ (default: ‘tun’) (type: dev)
          El tipo de dispositivo usado para representar la conexión VPN.

     ‘ca’ (default: ‘"/etc/openvpn/ca.crt"’) (type: maybe-string)
          La autoridad de certificación contra la que se comprueban las
          conexiones.

     ‘cert’ (default: ‘"/etc/openvpn/client.crt"’) (type: maybe-string)
          El certificado de la máquina en la que se ejecuta el daemon.
          Debe estar firmado por la autoridad proporcionada en ‘ca’.

     ‘key’ (default: ‘"/etc/openvpn/client.key"’) (type: maybe-string)
          La clave de la máquina en la que se ejecuta el daemon.  Debe
          ser la clave cuyo certificado es ‘cert’.

     ‘comp-lzo?’ (default: ‘#t’) (type: boolean)
          Determina si se usa el algoritmo de compresión lzo.

     ‘persist-key?’ (default: ‘#t’) (type: boolean)
          No vuelve a leer los archivos de claves tras la señal SIGUSR1
          o –ping-restart.

     ‘persist-tun?’ (default: ‘#t’) (type: boolean)
          No cierra y reabre el dispositivo TUN/TAP o ejecuta los
          guiones de parada e inicio tras el reinicio provocado por
          SIGUSR1 o –ping-restart.

     ‘fast-io?’ (default: ‘#f’) (type: boolean)
          (Experimental) Optimiza las escrituras de E/S de TUN/TAP/UDP
          evitando llamar poll/epoll/select antes de la operación de
          escritura (‘write’).

     ‘verbosity’ (default: ‘3’) (type: number)
          Nivel de detalle en los mensajes.

     ‘tls-auth’ (default: ‘#f’) (type: tls-auth-client)
          Añade una capa adicional de verificación HMAC sobre el canal
          de control TLS para protección contra ataques de denegación de
          servicio (DoS).

     ‘auth-user-pass’ (type: maybe-string)
          Activa la identificación con el servidor mediante el uso de
          usuaria/contraseña.  La opción es un archivo que contiene en
          dos líneas el nombre de usuaria y la contraseña.  No use un
          objeto tipo-archivo, ya que se añadiría al almacén y sería
          legible para cualquier usuaria.

     ‘verify-key-usage?’ (default: ‘#t’) (type: key-usage)
          Si se comprueba que el certificado del servidor tenga la
          extensión de uso de servidor.

     ‘bind?’ (default: ‘#f’) (type: bind)
          Asociación a un número específico de puerto local.

     ‘resolv-retry?’ (default: ‘#t’) (type: resolv-retry)
          Reintentos de resolución de la dirección del servidor.

     ‘remote’ (default: ‘()’) (type: openvpn-remote-list)
          Una lista de servidores remotos a los que conectarse.

           -- Data Type: openvpn-remote-configuration
               Los campos disponibles de ‘openvpn-remote-configuration’
               son:

               ‘name’ (default: ‘"my-server"’) (type: string)
                    Nombre del servidor.

               ‘port’ (default: ‘1194’) (type: number)
                    Puerto en el que escucha el servidor.

 -- Data Type: openvpn-server-configuration
     Los campos disponibles de ‘openvpn-server-configuration’ son:

     ‘openvpn’ (default: ‘openvpn’) (type: file-like)
          El paquete OpenVPN.

     ‘pid-file’ (default: ‘"/var/run/openvpn/openvpn.pid"’) (type: string)
          El archivo de pid de OpenVPN.

     ‘proto’ (default: ‘udp’) (type: proto)
          El protocolo (UDP o TCP) usado para la apertura del canal
          entre clientes y servidores.

     ‘dev’ (default: ‘tun’) (type: dev)
          El tipo de dispositivo usado para representar la conexión VPN.

     ‘ca’ (default: ‘"/etc/openvpn/ca.crt"’) (type: maybe-string)
          La autoridad de certificación contra la que se comprueban las
          conexiones.

     ‘cert’ (default: ‘"/etc/openvpn/client.crt"’) (type: maybe-string)
          El certificado de la máquina en la que se ejecuta el daemon.
          Debe estar firmado por la autoridad proporcionada en ‘ca’.

     ‘key’ (default: ‘"/etc/openvpn/client.key"’) (type: maybe-string)
          La clave de la máquina en la que se ejecuta el daemon.  Debe
          ser la clave cuyo certificado es ‘cert’.

     ‘comp-lzo?’ (default: ‘#t’) (type: boolean)
          Determina si se usa el algoritmo de compresión lzo.

     ‘persist-key?’ (default: ‘#t’) (type: boolean)
          No vuelve a leer los archivos de claves tras la señal SIGUSR1
          o –ping-restart.

     ‘persist-tun?’ (default: ‘#t’) (type: boolean)
          No cierra y reabre el dispositivo TUN/TAP o ejecuta los
          guiones de parada e inicio tras el reinicio provocado por
          SIGUSR1 o –ping-restart.

     ‘fast-io?’ (default: ‘#f’) (type: boolean)
          (Experimental) Optimiza las escrituras de E/S de TUN/TAP/UDP
          evitando llamar poll/epoll/select antes de la operación de
          escritura (‘write’).

     ‘verbosity’ (default: ‘3’) (type: number)
          Nivel de detalle en los mensajes.

     ‘tls-auth’ (default: ‘#f’) (type: tls-auth-server)
          Añade una capa adicional de verificación HMAC sobre el canal
          de control TLS para protección contra ataques de denegación de
          servicio (DoS).

     ‘port’ (default: ‘1194’) (type: number)
          Especifica el número de puerto en el que escucha el servidor.

     ‘server’ (default: ‘"10.8.0.0 255.255.255.0"’) (type: ip-mask)
          Una IP y una máscara que especifiquen la subred dentro de la
          red virtual.

     ‘server-ipv6’ (default: ‘#f’) (type: cidr6)
          La especificación de una subred IPv6 dentro de la red virtual
          en notación CIDR.

     ‘dh’ (default: ‘"/etc/openvpn/dh2048.pem"’) (type: string)
          El archivo de parámetros Diffie-Hellman.

     ‘ifconfig-pool-persist’ (default: ‘"/etc/openvpn/ipp.txt"’) (type: string)
          El archivo que registra IP de clientes.

     ‘redirect-gateway?’ (default: ‘#f’) (type: gateway)
          Cuando sea verdadero, el servidor actuará como una pasarela
          para sus clientes.

     ‘client-to-client?’ (default: ‘#f’) (type: boolean)
          Cuando es verdadero, se permite la comunicación entre clientes
          dentro de la VPN.

     ‘keepalive’ (default: ‘(10 120)’) (type: keepalive)
          Hace que se envíen mensajes tipo-ping en ambas direcciones a
          través del enlace de modo que cada extremo conozca si el otro
          extremo no está disponible.  ‘keepalive’ necesita un par.  El
          primer elemento es el periodo de envío de ping, y el segundo
          elemento es el plazo máximo antes de considerar que el otro
          extremo no está disponible.

     ‘max-clients’ (default: ‘100’) (type: number)
          Número máximo de clientes.

     ‘status’ (default: ‘"/var/run/openvpn/status"’) (type: string)
          El archivo de estado.  Este archivo muestra un pequeño informe
          sobre la conexión actual.  Su contenido se borra y se
          reescribe cada minuto.

     ‘client-config-dir’ (default: ‘()’) (type: openvpn-ccd-list)
          Lista de configuración para algunos clientes.

strongSwan
----------

Currently, the strongSwan service only provides legacy-style
configuration with ‘ipsec.conf’ and ‘ipsec.secrets’ files.

 -- Scheme Variable: strongswan-service-type
     A service type for configuring strongSwan for IPsec VPN (Virtual
     Private Networking).  Its value must be a
     ‘strongswan-configuration’ record as in this example:

          (service strongswan-service-type
                   (strongswan-configuration
                    (ipsec-conf "/etc/ipsec.conf")
                    (ipsec-secrets "/etc/ipsec.secrets")))

 -- Data Type: strongswan-configuration
     Data type representing the configuration of the StrongSwan service.

     ‘strongswan’
          The strongSwan package to use for this service.

     ‘ipsec-conf’ (default: ‘#f’)
          The file name of your ‘ipsec.conf’.  If not ‘#f’, then this
          and ‘ipsec-secrets’ must both be strings.

     ‘ipsec-secrets’ (default ‘#f’)
          The file name of your ‘ipsec.secrets’.  If not ‘#f’, then this
          and ‘ipsec-conf’ must both be strings.

Wireguard
.........

 -- Scheme Variable: wireguard-service-type
     A service type for a Wireguard tunnel interface.  Its value must be
     a ‘wireguard-configuration’ record as in this example:

          (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")))))))

 -- Data Type: wireguard-configuration
     Data type representing the configuration of the Wireguard service.

     ‘wireguard’
          The wireguard package to use for this service.

     ‘interface’ (default: ‘"wg0"’)
          The interface name for the VPN.

     ‘addresses’ (default: ‘'("10.0.0.1/32")’)
          The IP addresses to be assigned to the above interface.

     ‘port’ (default: ‘51820’)
          The port on which to listen for incoming connections.

     ‘dns’ (default: ‘#f’)
          The DNS server(s) to announce to VPN clients via DHCP.

     ‘private-key’ (default: ‘"/etc/wireguard/private.key"’)
          The private key file for the interface.  It is automatically
          generated if the file does not exist.

     ‘peers’ (default: ‘'()’)
          The authorized peers on this interface.  This is a list of
          WIREGUARD-PEER records.

     ‘pre-up’ (default: ‘'()’)
          The script commands to be run before setting up the interface.

     ‘post-up’ (default: ‘'()’)
          The script commands to be run after setting up the interface.

     ‘pre-down’ (default: ‘'()’)
          The script commands to be run before tearing down the
          interface.

     ‘post-down’ (default: ‘'()’)
          The script commands to be run after tearing down the
          interface.

     ‘table’ (default: ‘"auto"’)
          The routing table to which routes are added, as a string.
          There are two special values: ‘"off"’ that disables the
          creation of routes altogether, and ‘"auto"’ (the default) that
          adds routes to the default table and enables special handling
          of default routes.

 -- Data Type: wireguard-peer
     Data type representing a Wireguard peer attached to a given
     interface.

     ‘name’
          The peer name.

     ‘endpoint’ (default: ‘#f’)
          The optional endpoint for the peer, such as
          ‘"demo.wireguard.com:51820"’.

     ‘public-key’
          The peer public-key represented as a base64 string.

     ‘allowed-ips’
          A list of IP addresses from which incoming traffic for this
          peer is allowed and to which incoming traffic for this peer is
          directed.

     ‘keep-alive’ (default: ‘#f’)
          An optional time interval in seconds.  A packet will be sent
          to the server endpoint once per time interval.  This helps
          receiving incoming connections from this peer when you are
          behind a NAT or a firewall.


File: guix.es.info,  Node: Sistema de archivos en red,  Next: Samba Services,  Prev: Servicios VPN,  Up: Servicios

12.9.24 Sistema de archivos en red
----------------------------------

El módulo ‘(gnu services nfs)’ proporciona los siguientes servicios, que
se usan habitualmente en relación con el montado o la exportación de
árboles de directorios como “sistemas de archivos en red” (NFS).

   Mientras que es posible usar los componentes individuales de forma
conjunta para proporcionar un servicio del sistema de archivos en red
NFS, recomendamos la configuración de un servidor NFS mediante
‘nfs-service-type’.

Servicio NFS
............

El servicio NFS se hace cargo de configurar todos los servicios de
componentes de NFS, la configuración del núcleo de sistemas de archivos
e instala los archivos de configuración en las rutas que NFS espera.

 -- Variable Scheme: nfs-service-type
     Este es el tipo de datos para un servidor NFS completo.

 -- Tipo de datos: nfs-configuration
     Este tipo de datos representa la configuración del servicio NFS y
     todos sus subsistemas.

     Tiene los siguientes parámetros:
     ‘nfs-utils’ (predeterminado: ‘nfs-utils’)
          El paquete nfs-utils usado.

     ‘nfs-versions’ (predeterminadas: ‘'("4.2" "4.1" "4.0")’)
          Si se proporciona como valor una lista de cadenas, el daemon
          ‘rpc.nfsd’ se limitará a la implementación de las versiones
          del protocolo NFS proporcionadas.

     ‘exports’ (predeterminada: ‘'()’)
          Una lista de directorios que el servidor NFS debe exportar.
          Cada entrada es una lista que consiste en dos elementos: un
          nombre de directorio y una cadena que contiene todas las
          opciones.  Este es un ejemplo en el que el directorio
          ‘/exportado’ se proporciona a todos los clientes NFS en modo
          de solo-lectura:

               (nfs-configuration
                (exports
                 '(("/exportado"
                    "*(ro,insecure,no_subtree_check,crossmnt,fsid=0)"))))

     ‘rpcmountd-port’ (predeterminado: ‘#f’)
          El puerto de red que el daemon ‘rpc.mountd’ debe usar.

     ‘rpcstatd-port’ (predeterminado: ‘#f’)
          El puerto de red que el daemon ‘rpc.statd’ debe usar.

     ‘rpcbind’ (predeterminado: ‘rpcbind’)
          El paquete rpcbind usado.

     ‘idmap-domain’ (predeterminado: ‘"localdomain"’)
          El nombre de dominio local de NFSv4.

     ‘nfsd-port’ (predeterminado: ‘2049’)
          El puerto de red que el daemon ‘nfsd’ debe usar.

     ‘nfsd-threads’ (predeterminado: ‘8’)
          Número de hilos usados en el daemon ‘nfsd’.

     ‘nfsd-tcp?’ (predeterminado: ‘#t’)
          Determina si el daemon ‘nfsd’ debe escuchar en un puerto TCP.

     ‘nfsd-udp?’ (predeterminado: ‘#f’)
          Determina si el daemon ‘nfsd’ debe escuchar en un puerto UDP.

     ‘pipefs-directory’ (predeterminado: ‘"/var/lib/nfs/rpc_pipefs"’)
          El directorio donde el sistema de archivos pipefs debe
          montarse.

     ‘debug’ (predeterminada: ‘'()"’)
          Una lista de subsistemas para los cuales debe activarse la
          salida de depuración.  Es una lista de símbolos.  Cualquiera
          de estos símbolos son válidos: ‘nfsd’, ‘nfs’, ‘rpc’, ‘idmap’,
          ‘statd’ o ‘mountd’.

   Si no necesita un servicio NFS completo o prefiere construirlo por su
cuenta puede usar los componentes individuales que se documentan a
continuación.

Servicio RPC Bind
.................

El servicio RPC Bind proporciona una forma de asociar números de
programa con direcciones universales.  Muchos servicios relacionados con
NFS usan esta característica.  De ahí que se inicie automáticamente
cuando un servicio dependiente se inicia.

 -- Variable Scheme: rpcbind-service-type
     Un tipo de servicio para el daemon de asignación de puertos RPC.

 -- Tipo de datos: rpcbind-configuration
     Tipo de datos que representa la configuración del servicio RPC
     Bind.  Este tipo tiene los siguientes parámetros:
     ‘rpcbind’ (predeterminado: ‘rpcbind’)
          El paquete rpcbind usado.

     ‘warm-start?’ (predeterminado: ‘#t’)
          Si este parámetro es ‘#t’, el daemon leerá el archivo de
          estado durante el arranche, por tanto recargando la
          información del estado almacenada por la instancia previa.

Pseudo-sistema de archivos pipefs
.................................

El sistema de archivos pipefs se usa para transferir datos relacionados
con NFS entre el núcleo y los programas de espacio de usuaria.

 -- Variable Scheme: pipefs-service-type
     Un tipo de servicio para el pseudo-sistema de archivos pipefs.

 -- Tipo de datos: pipefs-configuration
     Tipo de datos que representa la configuración del servicio del
     pseudo-sistema de archivos pipefs.  Este tipo tiene los siguientes
     parámetros:
     ‘mount-point’ (predeterminado: ‘"/var/lib/nfs/rpc_pipefs"’)
          El directorio al que se debe asociar el sistema de archivos.

Servicio del daemon GSS
.......................

El daemon “sistema de seguridad global” (GSS) proporciona fuertes
garantías de seguridad para protocolos basados en RPC. Antes de
intercambiar peticiones RPC el cliente debe establecer un contexto de
seguridad.  Habitualmente esto se lleva a cabo con el uso de la orden
‘kinit’o automáticamente durante el ingreso al sistema mediante el uso
de servicios PAM (*note Servicios Kerberos::).

 -- Variable Scheme: gss-service-type
     Un tipo de servicio para el daemon del sistema de seguridad global
     (GSS).

 -- Tipo de datos: gss-configuration
     Tipo de datos que representa la configuración del servicio del
     daemon GSS. Este tipo tiene los siguientes parámetros:
     ‘nfs-utils’ (predeterminado: ‘nfs-utils’)
          Paquete en el que se encuentra la orden ‘rpc.gssd’.

     ‘pipefs-directory’ (predeterminado: ‘"/var/lib/nfs/rpc_pipefs"’)
          El directorio donde el sistema de archivos pipefs debe
          montarse.

Servicio del daemon IDMAP
.........................

El servicio del daemon idmap proporciona una asociación entre
identificadores de usuaria y nombres de usuaria.  Habitualmente es
necesario para acceder sistemas de archivos montados con NFSv4.

 -- Variable Scheme: idmap-service-type
     Un tipo de servicio para el daemon de asociación de identidades
     (IDMAP).

 -- Tipo de datos: idmap-configuration
     Tipo de datos que representa la configuración del servicio del
     daemon IDMAP. Este tipo tiene los siguientes parámetros:
     ‘nfs-utils’ (predeterminado: ‘nfs-utils’)
          Paquete en el que se encuentra la orden ‘rpc.idmapd’.

     ‘pipefs-directory’ (predeterminado: ‘"/var/lib/nfs/rpc_pipefs"’)
          El directorio donde el sistema de archivos pipefs debe
          montarse.

     ‘domain’ (predeterminado: ‘#f’)
          El nombre de dominio local de NFSv4.  Debe ser una cadena o
          ‘#f’.  Si es ‘#f’ el daemon usará el nombre de dominio
          totalmente cualificado de la máquina.

     ‘verbosity’ (predeterminado: ‘0’)
          El nivel de información de los mensajes del daemon.


File: guix.es.info,  Node: Samba Services,  Next: Integración continua,  Prev: Sistema de archivos en red,  Up: Servicios

12.9.25 Samba Services
----------------------

The ‘(gnu services samba)’ module provides service definitions for Samba
as well as additional helper services.  Currently it provides the
following services.

Samba
.....

Samba (https://www.samba.org) provides network shares for folders and
printers using the SMB/CIFS protocol commonly used on Windows.  It can
also act as an Active Directory Domain Controller (AD DC) for other
hosts in an heterougenious network with different types of Computer
systems.

 -- Variable: Scheme variable samba-service-type

     The service type to enable the samba services ‘samba’, ‘nmbd’,
     ‘smbd’ and ‘winbindd’.  By default this service type does not run
     any of the Samba daemons; they must be enabled individually.

     Below is a basic example that configures a simple, anonymous
     (unauthenticated) Samba file share exposing the ‘/public’
     directory.

          Tip: The ‘/public’ directory and its contents must be world
          readable/writable, so you’ll want to run ‘chmod -R 777
          /public’ on it.

          Caution: Such a Samba configuration should only be used in
          controlled environments, and you should not share any private
          files using it, as anyone connecting to your network would be
          able to access them.

          (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"))))

 -- Data Type: samba-service-configuration Configuration record for the
     Samba suite.

     ‘package’ (default: ‘samba’)
          The samba package to use.

     ‘config-file’ (predeterminado: ‘#f’)
          The config file to use.  To learn about its syntax, run ‘man
          smb.conf’.

     ‘enable-samba?’ (default: ‘#f’)
          Enable the ‘samba’ daemon.

     ‘enable-smbd?’ (default: ‘#f’)
          Enable the ‘smbd’ daemon.

     ‘enable-nmbd?’ (default: ‘#f’)
          Enable the ‘nmbd’ daemon.

     ‘enable-winbindd?’ (default: ‘#f’)
          Enable the ‘winbindd’ daemon.

Web Service Discovery Daemon
............................

The WSDD (Web Service Discovery daemon) implements the Web Services
Dynamic Discovery
(http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html)
protocol that enables host discovery over Multicast DNS, similar to what
Avahi does.  It is a drop-in replacement for SMB hosts that have had
SMBv1 disabled for security reasons.

 -- Scheme Variable: wsdd-service-type
     Service type for the WSD host daemon.  The value for this service
     type is a ‘wsdd-configuration’ record.  The details for the
     ‘wsdd-configuration’ record type are given below.

 -- Data Type: wsdd-configuration
     This data type represents the configuration for the wsdd service.

     ‘package’ (default: ‘wsdd’)
          The wsdd package to use.

     ‘ipv4only?’ (default: ‘#f’)
          Only listen to IPv4 addresses.

     ‘ipv6only’ (default: ‘#f’)
          Only listen to IPv6 addresses.  Please note: Activating both
          options is not possible, since there would be no IP versions
          to listen to.

     ‘chroot’ (predeterminado: ‘#f’)
          Chroot into a separate directory to prevent access to other
          directories.  This is to increase security in case there is a
          vulnerability in ‘wsdd’.

     ‘hop-limit’ (default: ‘1’)
          Limit to the level of hops for multicast packets.  The default
          is 1 which should prevent packets from leaving the local
          network.

     ‘interface’ (default: ‘'()’)
          Limit to the given list of interfaces to listen to.  By
          default wsdd will listen to all interfaces.  Except the
          loopback interface is never used.

     ‘uuid-device’ (default: ‘#f’)
          The WSD protocol requires a device to have a UUID. Set this to
          manually assign the service a UUID.

     ‘domain’ (predeterminado: ‘#f’)
          Notify this host is a member of an Active Directory.

     ‘host-name’ (predeterminado: ‘#f’)
          Manually set the hostname rather than letting ‘wsdd’ inherit
          this host’s hostname.  Only the host name part of a possible
          FQDN will be used in the default case.

     ‘preserve-case?’ (default: ‘#f’)
          By default ‘wsdd’ will convert the hostname in workgroup to
          all uppercase.  The opposite is true for hostnames in domains.
          Setting this parameter will preserve case.

     ‘workgroup’ (default: "WORKGROUP")
          Change the name of the workgroup.  By default ‘wsdd’ reports
          this host being member of a workgroup.


File: guix.es.info,  Node: Integración continua,  Next: Servicios de gestión de energía,  Prev: Samba Services,  Up: Servicios

12.9.26 Integración continua
----------------------------

Cuirass (https://guix.gnu.org/cuirass/) is a continuous integration tool
for Guix.  It can be used both for development and for providing
substitutes to others (*note Sustituciones::).

   El módulo ‘(gnu services cuirass)’ proporciona el siguiente servicio.

 -- Procedimiento Scheme: cuirass-service-type
     El tipo del servicio Cuirass.  Su valor debe ser un objeto
     ‘cuirass-configuration’, como se describe a continuación.

   To add build jobs, you have to set the ‘specifications’ field of the
configuration.  For instance, the following example will build all the
packages provided by the ‘my-channel’ 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 %especificacion-de-cuirass)))

   To build the ‘linux-libre’ package defined by the default Guix
channel, one can use the following configuration.

     (define %cuirass-specs
       #~(list (specification
                (name "my-linux")
                (build '(packages "linux-libre")))))

     (service cuirass-service-type
              (cuirass-configuration
               (specifications %especificacion-de-cuirass)))

   The other configuration possibilities, as well as the specification
record itself are described in the Cuirass manual (*note
(cuirass)Specifications::).

   Mientras que la información de los trabajos de construcción se
encuentra directamente en las especificaciones, la configuración global
del proceso ‘cuirass’ está accesible en otros campos de
‘cuirass-configuration’.

 -- Tipo de datos: cuirass-configuration
     Tipo de datos que representa la configuración de Cuirass.

     ‘cuirass’ (predeterminado: ‘cuirass’)
          El paquete Cuirass usado.

     ‘log-file’ (predeterminado: ‘"/var/log/cuirass.log"’)
          Localización del archivo de registro.

     ‘web-log-file’ (predeterminado: ‘"/var/log/cuirass-web.log"’)
          Localización del archivo de registro usado por la interfaz
          web.

     ‘cache-directory’ (predeterminado: ‘"/var/cache/cuirass"’)
          Localización de la caché del repositorio.

     ‘user’ (predeterminado: ‘"cuirass"’)
          Propietaria del proceso ‘cuirass’.

     ‘group’ (predeterminado: ‘"cuirass"’)
          Grupo propietario del proceso ‘cuirass’.

     ‘interval’ (predeterminado: ‘60’)
          Número de segundos entre las consulta de repositorios seguida
          de los trabajos de Cuirass.

     ‘parameters’ (default: ‘#f’)
          Read parameters from the given PARAMETERS file.  The supported
          parameters are described here (*note (cuirass)Parameters::).

     ‘remote-server’ (default: ‘#f’)
          A ‘cuirass-remote-server-configuration’ record to use the
          build remote mechanism or ‘#f’ to use the default build
          mechanism.

     ‘database’ (default: ‘"dbname=cuirass host=/var/run/postgresql"’)
          Use DATABASE as the database containing the jobs and the past
          build results.  Since Cuirass uses PostgreSQL as a database
          engine, DATABASE must be a string such as ‘"dbname=cuirass
          host=localhost"’.

     ‘port’ (predeterminado: ‘8081’)
          Número de puerto usado por el servidor HTTP.

     ‘host’ (predeterminado: ‘"localhost"’)
          Escucha en la interfaz de red de la dirección HOST.  El
          comportamiento predeterminado es aceptar conexiones desde la
          red local.

     ‘specifications’ (predeterminada: ‘#~'()’)
          A gexp (*note Expresiones-G::) that evaluates to a list of
          specifications records.  The specification record is described
          in the Cuirass manual (*note (cuirass)Specifications::).

     ‘use-substitutes?’ (predeterminado: ‘#f’)
          Permite el uso de sustituciones para evitar la construcción
          desde las fuentes de todas las dependencias de un trabajo.

     ‘one-shot?’ (predeterminado: ‘#f’)
          Evalúa las especificaciones y construye las derivaciones solo
          una vez.

     ‘fallback?’ (predeterminado: ‘#f’)
          Cuando la sustitución de un binario preconstruido falle, se
          intentará la construcción local de los paquetes.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Opciones adicionales proporcionadas a los procesos de Cuirass.

Cuirass remote building
.......................

Cuirass supports two mechanisms to build derivations.

   • Using the local Guix daemon.  This is the default build mechanism.
     Once the build jobs are evaluated, they are sent to the local Guix
     daemon.  Cuirass then listens to the Guix daemon output to detect
     the various build events.

   • Using the remote build mechanism.  The build jobs are not submitted
     to the local Guix daemon.  Instead, a remote server dispatches
     build requests to the connect remote workers, according to the
     build priorities.

   To enable this build mode a ‘cuirass-remote-server-configuration’
record must be passed as ‘remote-server’ argument of the
‘cuirass-configuration’ record.  The
‘cuirass-remote-server-configuration’ record is described below.

   This build mode scales way better than the default build mode.  This
is the build mode that is used on the GNU Guix build farm at
<https://ci.guix.gnu.org>.  It should be preferred when using Cuirass to
build large amount of packages.

 -- Data Type: cuirass-remote-server-configuration
     Data type representing the configuration of the Cuirass
     remote-server.

     ‘backend-port’ (default: ‘5555’)
          The TCP port for communicating with ‘remote-worker’ processes
          using ZMQ. It defaults to ‘5555’.

     ‘log-port’ (default: ‘5556’)
          The TCP port of the log server.  It defaults to ‘5556’.

     ‘publish-port’ (default: ‘5557’)
          The TCP port of the publish server.  It defaults to ‘5557’.

     ‘log-file’ (default: ‘"/var/log/cuirass-remote-server.log"’)
          Localización del archivo de registro.

     ‘cache’ (default: ‘"/var/cache/cuirass/remote"’)
          Use CACHE directory to cache build log files.

     ‘trigger-url’ (default: ‘#f’)
          Once a substitute is successfully fetched, trigger substitute
          baking at TRIGGER-URL.

     ‘publish?’ (predeterminado: ‘#t’)
          If set to false, do not start a publish server and ignore the
          ‘publish-port’ argument.  This can be useful if there is
          already a standalone publish server standing next to the
          remote server.

     ‘public-key’
     ‘private-key’
          Usa los ARCHIVOs específicos como el par de claves pública y
          privada usadas para firmar los elementos del almacén
          publicados.

   At least one remote worker must also be started on any machine of the
local network to actually perform the builds and report their status.

 -- Data Type: cuirass-remote-worker-configuration
     Data type representing the configuration of the Cuirass
     remote-worker.

     ‘cuirass’ (predeterminado: ‘cuirass’)
          El paquete Cuirass usado.

     ‘workers’ (default: ‘1’)
          Start WORKERS parallel workers.

     ‘server’ (predeterminada: ‘#f’)
          Do not use Avahi discovery and connect to the given ‘server’
          IP address instead.

     ‘systems’ (default: ‘(list (%current-system))’)
          Only request builds for the given SYSTEMS.

     ‘log-file’ (default: ‘"/var/log/cuirass-remote-worker.log"’)
          Localización del archivo de registro.

     ‘publish-port’ (default: ‘5558’)
          The TCP port of the publish server.  It defaults to ‘5558’.

     ‘substitute-urls’ (predeterminado: ‘%default-substitute-urls’)
          La lista de URLs donde se buscarán sustituciones por defecto.

     ‘public-key’
     ‘private-key’
          Usa los ARCHIVOs específicos como el par de claves pública y
          privada usadas para firmar los elementos del almacén
          publicados.

Laminar
.......

Laminar (https://laminar.ohwg.net/) is a lightweight and modular
Continuous Integration service.  It doesn’t have a configuration web UI
instead uses version-controllable configuration files and scripts.

   Laminar encourages the use of existing tools such as bash and cron
instead of reinventing them.

 -- Scheme Procedure: laminar-service-type
     The type of the Laminar service.  Its value must be a
     ‘laminar-configuration’ object, as described below.

     All configuration values have defaults, a minimal configuration to
     get Laminar running is shown below.  By default, the web interface
     is available on port 8080.

          (service laminar-service-type)

 -- Data Type: laminar-configuration
     Data type representing the configuration of Laminar.

     ‘laminar’ (default: ‘laminar’)
          The Laminar package to use.

     ‘home-directory’ (default: ‘"/var/lib/laminar"’)
          The directory for job configurations and run directories.

     ‘bind-http’ (default: ‘"*:8080"’)
          The interface/port or unix socket on which laminard should
          listen for incoming connections to the web frontend.

     ‘bind-rpc’ (default: ‘"unix-abstract:laminar"’)
          The interface/port or unix socket on which laminard should
          listen for incoming commands such as build triggers.

     ‘title’ (default: ‘"Laminar"’)
          The page title to show in the web frontend.

     ‘keep-rundirs’ (default: ‘0’)
          Set to an integer defining how many rundirs to keep per job.
          The lowest-numbered ones will be deleted.  The default is 0,
          meaning all run dirs will be immediately deleted.

     ‘archive-url’ (default: ‘#f’)
          The web frontend served by laminard will use this URL to form
          links to artefacts archived jobs.

     ‘base-url’ (default: ‘#f’)
          Base URL to use for links to laminar itself.


File: guix.es.info,  Node: Servicios de gestión de energía,  Next: Servicios de audio,  Prev: Integración continua,  Up: Servicios

12.9.27 Servicios de gestión de energía
---------------------------------------

Daemon TLP
..........

El módulo ‘(gnu services pm)’ proporciona una definición de servicio
Guix para la herramienta de gestión de energía de Linux TLP.

   TLP activa varios modos de ahorro de energía en el núcleo y en
espacio de usuaria.  Al contrario que ‘upower-service’, no es una
herramienta de monitorización pasiva, puesto que aplicará una nueva
configuración personalizada cada vez que se detecte una nueva fuente de
energía/alimentación.  Puede encontrar más información en la página de
TLP (https://linrunner.de/en/tlp/tlp.html).

 -- Variable Scheme: tlp-service-type
     EL tipo de servicio para la herramienta TLP. La configuración
     predeterminada está optimizada para la vida de la batería en la
     mayoría de los sistemas, pero puede modificarla al completo con las
     opciones que desee proporcionando un objeto ‘tlp-configuration’
     válido:
          (service tlp-service-type
                   (tlp-configuration
                    (cpu-scaling-governor-on-ac (list "performance"))
                    (sched-powersave-on-bat? #t)))

   Each parameter definition is preceded by its type; for example,
‘boolean foo’ indicates that the ‘foo’ parameter should be specified as
a boolean.  Types starting with ‘maybe-’ denote parameters that won’t
show up in TLP config file when their value is left unset, or is
explicitly set to the ‘%unset-value’ value.

   Los campos disponibles de ‘tlp-configuration’ son:

 -- parámetro de ‘tlp-configuration’: package tlp
     El paquete TLP.

 -- parámetro de ‘tlp-configuration’: boolean tlp-enable?
     Proporcione un valor verdadero si desea activar TLP.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: string tlp-default-mode
     Modo predeterminado cuando no se puede detectar una fuente de
     alimentación.  Las alternativas son AC (corriente alterna) y BAT
     (batería).

     El valor predeterminado es ‘"AC"’ (corriente alterna).

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          disk-idle-secs-on-ac
     Número de segundos que el núcleo Linux debe esperar desde que el
     disco se queda en espera, antes de sincronizar en corriente alterna
     (AC).

     El valor predeterminado es ‘0’.

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          disk-idle-secs-on-bat
     Igual que ‘disk-idle-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘2’.

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          max-lost-work-secs-on-ac
     Periodicidad de la evacuación de las páginas sucias, expresada en
     segundos.

     El valor predeterminado es ‘15’.

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          max-lost-work-secs-on-bat
     Igual que ‘max-lost-work-secs-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘60’.

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios
          cpu-scaling-governor-on-ac
     Gobernador de escalado de frecuencia del procesador en modo de
     corriente alterna (AC). Con el controlador intel_pstate, las
     alternativas son “powersave” (ahorro de energía) y “performance”
     (rendimiento).  Con el controlador acpi-cpufreq, las alternativas
     son “ondemand” (bajo demanda), “powersave”, “performance” y
     “conservative” (conservativo).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios
          cpu-scaling-governor-on-bat
     Igual que ‘max-lost-work-secs-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-scaling-min-freq-on-ac
     Establece la frecuencia mínima disponible para el controlador de
     escalado en AC.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-scaling-max-freq-on-ac
     Establece la frecuencia máxima disponible para el controlador de
     escalado en AC.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-scaling-min-freq-on-bat
     Establece la frecuencia mínima disponible para el controlador de
     escalado en BAT.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-scaling-max-freq-on-bat
     Establece la frecuencia máxima disponible para el controlador de
     escalado en BAT.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-min-perf-on-ac
     Limita el estado-P mínimo para controlar la disipación de potencia
     del procesador en modo AC. Los valores se indican como un
     porcentaje de rendimiento disponible.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-max-perf-on-ac
     Limita el estado-P máximo para controlar la disipación de potencia
     del procesador en modo AC. Los valores se indican como un
     porcentaje de rendimiento disponible.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-min-perf-on-bat
     Igual que ‘cpu-min-perf-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-entero-no-negativo
          cpu-max-perf-on-bat
     Igual que ‘cpu-max-perf-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-boolean cpu-boost-on-ac?
     Activa la característica “turbo boost” del procesador en modo AC
     (corriente alterna).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-boolean cpu-boost-on-bat?
     Igual que ‘cpu-boost-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: boolean sched-powersave-on-ac?
     Permite al núcleo Linux minimizar el número de núcleos/hyper-thread
     del procesador usados bajo condiciones de baja carga.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘tlp-configuration’: boolean sched-powersave-on-bat?
     Igual que ‘sched-powersave-on-ac?’ pero en modo BAT (batería).

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: boolean nmi-watchdog?
     Activa el proceso guardián (watchdog) NMI del núcleo Linux.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘tlp-configuration’: maybe-string phc-controls
     Para núcleos Linux con el parche PHC aplicado, cambia los voltajes
     del procesador.  Un valor de ejemplo sería ‘"F:V F:V F:V F:V"’.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: string energy-perf-policy-on-ac
     Set CPU performance versus energy saving policy on AC.
     Alternatives are performance, normal, powersave.

     El valor predeterminado es ‘"performance"’.

 -- parámetro de ‘tlp-configuration’: string energy-perf-policy-on-bat
     Igual que ‘energy-perf-policy-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"powersave"’.

 -- parámetro de ‘tlp-configuration’: lista-cadena-separada-espacios
          disks-devices
     Dispositivos de disco duro.

 -- parámetro de ‘tlp-configuration’: lista-cadena-separada-espacios
          disk-apm-level-on-ac
     Nivel de APM (gestión avanzada de energía) del disco duro.

 -- parámetro de ‘tlp-configuration’: lista-cadena-separada-espacios
          disk-apm-level-on-bat
     Igual que ‘disk-apm-bat’ pero en modo BAT (batería).

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios
          disk-spindown-timeout-on-ac
     Plazo para la parada rotacional del disco duro.  Se debe
     especificar un valor por cada disco duro declarado.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios
          disk-spindown-timeout-on-bat
     Igual que ‘disk-spindown-timeout-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios disk-iosched
     Selecciona el planificador de E/S para dispositivos de disco.  Se
     debe especificar un valor por cada disco duro declarado.  Ejemplos
     de alternativas son “cfq”, “deadline” y “noop”.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: string sata-linkpwr-on-ac
     Nivel de gestión agresiva de energía del enlace (ALPM) de SATA. Las
     alternativas son “min_power” (energía mínima), “medium_power”
     (energía media) y “max_performance” (máximo rendimiento).

     El valor predeterminado es ‘"max_performance"’.

 -- parámetro de ‘tlp-configuration’: string sata-linkpwr-on-bat
     Igual que ‘sata-linkpwr-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"min_power"’.

 -- parámetro de ‘tlp-configuration’: maybe-string
          sata-linkpwr-blacklist
     Excluye los dispositivos SATA especificados de la gestión de
     energía del enlace.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-on-off-boolean
          ahci-runtime-pm-on-ac?
     Activa la gestión de energía de tiempo de ejecución para
     controladores AHCI y discos en modo AC.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-on-off-boolean
          ahci-runtime-pm-on-bat?
     Igual que ‘ahci-runtime-pm-on-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          ahci-runtime-pm-timeout
     Segundos de inactividad antes de suspender el disco.

     El valor predeterminado es ‘15’.

 -- parámetro de ‘tlp-configuration’: string pcie-aspm-on-ac
     Nivel de gestión de energía de estado activo de PCI Express.  Las
     alternativas son “default” (predeterminado), “performance”
     (rendimiento) y “powersave” (ahorro de energía).

     El valor predeterminado es ‘"performance"’.

 -- parámetro de ‘tlp-configuration’: string pcie-aspm-on-bat
     Igual que ‘pcie-aspm-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"powersave"’.

 -- ‘tlp-configuration’ parameter: maybe-non-negative-integer
          start-charge-thresh-bat0
     Percentage when battery 0 should begin charging.  Only supported on
     some laptops.

     El valor predeterminado es ‘disabled’.

 -- ‘tlp-configuration’ parameter: maybe-non-negative-integer
          stop-charge-thresh-bat0
     Percentage when battery 0 should stop charging.  Only supported on
     some laptops.

     El valor predeterminado es ‘disabled’.

 -- ‘tlp-configuration’ parameter: maybe-non-negative-integer
          start-charge-thresh-bat1
     Percentage when battery 1 should begin charging.  Only supported on
     some laptops.

     El valor predeterminado es ‘disabled’.

 -- ‘tlp-configuration’ parameter: maybe-non-negative-integer
          stop-charge-thresh-bat1
     Percentage when battery 1 should stop charging.  Only supported on
     some laptops.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: string radeon-power-profile-on-ac
     Nivel de velocidad de reloj de gráficos Radeon.  Las alternativas
     son “low” (bajo), “mid” (medio), “high” (alto), “auto” (automático)
     y “default” (predeterminado).

     El valor predeterminado es ‘"high"’.

 -- parámetro de ‘tlp-configuration’: string radeon-power-profile-on-bat
     Igual que ‘radeon-power-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"low"’.

 -- parámetro de ‘tlp-configuration’: string radeon-dpm-state-on-ac
     Método de gestión de energía dinámica (DPM) de Radeon.  Las
     alternativas son “battery” (batería) y “performance” (rendimiento).

     El valor predeterminado es ‘"performance"’.

 -- parámetro de ‘tlp-configuration’: string radeon-dpm-state-on-bat
     Igual que ‘radeon-dpm-state-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"battery"’.

 -- parámetro de ‘tlp-configuration’: string radeon-dpm-perf-level-on-ac
     Nivel de rendimiento del DPM de Radeon.  Las alternativas son
     “auto” (automático), “low” (bajo) y “high” (alto).

     El valor predeterminado es ‘"auto"’.

 -- parámetro de ‘tlp-configuration’: string
          radeon-dpm-perf-level-on-bat
     Igual que ‘radeon-dpm-perf-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"auto"’.

 -- parámetro de ‘tlp-configuration’: on-off-boolean wifi-pwr-on-ac?
     Modo de ahorro de energía de Wifi.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘tlp-configuration’: on-off-boolean wifi-pwr-on-bat?
     Igual que ‘wifi-power-ac?’ pero en modo BAT (batería).

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: y-n-boolean wol-disable?
     Desactiva el encendido desde la red local (wake on LAN).

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          sound-power-save-on-ac
     Duración en segundos del plazo antes de activar el ahorro de
     energía de audio en dispositivos Intel HDA y AC97.  El valor 0
     desactiva el ahorro de energía.

     El valor predeterminado es ‘0’.

 -- parámetro de ‘tlp-configuration’: entero-no-negativo
          sound-power-save-on-bat
     Igual que ‘sound-powersave-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘1’.

 -- parámetro de ‘tlp-configuration’: y-n-boolean
          sound-power-save-controller?
     Desactiva el controlador en modo de ahorro de energía en
     dispositivos Intel HDA.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: boolean bay-poweroff-on-bat?
     Activa las unidades ópticas en UltraBay/MediaBay en modo BAT. La
     unidad puede volver a alimentarse liberando (y reinsertando) la
     palanca de eyección o presionando el botón de eyección de disco en
     modelos más modernos.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘tlp-configuration’: string bay-device
     Nombre de la unidad de dispositivos ópticos a apagar.

     El valor predeterminado es ‘"sr0"’.

 -- parámetro de ‘tlp-configuration’: string runtime-pm-on-ac
     Gestión de energía en tiempo de ejecución para dispositivos de bus
     PCI(e).  Las alternativas son “on” y “auto”.

     El valor predeterminado es ‘"on"’.

 -- parámetro de ‘tlp-configuration’: string runtime-pm-on-bat
     Igual que ‘runtime-pm-ac’ pero en modo BAT (batería).

     El valor predeterminado es ‘"auto"’.

 -- parámetro de ‘tlp-configuration’: boolean runtime-pm-all?
     Gestión de energía en tiempo de ejecución (Runtime Power
     Management) para todos los dispositivos del bus PCI(e), excepto los
     excluidos.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’:
          maybe-lista-cadena-separada-espacios runtime-pm-blacklist
     Excluye las direcciones de dispositivo PCI(e) especificadas de la
     gestión de energía en tiempo de ejecución (Runtime Power
     Management).

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: lista-cadena-separada-espacios
          runtime-pm-driver-blacklist
     Excluye los dispositivos PCI(e) asignados a los controladores
     especificados de la gestión de energía en tiempo de ejecución
     (Runtime Power Management).

 -- parámetro de ‘tlp-configuration’: boolean usb-autosuspend?
     Permite la suspensión automática de USB.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: maybe-string usb-blacklist
     Excluye los dispositivos especificados de la suspensión automática
     de USB.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: boolean usb-blacklist-wwan?
     Excluye los dispositivos WWAN de la suspensión automática de USB.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘tlp-configuration’: maybe-string usb-whitelist
     Incluye los dispositivos especificados en la suspensión automática
     de USB, incluso cuando están excluidos por el controlador o a
     través de ‘usb-blacklist-wwan?’.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: maybe-boolean
          usb-autosuspend-disable-on-shutdown?
     Activa la suspensión automática de USB antes del apagado.

     El valor predeterminado es ‘disabled’.

 -- parámetro de ‘tlp-configuration’: boolean
          restore-device-state-on-startup?
     Restablece el estado de los dispositivos de radio (bluetooth, wifi,
     wwan) previo al apagado durante el arranque del sistema.

     El valor predeterminado es ‘#f’

Daemon Thermald
...............

El módulo ‘(gnu services pm)’ proporciona una interfaz con thermald, un
servicio de escalado de frecuencia de la CPU que ayuda a prevenir el
sobrecalentamiento.

 -- Variable Scheme: thermald-service-type
     Este es el tipo de servicio para thermald
     (https://01.org/linux-thermal-daemon/), el daemon Thermal de Linux,
     que es responsable del control del estado térmico de los
     procesadores y la prevención del sobrecalentamiento.

 -- Tipo de datos: thermald-configuration
     Tipo de datos que representa la configuración de
     ‘thermald-service-type’.

     ‘adaptive?’ (default: ‘#f’)
          Use DPTF (Dynamic Power and Thermal Framework) adaptive tables
          when present.

     ‘ignore-cpuid-check?’ (predeterminado: ‘#f’)
          Ignora la comprobación de cpuid durante la comprobación de
          procesadores permitidos.

     ‘thermald’ (predeterminado: THERMALD)
          El objeto paquete de thermald.


File: guix.es.info,  Node: Servicios de audio,  Next: Servicios de virtualización,  Prev: Servicios de gestión de energía,  Up: Servicios

12.9.28 Servicios de audio
--------------------------

El módulo ‘(gnu services audio)’ proporciona un servicio para iniciar
MPD (el daemon de reproducción de música).

Daemon de reproducción de música (MPD)
......................................

El daemon de reproducción de música (MPD) es un servicio que puede
reproducir música mientras se controla desde la máquina local o sobre
una red por una multitud de clientes.

   El siguiente ejemplo muestra como se puede ejecutar ‘mpd’ como
‘"rober"’ en el puerto ‘6666’.  Usa pulseaudio para su salida.

     (service mpd-service-type
              (mpd-configuration
               (user "rober")
               (port "6666")))

 -- Variable Scheme: mpd-service-type
     El tipo de servicio para ‘mpd’.

 -- Tipo de datos: mpd-configuration
     Tipo de datos que representa la configuración de ‘mpd’.

     ‘user’ (predeterminada: ‘"mpd"’)
          Usuaria que ejecuta mpd.

     ‘music-dir’ (predeterminado: ‘"~/Music"’)
          El directorio para buscar archivos de música.

     ‘playlist-dir’ (predeterminado: ‘"~/.mpd/playlists"’)
          El directorio para almacenar listas de reproducción.

     ‘db-file’ (predeterminado: ‘"~/.mpd/tag_cache"’)
          La localización de la base de datos de música.

     ‘state-file’ (predeterminado: ‘"~/.mpd/state"’)
          La localización del archivo que almacena el estado actual de
          MPD.

     ‘sticker-file’ (predeterminado: ‘"~/.mpd/sticker.sql"’)
          La localización de la base de datos de pegatinas.

     ‘port’ (predeterminado: ‘"6600"’)
          Puerto sobre el que se ejecuta mpd.

     ‘address’ (predeterminada: ‘"any"’)
          Dirección a la que mpd se asociará.  Para usar un socket de
          dominio de Unix puede especificarse una ruta absoluta.

     ‘outputs’ (predeterminadas: ‘"(list (mpd-output))"’)
          Las salidas de audio que MPD puede usar.  De manera
          predeterminada es una salida de audio única usando pulseaudio.

 -- Tipo de datos: mpd-output
     Tipo de datos que representa una salida de audio de ‘mpd’.

     ‘name’ (predeterminado: ‘"MPD"’)
          Nombre de la salida de audio.

     ‘type’ (predeterminado: ‘"pulse"’)
          Tipo de la salida de audio.

     ‘enabled?’ (predeterminado: ‘#t’)
          Especifica si esta salida de audio se activa cuando se inicia
          MPD. De manera predeterminada se activan todas las salidas de
          audio.  Esta es la configuración predeterminada cuando no
          existe un archivo de estado; con un archivo de estado se
          restaura el estado anterior.

     ‘tags?’ (predeterminado: ‘#t’)
          Si se proporciona el valor ‘#f’ MPD no envia etiquetas a esta
          salida.  Es útil únicamente para módulos de salida que pueden
          recibir etiquetas, por ejemplo el módulo de salida ‘httpd’.

     ‘always-on?’ (predeterminado: ‘#f’)
          If set to ‘#t’, then MPD attempts to keep this audio output
          always open.  This may be useful for streaming servers, when
          you don’t want to disconnect all listeners even when playback
          is accidentally stopped.

     ‘mixer-type’
          Este campo acepta un símbolo que especifica que mezclador debe
          usarse para esta salida de audio: el mezclador ‘hardware’, el
          mezclador ‘software’, el mezclador ‘null’ (permite manejar el
          volumen pero sin ningún efecto; puede usarse para implementar
          un mezclador externo) o ningún mezclador (‘none’).

     ‘extra-options’ (predeterminadas: ‘'()’)
          Una lista asociativa de símbolos de opción con valores de
          cadenas que se añadirán al final de la configuración de las
          salidas de audio.

   El ejemplo siguiente muestra una configuración de ‘mpd’ que
proporciona una salida de retransmisión de audio por 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.es.info,  Node: Servicios de virtualización,  Next: Servicios de control de versiones,  Prev: Servicios de audio,  Up: Servicios

12.9.29 Servicios de virtualización
-----------------------------------

El módulo ‘(gnu services virtualization)’ proporciona servicios para los
daemon libvirt y virtlog, así como otros servicios relacionados con la
virtualización.

Daemon de Libvirt
.................

‘libvirtd’ is the server side daemon component of the libvirt
virtualization management system.  This daemon runs on host servers and
performs required management tasks for virtualized guests.

 -- Variable Scheme: libvirt-service-type
     Este es el tipo para el daemon de libvirt (https://libvirt.org).
     Su valor debe ser un objeto ‘libvirt-configuration’.

          (service libvirt-service-type
                   (libvirt-configuration
                    (unix-sock-group "libvirt")
                    (tls-port "16555")))

   Los campos disponibles de ‘libvirt-configuration’ son:

 -- parámetro de ‘libvirt-configuration’: package libvirt
     Paquete libvirt.

 -- parámetro de ‘libvirt-configuration’: boolean listen-tls?
     Opción para la escucha de conexiones seguras TLS en el puerto
     TCP/IP público.  Debe haberse proporcionado valor a ‘listen’ para
     que tenga algún efecto.

     Es necesario configurar una autoridad de certificación (CA) y
     emitir certificados de servidor antes de usar esta característica.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘libvirt-configuration’: boolean listen-tcp?
     Escucha de conexiones TCP sin cifrar en el puerto TCP/IP público.
     Debe haberse proporcionado valor a ‘listen’ para que tenga algún
     efecto.

     El uso del socket TCP necesita de manera predeterminada
     identificación SASL. Únicamente se permiten mecanismos SASL que
     implementen cifrado de datos.  Estos son DIGEST_MD5 y GSSAPI
     (Kerberos5).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘libvirt-configuration’: string tls-port
     Puerto en el que se aceptan conexiones seguras.  Puede ser un
     número de puerto o un nombre de servicio.

     El valor predeterminado es ‘"16514"’.

 -- parámetro de ‘libvirt-configuration’: string tcp-port
     Puerto en el que se aceptan conexiones inseguras.  Puede ser un
     número de puerto o un nombre de servicio.

     El valor predeterminado es ‘"16509"’.

 -- parámetro de ‘libvirt-configuration’: string listen-addr
     Dirección IP o nombre de máquina usado para las conexiones de
     clientes.

     El valor predeterminado es ‘"0.0.0.0"’.

 -- parámetro de ‘libvirt-configuration’: boolean mdns-adv?
     Opción que determina el anuncio mDNS del servicio libvirt.

     De manera alternativa puede desactivarse para todos los servicios
     en una máquina parando el daemon Avahi.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘libvirt-configuration’: string mdns-name
     Nombre predeterminado del anuncio mDNS. Debe ser único en la red de
     distribución inmediata.

     El valor predeterminado es ‘"Virtualization Host <hostname>"’.<

 -- parámetro de ‘libvirt-configuration’: string unix-sock-group
     Grupo propietario del socket de dominio de UNIX. Puede usarse para
     permitir a un conjunto de usuarias “de confianza” acceso a las
     funcionalidades de gestión sin convertirse en root.

     El valor predeterminado es ‘"root"’.

 -- parámetro de ‘libvirt-configuration’: string unix-sock-ro-perms
     Permisos del socket UNIX de sólo lectura(1).  Se usa únicamente
     para monitorizar el estado de las máquinas virtuales.

     El valor predeterminado es ‘"0777"’.

 -- parámetro de ‘libvirt-configuration’: string unix-sock-rw-perms
     Permisos del socket UNIX de lectura/escritura(2).  El valor
     predeterminado únicamente permite acceso a root.  Si PolicyKit se
     encuentra activo en el socket, el valor predeterminado cambiará
     para permitir acceso universal (es decir, 0777).

     El valor predeterminado es ‘"0770"’.

 -- parámetro de ‘libvirt-configuration’: string unix-sock-admin-perms
     Permisos del socket UNIX de administración.  El valor
     predeterminado únicamente permite acceso a la propietaria (root),
     no lo cambie a menos que esté completamente segura de a quién
     expone el acceso.

     El valor predeterminado es ‘"0777"’.

 -- parámetro de ‘libvirt-configuration’: string unix-sock-dir
     Directorio en el que los sockets se encuentran/crean.

     El valor predeterminado es ‘"/var/run/libvirt"’.

 -- parámetro de ‘libvirt-configuration’: string auth-unix-ro
     Esquema de identificación para los sockets de solo-lectura de UNIX.
     Los permisos predeterminados del socket permiten la conexión de
     cualquier usuaria.

     El valor predeterminado es ‘"polkit"’.

 -- parámetro de ‘libvirt-configuration’: string auth-unix-rw
     Esquema de identificación para los sockets de lectura/escritura de
     UNIX. Los permisos predeterminados del socket permiten la conexión
     únicamente a root.  Si se activó en la compilación de libvirt la
     interoperabilidad con PolicyKit, el valor predeterminado es usar la
     identificación “policykit”.

     El valor predeterminado es ‘"polkit"’.

 -- parámetro de ‘libvirt-configuration’: string auth-tcp
     Esquema de identificación para los sockets TCP. Si no activa SASL,
     todo el tráfico TCP estará en texto plano.  No lo haga más allá de
     un escenario de desarrollo/pruebas.

     El valor predeterminado es ‘"sasl"’.

 -- parámetro de ‘libvirt-configuration’: string auth-tls
     Esquema de identificación para los sockets TLS. Los sockets TLS ya
     se encuentran cifrados gracias a la capa TLS, y una identificación
     limitada se realiza con los certificados.

     También es posible hacer uso de cualquier mecanismo de
     identificación SASL proporcionando “sasl” en esta opción.

     El valor predeterminado es ‘"none"’.

 -- parámetro de ‘libvirt-configuration’: lista-opcional access-drivers
     Esquema de la API de control de acceso.

     De manera predeterminada una usuaria identificada puede acceder a
     todas las API. Los controladores de acceso pueden incluir
     restricciones de acceso sobre ello.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘libvirt-configuration’: string key-file
     Ruta del archivo con la clave del servidor.  Si se proporciona una
     cadena vacía, no se carga ninguna clave privada.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘libvirt-configuration’: string cert-file
     Ruta del archivo con la clave del servidor.  Si se proporciona una
     cadena vacía, no se carga ningún certificado.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘libvirt-configuration’: string ca-file
     Ruta del archivo con la clave del servidor.  Si se proporciona una
     cadena vacía, no se carga ningún certificado de CA.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘libvirt-configuration’: string crl-file
     Ruta de la lista de revocaciones de certificado.  Si se proporciona
     una cadena vacía, no se carga ninguna lista.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘libvirt-configuration’: boolean tls-no-sanity-cert
     Desactiva la verificación de los propios certificados del servidor.

     Cuando libvirtd arranca, realiza algunas comprobaciones básicas
     sobre sus propios certificados.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘libvirt-configuration’: boolean tls-no-verify-cert
     Desactiva la verificación de certificados de clientes.

     La verificación de certificados de cliente es el mecanismo primario
     de identificación.  Se rechazará cualquier cliente que no presente
     un certificado firmado por la autoridad de certificación (CA).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘libvirt-configuration’: lista-opcional
          tls-allowed-dn-list
     Lista de nombres distinguidos (DN) x509 permitidos.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘libvirt-configuration’: lista-opcional
          sasl-allowed-usernames
     Lista de nombres de usuaria SASL permitidos.  El formato para el
     nombre de la usuaria depende del mecanismo de identificación SASL.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘libvirt-configuration’: string tls-priority
     Cambia el valor de la cadena de prioridad de TLS predeterminada en
     tiempo de compilación.  El valor predeterminado habitualmente es
     ‘"NORMAL"’ a menos que se cambiase en tiempo de compilación.
     Proporcione este valor únicamente si desea que libvirt se desvíe de
     la configuración global predeterminada.

     El valor predeterminado es ‘"NORMAL"’.

 -- parámetro de ‘libvirt-configuration’: integer max-clients
     Número máximo de conexiones concurrentes de clientes permitidas en
     todos los sockets combinados.

     El valor predeterminado es ‘5000’.

 -- parámetro de ‘libvirt-configuration’: integer max-queued-clients
     Longitud máxima de la cola de conexiones a la espera de ser
     aceptadas por el daemon.  Fíjese que algunos protocolos que
     implementan la retransmisión pueden obedecer esto de manera que un
     intento posterior de conexión tenga éxito.

     El valor predeterminado es ‘1000’.

 -- parámetro de ‘libvirt-configuration’: integer max-anonymous-clients
     Longitud máxima de la cola de clientes aceptados pero no
     identificados todavía.  Proporcione el valor cero para desactivar
     esta característica.

     El valor predeterminado es ‘20’.

 -- parámetro de ‘libvirt-configuration’: integer min-workers
     Número de procesos de trabajo que se lanzarán inicialmente.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer max-workers
     Número máximo de hilos de trabajo.

     Si el número de clientes excede ‘min-workers’, se lanzan más hilos,
     hasta el límite ‘max-workers’.  Habitualmente se desea que
     ‘max-workers’ sea igual al número máximo de clientes permitido.

     El valor predeterminado es ‘20’.

 -- parámetro de ‘libvirt-configuration’: integer prio-workers
     Número de procesos de trabajo prioritarios.  Si todos los hilos de
     trabajo del conjunto previo se encuentran bloqueados, algunas
     llamadas marcadas como de alta prioridad (notablemente
     domainDestroy) pueden ejecutarse en este conjunto de hilos.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer max-requests
     Límite global total de llamadas RPC concurrentes.

     El valor predeterminado es ‘20’.

 -- parámetro de ‘libvirt-configuration’: integer max-client-requests
     Límite de peticiones concurrentes desde una única conexión de
     cliente.  Para evitar que un cliente monopolice el servidor esto
     debe ser una pequeña fracción de los parámetros globales
     “max_requests” y “max_workers”.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer admin-min-workers
     Igual que ‘min-workers’ pero para la interfaz de administración.

     El valor predeterminado es ‘1’.

 -- parámetro de ‘libvirt-configuration’: integer admin-max-workers
     Igual que ‘max-workers’ pero para la interfaz de administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer admin-max-clients
     Igual que ‘max-clients’ pero para la interfaz de administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer
          admin-max-queued-clients
     Igual que ‘max-queued-clients’ pero para la interfaz de
     administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer
          admin-max-client-requests
     Igual que ‘max-client-requests’ pero para la interfaz de
     administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer log-level
     Nivel de registro.  4 errores, 3 avisos, 2 información, 1
     depuración.

     El valor predeterminado es ‘3’.

 -- parámetro de ‘libvirt-configuration’: string log-filters
     Filtros del registro.

     Un filtro permite la selección de un nivel de registro diferente
     para una categoría dada de registros.  El formato del filtro es uno
     de los siguientes:

        • x:nombre

        • x:+nombre

     donde ‘nombre’ es una cadena contra la que se compara la categoría
     proporcionada en la llamada ‘VIR_LOG_INIT()’ al principio de cada
     archivo de fuentes de libvirt, por ejemplo ‘"remote"’, ‘"qemu"’ o
     ‘"util.json"’ (el nombre en el filtro puede ser una subcadena del
     nombre completo de la categoría, para aceptar múltiples categorías
     con nombres similares), el prefijo opcional ‘"+"’ indica a libvirt
     que registre la pila de llamadas en cada mensaje con el nombre
     correspondiente, y ‘x’ es el nivel mínimo de los mensajes que deben
     registrarse:

        • 1: DEBUG (depuración)

        • 2: INFO (información)

        • 3: WARNING (aviso)

        • 4: ERROR

     Se pueden definir en una única sentencia múltiples filtros,
     únicamente hace falta separarlos por espacios.

     El valor predeterminado es ‘"3:remote 4:event"’.

 -- parámetro de ‘libvirt-configuration’: string log-outputs
     Salidas de log.

     Una salida es uno de esos lugares para almacenar información de
     logging.  El formato para una salida puede ser:

     ‘x:stderr’
          la salida va a stderr

     ‘x:syslog:nombre’
          usa syslog para la salida y usa el nombre proporcionado como
          identificador

     ‘x:file:ruta_archivo’
          encamina la salida a un archivo, con la ruta proporcionada

     ‘x:journald’
          usa el sistema de logging journald

     En todos los casos el prefijo x es el nivel mínimo, que actúa como
     filtro

        • 1: DEBUG (depuración)

        • 2: INFO (información)

        • 3: WARNING (aviso)

        • 4: ERROR

     Se pueden definir salidas múltiples, únicamente deben separarse por
     espacios.

     El valor predeterminado es ‘"3:stderr"’.

 -- parámetro de ‘libvirt-configuration’: integer audit-level
     Permite la alteración del uso del sistema de auditoría.

        • 0: desactiva la auditoría

        • 1: activa la auditoría, únicamente si está activado en la
          máquina

        • 2: activa la auditoría, y sale si está desactivada en la
          máquina.

     El valor predeterminado es ‘1’.

 -- parámetro de ‘libvirt-configuration’: boolean audit-logging
     Envía los mensajes de auditoría a través de la infraestructura de
     registro de libvirt.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘libvirt-configuration’: string-opcional host-uuid
     Host UUID.  UUID must not have all digits be the same.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘libvirt-configuration’: string host-uuid-source
     Fuente de lectura del UUID de la máquina anfitriona.

        • ‘smbios’: obtiene el UUID de ‘dmidecode -s system-uuid’

        • ‘machine-id’: obtiene el UUID de ‘/etc/machine-id’

     Si ‘dmidecode’ no proporciona un UUID válido, se generará un UUID
     temporal.

     El valor predeterminado es ‘"smbios"’.

 -- parámetro de ‘libvirt-configuration’: integer keepalive-interval
     Un mensaje “keepalive” se envía al cliente tras
     ‘keepalive_interval’ segundos de inactividad para comprobar si el
     cliente todavía responde.  Si se proporciona el valor -1, libvirtd
     nunca enviará peticiones “keepalive”; no obstante los clientes
     todavía pueden mandarlas y el daemon enviará las respuestas.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer keepalive-count
     Número máximo de mensajes “keepalive” que se permite enviar a un
     cliente sin obtener respuesta antes de considerar que se ha roto la
     conexión.

     En otras palabras, la conexión se cierra automáticamente tras
     ‘keepalive_interval * (keepalive_count + 1)’ segundos tras la
     última recepción de un mensaje desde el cliente.  Cuando
     ‘keepalive_count’ tiene valor 0, las conexiones se cerrarán
     automáticamente tras ‘keepalive-interval’ segundos de inactividad
     sin mandar ningún mensaje “keepalive”.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer
          admin-keepalive-interval
     Igual que la opción anterior pero para la interfaz de
     administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer admin-keepalive-count
     Igual que la opción anterior pero para la interfaz de
     administración.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘libvirt-configuration’: integer ovs-timeout
     Plazo máximo para las llamadas a Open vSwitch.

     La utilidad ‘ovs-vsctl’ se usa para la configuración y su opción de
     plazo máximo (timeout) tiene un valor de 5 segundos de manera
     predeterminada para evitar que esperas potencialmente infinitas
     bloqueen libvirt.

     El valor predeterminado es ‘5’.

Daemon Virtlog
..............

El servicio virtlogd es un daemon del que se compone el lado servidor de
libvirt cuya finalidad es la gestión del registro de las consolas de las
máquinas virtuales.

   This daemon is not used directly by libvirt client applications,
rather it is called on their behalf by ‘libvirtd’.  By maintaining the
logs in a standalone daemon, the main ‘libvirtd’ daemon can be restarted
without risk of losing logs.  The ‘virtlogd’ daemon has the ability to
re-exec() itself upon receiving ‘SIGUSR1’, to allow live upgrades
without downtime.

 -- Variable Scheme: virtlog-service-type
     Este es el tipo del daemon virtlog.  Su valor debe ser un objeto
     ‘virtlog-configuration’.

          (service virtlog-service-type
                   (virtlog-configuration
                    (max-clients 1000)))

 -- Variable: ‘libvirt’ parameter package libvirt
     Paquete libvirt.

 -- parámetro de ‘virtlog-configuration’: integer log-level
     Nivel de registro.  4 errores, 3 avisos, 2 información, 1
     depuración.

     El valor predeterminado es ‘3’.

 -- parámetro de ‘virtlog-configuration’: string log-filters
     Filtros del registro.

     Un filtro permite la selección de un nivel de registro diferente
     para una categoría dada de registros.  El formato del filtro es uno
     de los siguientes:

        • x:nombre

        • x:+nombre

     donde ‘nombre’ es una cadena contra la que se compara la categoría
     proporcionada en la llamada ‘VIR_LOG_INIT()’ al principio de cada
     archivo de fuentes de libvirt, por ejemplo "remote", "qemu" o
     "util.json" (el nombre en el filtro puede ser una subcadena del
     nombre completo de la categoría, para aceptar múltiples categorías
     con nombres similares), el prefijo opcional "+" indica a libvirt
     que registre la pila de llamadas en cada mensaje con el nombre
     correspondiente, y ‘x’ es el nivel mínimo de los mensajes que deben
     registrarse:

        • 1: DEBUG (depuración)

        • 2: INFO (información)

        • 3: WARNING (aviso)

        • 4: ERROR

     Se pueden definir en una única sentencia múltiples filtros,
     únicamente hace falta separarlos por espacios.

     El valor predeterminado es ‘"3:remote 4:event"’.

 -- parámetro de ‘virtlog-configuration’: string log-outputs
     Salidas de log.

     Una salida es uno de esos lugares para almacenar información de
     logging.  El formato para una salida puede ser:

     ‘x:stderr’
          la salida va a stderr

     ‘x:syslog:nombre’
          usa syslog para la salida y usa el nombre proporcionado como
          identificador

     ‘x:file:ruta_archivo’
          encamina la salida a un archivo, con la ruta proporcionada

     ‘x:journald’
          usa el sistema de logging journald

     En todos los casos el prefijo x es el nivel mínimo, que actúa como
     filtro

        • 1: DEBUG (depuración)

        • 2: INFO (información)

        • 3: WARNING (aviso)

        • 4: ERROR

     Se pueden definir salidas múltiples, únicamente deben separarse por
     espacios.

     El valor predeterminado es ‘"3:stderr"’.

 -- parámetro de ‘virtlog-configuration’: integer max-clients
     Número máximo de conexiones concurrentes de clientes permitidas en
     todos los sockets combinados.

     El valor predeterminado es ‘1024’.

 -- parámetro de ‘virtlog-configuration’: integer max-size
     Tamaño máximo del archivo antes de pasar al siguiente.

     El valor predeterminado es ‘2MB’.

 -- parámetro de ‘virtlog-configuration’: integer max-backups
     Número máximo de archivos de backup que se deben mantener.

     El valor predeterminado es ‘3’.

Emulación transparente con QEMU
...............................

‘qemu-binfmt-service-type’ proporciona la capacidad de emular
transparentemente programas binarios construidos para arquitecturas
diferentes—por ejemplo, le permite ejecutar de manera transparente un
programa de ARMv7 en una máquina x86_64.  Esto se consigue mediante la
combinación del emulador QEMU (https://www.qemu.org) y la característica
‘binfmt_misc’ del núcleo Linux.  Esta característica únicamente le
permite emular GNU/Linux en una arquitectura diferente, pero más
adelante puede ver como implementar también GNU/Hurd.

 -- Variable Scheme: qemu-binfmt-service-type
     Este es el tipo del servicio de emulación transparente QEMU/binfmt.
     Su valor debe ser un objeto ‘qemu-binfmt-configuration’, que
     especifica el paquete QEMU usado así como las arquitecturas que se
     desean emular:

          (service qemu-binfmt-service-type
                   (qemu-binfmt-configuration
                     (platforms (lookup-qemu-platforms "arm" "aarch64"))))

     En este ejemplo se activa la emulación transparente para las
     plataformas ARM y aarch64.  La ejecución de ‘herd stop qemu-binfmt’
     la desactiva, y la ejecución de ‘herd start qemu-binfmt’ la vuelve
     a activar (*note the ‘herd’ command: (shepherd)Invoking herd.).

 -- Tipo de datos: qemu-binfmt-configuration
     Esta es la configuración para el servicio ‘qemu-binfmt’.

     ‘platforms’ (predeterminadas: ‘'()’)
          Lista de plataformas de QEMU emuladas.  Cada elemento debe ser
          un “objeto de plataforma” como los devueltos por
          ‘lookup-qemu-platforms’ (véase a continuación).

          Por ejemplo, supongamos que está en una máquina x86_64 y tiene
          este servicio:

               (service qemu-binfmt-service-type
                        (qemu-binfmt-configuration
                          (platforms (lookup-qemu-platforms "arm"))))

          Puede ejecutar:

               guix build -s armhf-linux inkscape

          and it will build Inkscape for ARMv7 _as if it were a native
          build_, transparently using QEMU to emulate the ARMv7 CPU.
          Pretty handy if you’d like to test a package build for an
          architecture you don’t have access to!

     ‘qemu’ (predeterminado: ‘qemu’)
          El paquete QEMU usado.

 -- Procedimiento Scheme: lookup-qemu-platforms PLATAFORMAS...
     Devuelve la lista de objetos de plataforma de QEMU que corresponden
     a PLATAFORMAS....  PLATAFORMAS debe ser una lista de cadenas que
     correspondan con nombres de plataforma, como ‘"arm"’, ‘"sparc"’,
     ‘"mips64el"’, etcétera.

 -- Procedimiento Scheme: qemu-platform? OBJ
     Devuelve verdadero si OBJ es un objeto de plataforma.

 -- Procedimiento Scheme: qemu-platform-name PLATAFORMA
     Devuelve el nombre de PLATAFORMA—una cadena como ‘"arm"’.

QEMU Guest Agent
................

The QEMU guest agent provides control over the emulated system to the
host.  The ‘qemu-guest-agent’ service runs the agent on Guix guests.  To
control the agent from the host, open a socket by invoking QEMU with the
following arguments:

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

   This creates a socket at ‘/tmp/qga.sock’ on the host.  Once the guest
agent is running, you can issue commands with ‘socat’:

     $ guix shell socat -- socat unix-connect:/tmp/qga.sock stdio
     {"execute": "guest-get-host-name"}
     {"return": {"host-name": "guix"}}

   See QEMU guest agent documentation
(https://wiki.qemu.org/Features/GuestAgent) for more options and
commands.

 -- Scheme Variable: qemu-guest-agent-service-type
     Service type for the QEMU guest agent service.

 -- Data Type: qemu-guest-agent-configuration
     Configuration for the ‘qemu-guest-agent’ service.

     ‘qemu’ (predeterminado: ‘qemu-minimal’)
          El paquete QEMU usado.

     ‘device’ (default: ‘""’)
          File name of the device or socket the agent uses to
          communicate with the host.  If empty, QEMU uses a default file
          name.

Hurd en una máquina virtual
...........................

El servicio ‘hurd-vm’ implementa la ejecución de GNU/Hurd en una máquina
virtual (VM), llamado “childhurd”.  Este servicio está destinado para su
uson GNU/Linux y la configuración de sistema operativo de GNU/Hurd se
compila de manera cruzada.  La máquina virtual es un servicio de
Shepherd al que se puede hacer referencia a través de los nombres
‘hurd-vm’ y ‘childhurd’ y se puede controlar mediante órdenes como las
siguientes:

     herd start hurd-vm
     herd stop childhurd

   Cuando el servicio se encuentra en ejecución, puede ver su consola a
través de una conexión con un cliente VNC, por ejemplo con:

     guix shell tigervnc-client -- vncviewer localhost:5900

   La configuración predeterminada (véase ‘hurd-vm-configuration’ a
continuación) lanza un servidor del intérprete de órdenes seguro (SSH)
en su sistema GNU/Hurd, el cual QEMU (el emulador de máquina virtual)
redirige al puerto 10222 de la máquina anfitriona.  Por tanto se puede
conectar a Hurd a través de SSH con:

     ssh root@localhost -p 10022

   childhurd es volátil y carece de estado: comienza con un sistema de
archivos raíz creado de cero cada vez que lo reinicia.  No obstante de
manera predeterminada todos los archivos en la ruta ‘/etc/childhurd’ de
la máquina anfitriona se copian al sistema de archivos raíz de childhurd
cuando arranca.  Esto permite que configure “secretos” dentro de la
máquina virtual: claves de SSH de la máquina, claves de sustituciones
autorizadas, etcétera—véase la explicación de ‘secret-root’ a
continuación.

 -- Variable Scheme: hurd-vm-service-type
     El tipo del servicio que ejecuta Hurd en una máquina virtual.  Su
     valor debe ser un objeto ‘hurd-vm-configuration’, que especifica el
     sistema operativo (*note Referencia de operating-system::) y el
     tamaño del disco para la máquina virtual de Hurd, el paquete de
     QEMU usado así como las opciones de ejecución.

     Por ejemplo:

          (service hurd-vm-service-type
                   (hurd-vm-configuration
                    (disk-size (* 5000 (expt 2 20))) ;5G
                    (memory-size 1024)))             ;1024MiB

     crearía una imagen de disco suficientemente grande para construir
     GNU Hello, con algo de memoria adicional.

 -- Tipo de datos: hurd-vm-configuration
     Tipo de datos que representa la configuración de
     ‘hurd-vm-service-type’.

     ‘os’ (predeterminado: %HURD-VM-OPERATING-SYSTEM)
          El sistema operativo instanciado.  El valor predeterminado es
          un sistema mínimo con un daemon del intérprete de comandos
          seguro OpenSSH configurado de forma permisiva asociado al
          puerto 2222 (*note ‘openssh-service-type’: Servicios de red.).

     ‘qemu’ (predeterminado: ‘qemu-minimal’)
          El paquete QEMU usado.

     ‘image’ (predeterminado: HURD-VM-DISK-IMAGE)
          El procedimiento usado para construir la imagen de disco
          construida a partir de esta configuración.

     ‘disk-size’ (predeterminado: ‘'guess’)
          El tamaño de la imagen de disco.

     ‘memory-size’ (predeterminado: ‘512’)
          El tamaño de la memoria de la máquina virtual en mebibytes.

     ‘options’ (predeterminadas: ‘'("--snapshot")’)
          Opciones adicionales para ejecutar QEMU.

     ‘id’ (predeterminado: ‘#f’)
          Si se proporciona un valor, debe ser un entero positivo no
          nulo usado para parametrizar las instancias Childhurd.  Se
          añade al nombre del servicio, por ejemplo ‘childhurd1’.

     ‘net-options’ (predeterminado: HURD-VM-NET-OPTIONS)
          El procedimiento usado para producir la lista de opciones de
          red para QEMU.

          De manera predeterminada produce

               '("--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"))

          con los siguientes puertos redirigidos:

               SECRETS-PORT: (+ 11004 (* 1000 ID))
               SSH-PORT: (+ 10022 (* 1000 ID))
               VNC-PORT: (+ 15900 (* 1000 ID))

     ‘secret-root’ (predeterminado: ‘/etc/childhurd’)
          El directorio raíz que contiene los secretos fuera-de-banda
          que serán instalados en childhurd cuando se ejecute.  Los
          childhurd son volátiles lo que significa que cada arranque los
          secretos como las claves de SSH de la máquina y la clave de
          firma de Guix se regeneran.

          Si el directorio ‘/etc/childhurd’ no existe, el servicio
          ‘secret-service’ que se ejecuta en childhurd recibirá una
          lista vacía de secretos.

          De manera predeterminada el servicio crea ‘/etc/childhurd’ con
          los siguientes secretos no volátiles, a no ser que ya existan:

               /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

          Estos archivos se envían automáticamente a la máquina virtual
          de Hurd cuando arranca, incluyendo sus permisos.

          Tener todos estos archivos en un único lugar significa que
          únicamente faltan un par de detalles para permitir a la
          máquina anfitriona delegar las construcciones de ‘i586-gnu’ en
          childhurd:

            1. Autorizar la clave de childhurd en la máquina anfitriona
               de modo que esta acepte las construcciones que provengan
               de childhurd, lo que puede hacerse de este modo:

                    guix archive --authorize < \
                      /etc/childhurd/etc/guix/signing-key.pub

            2. Añadir childhurd a ‘/etc/guix/machines.scm’ (*note
               Configuración de delegación del daemon::).

          Estamos trabajando para que esto se haga de forma
          automática—¡póngase en contacto con nosotras a través de
          <guix-devel@gnu.org> para hablar sobre ello!

   Tenga en cuenta que la imagen de la máquina virtual es volátil, es
decir, los contenidos se pierden cuando se para.  Si desea una imagen
que mantenga el estado puede modificar la configuración de ‘image’ y
‘options’ sin la opción ‘--snapshot’ usando algo parecido a esto:

     (service hurd-vm-service-type
              (hurd-vm-configuration
               (image   (const "/no/almacen/y/perm/escritura/hurd.img"))
               (options '())))

Ganeti
......

     Nota: Este servicio se considera experimental.  Las opciones de
     configuración pueden cambiar de manera incompatible con versiones
     previas, y no todas las características han sido probadas en
     profundidad.  Se recomienda a quienes usen este servicio que
     compartan su experiencia en <guix-devel@gnu.org>.

   Ganeti es un sistema de gestión de máquinas virtuales.  Está diseñado
para mantener máquinas virtuales ejecutándose en un cluster de
servidores incluso en casos de fallos de hardware, y para facilitar las
tareas de mantenimiento y recuperación.  Consiste en múltiples servicios
que se describen a lo largo de esta sección.  Además del servicio de
Ganeti, necesitará el servicio OpenSSH (*note ‘openssh-service-type’:
Servicios de red.), y actualizar el archivo ‘/etc/hosts’ (*note
‘hosts-file’: Referencia de operating-system.) con el nombre del cluster
y su dirección (o usar un servidor DNS).

   Todos los nodos que participan en el cluster de Ganeti deben tener la
misma configuración de Ganeti y en el archivo ‘/etc/hosts’.  A
continuación se encuentra un ejemplo de configuración para un nodo del
cluster de Ganeti que implementa varios motores de almacenamiento, e
instala los “proveedores de sistema operativo” ‘debootstrap’ y ‘guix’:

     (use-package-modules virtualization)
     (use-service-modules base ganeti networking ssh)
     (operating-system
       ;; ...
       (host-name "nodo1")
       (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   nodo1.example.com nodo1
     192.168.1.202   nodo2.example.com nodo2
     ")))

       ;; Install QEMU so we can use KVM-based instances, and LVM, DRBD and Ceph
       ;; in order to use the "plain", "drbd" and "rbd" storage backends.
       (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 uses SSH to communicate between nodes.
                      (service openssh-service-type
                               (openssh-configuration
                                (permit-root-login 'prohibit-password)))

                      (service ganeti-service-type
                               (ganeti-configuration
                                ;; Esta lista especifica las rutas del
                                ;; sistema de archivos permitidas para el
                                ;; almacenamiento de imágenes de máquinas
                                ;; viruales.
                                (file-storage-paths '("/srv/ganeti/almacenamiento"))
                                ;; Esta variable configura una única
                                ;; "variación" tanto para Debootstrap como
                                ;; Guix que funciona con KVM.
                                (os %default-ganeti-os))))
                %base-services)))

   Users are advised to read the Ganeti administrators guide
(https://docs.ganeti.org/docs/ganeti/3.0/html/admin.html) to learn about
the various cluster options and day-to-day operations.  There is also a
blog post
(https://guix.gnu.org/blog/2020/running-a-ganeti-cluster-on-guix/)
describing how to configure and initialize a small cluster.

 -- Variable Scheme: ganeti-service-type
     Tipo de servicio que incluye todos los distintos servicios que los
     nodos Ganeti deben ejecutar.

     Su valor es un objeto ‘ganeti-configuration’ que define usado para
     las operaciones de línea de órdenes, así como la configuración para
     varios daemon.  Las rutas de almacenamiento permitidas y los
     sistemas operativos disponibles para hospedar también se configuran
     a través de este tipo de datos.

 -- Tipo de datos: ganeti-configuration
     El servicio ‘ganeti’ proporciona las siguientes opciones de
     configuración:

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado.  Dicho paquete se instala en el
          perfil del sistema y hace que las órdenes ‘gnt-cluster’,
          ‘gnt-instance’, etcétera, estén disponibles.  Tenga en cuenta
          que el valor especificado aquí no afecta a otros servicios ya
          que cada uno hace referencia a su paquete ‘ganeti’ específico
          (véase a continuación).

     ‘noded-configuration’ (predeterminado: ‘(ganeti-noded-configuration)’)
     ‘confd-configuration’ (predeterminado: ‘(ganeti-confd-configuration)’)
     ‘wconfd-configuration’ (predeterminado: ‘(ganeti-wconfd-configuration)’)
     ‘luxid-configuration’ (predeterminado: ‘(ganeti-luxid-configuration)’)
     ‘rapi-configuration’ (predeterminado: ‘(ganeti-rapi-configuration)’)
     ‘kvmd-configuration’ (predeterminado: ‘(ganeti-kvmd-configuration)’)
     ‘mond-configuration’ (predeterminado: ‘(ganeti-mond-configuration)’)
     ‘metad-configuration’ (predeterminado: ‘(ganeti-metad-configuration)’)
     ‘watcher-configuration’ (predeterminado: ‘(ganeti-watcher-configuration)’)
     ‘cleaner-configuration’ (predeterminado: ‘(ganeti-cleaner-configuration)’)

          Estas opciones controlan los distintos daemon y trabajos de
          cron que se distribuyen con Ganeti.  Los posibles valores se
          describen en detalle a continuación.  Para modificar el valor
          de un elemento de la configuración se debe usar el tipo de
          configuración para dicho servicio:

               (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’ (predeterminada: ‘'()’)
          Lista de directorios permitidos para el motor de
          almacenamiento de archivos.

     ‘os’ (predeterminado: ‘%default-ganeti-os’)
          Lista de registros ‘<ganeti-os>’.

     En esencia ‘ganeti-service-type’ es una abreviación para declara
     cada uno de los servicios individualmente:

          (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)

     Además de una extensión del servicio ‘etc-service-type’ que
     configura el motor de almacenamiento de archivos y las variantes de
     sistema operativo.

 -- Tipo de datos: ganeti-os
     Tipo de datos adecuado para proporcionarse como parámetro ‘os’ de
     ‘ganeti-configuration’.  Tiene los siguientes parámetros:

     ‘name’
          Nombre para este proveedor de sistema operativo.  Solo se usa
          para especificar dónde termina la configuración.  Proporcionar
          el valor “debootstrap” indica la creación de
          ‘/etc/ganeti/instance-debootstrap’.

     ‘extension’ (default: ‘#f’)
          The file extension for variants of this OS type.  For example
          ‘.conf’ or ‘.scm’.  It will be appended to the variant file
          name if set.

     ‘variants’ (predeterminadas: ‘'()’)
          This must be either a list of ‘ganeti-os-variant’ objects for
          this OS, or a “file-like” object (*note file-like objects:
          Expresiones-G.) representing the variants directory.

          To use the Guix OS provider with variant definitions residing
          in a local directory instead of declaring individual variants
          (see GUIX-VARIANTS below), you can do:

               (ganeti-os
                (name "guix")
                (variants (local-file "ganeti-guix-variants"
                                      #:recursive? #true)))

          Note that you will need to maintain the ‘variants.list’ file
          (see ‘ganeti-os-interface(7)
          (https://docs.ganeti.org/docs/ganeti/3.0/man/ganeti-os-interface.html)’)
          manually in this case.

 -- Tipo de datos: ganeti-os-variant
     Tipo de datos que representa una variante de SO Ganeti.  Este tipo
     tiene los siguientes parámetros:

     ‘name’
          El nombre de esta variación.

     ‘configuration’
          Un archivo de configuración para esta variación.

 -- Variable Scheme: %default-debootstrap-hooks
     Esta variable contiene extensiones (“hook”) para la configuración
     de la red y el cargador de arranque GRUB.

 -- Variable Scheme: %default-debootstrap-extra-pkgs
     Esta variable contiene una lista de paquetes adecuada para una
     máquina completamente virtualizada.

 -- Tipo de datos: debootstrap-configuration

     Este tipo de datos crea archivos de configuración adecuados para la
     orden de generación de sistemas operativos debootstrap.

     ‘hooks’ (predeterminada: ‘%default-debootstrap-hooks’)
          Cuando no es ‘#f’ debe ser una expresión-G que especifique el
          directorio con los guiones que deberán ejecutarse cuando se
          instale el sistema operativo.  También puede ser una lista de
          pares ‘(nombre . obj-tipo-archivo)’.  Por ejemplo:

               `((99-hola-mundo . ,(plain-file "#!/bin/sh\necho '¡Hola mundo!'")))

          Esto crea un directorio con un ejecutable que se llama
          ‘99-hola-mundo’ y se ejecuta cada vez que se instale esta
          variación.  Si se proporciona ‘#f’, se usarán los archivos del
          directorio ‘/etc/ganeti/instance-debootstrap/hooks’, si existe
          alguno.
     ‘proxy’ (predeterminado: ‘#f’)
          Valor opcional de la pasarela HTTP usada.
     ‘mirror’ (predeterminado: ‘#f’)
          El servidor espejo de Debian.  Habitualmente es algo como
          ‘http://ftp.no.debian.org/debian’.  El valor predeterminado
          cambia dependiendo de la distribución.
     ‘arch’ (predeterminada: ‘#f’)
          La arquitectura de dpkg.  Proporcione ‘armhf’ para generar con
          debootstrap una instancia de ARMv7 en una máquina AArch64.  El
          valor predeterminado corresponde a la arquitectura del sistema
          en uso.
     ‘suite’ (predeterminada: ‘"stable"’)
          Si se proporciona debe ser el identificador de una entrega o
          “suite” de distribución de Debian, como por ejemplo ‘buster’ o
          ‘focal’.  Si se proporciona ‘#f’, se usael valor
          predeterminado del proveedor de sistema operativo.
     ‘extra-pkgs’ (predeterminados: ‘%default-debootstrap-extra-pkgs’)
          Lista de paquetes adicionales que dpkg instala junto al
          sistema mínimo.
     ‘components’ (predeterminado: ‘#f’)
          Si se proporciona un valor debe ser una lista de “componentes”
          de repositorio de Debian.  Por ejemplo ‘'("main" "contrib")’.
     ‘generate-cache?’ (predeterminado: ‘#t’)
          Determina si se almacena en caché de manera automática el
          archivo de debootstrap que se haya generado.
     ‘clean-cache’ (predeterminado: ‘14’)
          Descarta el contenido de la caché tras este número de días.
          Use ‘#f’ para no descartar contenido de la caché nunca.
     ‘partition-style’ (predeterminado: ‘'msdos’)
          Tipo de partición creado.  Cuando se proporciona un valor debe
          ser ‘'msdos’, ‘'none’ o una cadena.
     ‘partition-alignment’ (predeterminada: ‘2048’)
          Alineación de la partición en sectores.

 -- Procedimiento Scheme: debootstrap-variant NOMBRE CONFIGURACIÓN
     Procedimiento auxiliar que crea un registro ‘ganeti-os-variant’.
     Toma dos parámetros: un nombre y un objeto
     ‘debootstrap-configuration’.

 -- Procedimiento Scheme: debootstrap-os VARIANTES...
     Procedimiento auxiliar que crea un registro ‘ganeti-os’.  Toma como
     parámetro una lista de variaciones creada con
     ‘debootstrap-variant’.

 -- Procedimiento Scheme: guix-variant NOMBRE CONFIGURACIÓN
     Procedimiento auxiliar que crea un registro ‘ganeti-os-variant’
     para ser usado por el proveedor de sistema operativo Guix.  Toma
     como parámetros un nombre y una expresión-G que devuelve un objeto
     “tipo-archivo” (*note objetos “tipo-archivo”: Expresiones-G.) que
     contiene configuración para el sistema Guix.

 -- Procedimiento Scheme: guix-os VARIANTES...
     Procedimiento auxiliar que crea un registro ‘ganeti-os’.  Toma como
     parámetros una lista de variaciones producida por ‘guix-variant’.

 -- Variable Scheme: %default-debootstrap-variants
     Variable de conveniencia para que el proveedor debootstrap funcione
     “automágicamente” sin que quienes lo usan tengan que declarar
     variaciones manualmente.  Contiene una única variación de
     debootstrap con la configuración predeterminada:

          (list (debootstrap-variant
                 "default"
                 (debootstrap-configuration)))

 -- Variable Scheme: %default-guix-variants
     Variable de conveniencia para que el proveedor de sistema operativo
     Guix funcione sin ninguna configuración adicional.  Crea una
     máquina virtual que tiene un servidor SSH, consola serie y autoriza
     las claves de SSH de las máquinas de Ganeti.

          (list (guix-variant
                 "default"
                 (file-append ganeti-instance-guix
                              "/share/doc/ganeti-instance-guix/examples/dynamic.scm")))

   Se pueden implementar proveedores de SO no disponibles en Guix
mediante la extensión de los registros ‘ganeti-os’ y ‘ganeti-os-variant’
de manera apropiada.  Por ejemplo:

     (ganeti-os
      (name "personalizado")
      (extension ".conf")
      (variants
       (list (ganeti-os-variant
              (name "cosa")
              (configuration (plain-file "archivo" "Esto va bien"))))))

   Este ejemplo crearía
‘/etc/ganeti/instance-personalizado/variants/cosa.conf’, el cual apunta
a un archivo en el almacén cuyo contenido es ‘esto va bien’.  También se
crearía ‘/etc/ganeti/instance-personalizado/variants/variants.list’ con
el contenido ‘cosa’.

   Obviamente es posible que esto no funcione con todos los proveedores
de sistema operativo existentes.  Si está interfaz le está limitando en
su implementación, por favor, contacte con <guix-devel@gnu.org>.

   El resto de esta sección documenta los distintos servicios incluidos
en ‘ganeti-service-type’.

 -- Variable Scheme: ganeti-noded-service-type
     ‘ganeti-noded’ es el daemon responsable de las funciones
     específicas del nodo dentro del sistema Ganeti.  El valor de este
     servicio debe ser un objeto ‘ganeti-noded-configuration’.

 -- Tipo de datos: ganeti-noded-configuration
     Esta es la configuración para el servicio ‘ganeti-noded’.

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘port’ (predeterminado: ‘1811’)
          Puerto TCP en el que escucha el daemon del nodo a la espera de
          peticiones a través de la red.

     ‘address’ (predeterminado: ‘"0.0.0.0"’)
          La dirección de red a la que el daemon se enlaza.  La
          dirección predeterminada significa que el daemon se enlaza a
          todas las direcciones disponibles.

     ‘interface’ (predeterminado: ‘#f’)
          En caso de proporcionarse un valor, debe especificar el nombre
          de la interfaz de red (por ejemplo, ‘eth0’ a la que el daemon
          se enlaza.

     ‘max-clients’ (predeterminado: ‘20’)
          Establece un límite en el número máximo de conexiones
          simultaneas de clientes que el daemon manejará.  Las
          conexiones que excedan dicho número se aceptan, pero no se
          envía respuesta hasta que hayan cerrado suficientes
          conexiones.

     ‘ssl?’ (predeterminado: ‘#t’)
          Determina si se usa SSL/TLS para cifrar las comunicaciones a
          través de la red.  El cluster proporciona automáticamente el
          certificado y se puede rotar con ‘gnt-cluster renew-crypto’.

     ‘ssl-key’ (predeterminado: ‘"/var/lib/ganeti/server.pem"’)
          Puede usarse para proporcionar una clave de cifrado específica
          para comunicaciones TLS.

     ‘ssl-cert’ (predeterminado: ‘"/var/lib/ganeti/server.pem"’)
          Puede usarse para proporcionar un certificado específico para
          comunicaciones TLS.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.  Tenga en cuenta que esto puede
          exponer detalles de cifrado en los archivos de registro, por
          lo que debe usarse con precaución.

 -- Variable Scheme: ganeti-confd-service-type
     ‘ganeti-confd’ responde a las consultas relacionadas con la
     configuración del cluster Ganeti.  El propósito de este daemon es
     tener una forma rápida y con alta disponibilidad de consultar los
     valores de configuración del cluster.  Se activa de manera
     automática en todas las máquinas “candidatas de ser coordinadoras”.
     El valor de este servicio debe ser un objeto
     ‘ganeti-confd-configuration’.

 -- Tipo de datos: ganeti-confd-configuration
     Esta es la configuración para el servicio ‘ganeti-confd’.

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘port’ (predeterminado: ‘1814’)
          El puerto UDP en el que esperarán peticiones a través de la
          red.

     ‘address’ (predeterminado: ‘"0.0.0.0"’)
          Dirección de red a la que el daemon se asocia.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-wconfd-service-type
     ‘ganeti-wconfd’ es el daemon que proporciona una autoridad de
     conocimiento sobre la configuración del cluster y es la única
     entidad que puede aceptar cambios sobre ella.  Todos las trabajos
     que necesiten modificar la configuración deben hacerlo enviando las
     peticiones adecuadas a este daemon.  Únicamente se ejecuta en el
     “nodo coordinador” y se desactiva automáticamente en otros nodos.

     El valor de este servicio debe ser un objeto
     ‘ganeti-wconfd-configuration’.

 -- Tipo de datos: ganeti-wconfd-configuration
     Esta es la configuración para el servicio ‘ganeti-wconfd’.

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘no-voting?’ (predeterminado: ‘#f’)
          El daemon se negará a arrancar si la mayoría de los nodos del
          cluster no coinciden en que se está ejecutando en el nodo
          coordinador.  Proporcione ‘#t’ para arrancar incluso cuando no
          se puede alcanzar dicha mayoría (peligroso, úsese con
          precaución).

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-luxid-service-type
     ‘ganeti-luxid’ es un daemon que responde a las peticiones
     relacionadas con la configuración del estado actual del cluster
     Ganeti.  De manera adicional, es el daemon que tiene el control
     sobre la cola de trabajos de Ganeti.  Los trabajos se pueden emitir
     a través de este daemon y éste los planifica y arranca.

     Recibe un objeto ‘ganeti-luxid-configuration’.

 -- Tipo de datos: ganeti-luxid-configuration
     This is the configuration for the ‘ganeti-luxid’ service.

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘no-voting?’ (predeterminado: ‘#f’)
          El daemon se negará a arrancar si no puede verificar que la
          mayoría de los nodos del cluster creen que éste se está
          ejecutando en el nodo coordinador.  Proporcione ‘#t’ para
          ignorar dichas comprobaciones y arrancar en cualquier caso
          (puede ser peligroso).

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-rapi-service-type
     ‘ganeti-rapi’ proporciona una API remota para cluster de Ganeti.
     Se ejecuta en el nodo coordinador y se puede usar para realizar
     programática acciones en el cluster a través de un protocolo de
     llamada de procedimientos remotos (RPC) basado en JSON.

     Most query operations are allowed without authentication (unless
     REQUIRE-AUTHENTICATION? is set), whereas write operations require
     explicit authorization via the ‘/var/lib/ganeti/rapi/users’ file.
     See the Ganeti Remote API documentation
     (https://docs.ganeti.org/docs/ganeti/3.0/html/rapi.html) for more
     information.

     El valor de este servicio debe ser un objeto
     ‘ganeti-rapi-configuration’.

 -- Tipo de datos: ganeti-rapi-configuration
     Configuración para el servicio ‘ganeti-rapi’.

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘require-authentication?’ (predeterminado: ‘#f’)
          Determina si se requiere identificación incluso para
          operaciones únicamente de lectura.

     ‘port’ (predeterminado: ‘5080’)
          El puerto TCP en el que esperarán peticiones de la API.

     ‘address’ (predeterminado: ‘"0.0.0.0"’)
          La dirección de red a la que se asocia el servicio.  De manera
          predeterminada el servicio se asocia a todas las direcciones
          configuradas.

     ‘interface’ (predeterminado: ‘#f’)
          Si se proporciona un valor, debe especificar el nombre de la
          interfaz de red, como por ejemplo ‘eth0’, a la que el daemon
          se asocia.

     ‘max-clients’ (predeterminado: ‘20’)
          Número máximo de conexiones simultaneas de clientes que se
          manejan.  Las conexiones que excedan dicho número se aceptan,
          pero no se envía respuesta hasta que hayan cerrado suficientes
          conexiones.

     ‘ssl?’ (predeterminado: ‘#t’)
          Determina si se usa cifrado SSL/TLS en el puerto de la API
          remota.

     ‘ssl-key’ (predeterminado: ‘"/var/lib/ganeti/server.pem"’)
          Puede usarse para proporcionar una clave de cifrado específica
          para comunicaciones TLS.

     ‘ssl-cert’ (predeterminado: ‘"/var/lib/ganeti/server.pem"’)
          Puede usarse para proporcionar un certificado específico para
          comunicaciones TLS.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.  Tenga en cuenta que esto puede
          exponer detalles de cifrado en los archivos de registro, por
          lo que debe usarse con precaución.

 -- Variable Scheme: ganeti-kvmd-service-type
     ‘ganeti-kvmd’ es responsable de determinar si una instancia KVM
     determinada ha sido apagada por una usuaria o una administradora.
     Normalmente Ganeti reiniciará una instancia que no se haya parado a
     través de Ganeti.  Si la opción del cluster ‘user_shutdown’ es
     verdadera, este daemon monitoriza el puerto ‘QMP’ que proporciona
     QEMU y escucha eventos de apagado en él, y marca la instancia como
     “USER_down” en vez de “ERROR_down” cuando el daemon la apaga de
     manera adecuada.

     Recibe un objeto ‘ganeti-kvmd-configuration’.

 -- Tipo de datos: ganeti-kvmd-configuration

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-mond-service-type
     ‘ganeti-mond’ es un daemon opcional que proporciona la
     funcionalidad de monitorización de Ganeti.  Es responsable de la
     ejecución de los recolectores de datos y la publicación de la
     información obtenida a través de una interfaz HTTP.

     Recibe un objeto ‘ganeti-mond-configuration’.

 -- Tipo de datos: ganeti-mond-configuration

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘port’ (predeterminado: ‘1815’)
          Puerto en el que el daemon espera conexiones.

     ‘address’ (predeterminado: ‘"0.0.0.0"’)
          La dirección de red a la que se asocia el daemon.  De manera
          predeterminada se asocia a todas las interfaces disponibles.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-metad-service-type
     ‘ganeti-metad’ es un daemon opcional que se puede usar para
     proporcionar información del cluster a instancias o guiones de
     instalación de sistema operativo.

     Recibe un objeto ‘ganeti-metad-configuration’.

 -- Tipo de datos: ganeti-metad-configuration

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘port’ (predeterminado: ‘80’)
          Puerto en el que el daemon espera conexiones.

     ‘address’ (predeterminada: ‘#f’)
          Si se proporciona un valor el daemon se asociará únicamente a
          esta dirección.  Si no se proporciona valor el comportamiento
          depende de la configuración del cluster.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es verdadero, el daemon almacena registros adicionales
          con propósitos de depuración.

 -- Variable Scheme: ganeti-watcher-service-type
     ‘ganeti-watcher’ es un guión diseñado para su ejecución periódica
     en la que comprueba el estado la salud del cluster.  Reinicia
     automáticamente las instancias que se han parado sin el
     consentimiento de Ganeti, y repara los enlaces DRBD en caso de que
     un nodo se haya reiniciado.  También archiva los trabajos antiguos
     del cluster y reinicia los daemon de Ganeti si no se están
     ejecutando.  Si se ha proporcionado valor al parámetro del cluster
     ‘ensure_node_health’, este proceso también apagará las instancias y
     dispositivos DRBD si el nodo que las ejecute se ha declarado fuera
     de línea por alguna de las máquinas candidatas de coordinación
     conocidas.

     Se puede pausar en todos los nodos con ‘gnt-cluster watcher pause’.

     Este servicio toma como valor un objeto
     ‘ganeti-watcher-configuration’.

 -- Tipo de datos: ganeti-watcher-configuration

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para este servicio.

     ‘schedule’ (predeterminado: ‘'(next-second-from (next-minute (range 0 60 5)))’)
          Cada cuanto se ejecuta el guión.  El valor predeterminado es
          cada 5 minutos.

     ‘rapi-ip’ (predeterminada: ‘#f’)
          Esta opción se debe especificar únicamente si el daemon de API
          remota se ha configurado para usar una interfaz o dirección de
          red concreta.  De manera predeterminada se usa la dirección
          del cluster.

     ‘job-age’ (predeterminados: ‘(* 6 3600)’)
          Archiva los trabajos del cluster cuya antigüedad sea mayor que
          el el número de segundos proporcionado.  El valor
          predeterminado son 6 horas.  Esto mantiene la lista
          proporcionada ‘gnt-job list’ dentro de límites gestionables.

     ‘verify-disks?’ (predeterminado: ‘#t’)
          Si es ‘#f’, el proceso de vigilancia (“watcher”) no intentará
          reparar los enlaces de DRBD rotos de manera automática.  Esto
          significa que quienes administren el sistema deberán usar
          ‘gnt-cluster verify-disks’ manualmente para realizar dicha
          tarea.

     ‘debug?’ (predeterminado: ‘#f’)
          Cuando es ‘#t’, el guión registra información adicional para
          facilitar la depuración.

 -- Variable Scheme: ganeti-cleaner-service-type
     ‘ganeti-cleaner’ es un guión diseñado para su ejecución periódica
     en la que elimina archivos antiguos del cluster.  Este tipo de
     servicio controla dos “trabajos de cron”: uno para el nodo
     coordinador que elimina de manera permanente trabajos antiguos del
     cluster, y otro para todos los nodos que elimina certificados X509
     y claves que hayan expirado así como información desactualizada de
     ‘ganeti-watcher’.  Como todos los servicios de Ganeti, se puede
     incluir también en los nodos que no son coordinadores y se
     desactivará por si mismo si es necesario.

     Recibe un objeto ‘ganeti-cleaner-configuration’.

 -- Tipo de datos: ganeti-cleaner-configuration

     ‘ganeti’ (predeterminado: ‘ganeti’)
          El paquete ‘ganeti’ usado para la orden ‘gnt-cleaner’.

     ‘master-schedule’ (predeterminado: ‘"45 1 * * *"’)
          Cada cuanto se ejecuta el trabajo principal de limpieza.  El
          valor predeterminado representa su ejecución una vez al día, a
          las 01:45:00.

     ‘node-schedule’ (predeterminada: ‘"45 2 * * *"’)
          La frecuencia del trabajo de limpieza del nodo.  El valor
          predeterminado es una vez al día, a las 02:45:00.

   ---------- Footnotes ----------

   (1) R/O: Read-Only en inglés.

   (2) R/W: Read-Write en inglés.


File: guix.es.info,  Node: Servicios de control de versiones,  Next: Servicios de juegos,  Prev: Servicios de virtualización,  Up: Servicios

12.9.30 Servicios de control de versiones
-----------------------------------------

El módulo ‘(gnu services version-control)’ proporciona un servicio para
permitir el acceso remoto a repositorios Git locales.  Existen tres
opciones: el servicio ‘git-daemon-service’, que proporciona acceso a
repositorios a través del protocolo inseguro basado en TCP ‘git://’, la
extensión del servidor web ‘nginx’ para redirigir algunas peticiones al
motor ‘git-http-backend’, o una interfaz web proporcionada por el
servicio ‘cgit-service-type’.

 -- Procedimiento Scheme: git-daemon-service [#:config
          (git-daemon-configuration)]

     Devuelve un servicio que ejecuta ‘git daemon’, un servidor TCP
     simple para exponer repositorios con el protocolo Git para acceso
     anónimo.

     El parámetro opcional CONFIG debe ser un objeto
     ‘<git-daemon-configuration>’, de manera predeterminada permite
     acceso de solo lectura a los repositorios exportados(1) bajo
     ‘/srv/git’.

 -- Tipo de datos: git-daemon-configuration
     Tipo de datos que representa la configuración para
     ‘git-daemon-service’.

     ‘package’ (predeterminado: ‘git’)
          El objeto paquete del sistema distribuido de control de
          versiones Git.

     ‘export-all?’ (predeterminado: ‘#f’)
          Determina si se permite el acceso a todos los repositorios
          Git, incluso si no tienen el archivo ‘git-daemon-export-ok’.

     ‘base-path’ (predeterminado: ‘/srv/git’)
          Determina si se traducirán todas las rutas de las peticiones
          como relativas a la ruta proporcionada.  Si se encuentra en
          ejecución el daemon de git con ‘(base-path "/srv/git"’ en
          example.com, al realizar la solicitud de
          ‘git://example.com/hello.git’, el daemon de git interpretará
          la ruta como ‘/srv/git/hello.git’.

     ‘user-path’ (predeterminado: ‘#f’)
          Determina si se permite el uso de la notación ‘~user’ en las
          peticiones.  Si se especifica una cadena vacía, una peticione
          de ‘git://máquina/~alicia/algo’ se tomará como una petición de
          acceso al repositorio ‘algo’ en el directorio de la usuaria
          ‘alicia’.  Si se especifica ‘(user-path "RUTA")’, la misma
          petición se traducirá en una petición de acceso al repositorio
          ‘RUTA/algo’ en el directorio de la usuaria ‘alicia’.

     ‘listen’ (predeterminadas: ‘'()’)
          Determina si se debe escuchar en direcciones IP o nombres de
          máquina específicos, de manera predeterminada escucha en
          cualquiera.

     ‘port’ (predeterminado: ‘#f’)
          Determina si se escucha en un puerto alternativo, cuyo valor
          predeterminado es 9418.

     ‘whitelist’ (predeterminada: ‘'()’)
          Si no está vacío, únicamente permite el acceso a esta lista de
          directorios.

     ‘extra-options’ (predeterminadas: ‘'()’)
          Opciones adicionales que se proporcionan a ‘git daemon’, para
          obtener más información le rogamos que ejecute ‘man
          git-daemon’.

   El protocolo ‘git://’ carece de verificación.  Cuando se obtienen
datos de un repositorio a través del protocolo ‘git://’, no puede tener
plena confianza en que los datos que reciba procedan realmente de la
máquina que ha indicado, y su conexión puede estar sujeta a
interceptaciones.  Es mejor usar un transporte verificado y cifrado,
como ‘https’.  Aunque Git le permite servir repositorios usando
servidores web poco sofisticados basados en archivos, existe un
protocolo más rápido implementado en el programa ‘git-http-backend’.
Este programa es el motor de un servicio web de Git adecuado.  Está
diseñado para ejecutarse tras una pasarela FastCGI. *Note Servicios
Web::, para más información sobre la ejecución del daemon ‘fcgiwrap’
necesario.

   Guix tiene un tipo de datos de configuración distinto para
proporcionar repositorios Git sobre HTTP.

 -- Tipo de datos: git-http-configuration
     Data type representing the configuration for a future
     ‘git-http-service-type’; can currently be used to configure Nginx
     through ‘git-http-nginx-location-configuration’.

     ‘package’ (predeterminado: GIT)
          El objeto paquete del sistema distribuido de control de
          versiones Git.

     ‘git-root’ (predeterminada: ‘/srv/git’)
          Directorio que contiene los repositorios Git que se expondrán
          al mundo.

     ‘export-all?’ (predeterminado: ‘#f’)
          Determina si se expondrá el acceso a todos los repositorios en
          GIT-ROOT, incluso si no contienen el archivo
          ‘git-daemon-export-ok’.

     ‘uri-path’ (predeterminada: ‘/git/’)
          Prefijo de la ruta del acceso de Git.  Con el prefijo
          predeterminado ‘/git/’, ‘http://SERVIDOR/git/REPOSITORIO.git’
          se traducirá en ‘/srv/git/REPOSITORIO.git’.  Las peticiones
          cuyas rutas URI no comiencen con dicho prefijo no se pasan a
          esta instancia de Git.

     ‘fcgiwrap-socket’ (predeterminado: ‘127.0.0.1:9000’)
          Socket en el que el daemon ‘fcgiwrap’ escucha.  *Note
          Servicios Web::.

   No existe actualmente ‘git-http-service-type’; en vez de eso puede
crear una configuración ‘nginx-location-configuration’ desde
‘git-http-configuration’ y añadir dicha configuración al servidor web.

 -- Procedimiento Scheme: git-http-nginx-location-configuration
          [config=(git-http-configuration)]
     Calcula una configuración ‘nginx-location-configuration’ que
     corresponde con la configuración http de Git proporcionada.  Un
     ejemplo de definición de servicio nginx que ofrece el directorio
     predeterminado ‘/srv/git’ sobre HTTPS podría ser:

          (service nginx-service-type
                   (nginx-configuration
                    (server-blocks
                     (list
                      (nginx-server-configuration
                       (listen '("443 ssl"))
                       (server-name "git.mi-maquina.org")
                       (ssl-certificate
                        "/etc/letsencrypt/live/git.mi-maquina.org/fullchain.pem")
                       (ssl-certificate-key
                        "/etc/letsencrypt/live/git.mi-maquina.org/privkey.pem")
                       (locations
                        (list
                         (git-http-nginx-location-configuration
                          (git-http-configuration (uri-path "/"))))))))))

     This example assumes that you are using Let’s Encrypt to get your
     TLS certificate.  *Note Servicios de certificados::.  The default
     ‘certbot’ service will redirect all HTTP traffic on
     ‘git.my-host.org’ to HTTPS.  You will also need to add an
     ‘fcgiwrap’ proxy to your system services.  *Note Servicios Web::.

Servicio Cgit
.............

Cgit (https://git.zx2c4.com/cgit/) es un servidor de fachada para
repositiorios Git escrito en C.

   El ejemplo siguiente configura el servicio con los valores
predeterminados.  Por omisión, se puede acceder a Cgit en el puerto 80
(‘http://localhost:80’).

     (service cgit-service-type)

   El tipo ‘file-object’ designa o bien un objeto “tipo-archivo” (*note
objetos “tipo-archivo”: Expresiones-G.), o bien una cadena.

   Los campos disponibles de ‘cgit-configuration’ son:

 -- parámetro de ‘cgit-configuration’: package package
     El paquete CGIT.

 -- parámetro de ‘cgit-configuration’: lista-nginx-server-configuration
          nginx
     Configuración de NGINX.

 -- parámetro de ‘cgit-configuration’: file-object about-filter
     Especifica una orden que se llamará para dar formato al contenido
     de las páginas “about” (tanto al nivel superior como cada
     repositorio).

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string agefile
     Especifica una ruta, relativa a cada ruta de repositorio, que puede
     usarse para especificar una fecha y hora de la revisión más
     reciente del repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: file-object auth-filter
     Especifica una orden que se invocará para la validación de acceso
     al repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string branch-sort
     Opción que, cuando tiene valor ‘age’, activa la ordenación por
     fecha en la lista de referencias de ramas, y cuando tiene valor
     ‘name’ activa la ordenación por nombre de rama.

     El valor predeterminado es ‘"name"’.

 -- parámetro de ‘cgit-configuration’: string cache-root
     Ruta usada para el almacenamiento de las entradas de caché de cgit.

     El valor predeterminado es ‘"/var/cache/cgit"’.

 -- parámetro de ‘cgit-configuration’: integer cache-static-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de las páginas del repositiorio accedidas mediante un hash
     SHA1 fijo.

     El valor predeterminado es ‘-1’.

 -- parámetro de ‘cgit-configuration’: integer cache-dynamic-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de las páginas del repositorio accedidas sin un hash SHA1
     fijo.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘cgit-configuration’: integer cache-repo-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de la página de resumen del repositorio.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘cgit-configuration’: integer cache-root-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de la página del índice de repositorios.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘cgit-configuration’: integer cache-scanrc-ttl
     Número que especifica el tiempo de vida, en minutos, para el
     resultado de la búsqueda en una ruta para repositorios Git.

     El valor predeterminado es ‘15’.

 -- parámetro de ‘cgit-configuration’: integer cache-about-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de la página de información del repositorio.

     El valor predeterminado es ‘15’.

 -- parámetro de ‘cgit-configuration’: integer cache-snapshot-ttl
     Número que especifica el tiempo de vida, en minutos, de la versión
     en caché de las instantáneas.

     El valor predeterminado es ‘5’.

 -- parámetro de ‘cgit-configuration’: integer cache-size
     El número máximo de entradas en la caché de cgit.  Cuando el valor
     es ‘0’, se desactiva el almacenamiento en caché.

     El valor predeterminado es ‘0’.

 -- parámetro de ‘cgit-configuration’: boolean case-sensitive-sort?
     Ordena los elementos en la lista del repositorio diferenciando las
     mayúsculas.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘cgit-configuration’: lista clone-prefix
     Lista de prefijos comunes que, cuando se combinen con la URL de un
     repositorio, generan una URL que permite el clonado del
     repositorio.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘cgit-configuration’: lista clone-url
     Lista de plantillas ‘clone-url’.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘cgit-configuration’: file-object commit-filter
     Orden ejecutada para el formato de mensajes de revisión.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string commit-sort
     Opción que, cuando tiene valor ‘date’, activa la ordenación
     estricta por fecha en el registro histórico de revisiones, y cuando
     tiene valor ‘topo’ activa la ordenación estricta topológica.

     El valor predeterminado es ‘"git log"’.

 -- parámetro de ‘cgit-configuration’: file-object css
     URL que especifica el documento css incluido en todas las páginas
     de cgit.

     El valor predeterminado es ‘"/share/cgit/cgit.css"’.

 -- parámetro de ‘cgit-configuration’: file-object email-filter
     Especifica una orden que se llamará para dar formato a los nombres
     y las direcciones de correo electrónico de las revisoras, autoras y
     etiquetadoras con el que se representarán en varios lugares de la
     interfaz cgit.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: boolean embedded?
     Opción que, cuando tiene valor ‘#t’, hace que cgit genere un
     fragmento HTML adecuado para embeberse en otras páginas HTML.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-commit-graph?
     Opción que, cuando tiene el valor ‘#t’, hace que cgit imprima un
     grafo histórico de la revisión de arte ASCII a la izquierda de los
     mensajes de revisión en la página del histórico del repositorio.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-filter-overrides?
     Opción que, cuando tiene valor ‘#t’, permite que todas las
     configuraciones de filtros se sustituyan en los archivos cgitrc
     específicos del repositorio.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-follow-links?
     Opción que, cuando tiene valor ‘#t’, permite a las usuarias seguir
     un archivo en la vista de registro (log).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-http-clone?
     Si se proporciona ‘#t’, cgit actuará como un simple servidor HTTP
     para los clones de Git.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘cgit-configuration’: boolean enable-index-links?
     Opción que, cuando tiene valor ‘#t’, hace que cgit genere enlaces
     adicionales "summary" (resumen), "commit" (revisión) y "tree"
     (árbol) para cada repositorio en el índice de repositorios.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-index-owner?
     Opción que, cuando tiene valor ‘#t’, hace que cgit muestre la
     propietaria de cada repositorio en el índice del repositorios.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘cgit-configuration’: boolean enable-log-filecount?
     Opción que, cuando se proporciona el valor ‘#t’, hace que cgit
     imprima el número de archivos modificados por cada revisión en la
     página de registro histórico del repositorio ("log").

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-log-linecount?
     Opción que, cuando se proporciona el valor ‘#t’, hace que cgit
     imprima el número de líneas añadidas y eliminadas en cada revisión
     en la página de registro histórico ("log").

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-remote-branches?
     Opción que, cuando se proporciona el valor ‘#t’, hace que cgit
     muestre ramas remotas en las vistas de resumen ("summary") y de
     referencias ("refs").

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-subject-links?
     Opción que, cuando se proporciona el valor ‘1’, hace que cgit use
     el asunto de la revisión previa como texto del enlace cuando se
     generen enlaces a revisiones previas en la vista de la revisión.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-html-serving?
     Opción que, cuando se proporciona el valor ‘#t’, hace que cgit use
     el asunto de la revisión previa como texto del enlace cuando se
     generen enlaces a revisiones previas en la vista de la revisión.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean enable-tree-linenumbers?
     Opción que, cuando se proporciona el valor ‘#t’, hace que cgit
     genere enlaces de números de línea para los archivos (blob) de
     texto plano impresos en la vista de árbol.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘cgit-configuration’: boolean enable-git-config?
     Opción que, cuando tiene valor ‘#f’, permite que cgit use la
     configuración de Git para fijar el valor de cualquier opción
     específica del repositorio.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: file-object favicon
     URL usada para icono de los enlaces a cgit.

     El valor predeterminado es ‘"/favicon.ico"’.

 -- parámetro de ‘cgit-configuration’: string footer
     El contenido del archivo especificado con esta opción se incluirá
     literalmente en la parte inferior de todas las páginas (es decir,
     sustituye al mensaje estándar "generated by...").

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string head-include
     El contenido del archivo especificado con esta opción se incluirá
     literalmente en la sección HEAD de HTML en todas las páginas.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string header
     El contenido del archivo especificado con esta opción se incluirá
     literalmente en la parte superior de todas las páginas.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: file-object include
     Nombre de un archivo de configuración que debe incluirse antes de
     procesar el resto del archivo de configuración actual.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string index-header
     El contenido del archivo especificado en esta opción se incluirá
     literalmente sobre el índice de repositorios.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string index-info
     El contenido del archivo especificado con esta opción se incluirá
     de manera literal bajo la cabecera en la página de índice del
     repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: boolean local-time?
     Opción que, cuando tiene valor ‘#t’, hace que cgit imprima las
     fechas de revisión y etiqueta en la zona horaria del servidor.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: file-object logo
     URL que especifica la fuente de una imagen usada como logo en todas
     las páginas de cgit.

     El valor predeterminado es ‘"/share/cgit/cgit.png"’.

 -- parámetro de ‘cgit-configuration’: string logo-link
     URL que se carga al pulsar la imagen del logo de cgit.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: file-object owner-filter
     Orden que se ejecuta para dar formato a la columna de propietaria
     (Owner) de la página principal.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: integer max-atom-items
     Número de elementos a mostrar en la vista de “atom feeds”.

     El valor predeterminado es ‘10’.

 -- parámetro de ‘cgit-configuration’: integer max-commit-count
     Número de entradas a mostrar por página en la vista del registro
     histórico ("log").

     El valor predeterminado es ‘50’.

 -- parámetro de ‘cgit-configuration’: integer max-message-length
     Número de caracteres del mensaje de la revisión a mostrar en la
     vista del registro histórico ("log").

     El valor predeterminado es ‘80’.

 -- parámetro de ‘cgit-configuration’: integer max-repo-count
     Especifica el número de entradas a mostrar por página en la página
     de índice de repositorios.

     El valor predeterminado es ‘50’.

 -- parámetro de ‘cgit-configuration’: integer max-repodesc-length
     Especifica el número máximo de caracteres mostrados en la
     descripción del repositorio en la página del índice de
     repositorios.

     El valor predeterminado es ‘80’.

 -- parámetro de ‘cgit-configuration’: integer max-blob-size
     Especifica el tamaño máximo de un archivo (blob) para mostrarlo en
     HTML en kilobytes.

     El valor predeterminado es ‘0’.

 -- parámetro de ‘cgit-configuration’: string max-stats
     Periodo estadístico máximo.  Son valores aceptados ‘week’, ‘month’,
     ‘quarter’ and ‘year’.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: mimetype-alist mimetype
     Tipo MIME para la extensión de archivo especificada.

     El valor predeterminado es ‘((gif "image/gif") (html "text/html")
     (jpg "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png
     "image/png") (svg "image/svg+xml"))’.

 -- parámetro de ‘cgit-configuration’: file-object mimetype-file
     Especifica el archivo usado para la búsqueda automática de tipos
     MIME.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string module-link
     Texto que se usará como la cadena de formato para un enlace cuando
     un submódulo se imprime en el listado del directorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: boolean nocache?
     Si se proporciona el valor ‘#t’, se desactiva la caché.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean noplainemail?
     Si se proporciona ‘#t’, se desactiva la impresión de direcciones de
     correo completas de las autoras.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: boolean noheader?
     Opción que, cuando tiene valor ‘#t’, hace que cgit omita la
     cabecera estándar en todas las páginas.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: lista-proyectos project-list
     Una lista de subdirectorios dentro de ‘repository-directory’,
     relativa a él, que debe cargarse como repositorios Git.  La lista
     vacía significa que se cargarán todos los subdirectorios.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘cgit-configuration’: file-object readme
     Texto usado como valor predeterminado para ‘cgit-repo-readme’.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: boolean remove-suffix?
     Si se proporciona ‘#t’ y ‘repository-directory’ está activo, si se
     encuentra algún repositorio con el sufijo ‘.git’, se elimina dicho
     sufijo de la URL y del nombre.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: integer renamelimit
     Número máximo de archivos considerados durante la detección de
     renombrados.

     El valor predeterminado es ‘-1’.

 -- parámetro de ‘cgit-configuration’: string repository-sort
     La forma de ordenar los repositorios de cada sección.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: lista-robots robots
     Texto usado como contenido de la meta-etiqueta ‘robots’.

     El valor predeterminado es ‘("noindex" "nofollow")’.

 -- parámetro de ‘cgit-configuration’: string root-desc
     Texto impreso bajo la cabecera en la página de índice del
     repositorio.

     El valor predeterminado es ‘"a fast webinterface for the git
     dscm"’.<

 -- parámetro de ‘cgit-configuration’: string root-readme
     El contenido del archivo especificado con esta opción se incluirá
     de manera literal tras el enlace de información del repositorio
     (“about”) en la página de índice del repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string root-title
     Texto impreso como cabecera en la página de índice del repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: boolean scan-hidden-path
     Si se proporciona ‘#t’ y repository-directory está activo,
     repository-directory recorrerá recursivamente los directorios cuyos
     nombres comiencen por punto.  En otro caso, repository-directory no
     tendrá en cuenta dichos directorios, considerados ocultos
     (“hidden”).  Tenga en cuenta que esto no incluye al directorio
     ‘.git’ en repositorios con una copia de trabajo.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: lista snapshots
     Texto que especifica el conjunto predeterminado de formatos de
     instantánea para los que cgit genera enlaces.

     El valor predeterminado es ‘()’.

 -- parámetro de ‘cgit-configuration’: directorio-repositorio
          repository-directory
     Nombre del directorio en el que se buscarán repositorios
     (representa ‘scan-path’).

     El valor predeterminado es ‘"/srv/git"’.

 -- parámetro de ‘cgit-configuration’: string section
     Nombre actual de la sección de repositorios - todos los
     repositorios definidos tras esta opción heredarán el nombre actual
     de sección.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string section-sort
     Opción que, cuando tiene valor ‘1’, ordenará las secciones en el
     listado de repositorios por nombre.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: integer section-from-path
     Número que, si se define antes de repository-directory, especifica
     cuantos elementos de ruta de cada ruta de repositorio se usarán
     como nombre de sección predeterminado.

     El valor predeterminado es ‘0’.

 -- parámetro de ‘cgit-configuration’: boolean side-by-side-diffs?
     Si se proporciona el valor ‘#t’ se muestran las diferencias lado a
     lado en vez de usar el formato universal de manera predeterminada.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘cgit-configuration’: file-object source-filter
     Especifica la orden que se ejecutará para dar formato a los
     archivos (blob) de texto plano en la vista de árbol.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: integer summary-branches
     Especifica el número de ramas mostradas en la vista resumen
     (“summary”) del repositorio.

     El valor predeterminado es ‘10’.

 -- parámetro de ‘cgit-configuration’: integer summary-log
     Especifica el número de entradas del registro mostradas en la vista
     resumen (“summary”) del repositorio.

     El valor predeterminado es ‘10’.

 -- parámetro de ‘cgit-configuration’: integer summary-tags
     Especifica el número que etiquetas que se mostrarán en la vista
     resumen (“summary”) del repositorio.

     El valor predeterminado es ‘10’.

 -- parámetro de ‘cgit-configuration’: string strict-export
     Nombre de archivo que, en caso de especificarse, debe estar
     presente en el repositiorio para que se permita el acceso de cgit a
     dicho repositorio.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘cgit-configuration’: string virtual-root
     URL que, en caso de especificarse, se usará como raíz de todos los
     enlaces de cgit.

     El valor predeterminado es ‘"/"’.

 -- parámetro de ‘cgit-configuration’:
          lista-repository-cgit-configuration repositories
     Lista de registros “cgit-repo” usados con la configuración.

     El valor predeterminado es ‘()’.

     Los campos disponibles de ‘repository-cgit-configuration’ son:

      -- parámetro de ‘repository-cgit-configuration’: repo-list
               snapshots
          Una máscara de los formatos de instantánea para este
          repositorio para los que cgit genera enlaces, restringida por
          la opción de configuración global ‘snapshots’.

          El valor predeterminado es ‘()’.

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               source-filter
          Sustituye al valor predeterminado de ‘source-filter’.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string url
          La URL relativa usada para el acceso al repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               about-filter
          Sustituye al valor predeterminado de ‘about-filter’.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               branch-sort
          Cuando se proporciona el valor ‘age’, activa la ordenación por
          fecha en la lista de referencias de ramas, y cuando se
          proporciona ‘name’ se activa la ordenación por nombre de rama.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-list
               clone-url
          Una lista de URL que se pueden usar para clonar el
          repositorio.

          El valor predeterminado es ‘()’.

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               commit-filter
          Sustituye al valor predeterminado de ‘commit-filter’.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               commit-sort
          Opción que, cuando tiene valor ‘date’, activa la ordenación
          estricta por fecha en el registro histórico de revisiones, y
          cuando tiene valor ‘topo’ activa la ordenación estricta
          topológica.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               defbranch
          Nombre de la rama predeterminada de este repositorio.  Si no
          existe dicha rama en el repositorio, se usará como
          predeterminado el primer nombre de rama encontrado (tras su
          ordenación).  De manera predeterminada, la rama a la que
          apunta HEAD, o “master” si no existe un valor adecuado para
          HEAD.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string desc
          El valor a mostrar como descripción del repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               homepage
          El valor a mostrar como página web principal del repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               email-filter
          Sustituye al valor predeterminado de ‘email-filter’.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-commit-graph?
          Esta opción se puede usar para forzar el valor de la opción de
          configuración global ‘enable-commit-graph?’.

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-log-filecount?
          Esta opción se puede usar para forzar el valor de la opción de
          configuración global ‘enable-log-filecount?’.

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-log-linecount?
          Esta opción se puede usar para forzar el valor de la opción de
          configuración global ‘enable-log-linecount?’.

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-remote-branches?
          Opción que, cuando se proporciona el valor ‘#t’, hace que cgit
          muestre ramas remotas en las vistas de resumen ("summary") y
          de referencias ("refs").

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-subject-links?
          Esta opción se puede usar para forzar el valor de la opción de
          configuración global ‘enable-subject-links?’.

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’:
               maybe-repo-boolean enable-html-serving?
          Esta opción se puede usar para forzar el valor de la opción de
          configuración global ‘enable-html-serving?’.

          El valor predeterminado es ‘disabled’.

      -- parámetro de ‘repository-cgit-configuration’: repo-boolean
               hide?
          Opción que, cuando tiene valor ‘#t’, oculta el repositorio en
          el índice.

          El valor predeterminado es ‘#f’

      -- parámetro de ‘repository-cgit-configuration’: repo-boolean
               ignore?
          Opción que, cuando tiene valor ‘#t’, ignora el repositorio.

          El valor predeterminado es ‘#f’

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               logo
          URL que especifica la fuente de una imagen que se usará como
          logo en las páginas de este repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               logo-link
          URL que se carga al pulsar la imagen del logo de cgit.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-file-object
               owner-filter
          Sustituye al valor predeterminado de ‘owner-filter’.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               module-link
          Texto que se usará como la cadena de formato de un enlace
          cuando un submódulo se imprima en el listado de un directorio.
          Los parámetros para la cadena de formato son la ruta y el SHA1
          de la revisión del submódulo.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’:
               ruta-enlace-módulo module-link
          Texto que se usará como la cadena de formato de un enlace
          cuando un submódulo con la ruta de subdirectorio especificada
          se imprima en el listado de un directorio.

          El valor predeterminado es ‘()’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               max-stats
          Sustituye al máximo periodo estadístico predeterminado.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string name
          El valor a mostrar como nombre del repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string owner
          Un valor usado para identificar a la propietaria del
          repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string path
          La ruta absoluta al directorio del repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               readme
          Una ruta (relativa al repositorio) que especifica un archivo
          que será incluido literalmente como página de información
          (“About”) de este repositorio.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-string
               section
          Nombre actual de la sección de repositorios - todos los
          repositorios definidos tras esta opción heredarán el nombre
          actual de sección.

          El valor predeterminado es ‘""’.

      -- parámetro de ‘repository-cgit-configuration’: repo-list
               extra-options
          Opciones adicionales a agregar al final del archivo cgitrc.

          El valor predeterminado es ‘()’.

 -- parámetro de ‘cgit-configuration’: lista extra-options
     Opciones adicionales a agregar al final del archivo cgitrc.

     El valor predeterminado es ‘()’.

   No obstante, puede ser que únicamente desee usar un archivo ‘cgitrc’
existente.  En ese caso, puede proporcionar ‘opaque-cgit-configuration’
como un registro a ‘cgit-service-type’.  Como su nombre en inglés
indica, una configuración opaca no tiene gran capacidad reflexiva.

   Los campos disponibles de ‘opaque-cgit-configuration’ son:

 -- parámetro de ‘opaque-cgit-configuration’: package cgit
     El paquete cgit.

 -- parámetro de ‘opaque-cgit-configuration’: string string
     El contenido de ‘cgitrc’, como una cadena.

   Por ejemplo, si su ‘cgitrc’ es simplemente la cadena vacía, puede
instanciar un servicio cgit de esta manera:

     (service cgit-service-type
              (opaque-cgit-configuration
               (cgitrc "")))

Servicio Gitolite
.................

Gitolite (https://gitolite.com/gitolite/) es una herramienta para el
almacenamiento de repositorios Git en un servidor central.

   Gitolite puede manejar múltiples repositorios y usuarias, y permite
una configuración flexible de los permisos de las usuarias sobre los
repositorios.

   El siguiente ejemplo configuraría Gitolite con la usuaria
predeterminada ‘git’ y la clave pública SSH proporcionada.

     (service gitolite-service-type
              (gitolite-configuration
                (admin-pubkey (plain-file
                                "sunombre.pub"
                                "ssh-rsa AAAA... guix@example.com"))))

   Gitolite se configura a través de un repositorio de administración
especial que puede clonar, por ejemplo, si configuró Gitolite en
‘example.org’, ejecutaría la siguiente orden para clonar el repositorio
de administración.

     git clone git@example.com:gitolite-admin

   Cuando se activa el servicio Gitolite, la clave ‘admin-pubkey’
proporcionada se insertará en el directorio ‘keydir’ en el repositorio
gitolite-admin.  Si esto resultase en un cambio en el repositorio, la
revisión se almacenaría con el mensaje “gitolite setup by GNU Guix”.

 -- Tipo de datos: gitolite-configuration
     Tipo de datos que representa la configuración de
     ‘gitolite-service-type’.

     ‘package’ (predeterminado: GITOLITE)
          Gitolite package to use.  There are optional Gitolite
          dependencies that are not included in the default package,
          such as Redis and git-annex.  These features can be made
          available by using the ‘make-gitolite’ procedure in the ‘(gnu
          packages version-control’) module to produce a variant of
          Gitolite with the desired additional dependencies.

          The following code returns a package in which the Redis and
          git-annex programs can be invoked by Gitolite’s scripts:

               (use-modules (gnu packages databases)
                            (gnu packages haskell-apps)
                            (gnu packages version-control))
               (make-gitolite (list redis git-annex))

     ‘user’ (predeterminada: GIT)
          Usuaria usada por Gitolite.  Esta será la usuaria a la que se
          conectará cuando acceda a Gitolite a través de SSH.

     ‘group’ (predeterminado: GIT)
          Grupo usado por Gitolite.

     ‘home-directory’ (predeterminado: "/VAR/LIB/GITOLITE")
          Directorio en el que se almacenará la configuración y
          repositorios de Gitolite.

     ‘rc-file’ (predeterminado: (GITOLITE-RC-FILE))
          Un objeto “tipo-archivo” (*note objetos “tipo-archivo”:
          Expresiones-G.), que representa la configuración de Gitolite.

     ‘admin-pubkey’ (predeterminada: #F)
          Un objeto “tipo-archivo” (*note objetos “tipo-archivo”:
          Expresiones-G.) usado para la configuración de Gitolite.  Se
          insertará en el directorio ‘keydir’ dentro del repositorio
          gitolite-admin.

          Para especificar la clave SSH como una cadena, use la función
          ‘plain-file’.

               (plain-file "sunombre.pub" "ssh-rsa AAAA... guix@example.com")

 -- Tipo de datos: gitolite-rc-file
     Tipo de datos que representa el archivo RC de Gitolite.

     ‘umask’ (predeterminada: ‘#o0077’)
          Controla los permisos que Gitolite establece en los
          repositorios y sus contenidos.

          A value like ‘#o0027’ will give read access to the group used
          by Gitolite (by default: ‘git’).  This is necessary when using
          Gitolite with software like cgit or gitweb.

     ‘local-code’ (default: ‘"$rc{GL_ADMIN_BASE}/local"’)
          Allows you to add your own non-core programs, or even override
          the shipped ones with your own.

          Please supply the FULL path to this variable.  By default,
          directory called "local" in your gitolite clone is used,
          providing the benefits of versioning them as well as making
          changes to them without having to log on to the server.

     ‘unsafe-pattern’ (default: ‘#f’)
          An optional Perl regular expression for catching unsafe
          configurations in the configuration file.  See Gitolite’s
          documentation
          (https://gitolite.com/gitolite/git-config.html#compensating-for-unsafe_patt)
          for more information.

          When the value is not ‘#f’, it should be a string containing a
          Perl regular expression, such as ‘"[`~#\$\&()|;<>]"’, which is
          the default value used by gitolite.  It rejects any special
          character in configuration that might be interpreted by a
          shell, which is useful when sharing the administration burden
          with other people that do not otherwise have shell access on
          the server.

     ‘git-config-keys’ (predeterminadas: ‘""’)
          Gitolite allows you to set git config values using the
          ‘config’ keyword.  This setting allows control over the config
          keys to accept.

     ‘roles’ (predeterminados: ‘'(("READERS" . 1) ("WRITERS" . ))’)
          Establece los nombres de rol que se permite usar a las
          usuarias que ejecuten la orden perms.

     ‘enable’ (predeterminados: ‘'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")’)
          Esta configuración controla las órdenes y características
          activadas dentro de Gitolite.

Gitile Service
..............

Gitile (https://git.lepiller.eu/gitile) is a Git forge for viewing
public git repository contents from a web browser.

   Gitile works best in collaboration with Gitolite, and will serve the
public repositories from Gitolite by default.  The service should listen
only on a local port, and a webserver should be configured to serve
static resources.  The gitile service provides an easy way to extend the
Nginx service for that purpose (*note NGINX::).

   The following example will configure Gitile to serve repositories
from a custom location, with some default messages for the home page and
the footers.

     (service gitile-service-type
              (gitile-configuration
                (repositories "/srv/git")
                (base-git-url "https://myweb.site/git")
                (index-title "My git repositories")
                (intro '((p "This is all my public work!")))
                (footer '((p "This is the end")))
                (nginx-server-block
                  (nginx-server-configuration
                    (ssl-certificate
                      "/etc/letsencrypt/live/myweb.site/fullchain.pem")
                    (ssl-certificate-key
                      "/etc/letsencrypt/live/myweb.site/privkey.pem")
                    (listen '("443 ssl http2" "[::]:443 ssl http2"))
                    (locations
                      (list
                        ;; Allow for https anonymous fetch on /git/ urls.
                        (git-http-nginx-location-configuration
                          (git-http-configuration
                            (uri-path "/git/")
                            (git-root "/var/lib/gitolite/repositories")))))))))

   In addition to the configuration record, you should configure your
git repositories to contain some optional information.  First, your
public repositories need to contain the ‘git-daemon-export-ok’ magic
file that allows Git to export the repository.  Gitile uses the presence
of this file to detect public repositories it should make accessible.
To do so with Gitolite for instance, modify your ‘conf/gitolite.conf’ to
include this in the repositories you want to make public:

     repo foo
         R = daemon

   In addition, Gitile can read the repository configuration to display
more information on the repository.  Gitile uses the gitweb namespace
for its configuration.  As an example, you can use the following in your
‘conf/gitolite.conf’:

     repo foo
         R = daemon
         desc = A long description, optionally with <i>HTML</i>, shown on the index page
         config gitweb.name = The Foo Project
         config gitweb.synopsis = A short description, shown on the main page of the project

   Do not forget to commit and push these changes once you are
satisfied.  You may need to change your gitolite configuration to allow
the previous configuration options to be set.  One way to do that is to
add the following service definition:

     (service gitolite-service-type
               (gitolite-configuration
                 (admin-pubkey (local-file "key.pub"))
                 (rc-file
                   (gitolite-rc-file
                     (umask #o0027)
                     ;; Allow to set any configuration key
                     (git-config-keys ".*")
                     ;; Allow any text as a valid configuration value
                     (unsafe-patt "^$")))))

 -- Data Type: gitile-configuration
     Data type representing the configuration for ‘gitile-service-type’.

     ‘package’ (default: GITILE)
          Gitile package to use.

     ‘host’ (predeterminado: ‘"localhost"’)
          The host on which gitile is listening.

     ‘port’ (default: ‘8080’)
          The port on which gitile is listening.

     ‘database’ (default: ‘"/var/lib/gitile/gitile-db.sql"’)
          The location of the database.

     ‘repositories’ (default: ‘"/var/lib/gitolite/repositories"’)
          The location of the repositories.  Note that only public
          repositories will be shown by Gitile.  To make a repository
          public, add an empty ‘git-daemon-export-ok’ file at the root
          of that repository.

     ‘base-git-url’
          The base git url that will be used to show clone commands.

     ‘index-title’ (default: ‘"Index"’)
          The page title for the index page that lists all the available
          repositories.

     ‘intro’ (default: ‘'()’)
          The intro content, as a list of sxml expressions.  This is
          shown above the list of repositories, on the index page.

     ‘footer’ (default: ‘'()’)
          The footer content, as a list of sxml expressions.  This is
          shown on every page served by Gitile.

     ‘nginx-server-block’
          An nginx server block that will be extended and used as a
          reverse proxy by Gitile to serve its pages, and as a normal
          web server to serve its assets.

          You can use this block to add more custom URLs to your domain,
          such as a ‘/git/’ URL for anonymous clones, or serving any
          other files you would like to serve.

   ---------- Footnotes ----------

   (1) Mediante la creación del archivo mágico ‘git-daemon-export-ok’ en
el directorio del repositorio.

