2026-07-15 08:07:24 +02:00
|
|
|
# varde system service. Pairs with varde.socket for socket activation;
|
|
|
|
|
# also runs standalone (the daemon binds its own socket when not
|
|
|
|
|
# activated).
|
|
|
|
|
[Unit]
|
|
|
|
|
Description=varde content-addressed blob mirror daemon
|
|
|
|
|
Documentation=man:varde(8)
|
|
|
|
|
After=network.target
|
|
|
|
|
Requires=varde.socket
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
Type=notify
|
|
|
|
|
ExecStart=/usr/bin/varde-daemon --system
|
|
|
|
|
Restart=on-failure
|
|
|
|
|
|
|
|
|
|
# Hardening
|
|
|
|
|
DynamicUser=yes
|
|
|
|
|
StateDirectory=varde
|
2026-10-03 13:56:47 +02:00
|
|
|
# No RuntimeDirectory= here: varde.socket creates /run/varde for its
|
|
|
|
|
# socket file, and the service only uses the activation socket. With
|
|
|
|
|
# RuntimeDirectory= on the service, stopping it removed the socket file
|
|
|
|
|
# from under the socket unit (0.1.6 and earlier), and preserving it
|
|
|
|
|
# (0.1.7/0.1.8) made systemd privatise the directory under DynamicUser -
|
|
|
|
|
# /run/varde -> /run/private/varde, 0700 - so no unprivileged client
|
|
|
|
|
# could connect at all.
|
2026-07-15 08:07:24 +02:00
|
|
|
NoNewPrivileges=yes
|
|
|
|
|
ProtectSystem=strict
|
|
|
|
|
ProtectHome=yes
|
|
|
|
|
PrivateTmp=yes
|
|
|
|
|
PrivateDevices=yes
|
|
|
|
|
ProtectKernelTunables=yes
|
|
|
|
|
ProtectKernelModules=yes
|
|
|
|
|
ProtectControlGroups=yes
|
|
|
|
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
|
|
|
|
RestrictNamespaces=yes
|
|
|
|
|
RestrictRealtime=yes
|
|
|
|
|
RestrictSUIDSGID=yes
|
|
|
|
|
LockPersonality=yes
|
|
|
|
|
MemoryDenyWriteExecute=yes
|
|
|
|
|
SystemCallArchitectures=native
|
|
|
|
|
SystemCallFilter=@system-service
|
|
|
|
|
CapabilityBoundingSet=
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
WantedBy=multi-user.target
|