Server Dashboard in your terminal
  • Rust 53.8%
  • TypeScript 39.4%
  • CSS 2.6%
  • Makefile 2.4%
  • Dockerfile 1%
  • Other 0.8%
Find a file
Joshua Marsh (icub3d) dfeafd5fcc
All checks were successful
Build and Deploy / deploy (push) Successful in 3m38s
Show current date and time in the overview header
Adds a live clock next to the "Updated" timestamp, styled at the same
size and weight as the "Main System Overview" heading so it is readable
from across the room on the wall-mounted display.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 10:26:31 -06:00
.forgejo/workflows fix deploy 2026-06-05 22:01:29 -06:00
k8s fix performance 2026-06-06 08:01:20 -06:00
src fix performance 2026-06-06 08:01:20 -06:00
web Show current date and time in the overview header 2026-08-06 10:26:31 -06:00
.dockerignore Configure containerized deployment, secret token authentication, and add telemetry logs 2026-06-05 18:17:46 -06:00
.gitignore Support syncing secret token from local gitignored .env file to Kubernetes 2026-06-05 21:53:59 -06:00
build.rs update ui so it looks nice on tablet 2026-06-05 09:02:20 -06:00
Cargo.lock web app 2026-06-05 08:10:53 -06:00
Cargo.toml web app 2026-06-05 08:10:53 -06:00
Dockerfile Configure containerized deployment, secret token authentication, and add telemetry logs 2026-06-05 18:17:46 -06:00
Makefile Support syncing secret token from local gitignored .env file to Kubernetes 2026-06-05 21:53:59 -06:00
README.md update ui so it looks nice on tablet 2026-06-05 09:02:20 -06:00

🪐 MARSHIAN GALAXY HOMELAB DASHBOARD

A high-performance, real-time multi-node cluster telemetry client for home labs. It provides both a premium Ratatui Terminal UI (TUI) and a remote-friendly, self-contained Vite + React + Tailwind CSS Web UI served directly from the compiled binary.


Features

  • Dual Modes: Run interactively in the terminal (TUI) or start a background API/WebSocket server to view telemetry on mobile devices or tablets.
  • Single-File Executable: The compiled Rust binary embeds the entire web client static assets (using rust-embed), making it a zero-dependency, single-file deployment.
  • Local Network Auto-Detection & QR Pairing: Displays a scannable QR code on server start. Scanning this with your tablet/phone logs you in instantly with a pre-filled authorization token (no typing required!).
  • High-Density Compact Layout: Includes a "Compact" mode toggle that replaces graphical host cards with a space-efficient TUI-style table, optimized for tablet displays (like the Google Pixel Tablet).
  • Keep Awake Button: Prevents your tablet or browser from entering sleep mode or dimming while displaying telemetry using the browser's native Screen Wake Lock API.
  • Fullscreen Mode: Toggles full-screen display using the HTML5 Fullscreen API to hide browser tabs and address bars, providing a native app experience.
  • Catppuccin Styling: Sleek, curated color schemes supporting both Mocha (Dark) and Latte (Light) themes.
  • Live Metrics Streaming: Real-time update broadcasts to all connected WebSockets clients.
  • Kubernetes Telemetry: Integrated kubectl querying showing cluster nodes status, namespace pod counts, unhealthy container details, and container restarts.
  • NFS / Storage mount tracking: Dedicated partition tracking for hosts configured with custom storage disks.

Installation & Build

A build.rs script is included in the project, which automatically runs npm run build inside the web/ directory whenever cargo compiles or builds the Rust project (provided any frontend source files changed).

A Makefile is provided in the root directory to simplify common workflows:

  • Build project in release mode:
    make build
    
  • Install executable globally to ~/.cargo/bin/:
    make install
    
  • Manage the systemd user service:
    make start    # Start background service
    make stop     # Stop background service
    make restart  # Restart background service
    make status   # Check status of service
    make logs     # Tail background service logs
    
  • Local development:
    make dev-web     # Start Vite frontend dev server
    make dev-server  # Run Rust server locally
    

Manual Cargo build

If you prefer building manually, simply run standard cargo commands. The frontend will compile automatically:

cargo install --path .

Configuration

The dashboard reads configuration from ~/.config/dashboard/config.toml (or a local config.toml in the working directory).

Edit your configuration to add a port and secret token under the [settings] block:

[settings]
refresh_rate_secs = 10
title = "🪐 MARSHIAN GALAXY HOMELAB DASHBOARD"
secret_token = "your-secure-secret-token"
port = 8080

[hosts.k8s0]
name = "k8s0"
address = "k8s0"
host_type = "CP"
shell = "nu"

[hosts.srv2]
name = "srv2"
address = "srv2"
host_type = "Alpine"
shell = "nu"
data_disk = "/data"

[hosts.localhost]
name = "localhost"
address = "localhost"
host_type = "Local"
is_local = true
shell = "sh"

Usage

Interactive TUI Mode

To start the standard terminal user interface:

dashboard

API & Web UI Server Mode

To start the HTTP API / WebSockets server and host the remote web client:

dashboard serve

Tip: On startup, scan the rendered terminal QR code with your tablet/phone to connect instantly.


Running as a Background Systemd Service

To run the remote dashboard server persistently in the background as a user service:

  1. Copy the provided systemd service file:

    mkdir -p ~/.config/systemd/user/
    cp dashboard.service ~/.config/systemd/user/dashboard.service
    
  2. Reload the systemd user daemon and start the service:

    systemctl --user daemon-reload
    systemctl --user enable --now dashboard.service
    
  3. View server logs or status:

    systemctl --user status dashboard.service
    journalctl --user -u dashboard.service -f
    
  4. Enable lingering to ensure the service runs on system boot before interactive login:

    loginctl enable-linger