Précédent: Services Hurd, Monter: Services [Table des matières][Index]
Le module (gnu services authentication)
fournit un service DBus pour
lire et identifier les empreintes digitales via un lecteur d’empreinte.
Le type de service pour fprintd
, qui fournit des capacités de
lecture d’empreinte.
Le module (gnu services sysctl)
fournit un service pour configurer
les paramètres du noyau au démarrage.
Le type de service pour sysctl
, qui modifie les paramètres du
noyau dans /proc/sys/. Pour activer le transfert d’IPv4, vous pouvez
l’instancier ainsi :
(service sysctl-service-type
(sysctl-configuration
(settings '(("net.ipv4.ip_forward" . "1")))))
Comme le service sysctl-service-type
fait partie des services par
défaut, %base-services
et %desktop-services
, vous pouvez
utiliser modify-services
pour changer sa configuration et ajouter les
paramètres du noyau que vous voulez (voir modify-services
).
(modify-services %base-services
(sysctl-service-type config =>
(sysctl-configuration
(settings (append '(("net.ipv4.ip_forward" . "1"))
%default-sysctl-settings)))))
Le type de données représentant la configuration de sysctl
.
sysctl
(par défaut : (file-append procps "/sbin/sysctl"
)L’exécutable sysctl
à utiliser.
settings
(par défaut : %default-sysctl-settings
)Une liste d’association spécifiant les paramètres du noyau et leur valeur.
Une liste d’association spécifiant les paramètres sysctl
par
défaut sur le système Guix.
Le module (gnu services security-token)
fournit le service suivant
qui lance pcscd
, le démon PC/SC Smart Card. pcscd
est
le démon pour pcsc-lite et MuscleCard. C’est un gestionnaire de ressource
qui coordonne les communications avec les lecteurs de smart cards, les smart
cards et les jetons cryptographiques connectés au système.
Le type de service pour le service pcscd
. Sa valeur doit être un
objet pcscd-configuration
. Pour lancer pcscd dans sa configuration
par défaut, instantiez-le avec :
Type de données représentant la configuration de pcscd
.
pcsc-lite
(par défaut : pcsc-lite
)Le paquet pcsc-lite qui fournit pcscd.
usb-drivers
(par défaut : (list ccid)
)Liste des paquets qui fournissent des pilotes USB à pcscd. Les pilotes doivent être dans pcsc/drivers dans le répertoire du dépôt du paquet.
Le module (gnu services lirc)
fournit le service suivant.
Type for a service that runs LIRC, a daemon that decodes infrared signals from remote controls.
The value for this service is a <lirc-configuration>
object.
Data type representing the configuration of lircd
.
lirc
(default: lirc
) (type: file-like)Package object for lirc
.
device
(default: #f
) (type: string)driver
(default: #f
) (type: string)config-file
(default: #f
) (type: string-or-file-like)TODO. See lircd
manual for details.
extra-options
(default: '()
) (type: list-of-string)Additional command-line options to pass to lircd
.
Le module (gnu services spice)
fournit le service suivant.
Type of the service that runs VDAGENT, a daemon that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes.
Data type representing the configuration of
spice-vdagent-service-type
.
spice-vdagent
(default: spice-vdagent
) (type: file-like)Package object for VDAGENT.
Le service inputattach vous permet d’utiliser des périphériques d’entrée comme les tablettes Wacom, les écrans tactiles ou les joysticks avec le serveur d’affichage Xorg.
Type d’un service qui lance inputattach
sur un appareil et envie
les événements qu’il reçoit.
device-type
(par défaut : "wacom"
)Le type du périphérique à gérer. Lancez inputattach --help
, du
paquet inputattach
, pour voir la liste des types de périphériques
supportés.
device
(par défaut : "/dev/ttyS0"
)Le fichier de périphérique pour s’y connecter.
baud-rate
(par défaut : #f
)Taux de Baud à utiliser pour la connexion série. Cela doit être un nombre
ou #f
.
log-file
(par défaut : #f
)Si la valeur est vraie, cela doit être le nom d’un fichier où enregistrer les messages.
Le module (gnu services dict)
fournit le service suivant :
C’est le type de service qui lance le démon dicod
, une
implémentation du serveur DICT (voir Dicod dans GNU Dico Manual).
Vous pouvez ajouter open localhost
à votre fichier ~/.dico
pour faire de localhost
le serveur par défaut du client
dico
(voir Initialization File dans GNU Dico Manual).
Remarque : This service is also available for Guix Home, where it runs directly with your user privileges (voir
home-dicod-service-type
).
Type de données représentant la configuration de dicod.
dico
(par défaut : dico)Objet de paquet du serveur de dictionnaire GNU Dico.
interfaces
(par défaut : ’("localhost"))C’est la liste des adresses IP et des ports et éventuellement des noms de
fichiers de socket sur lesquels écouter (voir listen
directive dans GNU Dico Manual).
handlers
(par défaut : ’())Liste des objets <dicod-handler>
qui définissent des gestionnaires
(des instances de modules).
databases
(par défaut : (list %dicod-database:gcide))Liste d’objets <dicod-database>
qui définissent des dictionnaires à
servir.
Type de données représentant un gestionnaire de dictionnaire (instance de module).
name
Nom du gestionnaire (instance de module).
module
(par défaut : #f)Nom du module dicod du gestionnaire (instance). Si la valeur est #f
,
le module a le même nom que le gestionnaire. (voir Modules dans GNU
Dico Manual).
options
Liste de chaînes ou de gexps représentant les arguments pour le gestionnaire de module
Type de données représentant une base de données de dictionnaire.
name
Nom de la base de données, qui sera utilisée dans les commande DICT.
handler
Nom du gestionnaire dicod (instance de module) utilisé par cette base de données (voir Handlers dans GNU Dico Manual).
complex?
(par défaut : #f)Indique si la configuration est pour une base de données complexe. La
configuration complexe a besoin d’un objet <dicod-handler>
correspondant, sinon inutile.
options
Liste de chaînes ou de gexps représentant les arguments pour la base de données (voir Databases dans GNU Dico Manual).
Un objet <dicod-database>
servant le dictionnaire international
collaboratif en anglais via le paquet gcide
.
Voici un exemple de configuration de dicod-service-type
.
(service dicod-service-type
(dicod-configuration
(handlers (list
(dicod-handler
(name "wordnet")
(module "wordnet")
(options
(list #~(string-append "wnhome=" #$wordnet))))))
(databases (list
(dicod-database
(name "wordnet")
(complex? #t)
(handler "wordnet"))
%dicod-database:gcide))))
Le module (gnu services docker)
fournit les services suivants.
This service type operates containerd containerd, a daemon responsible for overseeing the entire container lifecycle on its host system. This includes image handling, storage management, container execution, supervision, low-level storage operations, network connections, and more.
This is the data type representing the configuration of containerd.
containerd
(default: containerd
)The containerd daemon package to use.
debug?
(par défaut : #f
)Indique s’il faut activer la sortie de débogage.
environment-variables
(par défaut : '()
)List of environment variables to set for containerd
.
Cela doit être une liste de chaines où chaque chaine a pour forme ‘clé=valeur’ comme dans cet exemple :
(list "HTTP_PROXY=socks5://127.0.0.1:9150"
"HTTPS_PROXY=socks5://127.0.0.1:9150")
C’est le type du service qui lance Docker, un démon qui peut exécuter des lots applicatifs (aussi appelés « conteneurs ») dans des environnements isolés.
The containerd-service-type
service need to be added to a system
configuration, otherwise a message about not any service provides
containerd
will be displayed during guix system reconfigure
.
Le type de données qui représente la configuration de Docker et Containerd.
docker
(par défaut : docker
)Le paquet du démon Docker à utiliser.
docker-cli
(par défaut : docker-cli
)Le paquet du client Docker à utiliser.
containerd
(par défaut : containerd)This field is deprecated in favor of containerd-service-type
service.
proxy
(par défaut : docker-libnetwork-cmd-proxy)Le paquet du mandataire réseau en espace utilisateur de Docker à utiliser.
enable-proxy?
(par défaut : #t
)Indique s’il faut utiliser le mandataire réseau en espace utilisateur de Docker.
debug?
(par défaut : #f
)Indique s’il faut activer la sortie de débogage.
enable-iptables?
(par défaut : #t
)Indique s’il faut ajouter des règles iptables.
environment-variables
(par défaut : '()
)Liste de variables d’environnement à initialiser pour dockerd
.
Cela doit être une liste de chaines où chaque chaine a pour forme ‘clé=valeur’ comme dans cet exemple :
(list "LANGUAGE=eo:ca:eu"
"TMPDIR=/tmp/dockerd")
config-file
(type: maybe-file-like)JSON configuration file pass to dockerd
.
C’est le type de service qui vous permet de lancer Singularity, un outil similaire à Docker pour créer et lancer des lots applicatifs (aussi appelés « conteneurs »). la valeur de ce service est le paquet Singularity à utiliser.
Le service n’installe pas de démon : à la place, il installe des utilitaires
en setuid-root (voir Privileged Programs) pour que les utilisateurs non
privilégiés puisse invoquer singularity run
et les commandes
similaires.
The (gnu services containers)
module provides the following service.
This is the service type for Podman is a container management tool.
In addition to providing a drop-in replacement for Docker, Podman offers the ability to run containers in “root-less” mode, meaning that regular users can deploy containers without elevated privileges. It does so mainly by leveraging two Linux kernel features: unprivileged user namespaces, and subordinate user and group IDs (voir the subordinate user and group ID service).
The rootless-podman-service-type
sets up the system to allow
unprivileged users to run podman
commands:
(use-service-modules containers networking …) (operating-system ;; … (users (cons (user-account (name "alice") (comment "Bob's sister") (group "users") ;; Adding the account to the "cgroup" group ;; makes it possible to run podman commands. (supplementary-groups '("cgroup" "wheel" "audio" "video"))) %base-user-accounts)) (services (append (list (service iptables-service-type) (service rootless-podman-service-type (rootless-podman-configuration (subgids (list (subid-range (name "alice")))) (subuids (list (subid-range (name "alice"))))))) %base-services)))
The iptables-service-type
is required for Podman to be able to setup
its own networks. Due to the change in user groups and file systems it is
recommended to reboot (or at least logout), before trying to run Podman
commands.
To test your installation you can run:
$ podman run -it --rm docker.io/alpine cat /etc/*release* NAME="Alpine Linux" ID=alpine VERSION_ID=3.20.2 PRETTY_NAME="Alpine Linux v3.20" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
Available rootless-podman-configuration
fields are:
podman
(default: podman
) (type: package)The Podman package that will be installed in the system profile.
group-name
(default: "cgroup"
) (type: string)The name of the group that will own /sys/fs/cgroup resources. Users that want to use rootless Podman have to be in this group.
containers-registries
(type: lowerable)A string or a gexp evaluating to the path of Podman’s
containers/registries.conf
configuration file.
containers-storage
(type: lowerable)A string or a gexp evaluating to the path of Podman’s
containers/storage.conf
configuration file.
containers-policy
(type: lowerable)A string or a gexp evaluating to the path of Podman’s
containers/policy.json
configuration file.
pam-limits
(type: list-of-pam-limits-entries)The PAM limits to be set for rootless Podman.
subgids
(default: ()
) (type: list-of-subid-ranges)A list of subid ranges representing the subgids that will be available for each configured user.
subuids
(default: ()
) (type: list-of-subid-ranges)A list of subid ranges representing the subuids that will be available for each configured user.
Should you wish to manage your Docker containers with the same consistent interface you use for your other Shepherd services, oci-container-service-type is the tool to use: given an Open Container Initiative (OCI) container image, it will run it in a Shepherd service. One example where this is useful: it lets you run services that are available as Docker/OCI images but not yet packaged for Guix.
This is a thin wrapper around Docker’s CLI that executes OCI images backed processes as Shepherd Services.
(service oci-container-service-type
(list
(oci-container-configuration
(network "host")
(image
(oci-image
(repository "guile")
(tag "3")
(value (specifications->manifest '("guile")))
(pack-options '(#:symlinks (("/bin/guile" -> "bin/guile"))
#:max-layers 2))))
(entrypoint "/bin/guile")
(command
'("-c" "(display \"hello!\n\")")))
(oci-container-configuration
(image "prom/prometheus")
(ports
'(("9000" . "9000")
("9090" . "9090"))))
(oci-container-configuration
(image "grafana/grafana:10.0.1")
(network "host")
(volumes
'("/var/lib/grafana:/var/lib/grafana")))))
In this example three different Shepherd services are going to be added to
the system. Each oci-container-configuration
record translates to a
docker run
invocation and its fields directly map to options. You
can refer to the
upstream
documentation for the semantics of each value. If the images are not found,
they will be
pulled.
The services with (network "host")
are going to be attached to the
host network and are supposed to behave like native processes with regard to
networking.
Available oci-container-configuration
fields are:
user
(default: "oci-container"
) (type: string)The user under whose authority docker commands will be run.
group
(default: "docker"
) (type: string)The group under whose authority docker commands will be run.
command
(default: '()
) (type: list-of-strings)Overwrite the default command (CMD
) of the image.
entrypoint
(default: ""
) (type: string)Overwrite the default entrypoint (ENTRYPOINT
) of the image.
host-environment
(default: '()
) (type: list)Set environment variables in the host environment where docker run
is invoked. This is especially useful to pass secrets from the host to the
container without having them on the docker run
’s command line: by
setting the MYSQL_PASSWORD
on the host and by passing --env
MYSQL_PASSWORD
through the extra-arguments
field, it is possible to
securely set values in the container environment. This field’s value can be
a list of pairs or strings, even mixed:
(list '("LANGUAGE\" . "eo:ca:eu")
"JAVA_HOME=/opt/java")
Pair members can be strings, gexps or file-like objects. Strings are passed
directly to make-forkexec-constructor
.
environment
(default: '()
) (type: list)Set environment variables. This can be a list of pairs or strings, even mixed:
(list '("LANGUAGE" . "eo:ca:eu")
"JAVA_HOME=/opt/java")
Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.
image
(type: string-or-oci-image)The image used to build the container. It can be a string or an
oci-image
record. Strings are resolved by the Docker Engine, and
follow the usual format myregistry.local:5000/testing/test-image:tag
.
provision
(default: ""
) (type: string)Set the name of the provisioned Shepherd service.
requirement
(default: '()
) (type: list-of-symbols)Set additional Shepherd services dependencies to the provisioned Shepherd service.
log-file
(type: maybe-string)When log-file
is set, it names the file to which the service’s
standard output and standard error are redirected. log-file
is
created if it does not exist, otherwise it is appended to.
auto-start?
(default: #t
) (type: boolean)Whether this service should be started automatically by the Shepherd. If it
is #f
, the service has to be started manually with herd
start
.
respawn?
(default: #f
) (type: boolean)Whether to have Shepherd restart the service when it stops, for instance when the underlying process dies.
shepherd-actions
(default: '()
) (type: list-of-symbols)This is a list of shepherd-action
records defining actions supported
by the service.
network
(default: ""
) (type: string)Set a Docker network for the spawned container.
ports
(default: '()
) (type: list)Set the port or port ranges to expose from the spawned container. This can be a list of pairs or strings, even mixed:
(list '("8080" . "80")
"10443:443")
Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.
volumes
(default: '()
) (type: list)Set volume mappings for the spawned container. This can be a list of pairs or strings, even mixed:
(list '("/root/data/grafana" . "/var/lib/grafana")
"/gnu/store:/gnu/store")
Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.
container-user
(default: ""
) (type: string)Set the current user inside the spawned container. You can refer to the upstream documentation for semantics.
workdir
(default: ""
) (type: string)Set the current working directory for the spawned Shepherd service. You can refer to the upstream documentation for semantics.
extra-arguments
(default: '()
) (type: list)A list of strings, gexps or file-like objects that will be directly passed
to the docker run
invocation.
Available oci-image
fields are:
repository
(type: string)A string like myregistry.local:5000/testing/test-image
that names the
OCI image.
tag
(default: "latest"
) (type: string)A string representing the OCI image tag. Defaults to latest
.
value
(type: oci-lowerable-image)A manifest
or operating-system
record that will be lowered
into an OCI compatible tarball. Otherwise this field’s value can be a gexp
or a file-like object that evaluates to an OCI compatible tarball.
pack-options
(default: '()
) (type: list)An optional set of keyword arguments that will be passed to the
docker-image
procedure from guix scripts pack
. They can be
used to replicate guix pack
behavior:
(oci-image
(repository "guile")
(tag "3")
(value
(specifications->manifest '("guile")))
(pack-options '(#:symlinks (("/bin/guile" -> "bin/guile"))
#:max-layers 2)))
If the value
field is an operating-system
record, this field’s
value will be ignored.
system
(default: ""
) (type: string)Attempt to build for a given system, e.g. "i686-linux"
target
(default: ""
) (type: string)Attempt to cross-build for a given triple, e.g. "aarch64-linux-gnu"
grafts?
(default: #f
) (type: boolean)Whether to allow grafting or not in the pack build.
Among the virtualization facilities implemented by the Linux kernel is the
concept of subordinate IDs. Subordinate IDs allow for mapping user
and group IDs inside process namespaces to user and group IDs of the host
system. Subordinate user ID ranges (subuids) allow users to map virtual
user IDs inside containers to the user ID of an unprivileged user of the
host system. Subordinate group ID ranges (subgids), instead map virtual
group IDs to the group ID of an unprivileged user on the host system. You
can access subuid(5)
and subgid(5)
Linux man pages for more
details.
The (gnu system shadow)
module exposes the
subids-service-type
, its configuration record
subids-configuration
and its extension record
subids-extension
.
With subids-service-type
, subuids and subgids ranges can be reserved
for users that desire so:
(use-modules (gnu system shadow) ;for 'subids-service-type' (gnu system accounts) ;for 'subid-range' …) (operating-system ;; … (services (list (simple-service 'alice-bob-subids subids-service-type (subids-extension (subgids (list (subid-range (name "alice")))) (subuids (list (subid-range (name "alice")) (subid-range (name "bob") (start 100700)))))))))
Users (definitely other services), usually, are supposed to extend the
service instead of adding subids directly to subids-configuration
,
unless the want to change the default behavior for root. With default
settings the subids-service-type
adds, if it’s not already there, a
configuration for the root account to both /etc/subuid and
/etc/subgid, possibly starting at the minimum possible subid.
Otherwise the root subuids and subgids ranges are fitted wherever possible.
The above configuration will yield the following:
# cat /etc/subgid root:100000:65536 alice:165536:65536 # cat /etc/subuid root:100000:700 bob:100700:65536 alice:166236:65536
With default settings the subids-service-type
adds, if it’s not
already there, a configuration for the root account to both
/etc/subuid and /etc/subgid, possibly starting at the minimum
possible subid. To disable the default behavior and provide your own
definition for the root subid ranges you can set to #f
the
add-root?
field:
(use-modules (gnu system shadow) ;for 'subids-service-type' (gnu system accounts) ;for 'subid-range' …) (operating-system ;; … (services (list (service subids-service-type (subids-configuration (add-root? #f) (subgids (subid-range (name "root") (start 120000) (count 100))) (subuids (subid-range (name "root") (start 120000) (count 100))))) (simple-service 'alice-bob-subids subids-service-type (subids-extension (subgids (list (subid-range (name "alice")))) (subuids (list (subid-range (name "alice")) (subid-range (name "bob") (start 100700)))))))))
Available subids-configuration
fields are:
add-root?
(default: #t
) (type: boolean)Whether to automatically configure subuids and subgids for root.
subgids
(default: '()
) (type: list-of-subid-ranges)The list of subid-range
s that will be serialized to
/etc/subgid
. If a range doesn’t specify a start it will be fitted
based on its number of requrested subids. If a range doesn’t specify a
count the default size of 65536 will be assumed.
subuids
(default: '()
) (type: list-of-subid-ranges)The list of subid-range
s that will be serialized to
/etc/subuid
. If a range doesn’t specify a start it will be fitted
based on its number of requrested subids. If a range doesn’t specify a
count the default size of 65536 will be assumed.
Available subids-extension
fields are:
subgids
(default: '()
) (type: list-of-subid-ranges)The list of subid-range
s that will be appended to
subids-configuration-subgids
. Entries with the same name are
deduplicated upon merging.
subuids
(default: '()
) (type: list-of-subid-ranges)The list of subid-range
s that will be appended to
subids-configuration-subuids
. Entries with the same name are
deduplicated upon merging.
The subid-range
record is defined at (gnu system accounts)
.
Available fields are:
name
(type : string)The name of the user or group that will own this range.
start
(default: #f
) (type: integer)The first requested subid. When false the first available subid with enough contiguous subids will be assigned.
count
(default: #f
) (type: integer)The number of total allocated subids. When #f the default of 65536 will be assumed .
Le module (gnu services auditd)
fournit le service suivant.
C’est le type du service qui lance auditd, un démon qui suit les informations de sécurité de votre système.
Exemples de ce qui peut être suivi :
auditctl
du paquet audit
peut être utilisé pour ajouter ou
supprimer des évènements à suivre (jusqu’au prochain redémarrage). Pour
suivre les évènements de manière permanente, ajoutez des arguments à la
commande auditctl dans un fichier nommé audit.rules
dans le
répertoire de configuration (voir plus bas). aureport
du paquet
audit
peut être utilisé pour visualiser un rapport de tous les
évènements enregistrés. le démon d’audit enregistre par défaut dans le
fichier /var/log/audit.log.
Le type de données qui représente la configuration de auditd.
audit
(par défaut : audit
)Le paquet audit à utiliser.
configuration-directory
(par défaut : %default-auditd-configuration-directory
)Le répertoire contenant le fichier de configuration du paquet audit, qui
doit être nommé auditd.conf
, et éventuellement des règles d’audit à
instancier au démarrage.
Le module (gnu services science)
fournit le service suivant.
C’est le type de service utilisé pour lancer une appli web créée avec
r-shiny
. Ce service initialise la variable d’environnement
R_LIBS_USER
et lance le script fournit pour appeler runApp
.
Le type de données qui représente la configuration de rshiny.
package
(par défaut : r-shiny
)Le paquet à utiliser.
binary
(par défaut : "rshiny"
)Le nom du binaire ou du script shell situé dans package/bin/
à lancer
au démarrage du service.
La manière habituelle de créer ce fichier est :
… (let* ((out (assoc-ref %outputs "out")) (targetdir (string-append out "/share/" ,name)) (app (string-append out "/bin/" ,name)) (Rbin (search-input-file %build-inputs "/bin/Rscript"))) ;; … (mkdir-p (string-append out "/bin")) (call-with-output-file app (lambda (port) (format port "#!~a library(shiny) setwd(\"~a\") runApp(launch.browser=0, port=4202)~%\n" Rbin targetdir))))
Le module (gnu services nix)
fournit le service suivant.
C’est le type du service qui lance le démon de construction du gestionnaire de paquets Nix. Voici un exemple qui montre comment l’utiliser :
(use-modules (gnu)) (use-service-modules nix) (use-package-modules package-management) (operating-system ;; … (packages (append (list nix) %base-packages)) (services (append (list (service nix-service-type)) %base-services)))
Après guix system reconfigure
, configurez Nix pour votre
utilisateur :
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable $ nix-channel --update
$ sudo mkdir -p /nix/var/nix/profiles/per-user/$USER $ sudo chown $USER:root /nix/var/nix/profiles/per-user/$USER
$ ln -s "/nix/var/nix/profiles/per-user/$USER/profile" ~/.nix-profile $ source /run/current-system/profile/etc/profile.d/nix.sh
Ce type de données représente la configuration du démon Nix.
nix
(par défaut : nix
)Le paquet Nix à utiliser.
sandbox
(par défaut : #t
)Spécifie si les constructions sont effectuées dans un bac à sable par défaut.
build-directory
(par défaut : "/tmp"
)Le répertoire où les répertoires de construction sont stockés pendant les constructions. Il est utile de le modifier par exemple si l’emplacement par défaut n’a pas assez d’espace pour contenir l’arborescence de construction de gros paquets.
Cela fonctionne de la même manière que la variable d’environnement
TPMDIR
pour guix-daemon
. TPMDIR
, pour plus d’information.
build-sandbox-items
(par défaut : '()
)C’est une liste de chaines de caractères ou d’objets ajoutés au champ
build-sandbox-items
du fichier de configuration.
extra-config
(par défaut : '()
)C’est une liste de chaînes de caractères ou d’objets ajoutés au fichier de configuration. Elle est utile pour ajouter du texte supplémentaire directement dans le fichier de configuration.
extra-options
(par défaut : '()
)Options supplémentaires de la ligne de commande pour
nix-service-type
.
fail2ban
scanne les fichiers
journaux (p. ex. /var/log/apache/error_log
) et bannit les
adresses IP qui montrent des signes de malhonnêteté — des échecs de
connexion répétés, des tentatives d’utiliser des exploits, etc.
Le type de service fail2ban-service-type
est fournit par le module
(gnu services security)
.
Ce type de service lance le démon fail2ban
. Il peut être configuré de
plusieurs façon qui sont :
Les paramètres de base du service Fail2Ban peut être configurés via sa
configuration fail2ban
, qui est documentée ci-dessous.
La fonction fail2ban-jail-service
peut être utilisée pour ajouter de
nouvelles prisons Fail2Ban.
Les développeurs de services peuvent étendre le type de service
fail2ban-service-type
lui-même avec le mécanisme d’extension habituel
des services.
C’est le type de service qui lance le démon fail2ban
. Voici un
exemple de configuration de base explicite :
(append
(list
(service fail2ban-service-type
(fail2ban-configuration
(extra-jails
(list
(fail2ban-jail-configuration
(name "sshd")
(enabled? #t))))))
;; Il n'y a pas de dépendance implicite à un service SSH,
;; donc il faut en fournir un.
(service openssh-service-type))
%base-services)
Étend svc-type, un objet <service-type>
avec jail, un
objet fail2ban-jail-configuration
.
Par exemple :
(append
(list
(service
;; La procédure « fail2ban-jail-service » peut étendre n'importe quel type de service
;; avec une prison fail2ban. Cela supprime la nécessité d'étendre les services explicitement
;; avec le fail2ban-service-type.
(fail2ban-jail-service
openssh-service-type
(fail2ban-jail-configuration
(name "sshd")
(enabled? #t)))
(openssh-configuration ...))))
Ci-dessous se trouve la référence des différents enregistrement de
configuration jail-service-type
.
Les champs de fail2ban-configuration
disponibles sont :
fail2ban
(par défaut : fail2ban
) (type : paquet)Le paquet fail2ban
à utiliser. Il est utilisé à la fois pour les
binaires et pour la configuration de base par défaut qui doit être étendue
avec des objets <fail2ban-jail-configuration>
.
run-directory
(par défaut : "/var/run/fail2ban"
) (type : chaine)Le répertoire d’état pour le démon fail2ban
.
jails
(par défaut : '()
) (type : liste-de-fail2ban-jail-configurations)Instances de <fail2ban-jail-configuration>
collectées par les
extensions.
extra-jails
(par défaut : '()
) (type : liste-de-fail2ban-jail-configurations)Instances de <fail2ban-jail-configuration>
fournies explicitement.
extra-content
(par défaut : '()
) (type : text-config)Contenu brut supplémentaire à ajouter à la fin du fichier jail.local, à fournir sous forme d’une liste de simili-fichiers.
Les champs de fail2ban-ignore-cache-configuration
disponibles sont :
key
(type : chaine)Clé de cache.
max-count
(type : entier)Taille du cache.
max-time
(type : entier)Durée du cache.
Les champs de fail2ban-jail-action-configuration
disponibles sont :
name
(type : string)Nom de l’action.
arguments
(par défaut : '()
) (type : liste-d’arguments)Arguments de l’action.
Les champs de fail2ban-jail-configuration
disponibles sont :
name
(type : string)Nom requis de cette configuration de prison.
enabled?
(par défaut : #t
) (type : booléen)Spécifie si cette prison est activée.
backend
(type : peut-être-symbole)Le moteur à utiliser pour détecter les changements dans log-path
. La
valeur par défaut est ’auto. Pour consulter les valeurs par défaut de la
configuration de prison, consultez le fichier /etc/fail2ban/jail.conf
du paquet fail2ban
.
max-retry
(type : peut-être-entier)Le nombre d’échecs avant qu’un hôte ne soit banni (p. ex. (max-retry
5)
).
max-matches
(type : peut-être-entier)Le nombre de correspondances stockées dans le ticket (accessible avec
l’étiquette <matches>
) dans l’action.
find-time
(type : peut-être-chaine)La fenêtre pendant laquelle le compte de tentative maximale doit être
atteint pour qu’une adresse IP soit bannie. Un hôte est banni s’il a généré
max-retry
pendant les dernières find-time
secondes (p. ex.
»find-time "10m")
). Elle peut être fournie en seconde ou avec le «
format temporel abrégé » de Fail2ban, décrit dans man 5 jail.conf
.
ban-time
(type : peut-être-chaine)La durée, en secondes ou au format temporel abrégé, qu’un bannissement doit
durer (p. ex. (ban-time "10m")
).
ban-time-increment?
(type : peut-être-booléen)Indique s’il faut considérer les bannissements passés pour calculer un incrément du temps de bannissement par défaut d’une adresse IP particulière.
ban-time-factor
(type : peut-être-chaine)Le coefficient à utiliser pour calculer un temps de bannissement exponentiel.
ban-time-formula
(type : peut-être-chaine)C’est la formule utilisée pour calculer la prochaine valeur d’une durée de bannissement.
ban-time-multipliers
(type : peut-être-chaine)Utilisé pour calculer la prochaine valeur de la durée du bannissement au lieu de la formule.
ban-time-max-time
(type : peut-être-chaine)Le nombre maximum de secondes qu’un bannissement peut durer.
ban-time-rnd-time
(type : peut-être-chaine)Le nombre maximum de secondes maximum qu’un bannissement à durée aléatoire peut durer. C’est utile pour arrêter les robots « intelligents » qui calculent le moment exacte où une adresse IP peut être dé-bannie.
ban-time-overall-jails?
(type : peut-être-booléen)Lorsque la valeur est vraie, elle spécifie que la recherche d’une adresse IP dans la base de donnée doit se faire dans toutes les prisons. Sinon, seule la prison actuelle pour l’adresse IP bannie est prise en compte.
ignore-self?
(type : peut-être-booléen)Ne jamais bannir l’adresse IP de la machine locale.
ignore-ip
(par défaut : '()
) (type : liste-de-chaines)Une liste d’adresse IP, de masques CIDR ou d’hôtes DNS à
ignorer. fail2ban
ne bannira par un hôte qui correspond à une adresse
de cette liste.
ignore-cache
(type : peut-être-fail2ban-ignore-cache-configuration)fournit des paramètres de cache pour ignorer les vérifications d’échecs.
filter
(type : peut-fail2ban-jail-filter-configuration)Le filtre à utiliser par la prison, spécifiée par un objet
<fail2ban-jail-filter-configuration>
. Par défaut, les prisons ont un
nom qui correspond au nom de leur filtre.
log-time-zone
(type : peut-être-chaine)Le fuseau horaire par défaut pour les lignes de journaux qui n’en indiquent pas.
log-encoding
(type : peut-être-symbole)L’encodage des journaux traités par la prison. Les valeurs possibles sont :
'ascii
, 'utf-8
et 'auto
.
log-path
(par défaut : '()
) (type : liste-de-chaines)Le nom de fichier des journaux à surveiller.
action
(par défaut : '()
) (type : liste-de-fail2ban-jail-action)Une liste de <fail2ban-jail-action-configuration>
.
extra-content
(par défaut : '()
) (type : text-config)Contenu supplémentaire pour la configuration de la prison, à fournir sous la forme d’une liste de simili-fichiers.
Les champs de fail2ban-jail-filter-configuration
disponibles sont :
name
(type : string)Filtre à utiliser.
mode
(type : peut-être-chaine)Mode de filtrage.
This service type lets you resize a live file system during boot, which can be convenient if a Guix image is flashed on an SD Card (e.g. for an embedded device) or uploaded to a VPS. In both cases the medium the image will reside upon may be larger than the image you want to produce.
For an embedded device booting from an SD card you may use something like:
(service resize-file-system-service-type
(resize-file-system-configuration
(file-system
(file-system (device (file-system-label "root"))
(type "ext4")))))
Attention : Be extra cautious to use the correct device and type. The service has little error handling of its own and relies on the underlying tools. Wrong use could end in loss of data or the corruption of the operating system.
Partitions and file systems are grown to the maximum size available. File systems can only grow when they are on the last partition on a device and have empty space available.
This service supports the ext2, ext3, ext4, btrfs, and bcachefs file systems.
file-system
(default: #f
) (type: file-system)The file-system object to resize (voir Systèmes de fichiers). This object must
have the device
and type
fields set. Other fields are
ignored.
cloud-utils
(default: cloud-utils
) (type: file-like)The cloud-utils package to use. This package is used for the
growpart
command.
e2fsprogs
(default: e2fsprogs
) (type: file-like)The e2fsprogs package to use, used for resizing ext2, ext3, and ext4 file systems.
btrfs-progs
(default: btrfs-progs
) (type: file-like)The btrfs-progs package to use, used for resizing the btrfs file system.
bcachefs-tools
(default: bcachefs-tools
) (type: file-like)The bcachefs-tools package to use, used for resizing the bcachefs file system.
The (gnu services backup)
module offers services for backing up file
system trees. For now, it provides the restic-backup-service-type
.
With restic-backup-service-type
, you can periodically back up
directories and files with Restic, which
supports end-to-end encryption and deduplication. Consider the following
configuration:
(use-service-modules backup …) ;for 'restic-backup-service-type' (use-package-modules sync …) ;for 'rclone' (operating-system ;; … (packages (append (list rclone) ;for use by restic %base-packages)) (services (list (service restic-backup-service-type (restic-backup-configuration (jobs (list (restic-backup-job (name "remote-ftp") (repository "rclone:remote-ftp:backup/restic") (password-file "/root/.restic") ;; Every day at 23. (schedule "0 23 * * *") (files '("/root/.restic" "/root/.config/rclone" "/etc/ssh/ssh_host_rsa_key" "/etc/ssh/ssh_host_rsa_key.pub" "/etc/guix/signing-key.pub" "/etc/guix/signing-key.sec"))))))))))
Each restic-backup-job
translates to an mcron job which sets the
RESTIC_PASSWORD
environment variable by reading the first line of
password-file
and runs restic backup
, creating backups
using rclone of all the files listed in the files
field.
The restic-backup-service-type
installs as well restic-guix
to
the system profile, a restic
utility wrapper that allows for easier
interaction with the Guix configured backup jobs. For example the following
could be used to instantaneusly trigger a backup for the above shown
configuration, without waiting for the scheduled job:
restic-guix backup remote-ftp
Available restic-backup-configuration
fields are:
jobs
(default: '()
) (type: list-of-restic-backup-jobs)The list of backup jobs for the current system.
Available restic-backup-job
fields are:
restic
(default: restic
) (type: package)The restic package to be used for the current job.
user
(default: "root"
) (type: string)The user used for running the current job.
repository
(type: string)The restic repository target of this job.
name
(type : string)A string denoting a name for this job.
password-file
(type: string)Name of the password file, readable by the configured user
, that will
be used to set the RESTIC_PASSWORD
environment variable for the
current job.
schedule
(type: gexp-or-string)A string or a gexp that will be passed as time specification in the mcron job specification (voir mcron job specifications dans GNU mcron).
files
(default: '()
) (type: list-of-lowerables)The list of files or directories to be backed up. It must be a list of values that can be lowered to strings.
verbose?
(default: #f
) (type: boolean)Whether to enable verbose output for the current backup job.
extra-flags
(default: '()
) (type: list-of-lowerables)A list of values that are lowered to strings. These will be passed as
command-line arguments to the current job restic backup
invokation.
The (gnu services upnp)
module offers services related to
UPnP (Universal Plug and Play) and DLNA (Digital Living
Network Alliance), networking protocols that can be used for media streaming
and device interoperability within a local network. For now, this module
provides the readymedia-service-type
.
ReadyMedia (formerly
known as MiniDLNA) is a DLNA/UPnP-AV media server. The project’s daemon,
minidlnad
, can serve media files (audio, pictures, and video) to
DLNA/UPnP-AV clients available on the network.
readymedia-service-type
is a Guix service that wraps around
ReadyMedia’s minidlnad
.
Consider the following configuration:
(use-service-modules upnp …) (operating-system … (services (list (service readymedia-service-type (readymedia-configuration (media-directories (list (readymedia-media-directory (path "/media/audio") (types '(A))) (readymedia-media-directory (path "/media/video") (types '(V))) (readymedia-media-directory (path "/media/misc")))) (extra-config '(("notify_interval" . "60"))))) …)))
This sets up the ReadyMedia daemon to serve files from the media folders
specified in media-directories
. The media-directories
field
is mandatory. All other fields (such as network ports and the server name)
come with a predefined default and can be omitted.
Available readymedia-configuration
fields are:
readymedia
(default: readymedia
) (type: package)The ReadyMedia package to be used for the service.
friendly-name
(default: #f
) (type: maybe-string)A custom name that will be displayed on connected clients.
media-directories
(type: list)The list of media folders to serve content from. Each item is a
readymedia-media-directory
.
cache-directory
(default: "/var/cache/readymedia"
) (type: string)A folder for ReadyMedia’s cache files. If not existing already, the folder will be created as part of the service activation and the ReadyMedia user will be assigned ownership.
log-directory
(default: "/var/log/readymedia"
) (type: string)A folder for ReadyMedia’s log files. If not existing already, the folder will be created as part of the service activation and the ReadyMedia user will be assigned ownership.
port
(default: #f
) (type: maybe-integer)A custom port that the service will be listening on.
extra-config
(default: '()
) (type: alist)An association list of further options, as accepted by ReadyMedia.
A media-directories
entry includes a folder path
and,
optionally, the types
of media files included within the folder.
path
(type: string)The media folder location.
types
(default: '()
) (type: list)A list indicating the types of file included in the media folder. Valid
values are combinations of individual media types, i.e. symbol A
for
audio, P
for pictures, V
for video. An empty list means that
no type is specified.
Précédent: Services Hurd, Monter: Services [Table des matières][Index]