- FastAPI + SQLite backend: tenants, jobs and runs, with an idempotent /api/v1/ingest endpoint authenticated by per-collector API keys - Runs store started_at and finished_at; "Last Run" is the most recent finish, and in-progress runs show as Running - Job modal shows a 30-day daily strip, success rate, and a filterable run list with per-run messages - nginx: HTTPS plus basic auth, ingest endpoint exempt; systemd unit - manage.py for API keys, job cleanup and demo data; pytest suite Co-Authored-By: Claude Opus 5.5 <[email protected]>
24 lines
720 B
Desktop File
24 lines
720 B
Desktop File
[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
|