Sign inSign up

devluigi06/ipmi-fanpilot

By devluigi06

•Updated 11 months ago

Simple web-based IPMI fan controller for Dell, Supermicro, HP servers

Image
Developer tools
0

6.7K

devluigi06/ipmi-fanpilot repository overview

⁠IPMI-FanPilot - Docker Hub Repository

⁠Short Description (max 100 characters)

Simple web-based IPMI fan controller for Dell, Supermicro, HP servers

⁠Full Description

⁠Overview

IPMI-FanPilot is a lightweight, web-based application for controlling server fan speeds via IPMI. Designed for homelab and enterprise environments, it provides intuitive fan speed management without requiring command-line expertise.

⁠Key Features
  • Web-Based Interface: Modern, responsive dashboard accessible from any browser
  • Cross-Platform Support: Works on Windows, Linux, Docker
  • Encrypted Credentials: AES-256 encrypted storage of IPMI credentials
  • Manual & Auto Modes: Set specific fan speeds or use automatic mode
  • Multi-Server Support: Compatible with Dell, Supermicro, HP, Lenovo, IBM
  • Docker Ready: Secure, production-ready container with security patches
  • No Configuration Needed: Credentials auto-generated and encrypted
  • Health Monitoring: Built-in health checks for reliability
⁠Supported Servers
  • Dell PowerEdge: R620, R640, R650, R720, R730, R750 (12G-13G)
  • Supermicro: Any model with IPMI 2.0 support
  • HP ProLiant: iLO-equipped servers
  • Lenovo ThinkSystem: XCC-equipped servers
  • IBM System X: IMM-equipped servers

Note: Direct fan control via IPMI may be limited or blocked on newer 14G/15G Dell servers with recent iDRAC firmware by design (security restriction from Dell).

⁠Quick Start
docker pull dev-luigi/ipmi-fanpilot:latest
docker run -p 3000:3000 dev-luigi/ipmi-fanpilot:latest

Access at: http://localhost:3000⁠

⁠Docker Compose
version: '3.8'
services:
  ipmi-fanpilot:
    image: dev-luigi/ipmi-fanpilot:latest
    ports:
      - "3000:3000"
    volumes:
      - ipmi-data:/app
    restart: unless-stopped

volumes:
  ipmi-data:

Run with: docker-compose up -d

⁠Direct Installation
git clone https://github.com/dev-luigi/IPMI-FanPilot.git
cd IPMI-FanPilot
npm install
node server.js
⁠Usage
  1. Open http://localhost:3000⁠ in your browser
  2. Enter IPMI credentials (IP, username, password)
  3. Click "Save" to encrypt and store credentials
  4. Adjust fan speed with the dial (0-100%)
  5. Click "Confirm" to apply or "Auto Mode" for automatic control
  6. View command history and status messages
⁠Security Features
  • AES-256 Encryption: Credentials encrypted with unique IV per save
  • Non-Root Container: Docker image runs as non-root user
  • Security Patched: All vulnerabilities (CVE-2024-21538, CVE-2025-9230+) fixed
  • Input Validation: Protection against IPMI command injection
  • Health Checks: Automatic container health monitoring
  • Network Isolation: Designed for internal networks only
⁠Requirements
  • Hardware: Any IPMI 2.0-compatible server
  • Network: Direct network access to server IPMI interface
  • Software: Docker OR Node.js 18+
  • Tools: ipmitool (included in Docker image)
⁠System Requirements
  • CPU: 1 core (shared or dedicated)
  • RAM: 256 MB minimum (512 MB recommended)
  • Storage: 50 MB for Docker image (~45 MB)
  • Network: Local network access to IPMI (port 623 UDP/TCP)
⁠Environment
VariableDefaultDescription
NODE_ENVproductionDeployment environment
PORT3000Server listening port
⁠API Endpoints
MethodEndpointDescription
POST/api/credentials/saveSave encrypted credentials
GET/api/credentials/loadLoad saved credentials
DELETE/api/credentials/clearDelete saved credentials
POST/api/executeExecute IPMI fan command
GET/api/healthHealth check
⁠Supported IPMI Commands
  • Manual Mode: Set fan speed 0-100%
  • Auto Mode: Server controls fan speed automatically
  • Preset Speeds: 20%, 30%, 50%, 70%, 100%
⁠Limitations
  • R740XD / 14G-15G Servers: Fan control disabled in recent iDRAC firmware (Dell security restriction)
  • Network-Only: Requires network access to IPMI BMC
  • Single Server: Current version manages one server at a time
  • Windows Only Start: start.bat requires Windows (use Docker for Linux)
⁠Troubleshooting

Cannot connect to IPMI:

  • Verify iDRAC/BMC IP address and credentials
  • Check network connectivity: ping <idrac-ip>
  • Ensure port 623 is accessible
  • Confirm ipmitool is installed

Credentials not saving:

  • Verify all fields are filled (IP, username, password)
  • Check application has write permissions
  • Inspect browser console for errors (F12)

Commands not executing:

  • Verify IPMI credentials are correct
  • Check server logs for error details
  • Confirm ipmitool is in system PATH
⁠File Structure
IPMI-FanPilot/
├── server.js              # Main Node.js application
├── package.json           # Dependencies
├── package-lock.json      # Locked versions
├── Dockerfile             # Docker configuration
├── .gitignore             # Git ignore rules
├── README.md              # Full documentation
├── SECURITY.md            # Security guidelines
├── LICENSE                # License
└── public/
    └── index.html         # Web interface
⁠Performance
  • Startup Time: < 2 seconds
  • Response Time: < 100ms per command
  • Memory Usage: ~30-50 MB running
  • Network Latency: Depends on IPMI network
  • License: MIT
  • Author: Luigi Tanzillo (@dev-luigi)
  • Status: Open Source
  • Support: Community-driven (GitHub Issues)
⁠Known Issues
  • Some Dell R740XD/14G servers block IPMI fan control (firmware restriction)
  • Requires local network access - not suitable for internet-facing deployments
  • Single connection at a time (not concurrent)
⁠Future Roadmap
  • Multi-server management dashboard
  • Temperature monitoring and graphing
  • Scheduled fan control
  • Authentication system
  • Email/webhook notifications
  • Prometheus metrics export
  • Web UI dark mode
  • Mobile app
⁠Getting Help
⁠Development

Built with:

  • Node.js 18+
  • Express.js 4.18
  • ipmitool
  • AES-256 Encryption
⁠Statistics
  • Lines of Code: ~500
  • Dependencies: 1 (Express.js)
  • Image Size: 45 MB
  • Startup Time: 2 seconds
⁠Docker Image Details
  • Base Image: node:18-alpine3.20
  • OS: Alpine Linux 3.20
  • Size: ~45 MB (compressed ~15 MB)
  • User: nodejs (non-root)
  • Health Check: Every 30 seconds
  • Restart Policy: Configurable
⁠Tags Available
  • latest - Most recent stable version
  • 1.0.0 - Specific version tags
  • slim - Minimal variant (future)
  • alpine - Alpine-based variant (current)
⁠Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Test your changes
  4. Submit a pull request
⁠Disclaimer

This application is provided "AS-IS" without warranty. The author is not responsible for:

  • Server damage or malfunction from improper fan control
  • Data loss or security breaches
  • Warranty voidance on enterprise hardware
  • Any other damages from misuse

Always test in non-production environments first. Keep servers monitored when making fan adjustments.

  • IPMI Tools
  • Server Management Dashboards
  • Homelab Tools
  • IoT Applications
⁠License

MIT License - See LICENSE file for details


Last Updated: November 2025
Current Version: 1.0.0
Maintained By: Luigi Tanzillo (@dev-luigi)

Tag summary

Content type

Image

Digest

sha256:8466c7c37…

Size

46.9 MB

Last updated

11 months ago

docker pull devluigi06/ipmi-fanpilot