aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/recluse.service')
-rw-r--r--pkg/recluse.service51+51 −0
1 files changed, 51 insertions, 0 deletions
diff --git a/pkg/recluse.service b/pkg/recluse.service
new file mode 100644
--- /dev/null
+++ b/pkg/recluse.service
@@ -0,0 +1,51 @@
+# SPDX-FileCopyrightText: 2026 Nikolay Govorov
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+[Unit]
+Description=recluse server (tiny packages caching proxy)
+Requires=network-online.target
+After=time-sync.target network-online.target remote-fs.target nss-lookup.target
+Wants=time-sync.target
+
+[Service]
+Type=notify
+User=recluse
+Group=recluse
+Restart=always
+RestartSec=30
+WatchdogSec=30
+NotifyAccess=main
+ExecPaths=/usr/local/bin/recluse /usr/lib
+ExecStart=/usr/local/bin/recluse --config=/etc/recluse.toml
+LimitCORE=infinity
+LimitNOFILE=500000
+AmbientCapabilities=CAP_NET_BIND_SERVICE
+
+# %p is resolved to the systemd unit name
+LogsDirectory=%p
+StateDirectory=%p
+CacheDirectory=%p
+RuntimeDirectory=%p
+
+UMask=0077
+LockPersonality=yes
+NoNewPrivileges=yes
+PrivateDevices=yes
+PrivateTmp=true
+ProcSubset=pid
+ProtectClock=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectHostname=yes
+ProtectKernelLogs=yes
+ProtectKernelModules=yes
+ProtectKernelTunables=yes
+ProtectProc=invisible
+ProtectSystem=strict
+RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
+RestrictNamespaces=yes
+RestrictSUIDSGID=yes
+
+[Install]
+# service should not start from the rescue shell (rescue.target).
+WantedBy=multi-user.target