Files
homelab-dashboard/README.md
Dashboard 89cdb022f3 Initial commit: Homelab Dashboard with YAML configuration
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
2026-02-02 20:27:05 +00:00

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!