This commit improves configuration management by: ## Changes ### Environment Variable Management - Moved ALL environment blocks from compose.yaml files to .env files - Added comprehensive .env files for all 20 services - Included example secret formats with generation commands - Added detailed comments explaining what each secret should look like ### Example Secret Formats All .env files now include examples for: - **JWT Secrets**: 64-character hex strings - Example format: `a1b2c3d4e5f67890abcdef1234567890...` - Generate with: `openssl rand -hex 32` - **Passwords**: Strong alphanumeric passwords - Example format: `MyS3cur3P@ssw0rd!2024#HomeL@b` - Generate with: `openssl rand -base64 32 | tr -d /=+ | cut -c1-32` - **Session Secrets**: Random hex strings - Example format: `b2c3d4e5f67890abcdef1234567890a1b2...` - Generate with: `openssl rand -hex 32` - **API Keys**: Service-specific formats - Meili: 32-character hex (`openssl rand -hex 16`) - NextAuth: 64-character hex (`openssl rand -hex 32`) ### GPU Support Documentation - Added NVIDIA GPU (GTX 1070) configuration for Jellyfin - Added NVIDIA GPU configuration for Immich (ML inference & transcoding) - Included setup instructions for NVIDIA Container Toolkit - Documented how to enable GPU acceleration in each service ### Services Updated **Core Infrastructure:** - lldap: Added JWT secret and password examples - tinyauth: Added session secret examples - traefik: No environment variables needed **Media Services:** - jellyfin: Added .env with GPU configuration docs - jellyseer: Created .env with logging and timezone settings - immich: Added database password examples and GPU docs - sonarr: Created .env for PUID/PGID/TZ - radarr: Created .env for PUID/PGID/TZ - sabnzbd: Created .env for PUID/PGID/TZ - qbittorrent: Created .env for PUID/PGID/TZ/WEBUI_PORT **Utility Services:** - homarr: Created .env for port and timezone - backrest: Added environment variables to .env - linkwarden: Rewrote .env with NextAuth, Postgres, Meili examples - vikunja: Created .env with JWT secret and database password - FreshRSS: Created .env for PUID/PGID/TZ - booklore: Created .env for PUID/PGID/TZ - calibre-web: Created .env for PUID/PGID/TZ - filebrowser: Created .env for PUID/PGID/TZ - lubelogger: Created .env with locale settings - rsshub: Created .env with cache and logging config - microbin: Updated existing .env, removed environment block ### Benefits 1. **Security**: - Clear examples show what strong secrets look like - Generation commands prevent weak passwords - All secrets in one place per service 2. **Consistency**: - All services follow the same pattern (env_file: .env) - No more environment blocks in compose files - Easier to template new services 3. **Usability**: - Users know exactly what to change (look for `changeme_*`) - Example formats prevent configuration errors - Commands provided to generate secure values 4. **Maintainability**: - Compose files are cleaner and more readable - Environment changes don't require compose file edits - Version control friendly (.env files can be .gitignored) ### Files Changed - Modified: 24 compose.yaml files - Created: 14 new .env files - Updated: 6 existing .env files - Total .env files: 20 across all services All compose.yaml files now use `env_file: .env` exclusively. No environment blocks remain in any compose files. |
||
|---|---|---|
| .. | ||
| .env | ||
| compose.yaml | ||
| README.md | ||
Homarr Dashboard
Modern, customizable dashboard with automatic Docker service discovery.
Features
- 🎨 Modern UI - Beautiful, responsive design
- 🔍 Auto-Discovery - Automatically finds Docker services
- 📊 Widgets - System stats, weather, calendar, RSS, etc.
- 🏷️ Labels - Organize services by category
- 🔗 Integration - Connects to *arr apps, Jellyfin, etc.
- 🎯 Customizable - Drag-and-drop layout
- 🌙 Dark Mode - Built-in dark theme
- 📱 Mobile Friendly - Works on all devices
Access
- URL: https://home.fig.systems or https://home.edfig.dev
- Port: 7575 (if accessing directly)
First-Time Setup
1. Deploy Homarr
cd compose/services/homarr
docker compose up -d
2. Access Dashboard
Open https://home.fig.systems in your browser.
3. Auto-Discovery
Homarr will automatically detect services with these labels:
labels:
homarr.name: "Service Name"
homarr.group: "Category"
homarr.icon: "/icons/service.png"
homarr.href: "https://service.fig.systems"
Adding Services to Dashboard
Automatic (Recommended)
Add labels to your service's compose.yaml:
labels:
# Traefik labels...
traefik.enable: true
# ... etc
# Homarr labels
homarr.name: Jellyfin
homarr.group: Media
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/jellyfin.png
homarr.href: https://flix.fig.systems
Redeploy the service:
docker compose up -d
Homarr will automatically add it to the dashboard!
Manual
- Click the "+" button in Homarr
- Select "Add Service"
- Fill in:
- Name: Service name
- URL: https://service.fig.systems
- Icon: Choose from library or custom URL
- Category: Group services (Media, Services, etc.)
Integration with Services
Jellyfin
Add to Jellyfin's compose.yaml:
labels:
homarr.name: Jellyfin
homarr.group: Media
homarr.icon: /icons/jellyfin.png
homarr.widget.type: jellyfin
homarr.widget.url: http://jellyfin:8096
homarr.widget.key: ${JELLYFIN_API_KEY}
Shows: Currently playing, library stats
Sonarr/Radarr
labels:
homarr.name: Sonarr
homarr.group: Media Automation
homarr.icon: /icons/sonarr.png
homarr.widget.type: sonarr
homarr.widget.url: http://sonarr:8989
homarr.widget.key: ${SONARR_API_KEY}
Shows: Queue, calendar, missing episodes
qBittorrent
labels:
homarr.name: qBittorrent
homarr.group: Downloads
homarr.icon: /icons/qbittorrent.png
homarr.widget.type: qbittorrent
homarr.widget.url: http://qbittorrent:8080
homarr.widget.username: ${QBIT_USERNAME}
homarr.widget.password: ${QBIT_PASSWORD}
Shows: Active torrents, download speed
Available Widgets
System Monitoring
- CPU Usage - Real-time CPU stats
- Memory Usage - RAM usage
- Disk Space - Storage capacity
- Network - Upload/download speeds
Services
- Jellyfin - Media server stats
- Sonarr - TV show automation
- Radarr - Movie automation
- Lidarr - Music automation
- Readarr - Book automation
- Prowlarr - Indexer management
- SABnzbd - Usenet downloads
- qBittorrent - Torrent downloads
- Overseerr/Jellyseerr - Media requests
Utilities
- Weather - Local weather forecast
- Calendar - Events and tasks
- RSS Feeds - News aggregator
- Docker - Container status
- Speed Test - Internet speed
- Notes - Sticky notes
- Iframe - Embed any website
Customization
Change Theme
- Click settings icon (⚙️)
- Go to "Appearance"
- Choose color scheme
- Save
Reorganize Layout
- Click edit mode (✏️)
- Drag and drop services
- Resize widgets
- Click save
Add Categories
- Click "Add Category"
- Name it (e.g., "Media", "Tools", "Infrastructure")
- Drag services into categories
- Collapse/expand as needed
Custom Icons
Option 1: Use Icon Library
- Homarr includes icons from Dashboard Icons
- Search by service name
Option 2: Custom URL
https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/service.png
Option 3: Local Icons
- Place in
./icons/directory - Reference as
/icons/service.png
Recommended Dashboard Layout
┌─────────────────────────────────────────┐
│ 🏠 Homelab Dashboard │
├─────────────────────────────────────────┤
│ [System Stats] [Weather] [Calendar] │
├─────────────────────────────────────────┤
│ 📺 Media │
│ [Jellyfin] [Jellyseerr] [Immich] │
├─────────────────────────────────────────┤
│ 🤖 Media Automation │
│ [Sonarr] [Radarr] [qBittorrent] │
├─────────────────────────────────────────┤
│ 🛠️ Services │
│ [Linkwarden] [Vikunja] [FreshRSS] │
├─────────────────────────────────────────┤
│ 🔧 Infrastructure │
│ [Traefik] [LLDAP] [Tinyauth] │
└─────────────────────────────────────────┘
Add to All Services
To make all your services auto-discoverable, add these labels:
Jellyfin
homarr.name: Jellyfin
homarr.group: Media
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/jellyfin.png
Jellyseerr
homarr.name: Jellyseerr
homarr.group: Media
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/jellyseerr.png
Immich
homarr.name: Immich Photos
homarr.group: Media
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/immich.png
Sonarr/Radarr/SABnzbd/qBittorrent
homarr.name: [Service]
homarr.group: Automation
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/[service].png
Linkwarden/Vikunja/etc.
homarr.name: [Service]
homarr.group: Utilities
homarr.icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/[service].png
Mobile Access
Homarr is fully responsive. For best mobile experience:
- Add to home screen (iOS/Android)
- Works as PWA (Progressive Web App)
- Touch-optimized interface
Backup Configuration
Backup
cd compose/services/homarr
tar -czf homarr-backup-$(date +%Y%m%d).tar.gz config/ data/
Restore
cd compose/services/homarr
tar -xzf homarr-backup-YYYYMMDD.tar.gz
docker compose restart
Troubleshooting
Services not auto-discovered
Check Docker socket permission:
docker logs homarr
Verify labels on service:
docker inspect service-name | grep homarr
Can't connect to services
Services must be on same Docker network or accessible via hostname.
Use container names, not localhost:
- ✅
http://jellyfin:8096 - ❌
http://localhost:8096
Widgets not working
- Check API keys are correct
- Verify service URLs (use container names)
- Check service is running:
docker ps
Alternatives Considered
| Dashboard | Auto-Discovery | Widgets | Complexity |
|---|---|---|---|
| Homarr | ✅ Excellent | ✅ Many | Low |
| Homepage | ✅ Good | ✅ Many | Low |
| Heimdall | ❌ Manual | ❌ Few | Very Low |
| Dashy | ⚠️ Limited | ✅ Some | Medium |
| Homer | ❌ Manual | ❌ None | Very Low |
| Organizr | ⚠️ Limited | ✅ Many | High |
Homarr chosen for: Best balance of features, auto-discovery, and ease of use.
Resources
Tips
- Start Simple - Add core services first, expand later
- Use Categories - Group related services
- Enable Widgets - Make dashboard informative
- Mobile First - Test on phone/tablet
- Backup Config - Save your layout regularly