# IPMI Controller - Setup Guide ## Prerequisites - Dell server with IPMI (iDRAC) enabled - Linux host (Ubuntu/Debian recommended) - Python 3.10+ - ipmitool ## Installation ### 1. Install IPMI Controller On your management server (where you run the controller): ```bash git clone https://github.com/yourusername/ipmi-controller.git cd ipmi-controller pip install -r requirements.txt ``` ### 2. Install ipmitool ```bash sudo apt-get update sudo apt-get install -y ipmitool ``` ### 3. Run the Controller ```bash python3 web_server.py ``` Open `http://your-server:8000` in browser. ## Initial Setup 1. **Complete the Setup Wizard:** - Create admin account - Enter IPMI credentials - IP: Your Dell server's IPMI IP - Username: Usually "root" - Password: Your IPMI password - Port: 623 (default) 2. **Login** with your new admin credentials ## lm-sensors HTTP Server (Optional but Recommended) For better temperature monitoring (including PCIe cards), set up lm-sensors on your Dell server: ### Option A: Automated Setup On your **Dell/Proxmox server** (not the controller): ```bash # Download and run setup script curl -O https://raw.githubusercontent.com/yourusername/ipmi-controller/main/setup-sensors-server.sh chmod +x setup-sensors-server.sh sudo ./setup-sensors-server.sh ``` ### Option B: Manual Setup 1. **Install lm-sensors:** ```bash sudo apt-get install -y lm-sensors netcat-openbsd ``` 2. **Detect sensors:** ```bash sudo sensors-detect --auto ``` 3. **Test sensors:** ```bash sensors ``` 4. **Create HTTP server script** (`/usr/local/bin/sensors-http-server.sh`): ```bash #!/bin/bash PORT=${1:-8888} while true; do { echo -e "HTTP/1.1 200 OK\r" echo -e "Content-Type: text/plain\r" echo -e "Access-Control-Allow-Origin: *\r" echo -e "\r" sensors -u 2>/dev/null || echo "Error" } | nc -l -p "$PORT" -q 1 done ``` 5. **Make executable:** ```bash chmod +x /usr/local/bin/sensors-http-server.sh ``` 6. **Create systemd service** (`/etc/systemd/system/sensors-http.service`): ```ini [Unit] Description=lm-sensors HTTP Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/sensors-http-server.sh 8888 Restart=always User=root [Install] WantedBy=multi-user.target ``` 7. **Enable and start:** ```bash sudo systemctl daemon-reload sudo systemctl enable sensors-http sudo systemctl start sensors-http ``` 8. **Test:** ```bash curl http://$(hostname -I | awk '{print $1}'):8888 ``` ### Configure IPMI Controller 1. Go to **Settings** → **HTTP** tab 2. Enable "HTTP Sensor" 3. Enter URL: `http://your-dell-server-ip:8888` 4. Save ## Docker Deployment ```bash docker build -t ipmi-controller . docker run -d \ -p 8000:8000 \ -v $(pwd)/data:/app/data \ --name ipmi-controller \ ipmi-controller ``` ## Troubleshooting ### IPMI Connection Failed - Verify IPMI IP is correct - Check IPMI username/password - Ensure IPMI is enabled in BIOS/iDRAC - Test manually: `ipmitool -I lanplus -H -U -P mc info` ### No Temperature Data - Check if lm-sensors is installed on Dell server - Run `sensors` to verify it works - Check HTTP endpoint: `curl http://dell-ip:8888` ### Service Won't Start ```bash # Check logs sudo journalctl -u sensors-http -f # Check if port is in use sudo netstat -tlnp | grep 8888 ``` ## Security Notes - Change default password after first login - Use HTTPS/reverse proxy for production - Firewall port 8000 to internal network only - HTTP sensor endpoint is read-only ## Updating ```bash cd ipmi-controller git pull pip install -r requirements.txt # Restart the service ```