725 lines
16 KiB
Markdown
725 lines
16 KiB
Markdown
# Homarr - Another Application Dashboard
|
|
|
|
## Table of Contents
|
|
- [Overview](#overview)
|
|
- [What is Homarr?](#what-is-homarr)
|
|
- [Why Use Homarr?](#why-use-homarr)
|
|
- [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)
|
|
- [Setup and Usage](#setup-and-usage)
|
|
- [Widgets and Apps](#widgets-and-apps)
|
|
- [Advanced Topics](#advanced-topics)
|
|
- [Troubleshooting](#troubleshooting)
|
|
|
|
## Overview
|
|
|
|
**Category:** Dashboard
|
|
**Docker Image:** [ghcr.io/ajnart/homarr](https://github.com/ajnart/homarr/pkgs/container/homarr)
|
|
**Default Stack:** `dashboards.yml`
|
|
**Web UI:** `https://homarr.${DOMAIN}` or `http://SERVER_IP:7575`
|
|
**Authentication:** Built-in user system
|
|
**Purpose:** Interactive application dashboard (alternative to Homepage)
|
|
|
|
## What is Homarr?
|
|
|
|
Homarr is a customizable application dashboard with a focus on ease of use and interactivity. Unlike Homepage's YAML configuration, Homarr offers a web-based drag-and-drop interface for building your dashboard.
|
|
|
|
### Key Features
|
|
- **Drag-and-Drop UI:** Visual dashboard builder
|
|
- **Built-in Auth:** User accounts and permissions
|
|
- **App Integrations:** 50+ service widgets
|
|
- **Custom Widgets:** RSS, Calendar, Weather, Docker stats
|
|
- **Responsive Design:** Mobile-friendly
|
|
- **Multi-Board Support:** Create multiple dashboards
|
|
- **Search Integration:** Built-in search aggregation
|
|
- **Docker Integration:** Container status monitoring
|
|
- **Customizable Themes:** Light/dark mode with colors
|
|
- **Widget Variety:** Information, media, monitoring widgets
|
|
- **No Configuration Files:** Everything managed via GUI
|
|
- **Modern UI:** Clean, intuitive interface
|
|
|
|
## Why Use Homarr?
|
|
|
|
### Homarr vs Homepage
|
|
|
|
**Use Homarr if you want:**
|
|
- ✅ GUI-based configuration (no YAML)
|
|
- ✅ Drag-and-drop dashboard building
|
|
- ✅ Built-in user authentication
|
|
- ✅ Interactive widget management
|
|
- ✅ Visual customization
|
|
- ✅ More widget variety
|
|
- ✅ Easier for non-technical users
|
|
|
|
**Use Homepage if you want:**
|
|
- ✅ YAML configuration (GitOps friendly)
|
|
- ✅ Lighter resource usage
|
|
- ✅ Faster performance
|
|
- ✅ More mature project
|
|
- ✅ Configuration as code
|
|
|
|
### Common Use Cases
|
|
|
|
1. **Family Dashboard:** Easy for non-technical users
|
|
2. **Media Center:** Integrated media widgets
|
|
3. **Multiple Dashboards:** Different boards for different purposes
|
|
4. **Interactive Monitoring:** Clickable, actionable widgets
|
|
5. **Visual Customization:** Design your perfect dashboard
|
|
|
|
## How It Works
|
|
|
|
```
|
|
User → Browser → Homarr Web UI
|
|
↓
|
|
Dashboard Editor
|
|
(Drag-and-drop interface)
|
|
↓
|
|
┌────────────┴────────────┐
|
|
↓ ↓
|
|
App Tiles Widgets
|
|
(Services) (Live data, RSS, etc.)
|
|
↓ ↓
|
|
Click to access API integrations
|
|
service (Sonarr, Radarr, etc.)
|
|
```
|
|
|
|
### Architecture
|
|
|
|
**Data Storage:**
|
|
- SQLite database (stores dashboards, users, settings)
|
|
- Configuration directory (icons, backups)
|
|
- No YAML files required
|
|
|
|
**Components:**
|
|
1. **Web Interface:** Dashboard builder and viewer
|
|
2. **API Backend:** Service integrations
|
|
3. **Database:** User accounts, dashboards, settings
|
|
4. **Docker Integration:** Container monitoring
|
|
|
|
## Configuration in AI-Homelab
|
|
|
|
### Directory Structure
|
|
|
|
```
|
|
/opt/stacks/dashboards/homarr/
|
|
├── data/ # Database and configs
|
|
├── icons/ # Custom icons
|
|
└── backups/ # Dashboard backups
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
```bash
|
|
# Base URL (if behind reverse proxy)
|
|
BASE_URL=https://homarr.yourdomain.com
|
|
|
|
# Port
|
|
PORT=7575
|
|
|
|
# Timezone
|
|
TZ=America/New_York
|
|
|
|
# Optional: Disable analytics
|
|
DISABLE_ANALYTICS=true
|
|
```
|
|
|
|
## Official Resources
|
|
|
|
- **Website:** https://homarr.dev
|
|
- **GitHub:** https://github.com/ajnart/homarr
|
|
- **Documentation:** https://homarr.dev/docs/introduction
|
|
- **Discord:** https://discord.gg/aCsmEV5RgA
|
|
- **Demo:** https://demo.homarr.dev
|
|
|
|
## Educational Resources
|
|
|
|
### Videos
|
|
- [Homarr - Modern Dashboard for Your Homelab (Techno Tim)](https://www.youtube.com/watch?v=a2S5iHG5C0M)
|
|
- [Homarr Setup Tutorial (DB Tech)](https://www.youtube.com/watch?v=tdMAXd9sHY4)
|
|
- [Homepage vs Homarr - Which Dashboard?](https://www.youtube.com/results?search_query=homarr+vs+homepage)
|
|
|
|
### Articles & Guides
|
|
- [Homarr Official Documentation](https://homarr.dev/docs)
|
|
- [Widget Configuration Guide](https://homarr.dev/docs/widgets)
|
|
- [Integration Setup](https://homarr.dev/docs/integrations)
|
|
|
|
### Concepts to Learn
|
|
- **Dashboard Builders:** Visual interface design
|
|
- **Widget Systems:** Modular dashboard components
|
|
- **API Integration:** Service data fetching
|
|
- **User Authentication:** Multi-user support
|
|
- **Docker Integration:** Container monitoring
|
|
- **Responsive Design:** Mobile-friendly layouts
|
|
|
|
## Docker Configuration
|
|
|
|
### Complete Service Definition
|
|
|
|
```yaml
|
|
homarr:
|
|
image: ghcr.io/ajnart/homarr:latest
|
|
container_name: homarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- traefik-network
|
|
ports:
|
|
- "7575:7575"
|
|
volumes:
|
|
- /opt/stacks/dashboards/homarr/data:/app/data/configs
|
|
- /opt/stacks/dashboards/homarr/icons:/app/public/icons
|
|
- /opt/stacks/dashboards/homarr/data:/data
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # For Docker integration
|
|
environment:
|
|
- BASE_URL=https://homarr.${DOMAIN}
|
|
- PORT=7575
|
|
- TZ=America/New_York
|
|
- DISABLE_ANALYTICS=true
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)"
|
|
- "traefik.http.routers.homarr.entrypoints=websecure"
|
|
- "traefik.http.routers.homarr.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.homarr.loadbalancer.server.port=7575"
|
|
```
|
|
|
|
## Setup and Usage
|
|
|
|
### Initial Setup
|
|
|
|
1. **Access Homarr:**
|
|
- Navigate to: `https://homarr.yourdomain.com`
|
|
- Or: `http://SERVER_IP:7575`
|
|
|
|
2. **Create Admin Account:**
|
|
- Click "Get Started"
|
|
- Enter username and password
|
|
- Create first dashboard
|
|
|
|
3. **Dashboard Creation:**
|
|
- Name your dashboard
|
|
- Choose layout (grid, list, etc.)
|
|
- Start adding apps and widgets
|
|
|
|
### Adding Applications
|
|
|
|
**Method 1: Manual Add**
|
|
1. Click "Edit Mode" (pencil icon)
|
|
2. Click "+" button
|
|
3. Select "App"
|
|
4. Fill in details:
|
|
- Name
|
|
- URL
|
|
- Icon (search or upload)
|
|
- Description
|
|
5. Save
|
|
|
|
**Method 2: Integration**
|
|
1. Add app as above
|
|
2. Click "Integration" tab
|
|
3. Select service type (Sonarr, Radarr, etc.)
|
|
4. Enter API URL and key
|
|
5. Save - widget will show live data
|
|
|
|
**Method 3: Docker Discovery**
|
|
1. Enable Docker integration
|
|
2. Homarr auto-discovers containers
|
|
3. Add discovered apps to dashboard
|
|
|
|
### Dashboard Editor
|
|
|
|
**Edit Mode:**
|
|
- Click pencil icon to enter edit mode
|
|
- Drag tiles to rearrange
|
|
- Resize tiles by dragging corners
|
|
- Delete tiles with X button
|
|
- Click tiles to edit settings
|
|
|
|
**Grid System:**
|
|
- Tiles snap to grid
|
|
- Customizable grid size
|
|
- Responsive layout
|
|
- Mobile-optimized views
|
|
|
|
**Categories:**
|
|
- Create sections (Media, Management, etc.)
|
|
- Collapse/expand categories
|
|
- Organize apps logically
|
|
|
|
### User Management
|
|
|
|
**Create Users:**
|
|
1. Settings → Users → Add User
|
|
2. Set username and password
|
|
3. Assign permissions
|
|
4. User can login and customize their dashboard
|
|
|
|
**Permissions:**
|
|
- **Admin:** Full access
|
|
- **User:** View and edit own dashboards
|
|
- **Guest:** Read-only access
|
|
|
|
## Widgets and Apps
|
|
|
|
### Application Widgets
|
|
|
|
**Supported Integrations:**
|
|
|
|
**Media:**
|
|
- Plex, Jellyfin, Emby
|
|
- Sonarr, Radarr, Lidarr, Readarr
|
|
- Prowlarr, Jackett
|
|
- qBittorrent, Transmission, Deluge
|
|
- Tautulli (Plex stats)
|
|
- Overseerr, Jellyseerr
|
|
|
|
**Infrastructure:**
|
|
- Portainer
|
|
- Traefik
|
|
- Pi-hole, AdGuard Home
|
|
- Uptime Kuma
|
|
- Proxmox
|
|
|
|
**Other:**
|
|
- Home Assistant
|
|
- Nextcloud
|
|
- Gitea
|
|
- Calibre-Web
|
|
- Many more...
|
|
|
|
### Information Widgets
|
|
|
|
**Weather Widget:**
|
|
```
|
|
Location: Auto-detect or manual
|
|
Provider: OpenWeatherMap, WeatherAPI
|
|
Units: Imperial/Metric
|
|
Forecast: 3-7 days
|
|
```
|
|
|
|
**Calendar Widget:**
|
|
```
|
|
Type: iCal URL
|
|
Source: Google Calendar, Nextcloud, etc.
|
|
Events: Upcoming events display
|
|
```
|
|
|
|
**RSS Widget:**
|
|
```
|
|
Feed URL: Any RSS/Atom feed
|
|
Items: Number to show
|
|
Refresh: Update interval
|
|
```
|
|
|
|
**Docker Widget:**
|
|
```
|
|
Shows: Running/Stopped containers
|
|
Stats: CPU, Memory, Network
|
|
Control: Start/Stop containers (if permissions)
|
|
```
|
|
|
|
**Clock Widget:**
|
|
```
|
|
Format: 12h/24h
|
|
Timezone: Custom or system
|
|
Date: Show/hide
|
|
Analog/Digital: Style choice
|
|
```
|
|
|
|
**Media Server Widget:**
|
|
```
|
|
Plex/Jellyfin: Currently playing
|
|
Recent: Recently added
|
|
Stats: Library counts
|
|
```
|
|
|
|
### Custom Widgets
|
|
|
|
**HTML Widget:**
|
|
- Embed custom HTML
|
|
- Use for iframes, custom content
|
|
- CSS styling support
|
|
|
|
**Iframe Widget:**
|
|
- Embed external websites
|
|
- Dashboard within dashboard
|
|
- Useful for Grafana, etc.
|
|
|
|
**Image Widget:**
|
|
- Display static images
|
|
- Backgrounds, logos
|
|
- Network/local images
|
|
|
|
## Advanced Topics
|
|
|
|
### Custom Icons
|
|
|
|
**Upload Custom Icons:**
|
|
1. Place icons in `/icons/` directory
|
|
2. Or upload via UI
|
|
3. Reference in app settings
|
|
|
|
**Icon Sources:**
|
|
- Built-in icon library (1000+)
|
|
- Upload your own (PNG, SVG, JPG)
|
|
- URL to external icon
|
|
- Dashboard Icons repository
|
|
|
|
### Multiple Dashboards
|
|
|
|
**Create Multiple Boards:**
|
|
1. Settings → Boards → New Board
|
|
2. Name and configure
|
|
3. Switch between boards
|
|
4. Different dashboards for different purposes:
|
|
- Family board
|
|
- Admin board
|
|
- Media board
|
|
- etc.
|
|
|
|
**Board Sharing:**
|
|
- Share board link
|
|
- Set access permissions
|
|
- Public vs private boards
|
|
|
|
### Themes and Customization
|
|
|
|
**Theme Options:**
|
|
- Light/Dark mode
|
|
- Accent colors
|
|
- Background images
|
|
- Custom CSS (advanced)
|
|
|
|
**Layout Options:**
|
|
- Grid size
|
|
- Tile spacing
|
|
- Column count
|
|
- Responsive breakpoints
|
|
|
|
### Docker Integration
|
|
|
|
**Enable Docker:**
|
|
1. Mount Docker socket
|
|
2. Settings → Docker → Enable
|
|
3. Select which containers to show
|
|
4. Auto-discovery or manual
|
|
|
|
**Docker Features:**
|
|
- Container status
|
|
- Start/Stop controls (if enabled)
|
|
- Resource usage
|
|
- Quick access to logs
|
|
|
|
### API Access
|
|
|
|
**REST API:**
|
|
- Endpoint: `https://homarr.domain.com/api`
|
|
- Authentication: API key
|
|
- Use for automation
|
|
- Integration with other tools
|
|
|
|
**API Uses:**
|
|
- Automated dashboard updates
|
|
- External monitoring
|
|
- Custom integrations
|
|
- Backup automation
|
|
|
|
### Backup and Restore
|
|
|
|
**Manual Backup:**
|
|
1. Settings → Backups
|
|
2. Create backup
|
|
3. Download JSON file
|
|
|
|
**Restore:**
|
|
1. Settings → Backups
|
|
2. Upload backup file
|
|
3. Select boards to restore
|
|
|
|
**File System Backup:**
|
|
```bash
|
|
# Backup entire data directory
|
|
tar -czf homarr-backup-$(date +%Y%m%d).tar.gz /opt/stacks/dashboards/homarr/data/
|
|
|
|
# Restore
|
|
tar -xzf homarr-backup-20240112.tar.gz -C /opt/stacks/dashboards/homarr/
|
|
docker restart homarr
|
|
```
|
|
|
|
### Import/Export
|
|
|
|
**Export Dashboard:**
|
|
- Settings → Export → Download JSON
|
|
- Share with others
|
|
- Version control
|
|
|
|
**Import Dashboard:**
|
|
- Settings → Import → Upload JSON
|
|
- Community dashboards
|
|
- Template boards
|
|
|
|
## Troubleshooting
|
|
|
|
### Homarr Not Loading
|
|
|
|
```bash
|
|
# Check container status
|
|
docker ps | grep homarr
|
|
|
|
# View logs
|
|
docker logs homarr
|
|
|
|
# Test port
|
|
curl http://localhost:7575
|
|
|
|
# Check Traefik routing
|
|
docker logs traefik | grep homarr
|
|
```
|
|
|
|
### Can't Login
|
|
|
|
```bash
|
|
# Reset admin password
|
|
docker exec -it homarr npm run db:reset-password
|
|
|
|
# Or recreate database (WARNING: loses data)
|
|
docker stop homarr
|
|
rm -rf /opt/stacks/dashboards/homarr/data/db.sqlite
|
|
docker start homarr
|
|
# Creates new database, need to setup again
|
|
```
|
|
|
|
### Widgets Not Showing Data
|
|
|
|
```bash
|
|
# Check API connectivity
|
|
docker exec homarr curl http://service:port
|
|
|
|
# Verify API key
|
|
# Re-enter in widget settings
|
|
|
|
# Check service logs
|
|
docker logs service-name
|
|
|
|
# Test API manually
|
|
curl -H "X-Api-Key: key" http://service:port/api/endpoint
|
|
```
|
|
|
|
### Icons Not Displaying
|
|
|
|
```bash
|
|
# Clear browser cache
|
|
# Ctrl+Shift+R (hard refresh)
|
|
|
|
# Check icon path
|
|
ls -la /opt/stacks/dashboards/homarr/icons/
|
|
|
|
# Ensure proper permissions
|
|
sudo chown -R 1000:1000 /opt/stacks/dashboards/homarr/
|
|
|
|
# Re-upload icon via UI
|
|
```
|
|
|
|
### Docker Integration Not Working
|
|
|
|
```bash
|
|
# Verify socket mount
|
|
docker inspect homarr | grep -A5 Mounts
|
|
|
|
# Check socket permissions
|
|
ls -la /var/run/docker.sock
|
|
|
|
# Fix permissions
|
|
sudo chmod 666 /var/run/docker.sock
|
|
|
|
# Or use Docker Socket Proxy (recommended)
|
|
```
|
|
|
|
### High Memory Usage
|
|
|
|
```bash
|
|
# Check container stats
|
|
docker stats homarr
|
|
|
|
# Typical usage: 100-300MB
|
|
# If higher, restart container
|
|
docker restart homarr
|
|
|
|
# Reduce widgets if needed
|
|
# Remove unused integrations
|
|
```
|
|
|
|
### Slow Performance
|
|
|
|
```bash
|
|
# Reduce widget refresh rates
|
|
# Edit widget → Change refresh interval
|
|
|
|
# Disable unused features
|
|
# Settings → Integrations → Disable unused
|
|
|
|
# Check network latency
|
|
# Ping services from Homarr container
|
|
|
|
# Restart container
|
|
docker restart homarr
|
|
```
|
|
|
|
## Performance Optimization
|
|
|
|
### Reduce API Calls
|
|
|
|
- Increase widget refresh intervals
|
|
- Disable widgets for services you don't monitor frequently
|
|
- Use lazy loading for images
|
|
|
|
### Optimize Docker
|
|
|
|
```yaml
|
|
homarr:
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1.0'
|
|
memory: 512M
|
|
reservations:
|
|
memory: 128M
|
|
```
|
|
|
|
### Cache Settings
|
|
|
|
- Enable browser caching
|
|
- Use CDN for icons if available
|
|
- Optimize image sizes
|
|
|
|
## Comparison with Alternatives
|
|
|
|
### Homarr vs Homepage
|
|
|
|
**Homarr:**
|
|
- GUI configuration
|
|
- Built-in authentication
|
|
- Drag-and-drop
|
|
- More interactive
|
|
- Higher resource usage
|
|
|
|
**Homepage:**
|
|
- YAML configuration
|
|
- External auth required
|
|
- Faster performance
|
|
- GitOps friendly
|
|
- Lighter weight
|
|
|
|
### Homarr vs Heimdall
|
|
|
|
**Homarr:**
|
|
- More modern UI
|
|
- Better integrations
|
|
- Active development
|
|
- More features
|
|
|
|
**Heimdall:**
|
|
- Simpler
|
|
- Very lightweight
|
|
- Established project
|
|
- Basic functionality
|
|
|
|
### Homarr vs Organizr
|
|
|
|
**Homarr:**
|
|
- Newer, modern
|
|
- Better mobile support
|
|
- Easier setup
|
|
- More widgets
|
|
|
|
**Organizr:**
|
|
- More mature
|
|
- Tab-based interface
|
|
- Different philosophy
|
|
- Large community
|
|
|
|
## Tips and Tricks
|
|
|
|
### Efficient Layouts
|
|
|
|
**Media Dashboard:**
|
|
- Large tiles for Plex/Jellyfin
|
|
- Medium tiles for *arr apps
|
|
- Small tiles for indexers
|
|
- Weather widget in corner
|
|
|
|
**Admin Dashboard:**
|
|
- Grid of management tools
|
|
- Docker status widget
|
|
- System resource widget
|
|
- Recent logs/alerts
|
|
|
|
**Family Dashboard:**
|
|
- Large, simple icons
|
|
- Hide technical services
|
|
- Focus on media/content
|
|
- Bright, friendly theme
|
|
|
|
### Widget Combinations
|
|
|
|
**Media Setup:**
|
|
1. Plex/Jellyfin (large, with integration)
|
|
2. Sonarr/Radarr (medium, with stats)
|
|
3. qBittorrent (small, with speed)
|
|
4. Recently added (widget)
|
|
|
|
**Monitoring Setup:**
|
|
1. Docker widget (container status)
|
|
2. Pi-hole widget (blocking stats)
|
|
3. Uptime Kuma widget (service status)
|
|
4. Weather widget (why not?)
|
|
|
|
### Custom Styling
|
|
|
|
Use custom CSS for unique looks:
|
|
- Rounded corners
|
|
- Custom colors
|
|
- Transparency effects
|
|
- Animations
|
|
|
|
## Summary
|
|
|
|
Homarr is a user-friendly, interactive dashboard that offers:
|
|
- Visual dashboard builder
|
|
- Built-in authentication
|
|
- Rich widget ecosystem
|
|
- Drag-and-drop interface
|
|
- Modern, responsive design
|
|
- No configuration files needed
|
|
|
|
**Perfect for:**
|
|
- Users who prefer GUI over YAML
|
|
- Multi-user environments
|
|
- Interactive dashboards
|
|
- Visual customization fans
|
|
- Quick setup without learning curve
|
|
|
|
**Trade-offs:**
|
|
- Higher resource usage than Homepage
|
|
- Database dependency
|
|
- Less GitOps friendly
|
|
- Newer project (less mature)
|
|
|
|
**Best Practices:**
|
|
- Use both Homepage and Homarr (they complement each other)
|
|
- Homepage for you, Homarr for family
|
|
- Regular backups of database
|
|
- Optimize widget refresh rates
|
|
- Use Docker Socket Proxy for security
|
|
- Keep updated for new features
|
|
|
|
**Remember:**
|
|
- Homarr is all about visual customization
|
|
- No YAML - everything in UI
|
|
- Great for non-technical users
|
|
- Built-in auth is convenient
|
|
- Can coexist with Homepage
|
|
- Choose based on your preference and use case
|