# NetMover als systemd-Dienst direkt auf dem Host (empfohlen). # Installation: siehe README, Abschnitt „Installation“. [Unit] Description=NetMover – NFS/SMB-Mounts und zeitgesteuertes Verschieben Documentation=https://git.wilde-server.de/florian.wilde/netmover Wants=network-online.target After=network-online.target remote-fs-pre.target [Service] Type=exec # root ist nötig: mount/umount brauchen CAP_SYS_ADMIN, und Dateien auf beliebigen # Freigaben sollen mit den richtigen Eigentümern geschrieben werden (siehe README). User=root EnvironmentFile=-/etc/netmover/netmover.env ExecStart=/opt/netmover/venv/bin/netmover serve Restart=on-failure RestartSec=5 # Beim Stoppen werden Mounts bewusst NICHT ausgehängt. KillMode=mixed TimeoutStopSec=20 # /var/lib/netmover (Datenbank, Schlüssel) und /run/netmover (kurzlebige # Credentials-Dateien für mount.cifs) – beide nur für root lesbar. StateDirectory=netmover StateDirectoryMode=0700 RuntimeDirectory=netmover RuntimeDirectoryMode=0700 # Härtung, soweit mit Mounten vereinbar. # WICHTIG: Keine Optionen, die einen eigenen Mount-Namespace erzeugen # (ProtectSystem=, ProtectHome=, PrivateTmp=, ProtectControlGroups=, # ReadOnlyPaths=, BindPaths= …). Sonst landen die Mounts im Namespace des # Dienstes: das System und andere Programme (Paperless!) sähen sie nicht, und # jeder Neustart des Dienstes würde sie verwerfen. MountFlags=shared hilft dagegen # nicht – systemd setzt den Namespace als „slave“ auf, Mounts fließen nur hinein. # Auf dem Testsystem nachgewiesen; prüfen mit: findmnt -l | grep /mnt/netmover NoNewPrivileges=yes LockPersonality=yes RestrictRealtime=yes RestrictSUIDSGID=yes UMask=0022 [Install] WantedBy=multi-user.target