How nonnorm/dietpi-dashboard works
DietPi-Dashboard is a web interface for monitoring and managing a DietPi host. A user visits the frontend, authenticates, selects a dashboard feature, and the frontend requests data or actions from a connected backend agent; the agent reads system state or performs the requested operation and returns results for rendering. The major user-facing areas include system metrics, processes, software, services, terminal, and file management. Source excerpts confirm the agent request dispatch, HTTP routes, and encrypted socket framing; some frontend/backend connection details and feature implementations are represented only by their enclosing source paths.
Main entry points: template.rs Page request helpers · pages Feature pages · client.rs Agent request dispatcher · http HTTP server and router
Components 26
Web frontend
- Frontend startup
crates/frontend/src/main.rs - HTTP server and router
crates/frontend/src/http - Login and sessions
crates/frontend/src/http/auth.rs - Feature pages
crates/frontend/src/pages - System monitoring
crates/frontend/src/pages/system - Process management
crates/frontend/src/pages/process.rs - Software management
crates/frontend/src/pages/software.rs - Service status
crates/frontend/src/pages/service.rs - Web terminal
crates/frontend/src/pages/terminal.rs - File browser
crates/frontend/src/pages/browser.rs - Page request helpers
crates/frontend/src/pages/template.rs
Backend link
- Agent listener
crates/frontend/src/backend/mod.rs - Agent connection
crates/frontend/src/backend/conn.rs - Connected agents
crates/frontend/src/backend/mod.rs - Response cache
crates/frontend/src/backend/cache.rs
Host agent
- Agent startup and reconnect
crates/backend/src/main.rs - Agent request dispatcher
crates/backend/src/client.rs - Host data queries
crates/backend/src/getters.rs - Host management actions
crates/backend/src/actions.rs - Host terminal process
crates/backend/src/terminal.rs - Host system state
crates/backend/src/client.rs
Shared foundations
- Encrypted protocol socket
crates/proto/src/lib.rs - Request and response types
crates/proto/src - Configuration
crates/config/src
Other components
- Dashboard user
- DietPi host
Connections 35
- Dashboard user → HTTP server and router: sends HTTP requests
- HTTP server and router → Login and sessions: checks sessions
- HTTP server and router → Feature pages: routes requests
- Feature pages → System monitoring: renders
- Feature pages → Process management: renders
- Feature pages → Software management: renders
- Feature pages → Service status: renders
- Feature pages → Web terminal: renders
- Feature pages → File browser: renders
- System monitoring → Page request helpers: requests data
- Process management → Page request helpers: requests data
- Software management → Page request helpers: requests data
- Service status → Page request helpers: requests data
- File browser → Page request helpers: requests data
- Web terminal → Page request helpers: exchanges terminal data
- Frontend startup → HTTP server and router: starts
- Frontend startup → Agent listener: starts
- Agent listener → Agent connection: spawns for connections
- Agent listener → Connected agents: shares
- Page request helpers → Connected agents: selects agent
- Page request helpers → Agent connection: sends requests
- Agent connection → Response cache: uses
- Agent connection → Encrypted protocol socket: exchanges frames
- Agent startup and reconnect → Agent request dispatcher: connects and runs
- Agent request dispatcher → Encrypted protocol socket: exchanges frames
- Encrypted protocol socket → Request and response types: encodes and decodes
- Agent request dispatcher → Host data queries: dispatches queries
- Agent request dispatcher → Host management actions: dispatches actions
- Agent request dispatcher → Host terminal process: forwards terminal messages
- Host data queries → Host system state: reads
- Host system state → DietPi host: reflects system state
- Host management actions → DietPi host: manages
- Host terminal process → DietPi host: runs host terminal
- Agent startup and reconnect → Configuration: loads configuration
- Frontend startup → Configuration: loads configuration