claude-home/networking/pihole-disk-optimization.md
Cal Corum 6c8d199359 Add Pi-hole HA documentation and networking updates
Add dual Pi-hole high availability setup guide, deployment notes, and
disk optimization docs. Update NPM + Pi-hole sync script and docs.
Add UniFi DNS firewall troubleshooting and networking scripts CONTEXT.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:19:56 -06:00

112 lines
3.1 KiB
Markdown

# Pi-hole Disk Optimization - 2026-02-06
## Problem
Primary Pi-hole (npm-pihole at 10.10.0.16) had critical disk space issues:
- **Root filesystem**: 91% full (27GB used of 31GB)
- **Pi-hole data**: 3.6GB total
- `pihole-FTL.db`: 2.8GB (query log database)
- `gravity.db`: 460MB (blocklist database)
- `gravity.db.v5.backup`: 114MB (old v5 backup)
- **Query retention**: 91 days (default)
- **Total queries stored**: 26.4 million
## Actions Taken
### 1. Removed Old Backup Database
```bash
rm /home/cal/container-data/pihole/etc-pihole/gravity.db.v5.backup
```
**Space freed**: 114MB
### 2. Cleaned Up Docker Resources
```bash
docker system prune -af --volumes
```
**Space freed**: 4.3GB
- Removed unused images (old Pi-hole versions, Jellyfin, Foundry, etc.)
- Removed stopped containers
- Removed unused networks
### 3. Reduced Query Log Retention
```bash
echo "database.maxDBdays=7.0" >> /etc/pihole/pihole-FTL.conf
docker compose restart
```
**Configuration**: Changed from 91 days to 7 days
**Future savings**: Database will automatically maintain ~7 days of logs instead of 91
## Results
| Metric | Before | After | Improvement |
|--------|--------|-------|-------------|
| Disk Usage | 91% (27GB/31GB) | 73% (22GB/31GB) | -18% |
| Free Space | 2.8GB | 8.2GB | +5.4GB |
| Total Freed | - | 4.3GB | - |
## Ongoing Maintenance
### Automatic Cleanup
Pi-hole will now automatically:
- Delete queries older than 7 days
- Maintain FTL database size around ~300-500MB (instead of 2.8GB)
- Keep the most recent week of query logs for troubleshooting
### Manual Cleanup (if needed)
```bash
# Flush Pi-hole logs
docker exec pihole pihole -f
# Check disk usage
df -h /
du -sh /home/cal/container-data/pihole/etc-pihole/*
# Clean unused Docker resources
docker system prune -af --volumes
# Check query count
docker exec pihole pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db 'SELECT COUNT(*) FROM queries;'
```
### Monitoring Recommendations
**Set up disk space alerts** when usage exceeds 85%:
```bash
# Add to cron (daily check)
0 8 * * * df -h / | awk '$5+0 > 85 {print "Warning: Disk usage at " $5 " on npm-pihole"}' | mail -s "Disk Alert" admin@example.com
```
**Check Pi-hole database size monthly**:
```bash
du -h /home/cal/container-data/pihole/etc-pihole/pihole-FTL.db
```
## Configuration File
`/etc/pihole/pihole-FTL.conf`:
```conf
database.maxDBdays=7.0 # Keep queries for 7 days only
```
## Prevention Tips
1. **Regular Docker cleanup**: Run `docker system prune` monthly
2. **Monitor disk usage**: Check `df -h` weekly
3. **Review query retention**: 7 days is sufficient for most troubleshooting
4. **Consider disabling query logging** if not needed:
```bash
pihole logging off
```
5. **Archive old logs** before major upgrades (like v5→v6)
## Space Budget Estimates
With 7-day retention:
- **Pi-hole FTL database**: ~300-500MB (vs 2.8GB before)
- **Gravity database**: ~460MB (36 blocklists)
- **Docker images**: ~2-3GB (active containers only)
- **System overhead**: ~20GB
- **Recommended free space**: 5GB+ for headroom
**Current allocation is healthy** at 73% with 8.2GB free.