v2.0.0
v2.0.0 is a full rewrite. v1 was one HTML page that pushed fan commands at a single Dell. v2 is a Python/FastAPI backend serving a React dashboard, talking to as many BMCs as you want over ipmitool.
Everything runs on your box. SQLite on disk, no cloud, no telemetry.
What it does
| Area | What you get |
|---|---|
| Monitoring | Live temperature, fan RPM, voltage and power over a WebSocket. History charts at 1H, 24H and 7D. |
| FanPilot | Drag-and-drop fan curves. The loop runs in the backend, so it keeps working with the browser closed. |
| Power | On, soft off, hard off, reset and cycle, with an audit log. Tracks kWh and cost per server. |
| Event log | Browse and search the BMC event log. Export to CSV or JSON. |
| Inventory | FRU data: board, chassis, product. |
| Interface | 12 languages, dark and light themes, command palette, mobile layout. |
Fan safety
Above your critical threshold (85 °C by default) fans go to 100% and stay there until the temperature clears the hysteresis band. If a BMC stops answering, FanPilot fails safe instead of leaving the fans wherever they were. On shutdown it hands automatic fan control back to the BMC, including on Ctrl+C and docker stop.
Supported hardware
Sensors, power, event log and FRU work on any IPMI 2.0 BMC. Fan control is vendor-specific.
| Vendor | Fan control | Tier | Why |
|---|---|---|---|
| Dell PowerEdge (iDRAC) | Yes | Tested | Validated on real hardware (R720) |
| Supermicro (X10+) | Yes | Experimental | Both fan zones, not exhaustively tested |
| IBM System x (IMM) | Yes | Experimental | Dual fan bank, not exhaustively tested |
| HPE ProLiant (iLO) | No | Monitoring only | iLO exposes no IPMI fan-control interface |
| Lenovo ThinkSystem (XCC) | No | Monitoring only | No reliable way to restore automatic mode |
| Generic / unknown BMC | No | Monitoring only | Never sends raw writes it cannot verify |
Monitoring-only boxes still get full sensors, power, event log and FRU. If you run Supermicro or IBM, reports are welcome. That is how they move to Tested.
Install
Docker:
docker run -d --name ipmideck --network host \
-v ipmideck-data:/data \
devluigi06/ipmideck:latestOn Windows and macOS use -p 3000:3000 instead of --network host.
pip (needs ipmitool on the system):
pip install ipmideck
ipmideck startOpen http://<your-ip>:3000 and the setup wizard takes over. No hardware around? ipmideck --demo seeds fake servers so you can click through everything.
Coming from v1
There is no in-place upgrade. Different stack, different database, different config. Install fresh and re-add your servers through the wizard.
| v1 | v2 | |
|---|---|---|
| Stack | Node.js + Express | Python 3.11+ / FastAPI + React |
| Image | devluigi06/ipmi-fanpilot |
devluigi06/ipmideck |
| Data volume | /app |
/data |
| Env prefix | none | IPMIDECK_* |
Port 3000 is unchanged.
Links
Docs · Docker Hub · PyPI · Issues
The docs have per-vendor guides for turning IPMI on: iDRAC, iLO, Supermicro, XCC and IMM.
Bad fan control can damage hardware. Test somewhere that is not production first. Apache-2.0, provided as-is.
Full Changelog: 84df472...v2.0.0

