clank-together/deploy/togetherdecomp-worker.service
2026-10-18 04:45:11 +02:00

45 lines
1.3 KiB
Desktop File

[Unit]
Description=Clank Together worker: verification, merges, remote checks, Ghidra refresh
After=network-online.target docker.service
Wants=network-online.target
[Service]
Type=simple
User=togetherdecomp
Group=togetherdecomp
SupplementaryGroups=docker
WorkingDirectory=/var/lib/togetherdecomp
ExecStart=/opt/node/bin/node --disable-warning=ExperimentalWarning /opt/togetherdecomp/src/server/cli.js start worker --data /var/lib/togetherdecomp
Restart=on-failure
# Restarting re-queues whatever was being verified.
RestartSec=5
# Stopping waits for the running verification or merge to finish.
TimeoutStopSec=1200
Environment=NODE_ENV=production
# Hardening. The process needs: its data dir, the docker socket, git.
NoNewPrivileges=true
PrivateTmp=true
PrivateDevices=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/togetherdecomp
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectKernelLogs=true
ProtectControlGroups=true
ProtectClock=true
ProtectHostname=true
RestrictSUIDSGID=true
RestrictRealtime=true
RestrictNamespaces=true
LockPersonality=true
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
CapabilityBoundingSet=
SystemCallArchitectures=native
# 0022 so the sandboxed (uid-remapped) compiler can read job files; the data
# dir itself is 0700, which keeps everything private to this user.
UMask=0022
[Install]
WantedBy=multi-user.target