184 lines
3.6 KiB
Markdown
184 lines
3.6 KiB
Markdown
# 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 <ip> -U <user> -P <pass> 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
|
|
```
|