Files
housecarl/deploy/systemd/housecarl-backup.service
abrown38andClaude Opus 5.5 34292eeebb Build Housecarl 0.1.0: the nftables firewall manager
Zones, address sets (IPv4 and IPv6 mixed, dynamic sets with timeouts) and
services, ordered rules in the early, input, forward and output chains,
port forwards with hairpin NAT and IPv6 pinholes, source NAT, redirects,
and switchable built-ins (loopback, conntrack, ICMPv6, antispoofing, MSS
clamping, DHCPv6 client, flowtable). Every change is validated, checked
with nft -c and applied in one transaction to Housecarl's own table,
inet housecarl; changes made over the network roll back unless
confirmed, and the confirmed ruleset is loaded at boot by
housecarl-ruleset.service. An empty configuration applies nothing.

Also: hit counters and the drop log (nflog), 'hc import' of an existing
nftables ruleset and 'hc takeover', the hc CLI, the REST API and the web
UI, users, scoped tokens (sets:write:NAME), the audit log, the web UI's
certificate through Jarl, Debian packages, docs, unit tests with real
nft 1.1.3, and an e2e test with real traffic (71 checks).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 07:57:14 +01:00

45 lines
1.3 KiB
Desktop File

# Housecarl: one database backup, run daily by housecarl-backup.timer.
# Installed as /etc/systemd/system/housecarl-backup.service (see
# docs/operations.md#backups). What to keep, and where, is in the backup:
# section of /etc/housecarl/housecarl.yaml.
[Unit]
Description=Housecarl database backup
Documentation=file:///usr/local/share/doc/housecarl/docs/operations.md
# Nothing to back up before 'housecarld init'.
ConditionPathExists=/var/lib/housecarl/housecarl.db
[Service]
Type=oneshot
ExecStart=/usr/local/bin/housecarld --config /etc/housecarl/housecarl.yaml backup
User=housecarl
Group=housecarl
UMask=0077
Nice=10
IOSchedulingClass=idle
# If you change backup.dir in housecarl.yaml, allow the new one too:
# 'systemctl edit housecarl-backup.service' and add ReadWritePaths=/new/dir.
ProtectSystem=strict
ReadWritePaths=/var/lib/housecarl -/var/backups/housecarl
ProtectHome=yes
PrivateTmp=yes
PrivateDevices=yes
PrivateNetwork=yes
NoNewPrivileges=yes
CapabilityBoundingSet=
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes
ProtectClock=yes
ProtectHostname=yes
RestrictNamespaces=yes
RestrictRealtime=yes
RestrictSUIDSGID=yes
LockPersonality=yes
MemoryDenyWriteExecute=yes
RestrictAddressFamilies=AF_UNIX
SystemCallArchitectures=native
SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM