[Unit] Description=Backup Dashboard API After=network.target [Service] User=backupdash Group=backupdash WorkingDirectory=/opt/backup-dashboard/backend Environment=BACKUP_DASH_DB=/var/lib/backup-dashboard/backup-dashboard.db Environment=BACKUP_DASH_RETENTION_DAYS=90 # Bound to localhost: only nginx can reach it, so nginx's auth can't be bypassed from outside. # One worker is plenty at this scale and keeps SQLite writes simple. ExecStart=/opt/backup-dashboard/venv/bin/uvicorn --factory app.main:create_app --host 127.0.0.1 --port 8000 --proxy-headers Restart=on-failure StateDirectory=backup-dashboard NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true [Install] WantedBy=multi-user.target