Features: - Service health monitoring with response times - Proxmox cluster integration (nodes, VMs, containers) - PBS backup server monitoring - Camera viewer with WebRTC (go2rtc) - Docker container monitoring - Uptime Kuma integration - Mobile-friendly responsive design - YAML-based configuration for easy setup
162 lines
3.7 KiB
Markdown
162 lines
3.7 KiB
Markdown
# Homelab Dashboard
|
|
|
|
A modern, responsive dashboard for monitoring your homelab infrastructure.
|
|
|
|
## Features
|
|
|
|
- **Service Monitoring**: Track health and response times for all your services
|
|
- **Proxmox Integration**: View cluster status, nodes, VMs, and containers
|
|
- **PBS Integration**: Monitor Proxmox Backup Server status
|
|
- **Camera Viewer**: WebRTC-based live camera feeds (via go2rtc)
|
|
- **Docker Monitoring**: Track containers across multiple Docker hosts
|
|
- **Uptime Kuma Integration**: Display uptime stats from your monitoring
|
|
- **Mobile-Friendly**: Responsive design works on all devices
|
|
|
|
## Quick Start
|
|
|
|
### 1. Clone and Setup
|
|
|
|
```bash
|
|
# Copy the dashboard to your server
|
|
scp -r dashboard/ root@your-server:/opt/
|
|
|
|
# Install dependencies
|
|
apt install python3-venv python3-yaml
|
|
cd /opt/dashboard
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install fastapi uvicorn httpx jinja2
|
|
```
|
|
|
|
### 2. Configure
|
|
|
|
```bash
|
|
# Copy the example configs
|
|
cp config.yaml.example config.yaml
|
|
cp secrets.yaml.example secrets.yaml
|
|
|
|
# Edit config.yaml with your services
|
|
nano config.yaml
|
|
|
|
# Add your API credentials to secrets.yaml
|
|
nano secrets.yaml
|
|
|
|
# Protect secrets file
|
|
chmod 600 secrets.yaml
|
|
```
|
|
|
|
### 3. Run
|
|
|
|
```bash
|
|
# Test manually
|
|
source venv/bin/activate
|
|
uvicorn app.main:app --host 0.0.0.0 --port 8000
|
|
|
|
# Or create a systemd service (see below)
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### config.yaml
|
|
|
|
The main configuration file defines:
|
|
|
|
- **dashboard**: Title, theme, refresh interval
|
|
- **proxmox**: Cluster nodes to monitor
|
|
- **pbs**: Proxmox Backup Server connection
|
|
- **cameras**: go2rtc camera streams
|
|
- **docker**: Docker hosts to monitor
|
|
- **uptime_kuma**: Uptime monitoring integration
|
|
- **categories**: Service category colors and icons
|
|
- **services**: All services to display and monitor
|
|
- **service_groups**: Logical groupings for services
|
|
|
|
See `config.yaml.example` for full documentation.
|
|
|
|
### secrets.yaml
|
|
|
|
Store sensitive credentials separately:
|
|
|
|
- Proxmox API tokens
|
|
- PBS API tokens
|
|
- OPNsense API keys
|
|
- Service-specific API keys
|
|
|
|
**Important**: Never commit `secrets.yaml` to version control!
|
|
|
|
### Service Configuration
|
|
|
|
Each service can have:
|
|
|
|
```yaml
|
|
- name: MyService
|
|
url: https://myservice.example.com # URL to open on click
|
|
ip: 192.168.1.100 # IP for health checks
|
|
port: 8080 # Port for health checks
|
|
category: Apps # Category grouping
|
|
icon: server # Icon name
|
|
favorite: true # Show in favorites
|
|
critical: true # Mark as critical
|
|
group: "My Group" # Service group
|
|
health_check: # Optional custom health check
|
|
url: https://custom-check-url/
|
|
timeout: 10
|
|
```
|
|
|
|
### Available Icons
|
|
|
|
server, shield, globe, archive, lock, film, star, video, tv, music,
|
|
search, download, cog, chart, heartbeat, key, git, workflow, book,
|
|
image, brain, home, camera, message, database
|
|
|
|
## Systemd Service
|
|
|
|
Create `/etc/systemd/system/dashboard.service`:
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=Homelab Dashboard
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
WorkingDirectory=/opt/dashboard
|
|
ExecStart=/opt/dashboard/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Then enable and start:
|
|
|
|
```bash
|
|
systemctl daemon-reload
|
|
systemctl enable dashboard
|
|
systemctl start dashboard
|
|
```
|
|
|
|
## Reverse Proxy (Nginx/NPM)
|
|
|
|
Example Nginx Proxy Manager configuration:
|
|
|
|
- **Domain**: dashboard.yourdomain.com
|
|
- **Forward Host**: 192.168.1.x (dashboard IP)
|
|
- **Forward Port**: 8000
|
|
- **WebSocket Support**: Enable (for live updates)
|
|
|
|
## Requirements
|
|
|
|
- Python 3.10+
|
|
- FastAPI
|
|
- Uvicorn
|
|
- HTTPX
|
|
- Jinja2
|
|
- PyYAML
|
|
|
|
## License
|
|
|
|
MIT License - Feel free to use and modify for your homelab!
|