Sign inSign up

weasts/srvrmon

By weasts

•Updated 7 months ago

A real-time, flicker-free, ultra-compact Streamlit dashboard for monitoring server vital statistics.

Image
Operating systems
Monitoring & observability
0

573

weasts/srvrmon repository overview

⁠SrvrMon: Live Server Monitor Dashboard šŸ“ŠšŸ’»

Welcome to SrvrMon! This is a real-time, ultra-compact, and flicker-free web dashboard designed to monitor your server's vital statistics. Built entirely in Python using Streamlit, psutil, and Docker, it acts as a lightweight command center for your home lab, VPS, or dedicated server.

⁠✨ What It Does

Unlike traditional monitoring tools that require heavy databases (like Prometheus/Grafana) or complex frontends, SrvrMon runs entirely in a single lightweight container and pushes data directly to your browser via WebSockets.

  • Command Center Layout: Everything fits on a single screen using an ultra-dense 3-column layout. No endless scrolling required.
  • Flicker-Free Updates: Uses Streamlit fragments and static placeholders to update data and charts seamlessly without redrawing or flashing the UI.
  • Hardware Deep Dive: Live CPU, RAM, Network (Send/Receive), and detailed Disk I/O charting.
  • Thermal & GPU Tracking: Auto-detects NVIDIA and AMD GPUs, plus aggregates CPU core temperatures into a live thermal graph.
  • Process & Docker Visibility: View top CPU/Memory hogs and monitor all running Docker containers natively on the host.
  • Live System Logs: Tails your host's Syslog (or any configured logs) with automatic timestamp cleanup and reverse chronological sorting so the newest data is always at the top.

ā šŸš€ How to Run It

Because SrvrMon monitors the host machine from inside a container, it requires a few specific permissions. It needs pid: "host" to see the host's processes, and a few read-only volume mounts (/sys, /var/run/docker.sock) to read hardware sensors and Docker states.

The easiest and most reliable way to deploy SrvrMon is using Docker Compose.

⁠1. Create your docker-compose.yml

Create a file named docker-compose.yml and paste the following configuration:

services:
  srvrmon:
    build: .
    image: weasts/srvrmon:latest
    container_name: live-server-monitor
    ports:
      - "8501:8501"
    pid: "host"
    privileged: true
    environment:
      - POLLING_INTERVAL_MS=5000
      - STORAGE_PATHS=/host_root
      - LOG_CONFIG=Host Syslog:/host_root/var/log/syslog
    volumes:
      - /:/host_root:ro
      - /sys:/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    devices: 
      - /dev/dri:/dev/dri
    deploy: 
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped
  1. Deploy the Container

Run the following command in the same directory as your docker-compose.yml file:

docker-compose up -d

  1. Access the Dashboard

Open your web browser and navigate to: http://:8501 āš™ļø Configuration (Environment Variables)

You can easily customize the monitor's behavior by adjusting the environment: variables in your Compose file:

POLLING_INTERVAL_MS: How often the dashboard updates in milliseconds. (Default: 5000 for 5 seconds).

STORAGE_PATHS: Comma-separated list of mounted paths to monitor for disk space. (Example: /host_root,/mnt/media_drive).

LOG_CONFIG: Comma-separated list of Display Name:Path pairs for log tailing. (Example: Syslog:/host_root/var/log/syslog,AppLog:/host_root/var/log/myapp.log).

Tag summary

Content type

Image

Digest

sha256:7b4194373…

Size

164.7 MB

Last updated

7 months ago

docker pull weasts/srvrmon