How Integrations Work
Integrations in Homarr provide a secure bridge between your boards and external services:- Create Integration: Configure connection details and credentials
- Test Connection: Verify connectivity and authentication
- Assign to Widgets: Select which widgets can use the integration
- Real-Time Updates: Widgets fetch data using the integration
- Permission Control: Manage who can use each integration
Integration Architecture
All integrations extend a base class providing common functionality:Supported Integrations
Homarr supports integrations across multiple categories:Media Management
Media Servers (Plex, Jellyfin, Emby)
Media Servers (Plex, Jellyfin, Emby)
- Library statistics (movies, TV shows, music)
- Recently added media
- Active streams
- User activity
- Plex: API Key (X-Plex-Token)
- Jellyfin: Username & Password OR API Key
- Emby: API Key
- Media Server
- Media Releases
Media Requests (Overseerr, Jellyseerr, Seerr)
Media Requests (Overseerr, Jellyseerr, Seerr)
- Request statistics
- Pending requests
- Request management
- Search functionality
- API Key
- Media Requests (List)
- Media Requests (Stats)
- Search (global search integration)
Media Organization (Sonarr, Radarr, Lidarr, Readarr)
Media Organization (Sonarr, Radarr, Lidarr, Readarr)
- Release calendar
- Missing episodes/movies
- Queue management
- Library statistics
- API Key
- Calendar
- Media Server
Download Clients
Torrent Clients (qBittorrent, Transmission, Deluge)
Torrent Clients (qBittorrent, Transmission, Deluge)
- Active downloads
- Download/upload speeds
- Queue management
- Torrent controls
- qBittorrent: Username & Password
- Transmission: Username & Password
- Deluge: Password
- Downloads
Usenet Clients (SABnzbd, NZBGet)
Usenet Clients (SABnzbd, NZBGet)
- Download queue
- History
- Speed statistics
- Pause/resume controls
- SABnzbd: API Key
- NZBGet: Username & Password
- Downloads
System Monitoring
Health Monitoring (Dash., Glances, Proxmox, TrueNAS, Unraid)
Health Monitoring (Dash., Glances, Proxmox, TrueNAS, Unraid)
- CPU usage
- Memory usage
- Disk space
- Network statistics
- Temperature sensors
- Dash.: None
- Glances: None
- Proxmox: Username, Token ID, API Key, Realm
- TrueNAS: Username & Password
- Unraid: API Key
- System Resources
- System Disks
- Health Monitoring
Container Management (Docker, Coolify)
Container Management (Docker, Coolify)
- Container status
- Resource usage
- Start/stop controls
- Logs
- Docker: Direct socket access (no secrets)
- Coolify: API Key
- Docker Containers
- Coolify
Network & Security
DNS Filtering (Pi-hole, AdGuard Home)
DNS Filtering (Pi-hole, AdGuard Home)
- Query statistics
- Blocked queries
- Top domains
- Enable/disable filtering
- Pi-hole: API Key (optional for read-only)
- AdGuard Home: Username & Password
- DNS Hole Summary
- DNS Hole Controls
Firewall (OPNsense)
Firewall (OPNsense)
- Firewall rules
- Traffic statistics
- System info
- Gateway status
- API Key
- API Secret
- Firewall
Network Controller (Unifi Controller)
Network Controller (Unifi Controller)
- Connected clients
- Network usage
- Device status
- Site statistics
- Username & Password
- Network Controller Summary
- Network Controller Status
Development & Releases
Release Providers (GitHub, GitLab, Docker Hub, NPM)
Release Providers (GitHub, GitLab, Docker Hub, NPM)
- Latest releases
- Release notes
- Download counts
- Version tracking
- GitHub: None (public) OR Personal Access Token OR GitHub App credentials
- GitLab: None (public) OR Personal Access Token
- Docker Hub: None (public) OR Username & Personal Access Token
- NPM: None
- Releases
Smart Home
Home Assistant
Home Assistant
- Entity states
- Service calls
- Automation triggers
- Calendar events
- API Key (Long-Lived Access Token)
- Smart Home Entity State
- Smart Home Execute Automation
- Calendar
Other Services
Additional Integrations
Additional Integrations
- Prowlarr: Indexer manager statistics
- Tdarr: Media transcoding status
- Nextcloud: Calendar integration
- ntfy: Notification delivery
- iCal: Calendar feeds
- Minecraft: Server status
- OpenMediaVault: NAS management
Adding Integrations
Step-by-Step Setup
Select Integration Type
- Media Services
- Download Clients
- System Monitoring
- Network & Security
- And more…
Configure Basic Settings
- Name: Descriptive name for this integration (e.g., “Main Plex Server”)
- URL: Base URL of the service (e.g.,
http://plex.example.com:32400) - External URL (optional): Public URL if different from internal
Add Secrets
- API Key: Single token for authentication
- Username & Password: Credentials for login
- Multiple Options: Some integrations support alternative auth methods
Test Connection
- Network connectivity
- Authentication validity
- SSL/TLS certificate (if HTTPS)
- API availability
Integration Secrets
Homarr supports multiple secret types:- isPublic: Whether the secret value is visible to users with view access
- multiline: Whether the input should be a textarea (e.g., for private keys)
Testing Connections
Homarr includes comprehensive connection testing:Test Process
Test Results
- Success
- Connection Failed
- Authentication Failed
- Certificate Error
- Network connectivity verified
- Authentication accepted
- API responding correctly
- Integration ready to use
Custom Certificates
For self-signed or custom CA certificates:- Navigate to Settings → Certificates
- Upload CA certificate or server certificate
- Assign to hostname
- Test connection again
Integration Secrets Management
Secret Storage
Secrets are encrypted at rest using AES-256-GCM:- Encryption: Secrets encrypted with master key
- Storage: Encrypted values stored in database
- Decryption: Only decrypted when needed by server
- Never Exposed: Secrets never sent to client
Secret Rotation
Regularly rotate integration secrets:- Generate new API key/credentials in service
- Edit integration in Homarr
- Update secret values
- Test connection
- Save changes
- Revoke old credentials in service
Secret Permissions
Control who can view and manage integration secrets:- View: See integration configuration (public secrets visible)
- Edit: Update URL and secrets
- Full: Complete control including deletion
Using Integrations in Widgets
Once configured, integrations can be selected when adding widgets:Widget Integration Selection
- Add widget to board (edit mode)
- Select widget type
- Choose integration(s) from dropdown
- Configure widget options
- Save widget
Multiple Integrations
Some widgets support multiple integrations:Integration Requirements
- supportedIntegrations: List of compatible integration types
- integrationsRequired: Whether widget requires at least one integration
Integration Permissions
Control which users can access integrations:Permission Levels
View Access
- See integration name and URL
- Use integration in widgets
- View data from integration
- Edit configuration
- View secrets
- Delete integration
Full Access
- Everything in View access
- Edit configuration
- Update secrets
- Delete integration
- Manage permissions
Granting Access
- Open integration settings
- Click Permissions
- Add users or groups
- Select permission level
- Save changes
Permission Inheritance
Integration permissions work with board permissions:- Widget shows data only if user has integration view access
- Board permissions don’t grant integration access
- Both board AND integration access required to view widget data
Integration Categories
Advanced Features
External URLs
Some integrations support separate internal and external URLs:- Internal URL: Used by Homarr server to fetch data
- External URL: Used by browser for direct links
Custom Headers
Some integrations support custom HTTP headers:- Authentication headers
- Custom user agents
- Proxy headers
Connection Timeouts
Configure request timeouts for slow services:- Default: 30 seconds
- Configurable per integration
- Prevents hanging requests
Troubleshooting
Integration not appearing in widget
Integration not appearing in widget
- Integration type matches widget’s supported types
- User has view access to integration
- Integration is saved and active
- Verify integration category matches widget
- Check integration permissions
- Test connection to ensure it’s working
Widget shows no data
Widget shows no data
- Integration connection is successful
- Service has data to display
- User has integration permissions
- Widget configuration is correct
- Test integration connection
- Check service logs
- Verify API permissions
- Review widget configuration
SSL/TLS errors
SSL/TLS errors
- Certificate is valid
- Hostname matches certificate
- CA is trusted
- Add custom certificate
- Use HTTP if acceptable
- Fix certificate on service
- Disable certificate validation (not recommended)
Slow widget updates
Slow widget updates
- Network latency to service
- Service response time
- Number of widgets using integration
- Increase connection timeout
- Optimize service performance
- Reduce widget update frequency
- Use fewer widgets per integration
Best Practices
Security
- Use HTTPS when possible
- Rotate secrets regularly
- Grant minimal required permissions
- Use service accounts, not personal accounts
- Monitor integration usage
Organization
- Use descriptive integration names
- Group similar integrations
- Document custom configurations
- Tag integrations by environment (prod/test)
- Archive unused integrations
Performance
- Test connections before deploying
- Monitor response times
- Use internal URLs when possible
- Limit concurrent requests
- Cache where appropriate
Maintenance
- Review integrations quarterly
- Update URLs when services move
- Remove unused integrations
- Test after service updates
- Keep documentation current
