Wiki major update
updated with recent documentation
This commit is contained in:
837
wiki/service-docs/homepage.md
Normal file
837
wiki/service-docs/homepage.md
Normal file
@@ -0,0 +1,837 @@
|
||||
# Homepage - Application Dashboard
|
||||
|
||||
## Table of Contents
|
||||
- [Overview](#overview)
|
||||
- [What is Homepage?](#what-is-homepage)
|
||||
- [Why Use Homepage?](#why-use-homepage)
|
||||
- [How It Works](#how-it-works)
|
||||
- [Configuration in AI-Homelab](#configuration-in-ai-homelab)
|
||||
- [Official Resources](#official-resources)
|
||||
- [Educational Resources](#educational-resources)
|
||||
- [Docker Configuration](#docker-configuration)
|
||||
- [Configuration Guide](#configuration-guide)
|
||||
- [Widgets and Integrations](#widgets-and-integrations)
|
||||
- [Advanced Topics](#advanced-topics)
|
||||
- [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Overview
|
||||
|
||||
**Category:** Dashboard
|
||||
**Docker Image:** [ghcr.io/gethomepage/homepage](https://github.com/gethomepage/homepage/pkgs/container/homepage)
|
||||
**Default Stack:** `dashboards.yml`
|
||||
**Web UI:** `https://homepage.${DOMAIN}` or `http://SERVER_IP:3000`
|
||||
**Authentication:** Optional (use Authelia for protection)
|
||||
**Purpose:** Unified dashboard for all homelab services
|
||||
|
||||
## What is Homepage?
|
||||
|
||||
Homepage is a modern, highly customizable application dashboard designed for homelabs. It provides a clean interface to access all your services with real-time status monitoring, API integrations, and customizable widgets.
|
||||
|
||||
### Key Features
|
||||
- **Service Cards:** Organize services with icons, descriptions, and links
|
||||
- **Live Status:** Health checks and uptime monitoring
|
||||
- **API Integrations:** Real-time data from 100+ services
|
||||
- **Widgets:** Weather, Docker stats, system resources, bookmarks
|
||||
- **Customizable:** YAML-based configuration
|
||||
- **Fast & Lightweight:** Minimal resource usage
|
||||
- **Modern UI:** Clean, responsive design
|
||||
- **Dark/Light Mode:** Theme options
|
||||
- **Search:** Quick service filtering
|
||||
- **Docker Integration:** Auto-discover containers
|
||||
- **Bookmarks:** Quick links and resources
|
||||
- **Multi-Language:** i18n support
|
||||
|
||||
## Why Use Homepage?
|
||||
|
||||
1. **Central Hub:** Single page for all homelab services
|
||||
2. **Visual Overview:** See everything at a glance
|
||||
3. **Status Monitoring:** Know which services are up/down
|
||||
4. **Quick Access:** Fast navigation to services
|
||||
5. **Beautiful Design:** Modern, polished interface
|
||||
6. **Easy Configuration:** Simple YAML files
|
||||
7. **Active Development:** Regular updates and improvements
|
||||
8. **API Integration:** Real-time service stats
|
||||
9. **Customizable:** Tailor to your needs
|
||||
10. **Free & Open Source:** Community-driven
|
||||
|
||||
## How It Works
|
||||
|
||||
```
|
||||
User → Browser → Homepage Dashboard
|
||||
↓
|
||||
┌─────────┴─────────┐
|
||||
↓ ↓
|
||||
Service Cards Widgets
|
||||
(with icons) (live data)
|
||||
↓ ↓
|
||||
Click to access API integrations
|
||||
service URL (Plex, Sonarr, etc.)
|
||||
```
|
||||
|
||||
### Architecture
|
||||
|
||||
**Configuration Structure:**
|
||||
```
|
||||
/config/
|
||||
├── settings.yaml # Global settings
|
||||
├── services.yaml # Service definitions
|
||||
├── widgets.yaml # Dashboard widgets
|
||||
├── bookmarks.yaml # Quick links
|
||||
├── docker.yaml # Docker integration
|
||||
└── custom.css # Custom styling (optional)
|
||||
```
|
||||
|
||||
**Data Flow:**
|
||||
1. **Homepage loads** configuration files
|
||||
2. **Renders dashboard** with service cards
|
||||
3. **Makes API calls** to configured services
|
||||
4. **Displays live data** in widgets
|
||||
5. **Health checks** verify service status
|
||||
6. **Updates in real-time** (configurable interval)
|
||||
|
||||
## Configuration in AI-Homelab
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
/opt/stacks/dashboards/homepage/config/
|
||||
├── settings.yaml
|
||||
├── services.yaml
|
||||
├── widgets.yaml
|
||||
├── bookmarks.yaml
|
||||
└── docker.yaml
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
```bash
|
||||
# Optional: Custom port
|
||||
PORT=3000
|
||||
|
||||
# Optional: Puid/Pgid for permissions
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
```
|
||||
|
||||
## Official Resources
|
||||
|
||||
- **Website:** https://gethomepage.dev
|
||||
- **GitHub:** https://github.com/gethomepage/homepage
|
||||
- **Documentation:** https://gethomepage.dev/en/installation/
|
||||
- **Widgets Guide:** https://gethomepage.dev/en/widgets/
|
||||
- **Service Integrations:** https://gethomepage.dev/en/widgets/services/
|
||||
- **Discord:** https://discord.gg/k4ruYNrudu
|
||||
|
||||
## Educational Resources
|
||||
|
||||
### Videos
|
||||
- [Homepage - The BEST Homelab Dashboard (Techno Tim)](https://www.youtube.com/watch?v=_MxpGN8eS4U)
|
||||
- [Homepage Setup Guide (DB Tech)](https://www.youtube.com/watch?v=N9dQKJMrjZM)
|
||||
- [Homepage vs Homarr vs Heimdall](https://www.youtube.com/results?search_query=homepage+vs+homarr)
|
||||
- [Customizing Homepage Dashboard](https://www.youtube.com/results?search_query=homepage+dashboard+customization)
|
||||
|
||||
### Articles & Guides
|
||||
- [Homepage Official Documentation](https://gethomepage.dev)
|
||||
- [Service Widget Configuration](https://gethomepage.dev/en/widgets/services/)
|
||||
- [Docker Integration Guide](https://gethomepage.dev/en/configs/docker/)
|
||||
- [Customization Tips](https://gethomepage.dev/en/configs/custom-css-js/)
|
||||
|
||||
### Concepts to Learn
|
||||
- **YAML Configuration:** Structured data format
|
||||
- **API Integration:** RESTful service communication
|
||||
- **Health Checks:** Service availability monitoring
|
||||
- **Widgets:** Modular dashboard components
|
||||
- **Docker Labels:** Metadata for auto-discovery
|
||||
- **Reverse Proxy:** Accessing services through dashboard
|
||||
|
||||
## Docker Configuration
|
||||
|
||||
### Complete Service Definition
|
||||
|
||||
```yaml
|
||||
homepage:
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
container_name: homepage
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik-network
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- /opt/stacks/dashboards/homepage/config:/app/config
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # For Docker integration
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/New_York
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.homepage.rule=Host(`${DOMAIN}`) || Host(`homepage.${DOMAIN}`)"
|
||||
- "traefik.http.routers.homepage.entrypoints=websecure"
|
||||
- "traefik.http.routers.homepage.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.homepage.loadbalancer.server.port=3000"
|
||||
```
|
||||
|
||||
## Configuration Guide
|
||||
|
||||
### settings.yaml
|
||||
|
||||
```yaml
|
||||
---
|
||||
# Global settings
|
||||
title: My Homelab
|
||||
background: /images/background.jpg # Optional
|
||||
cardBlur: md # sm, md, lg
|
||||
theme: dark # dark, light, auto
|
||||
color: slate # slate, gray, zinc, neutral, stone, red, etc.
|
||||
|
||||
# Layout
|
||||
layout:
|
||||
Media:
|
||||
style: row
|
||||
columns: 4
|
||||
Infrastructure:
|
||||
style: row
|
||||
columns: 3
|
||||
|
||||
# Quick search
|
||||
quicklaunch:
|
||||
searchDescriptions: true
|
||||
hideInternetSearch: true
|
||||
|
||||
# Header widgets (shown at top)
|
||||
headerStyle: clean # boxed, clean
|
||||
```
|
||||
|
||||
### services.yaml
|
||||
|
||||
```yaml
|
||||
---
|
||||
# Service groups and cards
|
||||
|
||||
- Media:
|
||||
- Plex:
|
||||
icon: plex.png
|
||||
href: https://plex.yourdomain.com
|
||||
description: Media Server
|
||||
widget:
|
||||
type: plex
|
||||
url: http://plex:32400
|
||||
key: your-plex-token
|
||||
|
||||
- Sonarr:
|
||||
icon: sonarr.png
|
||||
href: https://sonarr.yourdomain.com
|
||||
description: TV Show Management
|
||||
widget:
|
||||
type: sonarr
|
||||
url: http://sonarr:8989
|
||||
key: your-sonarr-api-key
|
||||
|
||||
- Radarr:
|
||||
icon: radarr.png
|
||||
href: https://radarr.yourdomain.com
|
||||
description: Movie Management
|
||||
widget:
|
||||
type: radarr
|
||||
url: http://radarr:7878
|
||||
key: your-radarr-api-key
|
||||
|
||||
- qBittorrent:
|
||||
icon: qbittorrent.png
|
||||
href: https://qbit.yourdomain.com
|
||||
description: Torrent Client
|
||||
widget:
|
||||
type: qbittorrent
|
||||
url: http://gluetun:8080
|
||||
username: admin
|
||||
password: adminpass
|
||||
|
||||
- Infrastructure:
|
||||
- Dockge:
|
||||
icon: dockge.png
|
||||
href: https://dockge.yourdomain.com
|
||||
description: Stack Manager
|
||||
|
||||
- Portainer:
|
||||
icon: portainer.png
|
||||
href: https://portainer.yourdomain.com
|
||||
description: Docker Management
|
||||
|
||||
- Traefik:
|
||||
icon: traefik.png
|
||||
href: https://traefik.yourdomain.com
|
||||
description: Reverse Proxy
|
||||
widget:
|
||||
type: traefik
|
||||
url: http://traefik:8080
|
||||
|
||||
- Monitoring:
|
||||
- Glances:
|
||||
icon: glances.png
|
||||
href: https://glances.yourdomain.com
|
||||
description: System Monitor
|
||||
widget:
|
||||
type: glances
|
||||
url: http://glances:61208
|
||||
|
||||
- Uptime Kuma:
|
||||
icon: uptime-kuma.png
|
||||
href: https://uptime.yourdomain.com
|
||||
description: Uptime Monitor
|
||||
```
|
||||
|
||||
### widgets.yaml
|
||||
|
||||
```yaml
|
||||
---
|
||||
# Dashboard widgets (shown above services)
|
||||
|
||||
- logo:
|
||||
icon: /icons/logo.png # Optional custom logo
|
||||
|
||||
- search:
|
||||
provider: google
|
||||
target: _blank
|
||||
|
||||
- datetime:
|
||||
text_size: xl
|
||||
format:
|
||||
timeStyle: short
|
||||
dateStyle: short
|
||||
|
||||
- resources:
|
||||
cpu: true
|
||||
memory: true
|
||||
disk: /
|
||||
cputemp: true
|
||||
uptime: true
|
||||
label: Server
|
||||
|
||||
- openmeteo:
|
||||
label: Home
|
||||
latitude: 40.7128
|
||||
longitude: -74.0060
|
||||
units: imperial
|
||||
cache: 5
|
||||
|
||||
- greeting:
|
||||
text_size: xl
|
||||
text: Welcome to my Homelab!
|
||||
```
|
||||
|
||||
### bookmarks.yaml
|
||||
|
||||
```yaml
|
||||
---
|
||||
# Quick links and bookmarks
|
||||
|
||||
- Developer:
|
||||
- GitHub:
|
||||
- icon: github.png
|
||||
href: https://github.com
|
||||
- GitLab:
|
||||
- icon: gitlab.png
|
||||
href: https://gitlab.com
|
||||
|
||||
- Documentation:
|
||||
- Homepage Docs:
|
||||
- icon: homepage.png
|
||||
href: https://gethomepage.dev
|
||||
- Docker Docs:
|
||||
- icon: docker.png
|
||||
href: https://docs.docker.com
|
||||
|
||||
- Social:
|
||||
- Reddit:
|
||||
- icon: reddit.png
|
||||
href: https://reddit.com/r/homelab
|
||||
- Discord:
|
||||
- icon: discord.png
|
||||
href: https://discord.gg/homelab
|
||||
```
|
||||
|
||||
### docker.yaml
|
||||
|
||||
```yaml
|
||||
---
|
||||
# Auto-discover Docker containers
|
||||
|
||||
my-docker:
|
||||
host: docker-proxy # Use socket proxy for security
|
||||
port: 2375
|
||||
# Or direct socket (less secure):
|
||||
# socket: /var/run/docker.sock
|
||||
```
|
||||
|
||||
Then add to services.yaml:
|
||||
```yaml
|
||||
- Docker:
|
||||
- My Container:
|
||||
icon: docker.png
|
||||
description: Auto-discovered container
|
||||
server: my-docker
|
||||
container: container-name
|
||||
```
|
||||
|
||||
## Widgets and Integrations
|
||||
|
||||
### Service Widgets
|
||||
|
||||
**Popular Integrations:**
|
||||
|
||||
**Plex:**
|
||||
```yaml
|
||||
widget:
|
||||
type: plex
|
||||
url: http://plex:32400
|
||||
key: your-plex-token # Get from Plex Web → Settings → Network → Show Advanced
|
||||
```
|
||||
|
||||
**Sonarr/Radarr:**
|
||||
```yaml
|
||||
widget:
|
||||
type: sonarr
|
||||
url: http://sonarr:8989
|
||||
key: your-api-key # Settings → General → API Key
|
||||
```
|
||||
|
||||
**qBittorrent:**
|
||||
```yaml
|
||||
widget:
|
||||
type: qbittorrent
|
||||
url: http://gluetun:8080
|
||||
username: admin
|
||||
password: adminpass
|
||||
```
|
||||
|
||||
**Pi-hole:**
|
||||
```yaml
|
||||
widget:
|
||||
type: pihole
|
||||
url: http://pihole:80
|
||||
key: your-api-key # Settings → API → Show API token
|
||||
```
|
||||
|
||||
**Traefik:**
|
||||
```yaml
|
||||
widget:
|
||||
type: traefik
|
||||
url: http://traefik:8080
|
||||
```
|
||||
|
||||
**AdGuard Home:**
|
||||
```yaml
|
||||
widget:
|
||||
type: adguard
|
||||
url: http://adguard:80
|
||||
username: admin
|
||||
password: adminpass
|
||||
```
|
||||
|
||||
### Information Widgets
|
||||
|
||||
**Weather:**
|
||||
```yaml
|
||||
- openmeteo:
|
||||
label: Home
|
||||
latitude: 40.7128
|
||||
longitude: -74.0060
|
||||
units: imperial # or metric
|
||||
cache: 5
|
||||
```
|
||||
|
||||
**System Resources:**
|
||||
```yaml
|
||||
- resources:
|
||||
cpu: true
|
||||
memory: true
|
||||
disk: /
|
||||
cputemp: true
|
||||
uptime: true
|
||||
label: Server
|
||||
```
|
||||
|
||||
**Docker Stats:**
|
||||
```yaml
|
||||
- docker:
|
||||
server: my-docker
|
||||
show: running # or all
|
||||
```
|
||||
|
||||
**Glances:**
|
||||
```yaml
|
||||
- glances:
|
||||
url: http://glances:61208
|
||||
cpu: true
|
||||
mem: true
|
||||
process: true
|
||||
```
|
||||
|
||||
### Custom Widgets
|
||||
|
||||
```yaml
|
||||
- customapi:
|
||||
url: http://myapi.local/endpoint
|
||||
refreshInterval: 60000 # 60 seconds
|
||||
display: text # or list, block
|
||||
mappings:
|
||||
- field: data.value
|
||||
label: My Value
|
||||
format: text
|
||||
```
|
||||
|
||||
## Advanced Topics
|
||||
|
||||
### Custom CSS
|
||||
|
||||
Create `/config/custom.css`:
|
||||
```css
|
||||
/* Custom background */
|
||||
body {
|
||||
background-image: url('/images/custom-bg.jpg');
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
/* Larger service cards */
|
||||
.service-card {
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
/* Custom colors */
|
||||
:root {
|
||||
--color-primary: #1e40af;
|
||||
--color-secondary: #7c3aed;
|
||||
}
|
||||
|
||||
/* Hide specific elements */
|
||||
.some-class {
|
||||
display: none;
|
||||
}
|
||||
```
|
||||
|
||||
### Custom JavaScript
|
||||
|
||||
Create `/config/custom.js`:
|
||||
```javascript
|
||||
// Custom functionality
|
||||
console.log('Homepage loaded!');
|
||||
|
||||
// Example: Auto-refresh every 5 minutes
|
||||
setTimeout(() => {
|
||||
window.location.reload();
|
||||
}, 300000);
|
||||
```
|
||||
|
||||
### Multi-Column Layouts
|
||||
|
||||
```yaml
|
||||
layout:
|
||||
Media:
|
||||
style: row
|
||||
columns: 4
|
||||
Infrastructure:
|
||||
style: column
|
||||
columns: 2
|
||||
Monitoring:
|
||||
style: row
|
||||
columns: 3
|
||||
```
|
||||
|
||||
### Custom Icons
|
||||
|
||||
Place icons in `/config/icons/`:
|
||||
```
|
||||
/config/icons/
|
||||
├── custom-icon1.png
|
||||
├── custom-icon2.svg
|
||||
└── custom-icon3.jpg
|
||||
```
|
||||
|
||||
Reference in services:
|
||||
```yaml
|
||||
- My Service:
|
||||
icon: /icons/custom-icon1.png
|
||||
```
|
||||
|
||||
### Docker Auto-Discovery
|
||||
|
||||
Automatically add containers with labels:
|
||||
|
||||
```yaml
|
||||
# In container compose file
|
||||
my-service:
|
||||
labels:
|
||||
- "homepage.group=Media"
|
||||
- "homepage.name=My Service"
|
||||
- "homepage.icon=service-icon.png"
|
||||
- "homepage.href=https://service.domain.com"
|
||||
- "homepage.description=My awesome service"
|
||||
```
|
||||
|
||||
### Ping Health Checks
|
||||
|
||||
```yaml
|
||||
- My Service:
|
||||
icon: service.png
|
||||
href: https://service.domain.com
|
||||
ping: https://service.domain.com
|
||||
# Shows green/red status indicator
|
||||
```
|
||||
|
||||
### Custom API Widgets
|
||||
|
||||
```yaml
|
||||
- customapi:
|
||||
url: http://api.local/stats
|
||||
refreshInterval: 30000
|
||||
display: block
|
||||
mappings:
|
||||
- field: users
|
||||
label: Active Users
|
||||
format: number
|
||||
- field: status
|
||||
label: Status
|
||||
format: text
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Homepage Not Loading
|
||||
|
||||
```bash
|
||||
# Check if container is running
|
||||
docker ps | grep homepage
|
||||
|
||||
# View logs
|
||||
docker logs homepage
|
||||
|
||||
# Check port
|
||||
curl http://localhost:3000
|
||||
|
||||
# Verify Traefik routing
|
||||
docker logs traefik | grep homepage
|
||||
```
|
||||
|
||||
### Service Widgets Not Showing Data
|
||||
|
||||
```bash
|
||||
# Check API connectivity
|
||||
docker exec homepage curl http://service:port
|
||||
|
||||
# Verify API key is correct
|
||||
# Check service logs for auth errors
|
||||
|
||||
# Test API manually
|
||||
curl -H "X-Api-Key: your-key" http://service:port/api/endpoint
|
||||
|
||||
# Check Homepage logs for errors
|
||||
docker logs homepage | grep -i error
|
||||
```
|
||||
|
||||
### Configuration Changes Not Applied
|
||||
|
||||
```bash
|
||||
# Homepage auto-reloads config files
|
||||
# Wait 10-20 seconds
|
||||
|
||||
# Or restart container
|
||||
docker restart homepage
|
||||
|
||||
# Check YAML syntax
|
||||
# Use online YAML validator
|
||||
|
||||
# View Homepage logs
|
||||
docker logs homepage | grep -i config
|
||||
```
|
||||
|
||||
### Docker Socket Permission Error
|
||||
|
||||
```bash
|
||||
# Fix socket permissions
|
||||
sudo chmod 666 /var/run/docker.sock
|
||||
|
||||
# Or use Docker Socket Proxy (recommended)
|
||||
# See docker-proxy.md
|
||||
|
||||
# Check mount
|
||||
docker inspect homepage | grep -A5 Mounts
|
||||
```
|
||||
|
||||
### Icons Not Displaying
|
||||
|
||||
```bash
|
||||
# Homepage uses icon CDN by default
|
||||
# Check internet connectivity
|
||||
|
||||
# Use local icons instead
|
||||
# Place in /config/icons/
|
||||
|
||||
# Clear browser cache
|
||||
# Hard refresh: Ctrl+Shift+R
|
||||
|
||||
# Check icon name matches service
|
||||
# List available icons: https://github.com/walkxcode/dashboard-icons
|
||||
```
|
||||
|
||||
### High CPU/Memory Usage
|
||||
|
||||
```bash
|
||||
# Check container stats
|
||||
docker stats homepage
|
||||
|
||||
# Reduce API polling frequency
|
||||
# In services.yaml, add cache settings
|
||||
|
||||
# Disable unnecessary widgets
|
||||
|
||||
# Check for network issues
|
||||
docker logs homepage | grep timeout
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Reduce API Calls
|
||||
|
||||
```yaml
|
||||
# Increase refresh intervals
|
||||
widget:
|
||||
type: sonarr
|
||||
url: http://sonarr:8989
|
||||
key: api-key
|
||||
refreshInterval: 300000 # 5 minutes instead of default 10 seconds
|
||||
```
|
||||
|
||||
### Cache Configuration
|
||||
|
||||
```yaml
|
||||
# In settings.yaml
|
||||
cache:
|
||||
size: 100 # Number of cached responses
|
||||
ttl: 300 # Cache time in seconds
|
||||
```
|
||||
|
||||
### Lazy Loading
|
||||
|
||||
```yaml
|
||||
# In settings.yaml
|
||||
lazyLoad: true # Load images as they scroll into view
|
||||
```
|
||||
|
||||
## Customization Tips
|
||||
|
||||
### Color Themes
|
||||
|
||||
Available colors: `slate`, `gray`, `zinc`, `neutral`, `stone`, `red`, `orange`, `amber`, `yellow`, `lime`, `green`, `emerald`, `teal`, `cyan`, `sky`, `blue`, `indigo`, `violet`, `purple`, `fuchsia`, `pink`, `rose`
|
||||
|
||||
```yaml
|
||||
color: blue
|
||||
theme: dark
|
||||
```
|
||||
|
||||
### Background Images
|
||||
|
||||
```yaml
|
||||
background: /images/my-background.jpg
|
||||
backgroundBlur: sm # sm, md, lg, xl
|
||||
backgroundSaturate: 50 # 0-100
|
||||
backgroundBrightness: 50 # 0-100
|
||||
```
|
||||
|
||||
### Card Appearance
|
||||
|
||||
```yaml
|
||||
cardBlur: md # sm, md, lg, xl
|
||||
hideVersion: true
|
||||
showStats: true
|
||||
```
|
||||
|
||||
### Custom Greeting
|
||||
|
||||
```yaml
|
||||
- greeting:
|
||||
text_size: xl
|
||||
text: "Welcome back, {{name}}!"
|
||||
```
|
||||
|
||||
## Integration Examples
|
||||
|
||||
### Complete Media Stack
|
||||
|
||||
```yaml
|
||||
- Media Server:
|
||||
- Plex:
|
||||
icon: plex.png
|
||||
href: https://plex.domain.com
|
||||
widget:
|
||||
type: plex
|
||||
url: http://plex:32400
|
||||
key: token
|
||||
|
||||
- Jellyfin:
|
||||
icon: jellyfin.png
|
||||
href: https://jellyfin.domain.com
|
||||
widget:
|
||||
type: jellyfin
|
||||
url: http://jellyfin:8096
|
||||
key: api-key
|
||||
|
||||
- Media Management:
|
||||
- Sonarr:
|
||||
icon: sonarr.png
|
||||
href: https://sonarr.domain.com
|
||||
widget:
|
||||
type: sonarr
|
||||
url: http://sonarr:8989
|
||||
key: api-key
|
||||
|
||||
- Radarr:
|
||||
icon: radarr.png
|
||||
href: https://radarr.domain.com
|
||||
widget:
|
||||
type: radarr
|
||||
url: http://radarr:7878
|
||||
key: api-key
|
||||
|
||||
- Prowlarr:
|
||||
icon: prowlarr.png
|
||||
href: https://prowlarr.domain.com
|
||||
widget:
|
||||
type: prowlarr
|
||||
url: http://prowlarr:9696
|
||||
key: api-key
|
||||
```
|
||||
|
||||
## Summary
|
||||
|
||||
Homepage provides a beautiful, functional dashboard for your homelab. It offers:
|
||||
- Clean, modern interface
|
||||
- Real-time service monitoring
|
||||
- API integrations for live data
|
||||
- Easy YAML configuration
|
||||
- Highly customizable
|
||||
- Active development and community
|
||||
|
||||
**Perfect for:**
|
||||
- Homelab landing page
|
||||
- Service overview
|
||||
- Quick access portal
|
||||
- Status monitoring
|
||||
- Aesthetic presentation
|
||||
|
||||
**Best Practices:**
|
||||
- Use Authelia for authentication if exposed
|
||||
- Configure API widgets for live data
|
||||
- Organize services into logical groups
|
||||
- Use custom icons for consistency
|
||||
- Enable Docker integration for automation
|
||||
- Regular config backups
|
||||
- Keep updated for new features
|
||||
|
||||
**Remember:**
|
||||
- YAML syntax matters (indentation!)
|
||||
- Test API connections before configuring widgets
|
||||
- Use Docker Socket Proxy for security
|
||||
- Customize colors and themes to preference
|
||||
- Start simple, add complexity gradually
|
||||
- Homepage is your homelab's front door - make it welcoming!
|
||||
Reference in New Issue
Block a user