[Unit] Description=vibeproxy - self-contained reverse proxy manager After=network-online.target Wants=network-online.target Documentation=https://github.com/owen/vibeproxy [Service] Type=simple User=vibeproxy Group=vibeproxy ExecStart=/usr/local/bin/vibeproxy serve --data-dir=/var/lib/vibeproxy --db-path=/var/lib/vibeproxy/vibeproxy.db --http-addr=:80 --https-addr=:443 --admin-addr=127.0.0.1:8081 Restart=on-failure RestartSec=2s TimeoutStopSec=30s # vibeproxy needs to bind ports 80/443; grant that capability instead of # running as root. AmbientCapabilities=CAP_NET_BIND_SERVICE CapabilityBoundingSet=CAP_NET_BIND_SERVICE NoNewPrivileges=true # Filesystem/process hardening. ProtectSystem=strict ProtectHome=true PrivateTmp=true PrivateDevices=true ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true RestrictSUIDSGID=true LockPersonality=true ReadWritePaths=/var/lib/vibeproxy # vibeproxy stores its SQLite database, TLS private keys, and backups # here; keep it 0700 and owned by the service user (see README). StateDirectory=vibeproxy StateDirectoryMode=0700 LimitNOFILE=65535 [Install] WantedBy=multi-user.target