Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simon

Latest Release Build Status Docker Pulls Docker Image Size License

A lightweight, all-in-one system monitor with Docker support, live metrics, alerts, and full file management
It's a single, dependency-free binary written in Rust, designed for resource-constrained environments like embedded Linux systems



Simon Demo - Live system monitoring interface
Real-time monitoring, Docker integration, file browsing, and alert management - all in one interface

View All Screenshots


Table of Contents

Features

🪶 Lightweight

  • Written in Rust: For a memory-safe, high-performance core
  • Single Binary: A self-contained executable with no external dependencies to install or manage
  • Minimal resource footprint - Perfect for embedded systems and low-power devices

📊 System Monitoring

  • Real-time metrics - Live tracking of CPU, memory, disk usage, disk I/O, and network activity
  • Historical data - Visualize trends with interactive charts
  • Cross-platform - Runs on Linux, Windows, Android, and FreeBSD
  • Multi-architecture - Native support for x86_64, i686, aarch64, and armv7

🐳 Docker Integration

  • Container monitoring - Track resource usage for all running containers
  • Log viewer - Access and search container logs directly from the web interface
  • Real-time stats - Per-container CPU and memory metrics

📁 File Browser & Management

  • Filesystem navigation - Browse and explore directories through the web UI
  • File viewer - Preview file contents directly in your browser
  • File uploads - Upload files with drag-and-drop support
  • File operations - Create folders, move files, delete items
  • File downloads - Range request support for resumable downloads and media streaming

🔔 Alerting System

  • Flexible alerts - Set custom thresholds for CPU, memory, disk, and network
  • Multiple channels - Send notifications via Telegram, ntfy, or custom webhooks
  • Templates - Pre-configured notification templates for quick setup

Quick Start

Option 1: Prebuilt Binary

Download the latest release for your platform from the Releases page and run:

chmod +x simon
./simon

The web interface will be available at http://localhost:30000

To enable file browsing, use either environment variable or CLI flag:

# Using environment variable
export SIMON_SERVE_DIRS="/path/to/dir1,/path/to/dir2"
./simon

# Using CLI flags (can specify multiple directories)
./simon --serve-dir /path/to/dir1 --serve-dir /path/to/dir2

# Custom port and bind address
./simon --port 8080 --address 127.0.0.1 --serve-dir /home --serve-dir /var/log

Option 2: Docker

docker run -d \
  --name simon \
  -p 30000:30000 \
  -v /sys:/sys:ro \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /:/fs:ro \
  -v ./simon-data:/app/simon-data \
  alibahmanyar/simon

To enable file browsing, add the SIMON_SERVE_DIRS environment variable:

-e SIMON_SERVE_DIRS="/fs/home,/fs/var/log"

Option 3: Docker Compose

services:
  simon:
    image: alibahmanyar/simon
    hostname: simon
    ports:
      - "30000:30000"
    environment:
      SIMON_PASSWORD_HASH: "$$2a$$12$$nmCGsgJ3ovx76sc/J8Bcs.Vn235KLQK7Cze83Kzm36a1v59QKVOO."
    volumes:
      - /sys:/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /:/fs:ro
      - ./simon-data:/app/simon-data

Run with: docker-compose up -d

Note: The default password for the example hash is secret. See Authentication for instructions on generating your own secure hash.

To enable file browsing, add SIMON_SERVE_DIRS to the environment section:

environment:
  SIMON_SERVE_DIRS: "/fs/home,/fs/var/log"

Documentation

Comprehensive documentation is available in the docs/ directory:

Key Configuration Options

Option CLI Flag Environment Variable Default Description
Address -a, --address SIMON_ADDRESS 0.0.0.0 Network address to bind the server to
Port -p, --port SIMON_PORT 30000 Server port
Update Interval -T, --update-interval SIMON_UPDATE_INTERVAL 2 Metrics refresh interval (seconds)
Password Hash -H, --password-hash SIMON_PASSWORD_HASH None Bcrypt hash for authentication
Database Path --db-path SIMON_DB_PATH ./simon-data/simon.db SQLite database location
Serve Directories --serve-dir SIMON_SERVE_DIRS None Directories for file browser (use flag multiple times or comma-separated env var)

See the Configuration Reference for all available options.

Building from Source

Simon consists of a Rust backend and a Svelte-based web frontend.

Prerequisites

Build Steps

# Clone the repository
git clone https://github.com/alibahmanyar/simon.git
cd simon

# Setup and build web frontend
make web-setup
make web

# Build Simon
make release

Gallery

System Dashboard Network Stats
Docker Integration Alerts & Notifications

View All Screenshots →


License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

Acknowledgments

Simon is built on top of excellent open-source projects:

Backend (Rust)

Frontend

Thank you to all the contributors and maintainers of these projects!


Happy Monitoring!

About

Minimal, web-based system monitor with Docker support, live metrics, alerts, and a built-in file browser—all bundled into a single binary

Topics

Resources

Stars

158 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages