https://github.com/dani3l0/Status
Simple, lightweight, web-based system monitoring tool for small homeservers running Linux.
https://github.com/dani3l0/Status
linux linux-server python self-hosted system-monitor
Last synced: 13 days ago
JSON representation
Simple, lightweight, web-based system monitoring tool for small homeservers running Linux.
- Host: GitHub
- URL: https://github.com/dani3l0/Status
- Owner: dani3l0
- License: mit
- Created: 2023-03-05T10:23:15.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-11T16:20:28.000Z (6 months ago)
- Last Synced: 2025-06-11T17:56:46.724Z (6 months ago)
- Topics: linux, linux-server, python, self-hosted, system-monitor
- Language: Python
- Homepage: https://status-ksk5.onrender.com/
- Size: 9.18 MB
- Stars: 254
- Watchers: 5
- Forks: 27
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- fucking-awesome-sysadmin - Status - Simple and lightweight system monitoring tool for small homeservers with a pleasant web interface. 🌎 [Demo](status.enshittification.social/) `MIT` `Python` (Software / Monitoring)
- awesome-sysadmin - Status - Simple and lightweight system monitoring tool for small homeservers with a pleasant web interface. ([Demo](https://status.enshittification.social/) `MIT` `Python` (Software / Monitoring)
- awesome-sysadmin - Status - Simple and lightweight system monitoring tool for small homeservers with a pleasant web interface. ([Demo](https://status.enshittification.social/) `MIT` `Python` (Software / Monitoring)
- awesome-sysadmin - Status - Simple and lightweight system monitoring tool for small homeservers with a pleasant web interface. ([Demo](https://status.enshittification.social/) `MIT` `Python` (Software / Monitoring)
README
**⚠️ Project in maintenance mode**. This means no new features will appear, only bug fixes. For more info, see **[Announcement](announcement.md)**.
## :thinking: What is it?
:information_source: **Status** is a simple, lightweight system monitoring app for small homeservers running Linux.
It utilizes virtual filesystems (like `/sys`, `/proc` etc.) to retrieve information and give it to end user via nice web interface.
:balance_scale: **Status** provides a good balance between power and simplicity.
:runner: Runs flawlessly on most desktop computers, mini PCs and Raspberry Pis. However, virtual isolated environments may cause problems.
:tv: **[Check the live demo!](https://status-ksk5.onrender.com)** (but give it a while to load as Render suspends idle services)
### Web UI

### 📱 iOS app by [@JGeek00](https://github.com/JGeek00) - [AppStore](https://apps.apple.com/us/app/server-status-server-monitor/id6479648296)

## :rocket: Installation
This will take you just a few seconds. It's up to you which one you choose :)
### :hammer: Bare-metal
**:heavy_check_mark: Recommended.** Status has access to all virtual filesystems in your OS, which means more information and most reliable values.
:package: You can skip commands with _(venv only)_ comment above if you already have `python3-aiohttp` distro package installed.
```
# Clone the repo
git clone https://github.com/dani3l0/Status && cd Status
# Prepare virtual environment in 'venv' dir (venv only)
python3 -m venv venv
# Use the virtual environment (venv only)
source ./venv/bin/activate
# Install required modules (venv only)
pip3 install -r requirements.txt
# Run Status!
python3 status.py
```
In a one combined command (like for `systemd` service), you can use this as `ExecStart`:
```
sh -c "source ./venv/bin/activate && python3 status.py"
```
### :whale: Docker
**It just works.** Most of features should run without hassle, but depending on your OS configuration you may notice some minor limitations.
```
# Clone the repo
git clone https://github.com/dani3l0/Status && cd Status
# Build & run app
docker-compose up -d
```
App should be available on [localhost:9090](http://localhost:9090).
## :wrench: Configuration
Status can be configured in multiple ways:
1. **:desktop_computer: Command line arguments** - the most important and will override everything.
2. **:national_park: environment variables** - will override configuration file.
3. **:memo: configuration file** - the least important, overrides default configuration only.
It's good not to mix them. Use `--help` for more information.
#### :pencil2: Config keys naming
Config keys are named slightly differently under different ways of configuration. Look at the table:
| | in JSON config | Environment variable | Command line argument |
|----------------|---------------------|-----------------------------|-----------------------|
| **The rule** | `{section}.{key}` | `STATUS_{SECTION}_{KEY}` | `--{section}-{key}` |
| **Example #1** | `server.port` | `STATUS_SERVER_PORT` | `--server-port` |
| **Example #2** | `server.address` | `STATUS_SERVER_ADDRESS` | `--server-address` |
| **Example #3** | `misc.debug` | `STATUS_MISC_DEBUG` | `--misc-debug` |
Command line offers `--config` (or `-c`) to set custom config location.
Running Status with `--no-config` will neither read nor write any configuration file. Overrides `--config`.