Skip to content

Web dashboard for key & upload status #19

@ServerSideHannes

Description

@ServerSideHannes

Summary

Add a lightweight web UI for monitoring encryption key status, active uploads, and proxy health.

Problem

Operators currently have no visual way to see:

  • Which encryption key is active
  • How many multipart uploads are in progress
  • Memory pressure and concurrency status
  • Recent errors or rejected requests

Prometheus + Grafana (#9) covers metrics, but a built-in dashboard provides a quick overview without external tooling.

Proposal

A simple web UI served at /admin (or configurable path), showing:

Key status:

  • Active KEK fingerprint (hash, not the key itself)
  • Number of objects encrypted with each key version (if key rotation is implemented)

Upload status:

  • Active multipart uploads (count, oldest, bucket/key)
  • Upload completion rate
  • Failed/aborted uploads

System health:

  • Memory budget usage (reserved / limit)
  • Active concurrent requests
  • Recent 503 rejections
  • Uptime and version

Tech stack:

  • Lightweight: server-rendered HTML or minimal JS (no React/Vue)
  • No additional dependencies if possible (Jinja2 is already available via FastAPI)
  • Protected by auth (basic auth or same S3 credentials)

Considerations

  • Must not expose encryption keys or sensitive data
  • Should be disabled by default (S3PROXY_ADMIN_UI=true)
  • Read-only: no mutations from the UI
  • Keep it minimal — this is an ops tool, not a full management console

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions