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

Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021
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 Ricardo Wurmus
Copyright © 2016 Ben Woodcroft
Copyright © 2016, 2017, 2018, 2021 Chris Marusich
Copyright © 2016, 2017, 2018, 2019, 2020, 2021 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 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 Mathieu Othacehe
Copyright © 2017 Federico Beffa
Copyright © 2017, 2018 Carlo Zancanaro
Copyright © 2017 Thomas Danckaert
Copyright © 2017 humanitiesNerd
Copyright © 2017, 2021 Christopher Lemmer Webber
Copyright © 2017, 2018, 2019, 2020 Marius Bakke
Copyright © 2017, 2019, 2020 Hartmut Goebel
Copyright © 2017, 2019, 2020, 2021 Maxim Cournoyer
Copyright © 2017, 2018, 2019, 2020, 2021 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 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 Guillaume Le Vaillant
Copyright © 2020 Leo Prikler
Copyright © 2019, 2020 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 Brice Waegeneire
Copyright © 2020 R Veera Kumar
Copyright © 2020 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 Maxime Devos

   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 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 mensajería,  Next: Servicios de telefonía,  Prev: Servicios de correo,  Up: Servicios

10.8.12 Servicios de mensajería
-------------------------------

El módulo ‘(gnu services messaging)’ proporciona definiciones de
servicios Guix para servicios de mensajería. Actualmente proporciona los
siguientes servicios:

Servicio Prosody
................

 -- Variable Scheme: prosody-service-type
     Este es el tipo para el servidor de comunicaciones XMPP Prosody
     (https://prosody.im). Su valor debe ser un registro
     ‘prosody-configuration’ como en este ejemplo:

          (service prosody-service-type
                   (prosody-configuration
                    (modules-enabled (cons* "groups" "mam" %default-modules-enabled))
                    (int-components
                     (list
                      (int-component-configuration
                       (hostname "conference.ejemplo.net")
                       (plugin "muc")
                       (mod-muc (mod-muc-configuration)))))
                    (virtualhosts
                     (list
                      (virtualhost-configuration
                       (domain "ejemplo.net"))))))

     Véase a continuación detalles acerca de ‘prosody-configuration’.

   De manera predeterminada, Prosody no necesita demasiada
configuración. Únicamente un campo ‘virtualhost’ es necesario:
especifica el dominio en el que se desea que Prosody proporcione el
servicio.

   Puede realizar varias comprobaciones preliminares sobre la
configuración generada con la orden ‘prosodyctl check’.

   Prosodyctl también le ayudará con la importación de certificados del
directorio ‘letsencrypt’ de modo que la usuaria ‘prosody’ puede acceder
a ellos. Véase <https://prosody.im/doc/letsencrypt>.

     prosodyctl --root cert import /etc/letsencrypt/live

   A continuación se encuentran los parámetros de configuración
disponibles. El tipo de cada parámetro antecede la definición del mismo;
por ejemplo, ‘string-list foo’ indica que el parámetro ‘foo’ debe
especificarse como una lista de cadenas. Los tipos que empiezan con
‘maybe-’ identifican parámetros que no aparecerán en ‘prosody.cfg.lua’
cuando su valor sea ‘'disabled’.

   También existe la posibilidad de especificar la configuración como
una cadena, por si tiene un archivo ‘prosody.cfg.lua’ antiguo que desea
transportar desde otro sistema; véase más detalles al final.

   El tipo ‘file-object’ designa o bien un objeto “tipo-archivo” (*note
objetos “tipo-archivo”: Expresiones-G.) o un nombre de archivo.

   Los campos disponibles de ‘prosody-configuration’ son:

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

 -- parámetro de ‘prosody-configuration’: nombre-archivo data-path
     Ruta del directorio de almacenamiento de datos de Prosody. Véase
     <https://prosody.im/doc/configure>. Su valor predeterminado es
     ‘"/var/lib/prosody"’.

 -- parámetro de ‘prosody-configuration’: lista-file-object plugin-paths
     Directorios de módulos adicionales. Los módulos se buscan en orden
     en todas las rutas especificadas. Véase
     <https://prosody.im/doc/plugins_directory>. Su valor predeterminado
     es ‘()’.

 -- parámetro de ‘prosody-configuration’: nombre-archivo certificates
     Cada máquina virtual y componente necesitan un certificado de
     manera que los clientes y servidores puedan verificar su identidad
     de manera segura. Prosody cargará de manera automática
     certificados/claves del directorio especificado aquí. Su valor
     predeterminado es ‘"/etc/prosody/certs"’.

 -- parámetro de ‘prosody-configuration’: lista-string admins
     Es una lista de cuentas con permisos de administración en el
     servidor. Tenga en cuenta que debe crear las cuentas de manera
     separada. Véase <https://prosody.im/doc/admins> y
     <https://prosody.im/doc/creating_accounts>. Ejemplo: ‘(admins
     '("usuaria1@example.com" "usuaria2@example.net"))’ Su valor
     predeterminado es ‘()’.

 -- parámetro de ‘prosody-configuration’: boolean use-libevent?
     Activa el uso de libevent para mejorar el rendimiento bajo altas
     cargas de trabajo. Véase <https://prosody.im/doc/libevent>. Su
     valor predeterminado es ‘#f’.

 -- parámetro de ‘prosody-configuration’: lista-módulos modules-enabled
     La lista de módulos de Prosody cargada durante el arranque. Busca
     en el archivo de módulos ‘mod_nombremodulo.lua’, por lo que
     asegúrese de que también exista. La documentación de los módulos
     puede encontrarse en: <https://prosody.im/doc/modules>. Su valor
     predeterminado es ‘("roster" "saslauth" "tls" "dialback" "disco"
     "carbons" "private" "blocklist" "vcard" "version" "uptime" "time"
     "ping" "pep" "register" "admin_adhoc")’.

 -- parámetro de ‘prosody-configuration’: lista-string modules-disabled
     ‘"offline"’, ‘"c2s"’ y ‘"s2s"’ se cargan de manera automática, pero
     puede desactivarlos si los añade a esta lista. Su valor
     predeterminado es ‘()’.

 -- parámetro de ‘prosody-configuration’: file-object groups-file
     Ruta a un archivo de texto donde se definan los grupos compartidos.
     Si esta ruta está vacía, ‘mod_groups’ no hace nada. Véase
     <https://prosody.im/doc/modules/mod_groups>. Su valor
     predeterminado es ‘"/var/lib/prosody/sharedgroups.txt"’.

 -- parámetro de ‘prosody-configuration’: boolean allow-registration?
     Desactiva la creación de cuentas de manera predeterminada, por
     seguridad. Véase <https://prosody.im/doc/creating_accounts>. Su
     valor predeterminado es ‘#f’.

 -- parámetro de ‘prosody-configuration’: maybe-ssl-configuration ssl
     Estas opciones de configuración están relacionadas con SSL/TLS. La
     mayor parte no se proporcionan para usar los valores
     predeterminados de Prosody. Si no entiende completamente estas
     opciones, no las añada a su configuración, es fácil aumentar la
     vulnerabilidad de su servidor si las usa. Véase
     <https://prosody.im/doc/advanced_ssl_config>.

     Los campos disponibles de ‘ssl-configuration’ son:

      -- parámetro de ‘ssl-configuration’: maybe-string protocol
          Determina el inicio del protocolo usado (handshake).

      -- parámetro de ‘ssl-configuration’: maybe-nombre-archivo key
          Ruta a su archivo de clave privada.

      -- parámetro de ‘ssl-configuration’: maybe-nombre-archivo
               certificate
          Ruta al archivo de su certificado.

      -- parámetro de ‘ssl-configuration’: file-object capath
          Ruta al directorio que contiene los certificados raíz en los
          que desea que Prosody confíe al verificar los certificados de
          servidores remotos. Su valor predeterminado es
          ‘"/etc/ssl/certs"’.

      -- parámetro de ‘ssl-configuration’: maybe-file-object cafile
          Ruta al archivo que contiene los certificados raíz en los que
          desea que Prosody confíe. Es similar a ‘capath’ pero con todos
          los certificados concatenados en el mismo archivo.

      -- parámetro de ‘ssl-configuration’: maybe-lista-string verify
          Una lista de opciones de verificación (son de manera
          prácticamente directa las opciones de ‘set_verify()’ de
          OpenSSL).

      -- parámetro de ‘ssl-configuration’: maybe-lista-string options
          A list of general options relating to SSL/TLS. These map to
          OpenSSL’s ‘set_options()’. For a full list of options
          available in LuaSec, see the LuaSec source.

      -- parámetro de ‘ssl-configuration’: maybe-entero-no-negativo
               depth
          Cómo de larga puede ser la cadena de autoridades de
          certificación a comprobar cuando se busque un certificado de
          confianza.

      -- parámetro de ‘ssl-configuration’: maybe-string ciphers
          Una cadena de algoritmos de cifrado de OpenSSL. Selecciona que
          algoritmos ofrecerá Prosody a los clientes, y en qué orden.

      -- parámetro de ‘ssl-configuration’: maybe-nombre-archivo dhparam
          Una ruta a un archivo que contenga parámetros para el
          intercambio de claves Diffie-Hellman. Puede crear un archivo
          de este tipo con: ‘openssl dhparam -out
          /etc/prosody/certs/dh-2048.pem 2048’

      -- parámetro de ‘ssl-configuration’: maybe-string curve
          Curva para el protocolo Diffie-Hellman de curva elíptica. El
          valor predeterminado de Prosody es ‘"secp384r1"’.

      -- parámetro de ‘ssl-configuration’: maybe-string-list verifyext
          Una lista de opciones de verificación adicionales.

      -- parámetro de ‘ssl-configuration’: maybe-string password
          Contraseña para claves privadas cifradas.

 -- parámetro de ‘prosody-configuration’: boolean
          c2s-require-encryption?
     Determina si se fuerza que todas las conexiones cliente-servidor
     vayan cifradas o no. Véase
     <https://prosody.im/doc/modules/mod_tls>. Su valor predeterminado
     es ‘#f’.

 -- parámetro de ‘prosody-configuration’: lista-string
          disable-sasl-mechanisms
     Conjunto de mecanismos que no se ofrecerán nunca. Véase
     <https://prosody.im/doc/modules/mod_saslauth>. Su valor
     predeterminado es ‘("DIGEST-MD5")’.

 -- parámetro de ‘prosody-configuration’: boolean
          s2s-require-encryption?
     Determina si se fuerza que todas las conexiones servidor-servidor
     vayan cifradas o no. Véase
     <https://prosody.im/doc/modules/mod_tls>. Su valor predeterminado
     es ‘#f’.

 -- parámetro de ‘prosody-configuration’: boolean s2s-secure-auth?
     Determina si el cifrado y la identificación mediante certificado
     son necesarias. Esto proporciona una seguridad ideal, pero necesita
     que los servidores con los que se comunique permitan cifrado y
     tengan presentes certificados válidos en los que se tenga
     confianza. Véase <https://prosody.im/doc/s2s#security>. Su valor
     predeterminado es ‘#f’.

 -- parámetro de ‘prosody-configuration’: lista-string
          s2s-insecure-domains
     Many servers don’t support encryption or have invalid or
     self-signed certificates. You can list domains here that will not
     be required to authenticate using certificates. They will be
     authenticated using DNS. See <https://prosody.im/doc/s2s#security>.
     Defaults to ‘()’.

 -- parámetro de ‘prosody-configuration’: lista-string
          s2s-secure-domains
     Aún en el caso de mantener ‘s2s-secure-auth?’, puede exigir
     certificados válidos para algunos dominios especificando una lista
     aquí. Véase <https://prosody.im/doc/s2s#security>. Su valor
     predeterminado es ‘()’.

 -- parámetro de ‘prosody-configuration’: string authentication
     Selecciona el motor de identificación usado. La implementación
     predeterminada almacena las contraseñas en texto claro y usa el
     almacenamiento de datos configurado en Prosody para los datos de
     identificación. Si no confía en su servidor le recomendamos que
     visite <https://prosody.im/doc/modules/mod_auth_internal_hashed>
     para obtener información sobre el motor de almacenamiento tras
     hash. Véase también <https://prosody.im/doc/authentication>. Su
     valor predeterminado es ‘"internal_plain"’.

 -- parámetro de ‘prosody-configuration’: maybe-string log
     Determina las opciones del registro. La configuración avanzada del
     registro no está implementada todavía para el servicio Prosody.
     Véase <https://prosody.im/doc/logging>. Su valor predeterminado es
     ‘"*syslog"’.

 -- parámetro de ‘prosody-configuration’: nombre-archivo pidfile
     Archivo en el que se escribirá el PID. Véase
     <https://prosody.im/doc/modules/mod_posix>. Su valor predeterminado
     es ‘"/var/run/prosody/prosody.pid"’.

 -- parámetro de ‘prosody-configuration’: maybe-entero-no-negativo
          http-max-content-size
     Tamaño máximo permitido del cuerpo (body) HTTP (en bytes)

 -- parámetro de ‘prosody-configuration’: maybe-string http-external-url
     Algunos módulos exponen sus propias URL de diversas maneras. Esta
     URL se construye en base al protocolo, máquina y puerto usados. Si
     Prosody se encuentra tras un proxy, se usara ‘http-external-url’
     como URL pública. Véase <https://prosody.im/doc/http#external_url>.

 -- parámetro de ‘prosody-configuration’:
          lista-virtualhost-configuration virtualhosts
     Una máquina (host) en Prosody es un dominio en el que se pueden
     crear cuentas de usuaria. Por ejemplo, si desea que sus usuarias
     tengan direcciones como ‘"juan.herrero@example.com"’ necesitará
     añadir una máquina ‘"example.com"’. Todas las opciones en esta
     lista son efectivas únicamente en esa máquina.

     Fíjese: el nombre de máquina _virtual_ se usa en la configuración
     para evitar confusión con la máquina física en la que Prosody se
     encuentra instalado. Una única instancia de Prosody puede
     proporcionar servicio para muchos dominos, cada uno definido como
     una entrada de máquina virtual (VirtualHost) en la configuración de
     Prosody. De manera alternativa, un servidor que aloja un único
     dominio puede tener una única entrada VirtualHost.

     Véase <https://prosody.im/doc/configure#virtual_host_settings>.

     Los campos disponibles de ‘virtualhost-configuration’ son:

     todos estos campos de ‘prosody-configuration’: ‘admins’,
     ‘use-libevent?’, ‘modules-enabled’, ‘modules-disabled’,
     ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     además de:
      -- parámetro de ‘virtualhost-configuration’: string domain
          Dominio en el que desea que Prosody proporcione servicio.

 -- parámetro de ‘prosody-configuration’:
          lista-int-component-configuration int-components
     Los componentes son servicios adicionales en un servidor que están
     disponibles a los clientes, habitualmente en un subdominio del
     servidor principal (como por ejemplo ‘"micomponente.example.com"’).
     Algunos ejemplos de componentes pueden ser los servidores de salas
     de conversación, los directorios de usuarias o las pasarelas a
     otros protocolos.

     Los componentes internos se implementan con módulos específicos de
     Prosody. Para añadir un componente interno, simplemente rellene el
     campo del nombre de máquina, y el módulo que desea usar para el
     componente.

     Véase <https://prosody.im/doc/components>. Su valor predeterminado
     es ‘()’.

     Los campos disponibles de ‘int-component-configuration’ son:

     todos estos campos de ‘prosody-configuration’: ‘admins’,
     ‘use-libevent?’, ‘modules-enabled’, ‘modules-disabled’,
     ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     además de:
      -- parámetro de ‘int-component-configuration’: string hostname
          Nombre de máquina del componente.

      -- parámetro de ‘int-component-configuration’: string plugin
          Módulo que desea usar para el componente.

      -- parámetro de ‘int-component-configuration’:
               maybe-mod-muc-configuration mod-muc
          Multi-user chat (MUC) es el módulo de Prosody que permite la
          creación de salas de conversación/conferencias para usuarias
          XMPP.

          Información general sobre la configuración y el uso de las
          salas de conversación multi-usuaria puede encontrarse en la
          documentación “Chatrooms”
          (<https://prosody.im/doc/chatrooms>), que debería leer si no
          conoce las salas de conversación de XMPP.

          Véase también <https://prosody.im/doc/modules/mod_muc>.

          Los campos disponibles de ‘mod-muc-configuration’ son:

           -- parámetro de ‘mod-muc-configuration’: string name
               El nombre devuelto en las respuestas de descubrimiento de
               servicios. Su valor predeterminado es ‘"Prosody
               Chatrooms"’.

           -- parámetro de ‘mod-muc-configuration’: string-o-boolean
                    restrict-room-creation
               Si es ‘#t’, únicamente se permitirá a las administradoras
               la creación de nuevas salas de conversación. En otro caso
               cualquiera puede crear una sala. El valor ‘"local"’
               restringe la creación a usuarias en el dominio superior
               del servicio. Por ejemplo ‘usuaria@example.com’ puede
               crear grupos en ‘rooms.example.com’. El valor ‘"admin"’
               restringe el servicio a las administradoras únicamente.
               Su valor predeterminado es ‘#f’.

           -- parámetro de ‘mod-muc-configuration’: entero-no-negativo
                    max-history-messages
               Número máximo de mensajes históricos que se enviarán a
               quien se acabe de unir a la sala. Su valor predeterminado
               es ‘20’.

 -- parámetro de ‘prosody-configuration’:
          lista-ext-component-configuration ext-components
     Los componentes externos usan XEP-0114, el cual se implementa en la
     mayor parte de componentes independientes. Para añadir un
     componente externo, simplemente rellene el campo de nombre de
     máquina (hostname). Véase <httos://prosody.im/doc/components>. Su
     valor predeterminado es ‘()’.

     Los campos disponibles de ‘ext-component-configuration’ son:

     todos estos campos de ‘prosody-configuration’: ‘admins’,
     ‘use-libevent?’, ‘modules-enabled’, ‘modules-disabled’,
     ‘groups-file’, ‘allow-registration?’, ‘ssl’,
     ‘c2s-require-encryption?’, ‘disable-sasl-mechanisms’,
     ‘s2s-require-encryption?’, ‘s2s-secure-auth?’,
     ‘s2s-insecure-domains’, ‘s2s-secure-domains’, ‘authentication’,
     ‘log’, ‘http-max-content-size’, ‘http-external-url’, ‘raw-content’,
     además de:
      -- parámetro de ‘ext-component-configuration’: string
               component-secret
          Contraseña usada por el componente para el ingreso al sistema.

      -- parámetro de ‘ext-component-configuration’: string hostname
          Nombre de máquina del componente.

 -- parámetro de ‘prosody-configuration’: lista-entero-no-negativo
          component-ports
     Puerto o puertos en los que prosody escucha conexiones de
     componentes. Su valor predeterminado es ‘(5347)’.

 -- parámetro de ‘prosody-configuration’: string component-interface
     Interfaz en la que Prosody escucha conexiones de componentes. Su
     valor predeterminado es ‘"127.0.0.1"’.

 -- parámetro de ‘prosody-configuration’: maybe-raw-content raw-content
     Contenido que se añadirá directamente al archivo de configuración.

   Puede ser que únicamente desee usar un archivo ‘prosody.cfg.lua’ ya
creado. En ese caso, puede proporcionar un registro
‘opaque-prosody-configuration’ como el valor de ‘prosody-service-type’.
Como su nombre en inglés indica, una configuración opaca no tiene gran
capacidad reflexiva. Los campos disponibles de
‘opaque-prosody-configuration’ son:

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

 -- parámetro de ‘opaque-prosody-configuration’: string prosody.cfg.lua
     El contenido usado para ‘prosody.cfg.lua’.

   Por ejemplo, si su ‘prosody.cfg.lua’ es simplemente la cadena vacía,
podría instanciar el servicio de Prosody de esta manera:

     (service prosody-service-type
              (opaque-prosody-configuration
               (prosody.cfg.lua "")))

Servicio BitlBee
................

BitlBee (https://bitlbee.org) es una pasarela que proporciona una
interfaz IRC a una variedad de protocolos como XMPP.

 -- Variable Scheme: bitlbee-service-type
     Este es el tipo de servicio para el daemon de pasarela IRC BitlBee
     (https://bitlbee.org). Su valor es un ‘bitlbee-configuration’
     (véase a continuación).

     Para que BitlBee escuche en el puerto 6667 de localhost, añada esta
     línea a sus servicios:

          (service bitlbee-service-type)

 -- Tipo de datos: bitlbee-configuration
     Esta es la configuración para BitlBee, con los siguientes campos:

     ‘interface’ (predeterminada: ‘"127.0.0.1"’)
     ‘port’ (predeterminado: ‘6667’)
          Escucha en la interfaz de red correspondiente a la dirección
          IP especificada en INTERFACE, en el puerto PORT.

          Cuando INTERFACE es ‘127.0.0.1’, únicamente se permite la
          conexión de clientes locales; cuando es ‘0.0.0.0’, las
          conexiones pueden venir de cualquier interfaz de red.

     ‘bitlbee’ (predeterminado: ‘bitlbee’)
          El paquete BitlBee usado.

     ‘plugins’ (predeterminados: ‘'()’)
          Lista de paquetes de módulos usados—por ejemplo,
          ‘bitlbee-discord’.

     ‘extra-settings’ (predeterminado: ‘""’)
          Fragmento de configuración añadido tal cual al archivo de
          configuración de BitlBee.

Servicio Quassel
................

Quassel (https://quassel-irc.org/) es un cliente IRC distribuido, lo que
significa que uno o más clientes se pueden conectar y desconectar del
núcleo central.

 -- Variable Scheme: quassel-service-type
     Es el tipo de servicio del daemon del motor IRC de Quassel
     (https://quassel-irc.org/). Su valor es un ‘quassel-configuration’
     (véase a continuación).

 -- Tipo de datos: quassel-configuration
     Es la configuración para Quassel, con los siguientes campos:

     ‘quassel’ (predeterminado: ‘quassel’)
          El paquete Quassel usado.

     ‘interface’ (predeterminada: ‘"::,0.0.0.0"’)
     ‘port’ (predeterminado: ‘4242’)
          Escucha en la o las interfaces de red que correspondan con las
          direcciones IPv4 o IPv6 delimitadas por comas especificadas en
          INTERFACE, en el puerto PORT.

     ‘loglevel’ (predeterminado: ‘"Info"’)
          El nivel de registro deseado. Los valores aceptados son Debug,
          Info, Warning y Error.


File: guix.es.info,  Node: Servicios de telefonía,  Next: File-Sharing Services,  Prev: Servicios de mensajería,  Up: Servicios

10.8.13 Servicios de telefonía
------------------------------

Esta sección describe como configurar y poner en marcha un servidor
Murmur. Murmur es el servidor del paquete de voz-IP (VoIP) Muble
(https://mumble.info)

 -- Tipo de datos: murmur-configuration
     El tipo de servicio del servidor Murmur. Una ejemplo de
     configuración podría ser el siguiente:

          (service murmur-service-type
                   (murmur-configuration
                    (welcome-text
                      "¡Bienvenida a este servidor Murmur que se ejecuta en Guix!")
                    (cert-required? #t) ;no permite ingresos con una contraseña en texto
                    (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
                    (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))

     Tras reconfigurar su sistema, puede establecer manualmente la
     contraseña de ‘SuperUser’ de Murmur con la orden que se imprime
     durante el proceso de activación.

     Se recomienda el registro de una cuenta de usuaria normal de Mumble
     y la concesión de permisos de administración o moderación. Puede
     usar el cliente ‘mumble’ para ingresar como una nueva usuaria
     normal, registrarse usted misma, y salir del sistema. En el
     siguiente paso ingrese en el sistema con el nombre ‘SuperUser’, use
     la contraseña de ‘SuperUser’ que fue establecida con anterioridad,
     y conceda los permisos de administración o moderación a su usuaria
     de nombre creada anteriormente y cree algunos canales.

     Los campos disponibles de ‘murmur-configuration’ son:

     ‘package’ (predeterminado: ‘mumble’)
          Paquete que contiene ‘bin/murmurd’.

     ‘user’ (predeterminado: ‘"murmur"’)
          Usuaria que ejecutará el servidor Murmur.

     ‘group’ (predeterminado: ‘"murmur"’)
          Grupo de la usuaria que ejecutará el servidor murmur.

     ‘port’ (predeterminado: ‘64738’)
          Puerto en el que escucha el servidor.

     ‘welcome-text’ (predeterminado: ‘""’)
          Mensaje de bienvenida enviado a clientes tras su conexión.

     ‘server-password’ (predeterminada: ‘""’)
          Contraseña que debe introducirse para poder conectarse.

     ‘max-users’ (predeterminados: ‘100’)
          Número máximo de usuarias que pueden estar conectadas a la vez
          al servidor.

     ‘max-user-bandwidth’ (predeterminado: ‘#f’)
          Tráfico de voz máximo que una usuaria puede mandar por
          segundo.

     ‘database-file’ (predeterminado: ‘"/var/lib/murmur/db.sqlite"’)
          Nombre de archivo de la base de datos sqlite. La usuaria del
          servicio se convertirá en propietaria del directorio.

     ‘log-file’ (predeterminado: ‘"/var/log/murmur/murmur.log"’)
          Nombre de archivo del archivo de registro. La usuaria del
          servicio se convertirá en propietaria del directorio.

     ‘autoban-attempts’ (predeterminados: ‘10’)
          Número máximo de ingresos al sistema que una usuaria puede
          llevar a cabo en ‘autoban-timeframe’ sin bloquearse su acceso
          durante ‘autoban-time’.

     ‘autoban-timeframe’ (predeterminado: ‘120’)
          Marco de tiempo del bloqueo automático en segundos.

     ‘autoban-time’ (predeterminado: ‘300’)
          Duración en segundos del periodo que permanecerá bloqueado un
          cliente cuando viole los límites de bloqueo automático.

     ‘opus-threshold’ (predeterminado: ‘100’)
          Porcentaje de clientes que tienen que permitir opus antes de
          cambiar al algoritmo de sonido opus.

     ‘channel-nesting-limit’ (predeterminado: ‘10’)
          Cual puede ser el nivel de recursión de los canales.

     ‘channelname-regex’ (predeterminado: ‘#f’)
          Una cadena en forma de expresión regular Qt que deben cumplir
          los nombres de canal.

     ‘username-regex’ (predeterminado: ‘#f’)
          Una cadena en forma de expresión regular Qt que deben cumplir
          los nombres de usuaria.

     ‘text-message-length’ (predeterminado: ‘5000’)
          Número máximo de bytes que una usuaria puede enviar en un
          mensaje de texto.

     ‘image-message-length’ (predeterminado: ‘(* 128 1024)’)
          Número máximo de bytes que una usuaria puede enviar en un
          mensaje de imagen.

     ‘cert-required?’ (predeterminado: ‘#f’)
          If it is set to ‘#t’ clients that use weak password
          authentication will not be accepted. Users must have completed
          the certificate wizard to join.

     ‘remember-channel?’ (predeterminado: ‘#f’)
          Si murmur debe recordar el último canal en el que estaba cada
          usuaria cuando se desconectó y debe colocarla en el canal
          recordado cuando vuelva a unirse.

     ‘allow-html?’ (predeterminado: ‘#f’)
          Si se permite html en mensajes de texto, comentarios de
          usuaria y descripciones de canal.

     ‘allow-ping?’ (predeterminado: ‘#f’)
          Setting to true exposes the current user count, the maximum
          user count, and the server’s maximum bandwidth per client to
          unauthenticated users. In the Mumble client, this information
          is shown in the Connect dialog.

          Desactivar esta opción impedirá la escucha pública en el
          servidor.

     ‘bonjour?’ (predeterminado: ‘#f’)
          Si el servidor debe anunciarse a sí mismo en la red local a
          través del protocolo “bonjour”.

     ‘send-version?’ (predeterminado: ‘#f’)
          Si se debe exponer la versión del servidor murmur en las
          peticiones ping.

     ‘log-days’ (predeterminado: ‘31’)
          Murmur también almacena registros en la base de datos, los
          cuales son accesibles mediante RPC. El valor predeterminado es
          31 días del mes, pero puede establecer esta configuración a 0
          para mantener los registros para siempre, o -1 para desactivar
          el registro en la base de datos.

     ‘obfuscate-ips?’ (predeterminado: ‘#t’)
          Si las IP registradas deben ofuscarse para proteger la
          privacidad de las usuarias.

     ‘ssl-cert’ (predeterminado: ‘#f’)
          Nombre del archivo del certificado SSL/TLS usado para
          conexiones cifradas.

               (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
     ‘ssl-key’ (predeterminada: ‘#f’)
          Ruta de archivo de la clave privada de ssl usada para las
          conexiones cifradas.
               (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")

     ‘ssl-dh-params’ (predeterminado: ‘#f’)
          Nombre del archivo codificado con PEM con parámetros
          Diffie-Hellman para el cifrado SSL/TLS. De manera alternativa
          puede establecer su valor a ‘"@ffdhe2048"’, ‘"@ffdhe3072"’,
          ‘"@ffdhe4096"’, ‘"@ffdhe6144"’ o ‘"@ffdhe8192"’ para usar los
          parámetros contenidos en el RFC 7919.

     ‘ssl-ciphers’ (predeterminado: ‘#f’)
          La opción ‘ssl-ciphers’ selecciona los protocolos de cifrado
          disponibles para su uso en SSL/TLS.

          Esta opción se especifica mediante el uso de la notación de
          listas de prot. de cifrado de OpenSSL
          (https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT).

          Se recomienda que pruebe su cadena de protocolos con ’openssl
          ciphers <cadena>’ antes de configurarla aquí, para que
          compruebe que protocolos obtendrá. Tras establecer el valor de
          esta opción se recomienda que inspeccione el registro de
          Murmur para asegurarse de que Murmur usa los protocolos que
          esperaba que usase.

          Fíjese: El cambio de esta opción puede impactar en la
          compatibilidad con versiones anteriores de su servidor Murmur,
          y puede eliminar la posibilidad de conexión desde clientes
          Mumble antiguos.

     ‘public-registration’ (predeterminado: ‘#f’)
          Debe ser un registro
          ‘<murmur-public-registration-configuration>’ o ‘#f’.

          Puede registrar de manera opcional su servidor en la lista
          pública de servidores que el cliente ‘mumble’ muestra al
          inicio. No puede registrar su servidor si tiene establecida
          una contraseña para el servidor (‘server-password’), o
          establece ‘allow-ping’ como ‘#f’.

          Puede tomar algunas horas hasta que se muestre en la lista
          pública.

     ‘file’ (predeterminado: ‘#f’)
          Forma opcional alternativa de forzar el valor de esta
          configuración.

 -- Tipo de datos: murmur-public-registration-configuration
     Configuración para registro público de un servicio de murmur.

     ‘name’
          This is a display name for your server. Not to be confused
          with the hostname.

     ‘password’
          A password to identify your registration. Subsequent updates
          will need the same password. Don’t lose your password.

     ‘url’
          Debe ser un enlace ‘http://’ o ‘https://’ a su página web.

     ‘hostname’ (predeterminado: ‘#f’)
          De manera predeterminada su servidor se enumerará por sus
          direcciones IP. Si se usa esta opción, en vez de eso se
          enlazará a través de este nombre de máquina.


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

10.8.14 File-Sharing Services
-----------------------------

The ‘(gnu services file-sharing)’ module provides services that assist
with transferring files over peer-to-peer file-sharing networks.

Transmission Daemon Service
...........................

Transmission (https://transmissionbt.com/) is a flexible BitTorrent
client that offers a variety of graphical and command-line interfaces. A
‘transmission-daemon-service-type’ service provides Transmission’s
headless variant, ‘transmission-daemon’, as a system service, allowing
users to share files via BitTorrent even when they are not logged in.

 -- Scheme Variable: transmission-daemon-service-type
     The service type for the Transmission Daemon BitTorrent client. Its
     value must be a ‘transmission-daemon-configuration’ object as in
     this example:

          (service transmission-daemon-service-type
                   (transmission-daemon-configuration
                    ;; Restrict access to the RPC ("control") interface
                    (rpc-authentication-required? #t)
                    (rpc-username "transmission")
                    (rpc-password
                     (transmission-password-hash
                      "transmission" ; desired password
                      "uKd1uMs9"))   ; arbitrary salt value

                    ;; Accept requests from this and other hosts on the
                    ;; local network
                    (rpc-whitelist-enabled? #t)
                    (rpc-whitelist '("::1" "127.0.0.1" "192.168.0.*"))

                    ;; Limit bandwidth use during work hours
                    (alt-speed-down (* 1024 2)) ;   2 MB/s
                    (alt-speed-up 512)          ; 512 kB/s

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

   Once the service is started, users can interact with the daemon
through its Web interface (at ‘http://localhost:9091/’) or by using the
‘transmission-remote’ command-line tool, available in the ‘transmission’
package. (Emacs users may want to also consider the ‘emacs-transmission’
package.) Both communicate with the daemon through its remote procedure
call (RPC) interface, which by default is available to all users on the
system; you may wish to change this by assigning values to the
‘rpc-authentication-required?’, ‘rpc-username’ and ‘rpc-password’
settings, as shown in the example above and documented further below.

   The value for ‘rpc-password’ must be a password hash of the type
generated and used by Transmission clients. This can be copied verbatim
from an existing ‘settings.json’ file, if another Transmission client is
already being used. Otherwise, the ‘transmission-password-hash’ and
‘transmission-random-salt’ procedures provided by this module can be
used to obtain a suitable hash value.

 -- Scheme Procedure: transmission-password-hash PASSWORD SALT
     Returns a string containing the result of hashing PASSWORD together
     with SALT, in the format recognized by Transmission clients for
     their ‘rpc-password’ configuration setting.

     SALT must be an eight-character string. The
     ‘transmission-random-salt’ procedure can be used to generate a
     suitable salt value at random.

 -- Scheme Procedure: transmission-random-salt
     Returns a string containing a random, eight-character salt value of
     the type generated and used by Transmission clients, suitable for
     passing to the ‘transmission-password-hash’ procedure.

   These procedures are accessible from within a Guile REPL started with
the ‘guix repl’ command (*note Invocación de guix repl::). This is
useful for obtaining a random salt value to provide as the second
parameter to ‘transmission-password-hash‘, as in this example session:

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

   Alternatively, a complete password hash can generated in a single
step:

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

   The resulting string can be used as-is for the value of
‘rpc-password’, allowing the password to be kept hidden even in the
operating-system configuration.

   Torrent files downloaded by the daemon are directly accessible only
to users in the “transmission” user group, who receive read-only access
to the directory specified by the ‘download-dir’ configuration setting
(and also the directory specified by ‘incomplete-dir’, if
‘incomplete-dir-enabled?’ is ‘#t’). Downloaded files can be moved to
another directory or deleted altogether using ‘transmission-remote’ with
its ‘--move’ and ‘--remove-and-delete’ options.

   If the ‘watch-dir-enabled?’ setting is set to ‘#t’, users in the
“transmission” group are able also to place ‘.torrent’ files in the
directory specified by ‘watch-dir’ to have the corresponding torrents
added by the daemon. (The ‘trash-original-torrent-files?’ setting
controls whether the daemon deletes these files after processing them.)

   Some of the daemon’s configuration settings can be changed
temporarily by ‘transmission-remote’ and similar tools. To undo these
changes, use the service’s ‘reload’ action to have the daemon reload its
settings from disk:

     # herd reload transmission-daemon

   The full set of available configuration settings is defined by the
‘transmission-daemon-configuration’ data type.

 -- Data Type: transmission-daemon-configuration
     The data type representing configuration settings for Transmission
     Daemon. These correspond directly to the settings recognized by
     Transmission clients in their ‘settings.json’ file.

   Available ‘transmission-daemon-configuration’ fields are:

 -- ‘transmission-daemon-configuration’ parameter: package transmission
     The Transmission package to use.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          stop-wait-period
     The period, in seconds, to wait when stopping the service for
     ‘transmission-daemon’ to exit before killing its process. This
     allows the daemon time to complete its housekeeping and send a
     final update to trackers as it shuts down. On slow hosts, or hosts
     with a slow network connection, this value may need to be
     increased.

     El valor predeterminado es ‘10’.

 -- ‘transmission-daemon-configuration’ parameter: string download-dir
     The directory to which torrent files are downloaded.

     Defaults to ‘"/var/lib/transmission-daemon/downloads"’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          incomplete-dir-enabled?
     If ‘#t’, files will be held in ‘incomplete-dir’ while their torrent
     is being downloaded, then moved to ‘download-dir’ once the torrent
     is complete. Otherwise, files for all torrents (including those
     still being downloaded) will be placed in ‘download-dir’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: maybe-string
          incomplete-dir
     The directory in which files from incompletely downloaded torrents
     will be held when ‘incomplete-dir-enabled?’ is ‘#t’.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: umask umask
     The file mode creation mask used for downloaded files. (See the
     ‘umask’ man page for more information.)

     Defaults to ‘18’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          rename-partial-files?
     When ‘#t’, “.part” is appended to the name of partially downloaded
     files.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: preallocation-mode
          preallocation
     The mode by which space should be preallocated for downloaded
     files, one of ‘none’, ‘fast’ (or ‘sparse’) and ‘full’. Specifying
     ‘full’ will minimize disk fragmentation at a cost to file-creation
     speed.

     Defaults to ‘fast’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          watch-dir-enabled?
     If ‘#t’, the directory specified by ‘watch-dir’ will be watched for
     new ‘.torrent’ files and the torrents they describe added
     automatically (and the original files removed, if
     ‘trash-original-torrent-files?’ is ‘#t’).

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: maybe-string
          watch-dir
     The directory to be watched for ‘.torrent’ files indicating new
     torrents to be added, when ‘watch-dir-enabled’ is ‘#t’.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          trash-original-torrent-files?
     When ‘#t’, ‘.torrent’ files will be deleted from the watch
     directory once their torrent has been added (see
     ‘watch-directory-enabled?’).

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: boolean
          speed-limit-down-enabled?
     When ‘#t’, the daemon’s download speed will be limited to the rate
     specified by ‘speed-limit-down’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          speed-limit-down
     The default global-maximum download speed, in kilobytes per second.

     El valor predeterminado es ‘100’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          speed-limit-up-enabled?
     When ‘#t’, the daemon’s upload speed will be limited to the rate
     specified by ‘speed-limit-up’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          speed-limit-up
     The default global-maximum upload speed, in kilobytes per second.

     El valor predeterminado es ‘100’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          alt-speed-enabled?
     When ‘#t’, the alternate speed limits ‘alt-speed-down’ and
     ‘alt-speed-up’ are used (in place of ‘speed-limit-down’ and
     ‘speed-limit-up’, if they are enabled) to constrain the daemon’s
     bandwidth usage. This can be scheduled to occur automatically at
     certain times during the week; see ‘alt-speed-time-enabled?’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          alt-speed-down
     The alternate global-maximum download speed, in kilobytes per
     second.

     El valor predeterminado es ‘50’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          alt-speed-up
     The alternate global-maximum upload speed, in kilobytes per second.

     El valor predeterminado es ‘50’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          alt-speed-time-enabled?
     When ‘#t’, the alternate speed limits ‘alt-speed-down’ and
     ‘alt-speed-up’ will be enabled automatically during the periods
     specified by ‘alt-speed-time-day’, ‘alt-speed-time-begin’ and
     ‘alt-time-speed-end’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: day-list
          alt-speed-time-day
     The days of the week on which the alternate-speed schedule should
     be used, specified either as a list of days (‘sunday’, ‘monday’,
     and so on) or using one of the symbols ‘weekdays’, ‘weekends’ or
     ‘all’.

     Defaults to ‘all’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          alt-speed-time-begin
     The time of day at which to enable the alternate speed limits,
     expressed as a number of minutes since midnight.

     Defaults to ‘540’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          alt-speed-time-end
     The time of day at which to disable the alternate speed limits,
     expressed as a number of minutes since midnight.

     Defaults to ‘1020’.

 -- ‘transmission-daemon-configuration’ parameter: string
          bind-address-ipv4
     The IP address at which to listen for peer connections, or
     “0.0.0.0” to listen at all available IP addresses.

     El valor predeterminado es ‘"0.0.0.0"’.

 -- ‘transmission-daemon-configuration’ parameter: string
          bind-address-ipv6
     The IPv6 address at which to listen for peer connections, or “::”
     to listen at all available IPv6 addresses.

     Defaults to ‘"::"’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          peer-port-random-on-start?
     If ‘#t’, when the daemon starts it will select a port at random on
     which to listen for peer connections, from the range specified
     (inclusively) by ‘peer-port-random-low’ and
     ‘peer-port-random-high’. Otherwise, it listens on the port
     specified by ‘peer-port’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: port-number
          peer-port-random-low
     The lowest selectable port number when ‘peer-port-random-on-start?’
     is ‘#t’.

     Defaults to ‘49152’.

 -- ‘transmission-daemon-configuration’ parameter: port-number
          peer-port-random-high
     The highest selectable port number when ‘peer-port-random-on-start’
     is ‘#t’.

     Defaults to ‘65535’.

 -- ‘transmission-daemon-configuration’ parameter: port-number peer-port
     The port on which to listen for peer connections when
     ‘peer-port-random-on-start?’ is ‘#f’.

     Defaults to ‘51413’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          port-forwarding-enabled?
     If ‘#t’, the daemon will attempt to configure port-forwarding on an
     upstream gateway automatically using UPnP and NAT-PMP.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: encryption-mode
          encryption
     The encryption preference for peer connections, one of
     ‘prefer-unencrypted-connections’, ‘prefer-encrypted-connections’ or
     ‘require-encrypted-connections’.

     Defaults to ‘prefer-encrypted-connections’.

 -- ‘transmission-daemon-configuration’ parameter: maybe-string
          peer-congestion-algorithm
     The TCP congestion-control algorithm to use for peer connections,
     specified using a string recognized by the operating system in
     calls to ‘setsockopt’ (or set to ‘disabled’, in which case the
     operating-system default is used).

     Note that on GNU/Linux systems, the kernel must be configured to
     allow processes to use a congestion-control algorithm not in the
     default set; otherwise, it will deny these requests with “Operation
     not permitted”. To see which algorithms are available on your
     system and which are currently permitted for use, look at the
     contents of the files ‘tcp_available_congestion_control’ and
     ‘tcp_allowed_congestion_control’ in the ‘/proc/sys/net/ipv4’
     directory.

     As an example, to have Transmission Daemon use the TCP Low Priority
     congestion-control algorithm
     (http://www-ece.rice.edu/networks/TCP-LP/), you’ll need to modify
     your kernel configuration to build in support for the algorithm,
     then update your operating-system configuration to allow its use by
     adding a ‘sysctl-service-type’ service (or updating the existing
     one’s configuration) with lines like the following:

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

     The Transmission Daemon configuration can then be updated with

          (peer-congestion-algorithm "lp")

     and the system reconfigured to have the changes take effect.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: tcp-type-of-service
          peer-socket-tos
     The type of service to request in outgoing TCP packets, one of
     ‘default’, ‘low-cost’, ‘throughput’, ‘low-delay’ and ‘reliability’.

     Defaults to ‘default’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          peer-limit-global
     The global limit on the number of connected peers.

     Defaults to ‘200’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          peer-limit-per-torrent
     The per-torrent limit on the number of connected peers.

     El valor predeterminado es ‘50’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          upload-slots-per-torrent
     The maximum number of peers to which the daemon will upload data
     simultaneously for each torrent.

     Defaults to ‘14’.

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          peer-id-ttl-hours
     The maximum lifespan, in hours, of the peer ID associated with each
     public torrent before it is regenerated.

     Defaults to ‘6’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          blocklist-enabled?
     When ‘#t’, the daemon will ignore peers mentioned in the blocklist
     it has most recently downloaded from ‘blocklist-url’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: maybe-string
          blocklist-url
     The URL of a peer blocklist (in P2P-plaintext or eMule ‘.dat’
     format) to be periodically downloaded and applied when
     ‘blocklist-enabled?’ is ‘#t’.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          download-queue-enabled?
     If ‘#t’, the daemon will be limited to downloading at most
     ‘download-queue-size’ non-stalled torrents simultaneously.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          download-queue-size
     The size of the daemon’s download queue, which limits the number of
     non-stalled torrents it will download at any one time when
     ‘download-queue-enabled?’ is ‘#t’.

     El valor predeterminado es ‘5’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          seed-queue-enabled?
     If ‘#t’, the daemon will be limited to seeding at most
     ‘seed-queue-size’ non-stalled torrents simultaneously.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          seed-queue-size
     The size of the daemon’s seed queue, which limits the number of
     non-stalled torrents it will seed at any one time when
     ‘seed-queue-enabled?’ is ‘#t’.

     El valor predeterminado es ‘10’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          queue-stalled-enabled?
     When ‘#t’, the daemon will consider torrents for which it has not
     shared data in the past ‘queue-stalled-minutes’ minutes to be
     stalled and not count them against its ‘download-queue-size’ and
     ‘seed-queue-size’ limits.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          queue-stalled-minutes
     The maximum period, in minutes, a torrent may be idle before it is
     considered to be stalled, when ‘queue-stalled-enabled?’ is ‘#t’.

     El valor predeterminado es ‘30’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          ratio-limit-enabled?
     When ‘#t’, a torrent being seeded will automatically be paused once
     it reaches the ratio specified by ‘ratio-limit’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-rational
          ratio-limit
     The ratio at which a torrent being seeded will be paused, when
     ‘ratio-limit-enabled?’ is ‘#t’.

     Defaults to ‘2.0’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          idle-seeding-limit-enabled?
     When ‘#t’, a torrent being seeded will automatically be paused once
     it has been idle for ‘idle-seeding-limit’ minutes.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          idle-seeding-limit
     The maximum period, in minutes, a torrent being seeded may be idle
     before it is paused, when ‘idle-seeding-limit-enabled?’ is ‘#t’.

     El valor predeterminado es ‘30’.

 -- ‘transmission-daemon-configuration’ parameter: boolean dht-enabled?
     Enable the distributed hash table (DHT) protocol
     (http://bittorrent.org/beps/bep_0005.html), which supports the use
     of trackerless torrents.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: boolean lpd-enabled?
     Enable local peer discovery
     (https://en.wikipedia.org/wiki/Local_Peer_Discovery) (LPD), which
     allows the discovery of peers on the local network and may reduce
     the amount of data sent over the public Internet.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: boolean pex-enabled?
     Enable peer exchange (https://en.wikipedia.org/wiki/Peer_exchange)
     (PEX), which reduces the daemon’s reliance on external trackers and
     may improve its performance.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: boolean utp-enabled?
     Enable the micro transport protocol
     (http://bittorrent.org/beps/bep_0029.html) (uTP), which aims to
     reduce the impact of BitTorrent traffic on other users of the local
     network while maintaining full utilization of the available
     bandwidth.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: boolean rpc-enabled?
     If ‘#t’, enable the remote procedure call (RPC) interface, which
     allows remote control of the daemon via its Web interface, the
     ‘transmission-remote’ command-line client, and similar tools.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: string
          rpc-bind-address
     The IP address at which to listen for RPC connections, or “0.0.0.0”
     to listen at all available IP addresses.

     El valor predeterminado es ‘"0.0.0.0"’.

 -- ‘transmission-daemon-configuration’ parameter: port-number rpc-port
     The port on which to listen for RPC connections.

     Defaults to ‘9091’.

 -- ‘transmission-daemon-configuration’ parameter: string rpc-url
     The path prefix to use in the RPC-endpoint URL.

     Defaults to ‘"/transmission/"’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          rpc-authentication-required?
     When ‘#t’, clients must authenticate (see ‘rpc-username’ and
     ‘rpc-password’) when using the RPC interface. Note this has the
     side effect of disabling host-name whitelisting (see
     ‘rpc-host-whitelist-enabled?’.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: maybe-string
          rpc-username
     The username required by clients to access the RPC interface when
     ‘rpc-authentication-required?’ is ‘#t’.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter:
          maybe-transmission-password-hash rpc-password
     The password required by clients to access the RPC interface when
     ‘rpc-authentication-required?’ is ‘#t’. This must be specified
     using a password hash in the format recognized by Transmission
     clients, either copied from an existing ‘settings.json’ file or
     generated using the ‘transmission-password-hash’ procedure.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          rpc-whitelist-enabled?
     When ‘#t’, RPC requests will be accepted only when they originate
     from an address specified in ‘rpc-whitelist’.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: string-list
          rpc-whitelist
     The list of IP and IPv6 addresses from which RPC requests will be
     accepted when ‘rpc-whitelist-enabled?’ is ‘#t’. Wildcards may be
     specified using ‘*’.

     Defaults to ‘("127.0.0.1" "::1")’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          rpc-host-whitelist-enabled?
     When ‘#t’, RPC requests will be accepted only when they are
     addressed to a host named in ‘rpc-host-whitelist’. Note that
     requests to “localhost” or “localhost.”, or to a numeric address,
     are always accepted regardless of these settings.

     Note also this functionality is disabled when
     ‘rpc-authentication-required?’ is ‘#t’.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: string-list
          rpc-host-whitelist
     The list of host names recognized by the RPC server when
     ‘rpc-host-whitelist-enabled?’ is ‘#t’.

     El valor predeterminado es ‘()’.

 -- ‘transmission-daemon-configuration’ parameter: message-level
          message-level
     The minimum severity level of messages to be logged (to
     ‘/var/log/transmission.log’) by the daemon, one of ‘none’ (no
     logging), ‘error’, ‘info’ and ‘debug’.

     El valor predeterminado es ‘info’

 -- ‘transmission-daemon-configuration’ parameter: boolean
          start-added-torrents?
     When ‘#t’, torrents are started as soon as they are added;
     otherwise, they are added in “paused” state.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: boolean
          script-torrent-done-enabled?
     When ‘#t’, the script specified by ‘script-torrent-done-filename’
     will be invoked each time a torrent completes.

     El valor predeterminado es ‘#f’

 -- ‘transmission-daemon-configuration’ parameter: maybe-file-object
          script-torrent-done-filename
     A file name or file-like object specifying a script to run each
     time a torrent completes, when ‘script-torrent-done-enabled?’ is
     ‘#t’.

     El valor predeterminado es ‘disabled’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          scrape-paused-torrents-enabled?
     When ‘#t’, the daemon will scrape trackers for a torrent even when
     the torrent is paused.

     El valor predeterminado es ‘#t’

 -- ‘transmission-daemon-configuration’ parameter: non-negative-integer
          cache-size-mb
     The amount of memory, in megabytes, to allocate for the daemon’s
     in-memory cache. A larger value may increase performance by
     reducing the frequency of disk I/O.

     Defaults to ‘4’.

 -- ‘transmission-daemon-configuration’ parameter: boolean
          prefetch-enabled?
     When ‘#t’, the daemon will try to improve I/O performance by
     hinting to the operating system which data is likely to be read
     next from disk to satisfy requests from peers.

     El valor predeterminado es ‘#t’


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

10.8.15 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 proporciona métricas de monitorización, entre otras el uso de
red, la carga de la CPU y el consumo de espacio en disco:

   • Alto rendimiento, alta capacidad (capaz de monitorizar cientos de
     miles de dispositivos).
   • Detección automática de servidores, dispositivos de red e
     interfaces.
   • Descubrimiento a bajo nivel, que permite el inicio automático de la
     monitorización de nuevos elementos, sistemas de archivos o
     interfaces de red entre otros.
   • Monitorización distribuida con administración web centralizada.
   • Agentes nativos de alto rendimiento.
   • Métricas SLA y KPI ITIL en los informes.
   • Visión de alto nivel (negocio) de los recursos monitorizados a
     través de pantallas de consola visual y paneles definidas por la
     usuaria.
   • Ejecución remota de ordenes a través de un proxy Zabbix.

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

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

 -- parámetro de ‘zabbix-server-configuration’: string user
     Usuaria que ejecutará el servidor Zabbix.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-server-configuration’: grupo group
     Grupo que ejecutará el servidor Zabbix.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-server-configuration’: string db-host
     El nombre de máquina de la base de datos.

     El valor predeterminado es ‘"127.0.0.1"’.

 -- parámetro de ‘zabbix-server-configuration’: string db-name
     Nombre de la base de datos.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-server-configuration’: string db-user
     Usuaria de la base de datos.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-server-configuration’: string db-password
     Contraseña de la base de datos. Por favor, en vez de esto use
     ‘include-files’ con ‘DBPassword=SECRET’ dentro de un archivo
     especificado.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-server-configuration’: number db-port
     Puerto de la base de datos.

     El valor predeterminado es ‘5432’.

 -- parámetro de ‘zabbix-server-configuration’: string log-type
     Especifica donde se escriben los mensajes de registro:

        • ‘system’ - syslog.

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

        • ‘console’ - salida estándar.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-server-configuration’: string log-file
     Nombre del archivo de registro para el parámetro ‘file’ de
     ‘log-type’.

     El valor predeterminado es ‘"/var/log/zabbix/server.log"’.

 -- parámetro de ‘zabbix-server-configuration’: string pid-file
     Nombre del archivo de PID.

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

 -- parámetro de ‘zabbix-server-configuration’: string ssl-ca-location
     La localización de los archivos de autoridades de certificación
     (CA) para la verificación de certificados SSL de los servidores.

     El valor predeterminado es ‘"/etc/ssl/certs/ca-certificates.crt"’.

 -- parámetro de ‘zabbix-server-configuration’: string ssl-cert-location
     Localización de los certificados SSL de los clientes.

     El valor predeterminado es ‘"/etc/ssl/certs"’.

 -- parámetro de ‘zabbix-server-configuration’: string extra-options
     Opciones adicionales que se añadirán al final del archivo de
     configuración de Zabbix.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-server-configuration’: archivos-incluidos
          include-files
     Puede incluir archivos individuales o todos los archivos en un
     directorio en el archivo de configuración.

     El valor predeterminado es ‘()’.

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

El agente Zabbix (zabbix-agent) obtiene información del servidor Zabbix.

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

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

 -- parámetro de ‘zabbix-agent-configuration’: string user
     Usuaria que ejecutará el agente Zabbix.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-agent-configuration’: grupo group
     Grupo que ejecutará el agente Zabbix.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-agent-configuration’: string hostname
     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.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-agent-configuration’: string log-type
     Especifica donde se escriben los mensajes de registro:

        • ‘system’ - syslog.

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

        • ‘console’ - salida estándar.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-agent-configuration’: string log-file
     Nombre del archivo de registro para el parámetro ‘file’ de
     ‘log-type’.

     El valor predeterminado es ‘"/var/log/zabbix/agent.log"’.

 -- parámetro de ‘zabbix-agent-configuration’: string pid-file
     Nombre del archivo de PID.

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

 -- parámetro de ‘zabbix-agent-configuration’: lista server
     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í.

     El valor predeterminado es ‘"127.0.0.1"’.

 -- parámetro de ‘zabbix-agent-configuration’: lista server-active
     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.

     El valor predeterminado es ‘"127.0.0.1"’.

 -- parámetro de ‘zabbix-agent-configuration’: string extra-options
     Opciones adicionales que se añadirán al final del archivo de
     configuración de Zabbix.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-agent-configuration’: archivos-incluidos
          include-files
     Puede incluir archivos individuales o todos los archivos en un
     directorio en el archivo de configuración.

     El valor predeterminado es ‘()’.

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

Este servicio proporciona una interfaz Web al servidor Zabbix.

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

 -- parámetro de ‘zabbix-front-end-configuration’:
          lista-nginx-server-configuration nginx
     Configuración de NGINX.

 -- parámetro de ‘zabbix-front-end-configuration’: string db-host
     El nombre de máquina de la base de datos.

     El valor predeterminado es ‘"localhost"’.

 -- parámetro de ‘zabbix-front-end-configuration’: number db-port
     Puerto de la base de datos.

     El valor predeterminado es ‘5432’.

 -- parámetro de ‘zabbix-front-end-configuration’: string db-name
     Nombre de la base de datos.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-front-end-configuration’: string db-user
     Usuaria de la base de datos.

     El valor predeterminado es ‘"zabbix"’.

 -- parámetro de ‘zabbix-front-end-configuration’: string db-password
     Contraseña de la base de datos. Por favor, en vez de esto use
     ‘db-secret-file’.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-front-end-configuration’: string db-secret-file
     Secret file containing the credentials for the Zabbix front-end.
     The value must be a local file name, not a G-expression. You are
     expected to create this file manually. Its contents will be copied
     into ‘zabbix.conf.php’ as the value of ‘$DB['PASSWORD']’.

     El valor predeterminado es ‘""’.

 -- parámetro de ‘zabbix-front-end-configuration’: string zabbix-host
     Nombre de máquina del servidor Zabbix.

     El valor predeterminado es ‘"localhost"’.

 -- parámetro de ‘zabbix-front-end-configuration’: number zabbix-port
     Puerto del servidor Zabbix.

     El valor predeterminado es ‘10051’.


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

10.8.16 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

10.8.17 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

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

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

 -- 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 (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
     Tipo de datos para el gestor de procesos ‘dynamic’ de php-fpm. Con
     el gestor de procesos ‘dynamic’, se mantienen procesos de trabajo
     disponibles en base a los límites configurados.
     ‘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.

   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

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

     ‘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: Servicios VPN,  Prev: Servicios de certificados,  Up: Servicios

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

     ‘disable-any?’ (predeterminado: ‘#f’)
          Cuando es verdadero, no permite consultas de tipo ANY.

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

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

     ‘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: Servicios VPN,  Next: Sistema de archivos en red,  Prev: Servicios DNS,  Up: Servicios

10.8.21 Servicios VPN
---------------------

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

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.

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

 -- parámetro de ‘openvpn-client-configuration’: package openvpn
     El paquete OpenVPN.

 -- parámetro de ‘openvpn-client-configuration’: string pid-file
     El archivo de pid de OpenVPN.

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

 -- parámetro de ‘openvpn-client-configuration’: protocolo proto
     El protocolo (UDP o TCP) usado para la apertura del canal entre
     clientes y servidores.

     El valor predeterminado es ‘udp’.

 -- parámetro de ‘openvpn-client-configuration’: dispositivo dev
     El tipo de dispositivo usado para representar la conexión VPN.

     El valor predeterminado es ‘tun’.

   If you do not have some of these files (eg. you use a username and
password), you can disable any of the following three fields by setting
it to ‘'disabled’.

 -- ‘openvpn-client-configuration’ parameter: maybe-string ca
     La autoridad de certificación contra la que se comprueban las
     conexiones.

     El valor predeterminado es ‘"/etc/openvpn/ca.crt"’.

 -- ‘openvpn-client-configuration’ parameter: maybe-string cert
     El certificado de la máquina en la que se ejecuta el daemon. Debe
     estar firmado por la autoridad proporcionada en ‘ca’.

     El valor predeterminado es ‘"/etc/openvpn/client.crt"’.

 -- ‘openvpn-client-configuration’ parameter: maybe-string key
     La clave de la máquina en la que se ejecuta el daemon. Debe ser la
     clave cuyo certificado es ‘cert’.

     El valor predeterminado es ‘"/etc/openvpn/client.key"’.

 -- parámetro de ‘openvpn-client-configuration’: boolean comp-lzo?
     Determina si se usa el algoritmo de compresión lzo.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-client-configuration’: boolean persist-key?
     No vuelve a leer los archivos de claves tras la señal SIGUSR1 o
     –ping-restart.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-client-configuration’: boolean persist-tun?
     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.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-client-configuration’: boolean fast-io?
     (Experimental) Optimiza las escrituras de E/S de TUN/TAP/UDP
     evitando llamar poll/epoll/select antes de la operación de
     escritura (‘write’).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-client-configuration’: number verbosity
     Nivel de detalle en los mensajes.

     El valor predeterminado es ‘3’.

 -- parámetro de ‘openvpn-client-configuration’: cliente-tls-auth
          tls-auth
     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).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-client-configuration’: maybe-string
          auth-user-pass
     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.

     El valor predeterminado es ‘'disabled’.

 -- parámetro de ‘openvpn-client-configuration’: key-usage
          verify-key-usage?
     Si se comprueba que el certificado del servidor tenga la extensión
     de uso de servidor.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-client-configuration’: bind bind?
     Asociación a un número específico de puerto local.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-client-configuration’: resolv-retry
          resolv-retry?
     Reintentos de resolución de la dirección del servidor.

     El valor predeterminado es ‘#t’

 -- parámetro ‘openvpn-client-configuration’: lista-openvpn-remote
          remote
     Una lista de servidores remotos a los que conectarse.

     El valor predeterminado es ‘()’.

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

      -- parámetro de ‘openvpn-remote-configuration’: string name
          Nombre del servidor.

          El valor predeterminado es ‘"my-server"’.

      -- parámetro de ‘openvpn-remote-configuration’: number port
          Puerto en el que escucha el servidor.

          El valor predeterminado es ‘1194’.

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

 -- parámetro de ‘openvpn-server-configuration’: package openvpn
     El paquete OpenVPN.

 -- parámetro de ‘openvpn-server-configuration’: string pid-file
     El archivo de pid de OpenVPN.

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

 -- parámetro de ‘openvpn-server-configuration’: protocolo proto
     El protocolo (UDP o TCP) usado para la apertura del canal entre
     clientes y servidores.

     El valor predeterminado es ‘udp’.

 -- parámetro de ‘openvpn-server-configuration’: dispositivo dev
     El tipo de dispositivo usado para representar la conexión VPN.

     El valor predeterminado es ‘tun’.

   If you do not have some of these files (eg. you use a username and
password), you can disable any of the following three fields by setting
it to ‘'disabled’.

 -- ‘openvpn-server-configuration’ parameter: maybe-string ca
     La autoridad de certificación contra la que se comprueban las
     conexiones.

     El valor predeterminado es ‘"/etc/openvpn/ca.crt"’.

 -- ‘openvpn-server-configuration’ parameter: maybe-string cert
     El certificado de la máquina en la que se ejecuta el daemon. Debe
     estar firmado por la autoridad proporcionada en ‘ca’.

     El valor predeterminado es ‘"/etc/openvpn/client.crt"’.

 -- ‘openvpn-server-configuration’ parameter: maybe-string key
     La clave de la máquina en la que se ejecuta el daemon. Debe ser la
     clave cuyo certificado es ‘cert’.

     El valor predeterminado es ‘"/etc/openvpn/client.key"’.

 -- parámetro de ‘openvpn-server-configuration’: boolean comp-lzo?
     Determina si se usa el algoritmo de compresión lzo.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-server-configuration’: boolean persist-key?
     No vuelve a leer los archivos de claves tras la señal SIGUSR1 o
     –ping-restart.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-server-configuration’: boolean persist-tun?
     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.

     El valor predeterminado es ‘#t’

 -- parámetro de ‘openvpn-server-configuration’: boolean fast-io?
     (Experimental) Optimiza las escrituras de E/S de TUN/TAP/UDP
     evitando llamar poll/epoll/select antes de la operación de
     escritura (‘write’).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-server-configuration’: number verbosity
     Nivel de detalle en los mensajes.

     El valor predeterminado es ‘3’.

 -- parámetro de ‘openvpn-server-configuration’: servidor-tls-auth
          tls-auth
     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).

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-server-configuration’: number port
     Especifica el número de puerto en el que escucha el servidor.

     El valor predeterminado es ‘1194’.

 -- parámetro de ‘openvpn-server-configuration’: ip-máscara server
     Una IP y una máscara que especifiquen la subred dentro de la red
     virtual.

     El valor predeterminado es ‘"10.8.0.0 255.255.255.0"’.

 -- parámetro de ‘openvpn-server-configuration’: cidr6 server-ipv6
     La especificación de una subred IPv6 dentro de la red virtual en
     notación CIDR.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-server-configuration’: string dh
     El archivo de parámetros Diffie-Hellman.

     El valor predeterminado es ‘"/etc/openvpn/dh2048.pem"’.

 -- parámetro de ‘openvpn-server-configuration’: string
          ifconfig-pool-persist
     El archivo que registra IP de clientes.

     El valor predeterminado es ‘"/etc/openvpn/ipp.txt"’.

 -- parámetro de ‘openvpn-server-configuration’: gateway
          redirect-gateway?
     Cuando sea verdadero, el servidor actuará como una pasarela para
     sus clientes.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-server-configuration’: boolean
          client-to-client?
     Cuando es verdadero, se permite la comunicación entre clientes
     dentro de la VPN.

     El valor predeterminado es ‘#f’

 -- parámetro de ‘openvpn-server-configuration’: keepalive 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.

 -- parámetro de ‘openvpn-server-configuration’: number max-clients
     Número máximo de clientes.

     El valor predeterminado es ‘100’.

 -- parámetro de ‘openvpn-server-configuration’: string status
     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.

     El valor predeterminado es ‘"/var/run/openvpn/status"’.

 -- parámetro de ‘openvpn-server-configuration’: lista-openvpn-ccd
          client-config-dir
     Lista de configuración para algunos clientes.

     El valor predeterminado es ‘()’.

     Los campos disponibles de ‘openvpn-ccd-configuration’ son:

      -- parámetro de ‘openvpn-ccd-configuration’: string name
          Nombre del cliente.

          El valor predeterminado es ‘"client"’.

      -- parámetro de ‘openvpn-ccd-configuration’: ip-máscara iroute
          Red propia del cliente

          El valor predeterminado es ‘#f’

      -- parámetro de ‘openvpn-ccd-configuration’: ip-máscara
               ifconfig-push
          IP de la VPN del cliente.

          El valor predeterminado es ‘#f’

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.

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

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


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

10.8.22 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: Integración continua,  Next: Servicios de gestión de energía,  Prev: Sistema de archivos en red,  Up: Servicios

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

     ‘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’.

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

