A modern web-based application for controlling fan speeds on Dell T710 and compatible servers using IPMI. Features a clean web UI, automatic fan curves, panic mode for safety, and support for multiple servers.
Go to file
devmatrix f93fe7abba Replace custom fan icons with clean Heroicons asterisk design 2026-02-20 18:37:35 +00:00
__pycache__ Add 3-step onboarding wizard with IPMI/HTTP test buttons + auto-activate fan curve 2026-02-20 17:37:31 +00:00
data Add Back buttons to onboarding Steps 2 and 3 2026-02-20 18:23:50 +00:00
static Update SVG icons with cleaner, modern designs using stroke-based paths 2026-02-20 18:09:00 +00:00
PERSISTENCE.md Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
README.md Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
SETUP.md Add slider sync, HTTP sensor docs, setup scripts 2026-02-20 16:38:34 +00:00
backup.sh Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
deploy-prod.sh Add production deployment script with systemd auto-start 2026-02-20 17:16:28 +00:00
docker-compose.yml Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
fan_controller.py Add 3-step onboarding wizard with IPMI/HTTP test buttons + auto-activate fan curve 2026-02-20 17:37:31 +00:00
install.sh Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
requirements.txt Add auth, SSH support, and web config 2026-02-20 15:15:11 +00:00
reset_password.py Working auth system 2026-02-20 15:39:18 +00:00
server.log Replace custom fan icons with clean Heroicons asterisk design 2026-02-20 18:37:35 +00:00
setup-sensors-server.sh Add persistence: install script, backup/restore, systemd service, docker-compose, docs 2026-02-20 16:45:09 +00:00
web_server.py Replace custom fan icons with clean Heroicons asterisk design 2026-02-20 18:37:35 +00:00

README.md

IPMI Controller

Advanced IPMI fan control for Dell servers with web interface, HTTP sensor support, multiple fan curves, and persistent configuration.

Features

  • 🌡️ Dual Sensor Support - IPMI + HTTP (lm-sensors from Proxmox/host)
  • 🌬️ Smart Fan Control - Automatic curves, manual control, panic mode
  • 📊 3 Preset Curves - Balanced (default), Silent, Performance
  • 👥 Fan Groups - Organize and control fans individually or in groups
  • 🔍 Fan Identify - Visual fan identification
  • 🎨 Themes - Dark and Light mode
  • 📱 Responsive Web UI - Works on desktop and mobile
  • 🔌 Public API - For external integrations
  • 💾 Persistent Settings - Survives restarts and updates

Quick Start

git clone https://github.com/yourusername/ipmi-controller.git
cd ipmi-controller
chmod +x install.sh
sudo ./install.sh

This will:

  • Install all dependencies
  • Create systemd service for auto-start
  • Set up persistent data directory
  • Start the controller on boot

Manual Install

# Install dependencies
sudo apt-get install -y ipmitool python3-pip
pip3 install -r requirements.txt

# Run
python3 web_server.py

Access at http://your-server:8000

Initial Setup

  1. Complete the setup wizard (create admin + IPMI config)
  2. Login with your admin credentials
  3. (Optional) Set up HTTP sensor on your Proxmox host:
    # On Proxmox server
    curl -O https://raw.githubusercontent.com/yourusername/ipmi-controller/main/setup-sensors-server.sh
    sudo ./setup-sensors-server.sh
    
  4. Enable auto control and enjoy automatic fan management!

Persistence

All your settings are automatically saved to data/config.json:

IPMI configuration
HTTP sensor settings
Fan curves (Balanced, Silent, Performance)
User accounts
Theme preference
All control settings

Backups:

./backup.sh backup          # Create backup
./backup.sh list            # List backups
./backup.sh restore [file]  # Restore from backup

Auto-backup via cron:

# Add to crontab (keeps 30 days of backups)
0 2 * * * /opt/ipmi-controller/backup.sh auto

Updating

cd ipmi-controller
git pull

# Settings are preserved automatically
sudo systemctl restart ipmi-controller

Fan Curves

Balanced (Default) - Best for most users:

30°C → 10%  |  40°C → 15%  |  50°C → 30%  |  60°C → 55%  |  70°C → 85%  |  80°C → 100%

Silent - Noise-sensitive environments:

30°C → 5%  |  40°C → 10%  |  50°C → 15%  |  60°C → 35%  |  70°C → 70%  |  80°C → 100%

Performance - Heavy workloads:

30°C → 20%  |  40°C → 35%  |  50°C → 55%  |  60°C → 85%  |  70°C → 100%

Documentation

Docker

docker-compose up -d

Data persists in ./data directory.

Management Commands

# Status
sudo systemctl status ipmi-controller

# Logs
sudo journalctl -u ipmi-controller -f

# Restart
sudo systemctl restart ipmi-controller

# Stop
sudo systemctl stop ipmi-controller

Troubleshooting

IPMI Connection Failed:

  • Verify IPMI IP, username, password
  • Test: ipmitool -I lanplus -H <ip> -U <user> -P <pass> mc info

No Temperature Data:

  • Check HTTP sensor: curl http://proxmox-ip:8888
  • Verify sensor_preference is set to "auto" or "http"

Settings Lost After Update:

  • Ensure data/ directory is not deleted
  • Check file permissions: ls -la data/

License

MIT License