A comprehensive guide for deploying and using the iDRAC Fan Speed Control system with Docker.
This guide covers everything you need to know about deploying, configuring, and troubleshooting the iDRAC Fan Speed Control system. The system intelligently manages Dell PowerEdge server fan speeds based on disk and optional GPU temperatures.
- Docker and Docker Compose installed
- Network access to both iDRAC and ESXi hosts
- NVIDIA Container Toolkit (optional, for GPU temperature monitoring)
Before deployment, gather the following information:
-
iDRAC Details:
- IP address
- Username (typically
root) - Password
-
ESXi Host Details:
- IP address or hostname
- Username (typically
root) - Password
-
Drive Identifier:
- NVMe drive identifier from ESXi
The drive identifier is crucial for temperature monitoring. Here's how to obtain it:
# SSH to your ESXi host
ssh root@your_esxi_host
# List all storage devices
esxcli storage core device list
# Look for your NVMe drive and copy the Device UID
# Example output:
# t10.NVMe____KCD61LUL7T68____________________________015E8306E28EE38C- Log into vSphere Client
- Navigate to Host → Configure → Storage Devices
- Find your NVMe drive and note the identifier
# Clone the repository
git clone <repository-url>
cd iDRACFanSpeedControl
# Or download specific files
wget https://raw.githubusercontent.com/username/repo/main/docker-compose.yml
wget https://raw.githubusercontent.com/username/repo/main/.env.example# Copy example configuration
cp .env.example .env
# Edit the configuration file
nano .envEdit your .env file with the following minimum required settings:
# ===== Required Settings =====
IDRAC_IP=192.168.1.100
IDRAC_ID=root
IDRAC_PASSWORD=your_idrac_password
ESXI_HOST=192.168.1.10
ESXI_USERNAME=root
ESXI_PASSWORD=your_esxi_password
DRIVE_DEVICE=your_drive_identifier_here
# ===== Optional Settings =====
WITH_GPU_TEMP=false
OPERATION_MODE=auto
CHECK_INTERVAL=60# Start the service
docker-compose up -d
# Check if it's running
docker psIf you want GPU temperature monitoring:
- Enable GPU in configuration:
# In .env file
WITH_GPU_TEMP=true- Update docker-compose.yml:
Uncomment the GPU configuration section:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]- Deploy with GPU support:
docker-compose up -d# Real-time log viewing
docker logs -f idrac-fan-control
# View specific number of recent log lines
docker logs --tail 100 idrac-fan-control
# View logs from a specific time
docker logs --since 30m idrac-fan-control# Check container status
docker ps
# View container resource usage
docker stats idrac-fan-control
# Inspect container configuration
docker inspect idrac-fan-controlIf you've mounted the logs directory:
# View fan control log
tail -f ./logs/fan_control.log
# View recent entries
cat ./logs/fan_control.log | tail -20TEMP_LOW=60
TEMP_MEDIUM=65
TEMP_HIGH=70
TEMP_CRITICAL=75
FAN_SPEED_LOW=25
FAN_SPEED_MEDIUM=35
FAN_SPEED_HIGH=45
FAN_SPEED_CRITICAL=55TEMP_LOW=70
TEMP_MEDIUM=75
TEMP_HIGH=80
TEMP_CRITICAL=85
FAN_SPEED_LOW=35
FAN_SPEED_MEDIUM=45
FAN_SPEED_HIGH=60
FAN_SPEED_CRITICAL=75TEMP_LOW=65
TEMP_MEDIUM=72
TEMP_HIGH=78
TEMP_CRITICAL=82
FAN_SPEED_LOW=20
FAN_SPEED_MEDIUM=25
FAN_SPEED_HIGH=35
FAN_SPEED_CRITICAL=50# High responsiveness (more frequent checks)
CHECK_INTERVAL=30
# Balanced (default)
CHECK_INTERVAL=60
# Low impact (less frequent checks)
CHECK_INTERVAL=120Symptoms: Container exits immediately or fails to start
Solutions:
# Check container logs
docker logs idrac-fan-control
# Verify environment variables
docker run --rm --env-file .env ghcr.io/df-wu/idrac-fan-control:latest
# Check .env file format
cat .env | grep -v '^#' | grep -v '^$'Symptoms: Error: IDRAC connection failed
Solutions:
# Test IPMI connection manually
ipmitool -I lanplus -H your_idrac_ip -U root -P your_password chassis status
# Check network connectivity
ping your_idrac_ip
# Verify iDRAC credentials
# Check iDRAC web interface accessSymptoms: SSH connection failed or Permission denied
Solutions:
# Test SSH connection manually
ssh root@your_esxi_host
# Enable SSH on ESXi:
# 1. Access ESXi web interface
# 2. Navigate to Manage → Services
# 3. Start SSH service
# Check firewall settings on ESXiSymptoms: GPU temperature shows as 0 or error messages about nvidia-smi
Solutions:
# Verify NVIDIA Container Toolkit installation
docker run --rm --gpus all nvidia/cuda:12.9.0-runtime-ubuntu24.04 nvidia-smi
# Check if GPU is accessible in container
docker exec idrac-fan-control nvidia-smi
# Verify GPU configuration in docker-compose.ymlSymptoms: Disk temperature shows as 0 or cannot get temperature
Solutions:
# Verify drive identifier
ssh root@your_esxi_host
esxcli storage core device list
# Test temperature reading manually
esxcli storage core device smart get -d your_drive_device
# Check if drive supports SMART monitoringEnable verbose logging for troubleshooting:
# Run container in interactive mode for debugging
docker run --rm -it --env-file .env \
-e OPERATION_MODE=manual \
ghcr.io/df-wu/idrac-fan-control:latestMonitor system performance impact:
# Check system resource usage
docker stats
# Monitor network connections
netstat -an | grep :623 # IPMI port
# Check disk I/O
iostat -x 1# Pull latest image
docker-compose pull
# Restart with new image
docker-compose up -d# Backup configuration files
cp .env .env.backup.$(date +%Y%m%d)
cp docker-compose.yml docker-compose.yml.backup.$(date +%Y%m%d)# Rotate logs if they become too large
docker-compose exec idrac-fan-control logrotate /etc/logrotate.confThe container includes built-in health checks. Monitor health status:
# Check health status
docker inspect idrac-fan-control | grep Health -A 10
# View health check logs
docker logs idrac-fan-control 2>&1 | grep health- Firewall Rules: Limit container network access to only required ports
- VPN Access: Consider using VPN for remote iDRAC access
- Network Segmentation: Isolate management network from production
- Dedicated Accounts: Create dedicated monitoring accounts with minimal privileges
- Password Rotation: Regularly rotate iDRAC and ESXi passwords
- File Permissions: Secure
.envfile permissions
# Secure .env file
chmod 600 .env- Regular Updates: Keep container images updated
- Non-root User: Container runs as non-root user by default
- Read-only Filesystem: Mount configuration as read-only where possible
Add resource limits to prevent excessive resource usage:
# In docker-compose.yml
services:
idrac-fan-control:
# ... other configuration ...
deploy:
resources:
limits:
memory: 128M
cpus: '0.5'
reservations:
memory: 64M
cpus: '0.1'- Use Host Network:
network_mode: hostfor better IPMI performance - Connection Pooling: Service maintains persistent connections
- Timeout Configuration: Adjust IPMI timeouts if needed
- Check Documentation: Review this guide and README.md
- Search Issues: Look for similar issues in the project repository
- Create Issue: Submit detailed bug reports or feature requests
- Community Forum: Participate in community discussions
- Bug Reports: Include logs, configuration, and environment details
- Feature Requests: Describe use case and expected behavior
- Pull Requests: Follow coding standards and include tests
- 下載配置文件:複製
.env.example為.env並填入您的設定 - 必要設定:
- iDRAC IP、帳號、密碼
- ESXi 主機 IP、帳號、密碼
- 磁碟識別碼(透過 ESXi 指令取得)
- 啟動服務:執行
docker-compose up -d - GPU 支援:如需 GPU 溫度監控,設定
WITH_GPU_TEMP=true並開啟 Docker Compose 中的 GPU 配置
- 連線失敗:檢查網路連線和認證資訊
- 溫度讀取失敗:確認磁碟識別碼正確且支援 SMART 監控
- GPU 溫度錯誤:確認已安裝 NVIDIA Container Toolkit
- 使用
docker logs idrac-fan-control查看運行狀態 - 定期備份配置文件
- 根據需求調整溫度閾值和風扇轉速設定