plex-restart/PROJECT_GUIDE.md
2026-04-12 13:03:45 -04:00

101 lines
2.7 KiB
Markdown

# Project Structure
```
plex-restart/
├── monitor.py # Main monitoring agent
├── Dockerfile # Container definition
├── docker-compose.yml # Service orchestration
├── requirements.txt # Python dependencies
├── test_gpio.py # GPIO testing utility
├── health_check.py # Service health monitor
├── .env.example # Configuration template
├── INSTALL_NATIVE.md # Native installation guide
├── README.md # Complete documentation
└── .gitignore # Git ignore rules
```
## Quick Reference
### Deploy (Docker Compose)
```bash
cp .env.example .env
# Edit .env with your host IP and GPIO pin
docker-compose up -d
docker-compose logs -f
```
### Deploy (Native)
See `INSTALL_NATIVE.md` for systemd service or manual installation.
### Test GPIO
```bash
POWER_BUTTON_GPIO=17 python3 test_gpio.py
```
### Check Health
```bash
python3 health_check.py
```
### View Logs
```bash
# Docker
docker-compose logs -f pikvm-monitor
# Native/systemd
journalctl -u pikvm-monitor -f
tail -f /var/log/pikvm-monitor.log
```
## Key Parameters
- **Ping Interval**: 180 seconds (3 minutes)
- **Downtime Threshold**: 15 minutes (5 failed pings)
- **Long Press**: 5 seconds (power down)
- **Wait**: 90 seconds (cool-down)
- **Short Press**: 1 second (power on)
Adjust in `.env` as needed for faster/slower recovery.
## Files Overview
| File | Purpose |
|------|---------|
| `monitor.py` | Main monitoring loop with GPIO control |
| `Dockerfile` | Builds container image |
| `docker-compose.yml` | Defines service with volume/env mapping |
| `requirements.txt` | Python package versions |
| `test_gpio.py` | Tests GPIO pin configuration |
| `health_check.py` | Verifies monitor is running |
| `.env.example` | Configuration template |
| `INSTALL_NATIVE.md` | Systemd/manual setup |
## Architecture
```
PiKVM (Runs Docker Compose)
└── pikvm-monitor Container
├── Pings HOST_IP every 3 min
├── Falls back to GATEWAY_IP
├── Tracks consecutive failures
├── After 15 min downtime:
│ ├── Long press GPIO (5 sec) → Power down
│ ├── Wait 90 seconds
│ └── Short press GPIO (1 sec) → Power on
└── Logs to /var/log/pikvm-monitor.log
```
## Next Steps
1. **Configure**: Edit `.env` with your IPs and GPIO pin
2. **Test GPIO**: Run `test_gpio.py` to verify pin works
3. **Deploy**: Use `docker-compose up -d`
4. **Monitor**: Check logs with `docker-compose logs -f`
5. **Verify**: Run `health_check.py` periodically
## Support
- PiKVM Docs: https://docs.pikvm.org/
- gpiozero: https://gpiozero.readthedocs.io/
- Docker Compose: https://docs.docker.com/compose/