72 lines
2.0 KiB
Desktop File
72 lines
2.0 KiB
Desktop File
[Unit]
|
|
Description=VibeDNS - The AI generated DNS server designed to solve an idiots neiche problems
|
|
Documentation=https://github.com/owen/vibedns
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=vibedns
|
|
Group=vibedns
|
|
|
|
ExecStart=/usr/local/bin/vibedns serve \
|
|
--db /var/lib/vibedns/dns.db \
|
|
--http 127.0.0.1:8080 \
|
|
--dns 0.0.0.0:53
|
|
|
|
# The administrator password is generated on first start and printed to the
|
|
# journal exactly once. To set your own instead, put it in an environment file
|
|
# readable only by root and uncomment the line below:
|
|
# echo 'VIBEDNS_ADMIN_PASSWORD=...' > /etc/vibedns.env && chmod 600 /etc/vibedns.env
|
|
# EnvironmentFile=-/etc/vibedns.env
|
|
|
|
Restart=on-failure
|
|
RestartSec=5s
|
|
|
|
# Binding port 53 without running as root. This is the whole reason the service
|
|
# can drop to an unprivileged user.
|
|
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
|
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
|
|
|
# The database and backups are the only paths that need to be writable.
|
|
StateDirectory=vibedns
|
|
StateDirectoryMode=0750
|
|
ReadWritePaths=/var/lib/vibedns
|
|
|
|
# Sandboxing. Each of these closes off something a DNS server has no business
|
|
# touching, so a flaw in parsing a hostile response has far less to work with.
|
|
NoNewPrivileges=yes
|
|
PrivateTmp=yes
|
|
PrivateDevices=yes
|
|
ProtectSystem=strict
|
|
ProtectHome=yes
|
|
ProtectKernelTunables=yes
|
|
ProtectKernelModules=yes
|
|
ProtectKernelLogs=yes
|
|
ProtectControlGroups=yes
|
|
ProtectClock=yes
|
|
ProtectHostname=yes
|
|
ProtectProc=invisible
|
|
RestrictNamespaces=yes
|
|
RestrictRealtime=yes
|
|
RestrictSUIDSGID=yes
|
|
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
|
|
LockPersonality=yes
|
|
MemoryDenyWriteExecute=yes
|
|
SystemCallArchitectures=native
|
|
SystemCallFilter=@system-service
|
|
SystemCallErrorNumber=EPERM
|
|
UMask=0077
|
|
|
|
# Resource ceilings. A DNS server holds many concurrent sockets; the memory
|
|
# limit is generous enough for a large cache plus several big blocklists.
|
|
LimitNOFILE=65535
|
|
MemoryMax=2G
|
|
TasksMax=512
|
|
|
|
# Journal identification
|
|
SyslogIdentifier=vibedns
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|