16 KiB
Jellyseerr - Media Request Management
Table of Contents
- Overview
- What is Jellyseerr?
- Why Use Jellyseerr?
- How It Works
- Configuration in AI-Homelab
- Official Resources
- Educational Resources
- Docker Configuration
- Initial Setup
- Advanced Topics
- Troubleshooting
Overview
Category: Media Request Management
Docker Image: fallenbagel/jellyseerr
Default Stack: media-extended.yml
Web UI: https://jellyseerr.${DOMAIN} or http://SERVER_IP:5055
Authentication: Via Jellyfin (SSO)
Ports: 5055
What is Jellyseerr?
Jellyseerr is a fork of Overseerr specifically designed for Jellyfin. It provides a beautiful, user-friendly interface for users to request movies and TV shows. When a request is made, Jellyseerr automatically sends it to Sonarr or Radarr for download, then notifies users when their content is available. Think of it as the "frontend" for your media automation stack that non-technical users can easily navigate.
Key Features
- Jellyfin Integration: Native SSO authentication
- Beautiful UI: Modern, responsive interface
- User Requests: Non-admin users can request content
- Auto-Approval: Configurable approval workflows
- Request Management: View, approve, deny requests
- Availability Tracking: Know when content is available
- Notifications: Discord, Telegram, Email, Pushover
- Discovery: Browse trending, popular, upcoming content
- User Quotas: Limit requests per user
- 4K Support: Separate 4K requests
- Multi-Language: Support for multiple languages
Why Use Jellyseerr?
- User-Friendly: Non-technical users can request content easily
- Automated Workflow: Request → Sonarr/Radarr → Download → Notify
- Permission Control: Admins approve or auto-approve
- Discovery Interface: Users can browse and discover content
- Request Tracking: See status of all requests
- Notifications: Keep users informed
- Jellyfin Integration: Seamless SSO
- Quota Management: Prevent abuse
- Mobile Friendly: Responsive design
- Free & Open Source: Community-driven
How It Works
User Browses Jellyseerr
↓
Requests Movie/TV Show
↓
Jellyseerr Checks Availability
↓
Not Available → Send to Sonarr/Radarr
↓
Sonarr/Radarr → qBittorrent
↓
Download Completes
↓
Imported to Jellyfin Library
↓
Jellyseerr Notifies User
↓
User Watches Content
Configuration in AI-Homelab
Directory Structure
/opt/stacks/media-management/jellyseerr/config/ # Jellyseerr configuration
Environment Variables
# Log level
LOG_LEVEL=info
# Optional: Custom port
PORT=5055
Official Resources
- Website: https://docs.jellyseerr.dev
- Documentation: https://docs.jellyseerr.dev
- GitHub: https://github.com/Fallenbagel/jellyseerr
- Discord: https://discord.gg/ckbvBtDJgC
- Docker Hub: https://hub.docker.com/r/fallenbagel/jellyseerr
Educational Resources
Videos
Articles & Guides
Concepts to Learn
- SSO (Single Sign-On): Jellyfin authentication
- Request Workflow: Request → Approval → Download → Notify
- User Permissions: Admin vs Requester roles
- Quotas: Limiting requests per time period
- 4K Requests: Separate quality tiers
- Auto-Approval: Automatic vs manual approval
Docker Configuration
Complete Service Definition
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
restart: unless-stopped
networks:
- traefik-network
ports:
- "5055:5055"
environment:
- LOG_LEVEL=info
- TZ=America/New_York
volumes:
- /opt/stacks/media-management/jellyseerr/config:/app/config
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.${DOMAIN}`)"
- "traefik.http.routers.jellyseerr.entrypoints=websecure"
- "traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt"
- "traefik.http.services.jellyseerr.loadbalancer.server.port=5055"
Note: No Authelia middleware - Jellyseerr has built-in Jellyfin authentication.
Initial Setup
First Access
-
Start Container:
docker compose up -d jellyseerr -
Access Web UI:
- Local:
http://SERVER_IP:5055 - Domain:
https://jellyseerr.yourdomain.com
- Local:
-
Setup Wizard:
- Configure Jellyfin server
- Add Sonarr and Radarr
- Configure default settings
- Sign in with Jellyfin account
Jellyfin Server Configuration
Step 1: Connect Jellyfin
- Server Name: Your Jellyfin server name
- Hostname/IP:
jellyfin(Docker container name) orhttp://jellyfin:8096 - Port:
8096 - SSL: ✗ (internal Docker network)
- External URL:
https://jellyfin.yourdomain.com(for user links) - Test Connection
- Sign in with Jellyfin Admin Account
What happens:
- Jellyseerr connects to Jellyfin
- Imports users from Jellyfin
- Sets up SSO authentication
Sonarr Configuration
Settings → Services → Sonarr → Add Sonarr Server:
- Default Server: ✓ (primary Sonarr)
- 4K Server: ✗ (unless you have separate 4K Sonarr)
- Server Name: Sonarr
- Hostname/IP:
sonarr - Port:
8989 - API Key: From Sonarr → Settings → General → API Key
- Base URL: Leave blank
- Quality Profile: HD-1080p (or your default)
- Root Folder:
/tv - Language Profile: English (or your preference)
- Tags: (optional)
- External URL:
https://sonarr.yourdomain.com - Enable Scan: ✓
- Enable Automatic Search: ✓
- Test → Save
For 4K Setup (Optional):
- Add second Sonarr instance
- Check "4K Server"
- Point to Sonarr-4K instance
Radarr Configuration
Settings → Services → Radarr → Add Radarr Server:
- Default Server: ✓
- 4K Server: ✗
- Server Name: Radarr
- Hostname/IP:
radarr - Port:
7878 - API Key: From Radarr → Settings → General → API Key
- Base URL: Leave blank
- Quality Profile: HD-1080p
- Root Folder:
/movies - Minimum Availability: Released
- Tags: (optional)
- External URL:
https://radarr.yourdomain.com - Enable Scan: ✓
- Enable Automatic Search: ✓
- Test → Save
User Management
Settings → Users:
Import Users:
- Users automatically imported from Jellyfin
- Each user can sign in with Jellyfin credentials
User Permissions:
- Admin: Full control
- User: Can request, see own requests
- Manage Requests: Can approve/deny requests
Configure Default Permissions:
- Settings → Users → Default Permissions
- Request Movies: ✓
- Request TV: ✓
- Request 4K: ✗ (optional)
- Auto-approve: ✗ (review before downloading)
- Request Limit: 10 per week (adjust as needed)
General Settings
Settings → General:
Application Title: Your server name (appears in UI)
Application URL: https://jellyseerr.yourdomain.com
CSRF Protection: ✓ Enable
Hide Available Media: ✗ (show what's already available)
Allow Partial Series Requests: ✓ (users can request specific seasons)
Default Permissions: Configure for new users
Advanced Topics
Auto-Approval
Settings → Users → Select User → Permissions:
- Auto-approve Movies: ✓
- Auto-approve TV: ✓
- Auto-approve 4K: ✗ (usually manual)
Use Cases:
- Trusted users
- Family members
- Reduce manual work
Caution:
- Can lead to storage issues
- Consider quotas
Request Quotas
Settings → Users → Select User → Permissions:
Movie Quotas:
- Movie Request Limit: 10
- Time Period: Week
TV Quotas:
- TV Request Limit: 5
- Time Period: Week
4K Quotas:
- Separate limits for 4K
- Usually more restrictive
Reset:
- Quotas reset based on time period
- Can be adjusted per user
Notifications
Settings → Notifications:
Available Notification Types:
- Email (SMTP)
- Discord
- Telegram
- Pushover
- Slack
- Webhook
Configuration Example: Discord
- Settings → Notifications → Discord → Add
- Webhook URL: From Discord server
- Bot Username: Jellyseerr (optional)
- Bot Avatar: Custom avatar URL (optional)
- Notification Types:
- Media Requested: ✓
- Media Approved: ✓
- Media Available: ✓
- Media Failed: ✓
- Request Pending: ✓ (for admins)
- Test → Save
Telegram Setup:
- Create bot with @BotFather
- Get bot token
- Get chat ID
- Add to Jellyseerr
- Configure notification types
4K Management
Separate 4K Workflow:
Requirements:
- Separate Sonarr-4K and Radarr-4K instances
- Separate 4K media libraries
- More storage space
Setup:
- Add 4K Sonarr/Radarr servers
- Check "4K Server" checkbox
- Configure different quality profiles (2160p)
- Separate root folders (/movies-4k, /tv-4k)
User Permissions:
- Restrict 4K requests to admins/trusted users
- Higher quotas for regular content
Library Sync
Settings → Services → Sync Libraries:
Manual Sync:
- Force refresh of available content
- Updates Jellyseerr's cache
Automatic Sync:
- Runs periodically
- Keeps availability up-to-date
Scan Settings:
- Enable scan on Sonarr/Radarr servers
- Real-time availability updates
Discovery Features
Home Page:
- Trending movies/TV
- Popular content
- Upcoming releases
- Recently Added
Search:
- Search movies, TV, people
- Filter by genre, year, rating
- Browse by network (Netflix, HBO, etc.)
Recommendations:
- Similar content suggestions
- Based on existing library
Public Sign-Up
Settings → General → Enable New Jellyfin Sign-In:
- ✓ Allow new users to sign in
- ✗ Disable if you want manual approval
With Jellyfin:
- Users must have Jellyfin account first
- Then can access Jellyseerr
Without Public Sign-Up:
- Admin must import users manually
- More control over access
Troubleshooting
Jellyseerr Can't Connect to Jellyfin
# Check containers running
docker ps | grep -E "jellyseerr|jellyfin"
# Check network connectivity
docker exec jellyseerr curl http://jellyfin:8096
# Check Jellyfin API
curl http://SERVER_IP:8096/System/Info
# Verify hostname
# Should be: http://jellyfin:8096 (not localhost)
# Check logs
docker logs jellyseerr | grep -i jellyfin
docker logs jellyfin | grep -i error
Jellyseerr Can't Connect to Sonarr/Radarr
# Test connectivity
docker exec jellyseerr curl http://sonarr:8989
docker exec jellyseerr curl http://radarr:7878
# Verify API keys
# Copy from Sonarr/Radarr → Settings → General → API Key
# Paste exactly into Jellyseerr
# Check network
docker network inspect traefik-network
# Jellyseerr, Sonarr, Radarr should all be on same network
# Check logs
docker logs jellyseerr | grep -i "sonarr\|radarr"
Requests Not Sending to Sonarr/Radarr
# Check request status
# Jellyseerr → Requests tab
# Should show "Requested" → "Approved" → "Processing"
# Check auto-approval settings
# Settings → Users → Permissions
# Auto-approve enabled?
# Manually approve
# Requests → Pending → Approve
# Check Sonarr/Radarr logs
docker logs sonarr | grep -i jellyseerr
docker logs radarr | grep -i jellyseerr
# Verify quality profiles exist
# Sonarr/Radarr → Settings → Profiles
# Profile must match what's configured in Jellyseerr
Users Can't Sign In
# Verify Jellyfin connection
# Settings → Jellyfin → Test Connection
# Check user exists in Jellyfin
# Jellyfin → Dashboard → Users
# Import users
# Settings → Users → Import Jellyfin Users
# Check permissions
# Settings → Users → Select user → Permissions
# Check logs
docker logs jellyseerr | grep -i auth
Notifications Not Working
# Test notification
# Settings → Notifications → Select notification → Test
# Check notification settings
# Verify webhook URLs, API keys, etc.
# Check Discord webhook
curl -X POST "https://discord.com/api/webhooks/YOUR/WEBHOOK" \
-H "Content-Type: application/json" \
-d '{"content":"Test"}'
# Check logs
docker logs jellyseerr | grep -i notification
Performance Optimization
Database Optimization
# Jellyseerr uses SQLite
# Stop container
docker stop jellyseerr
# Vacuum database
sqlite3 /opt/stacks/media-management/jellyseerr/config/db/db.sqlite3 "VACUUM;"
# Restart
docker start jellyseerr
Cache Management
Settings → General:
- Cache timeout: 6 hours (default)
- Adjust based on library size
Scan Frequency
- More frequent scans = higher load
- Balance between real-time updates and performance
- Consider library size
Security Best Practices
- Use HTTPS: Always access via Traefik with SSL
- Strong Jellyfin Passwords: Users authenticate via Jellyfin
- Restrict New Sign-Ins: Disable if not needed
- User Quotas: Prevent abuse
- Approve Requests: Don't auto-approve all users
- Regular Updates: Keep Jellyseerr current
- API Key Security: Keep Sonarr/Radarr keys secure
- Network Isolation: Internal Docker network only
Backup Strategy
Critical Files:
/opt/stacks/media-management/jellyseerr/config/db/db.sqlite3 # Database
/opt/stacks/media-management/jellyseerr/config/settings.json # Settings
Backup Script:
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/opt/backups/jellyseerr
docker stop jellyseerr
tar -czf $BACKUP_DIR/jellyseerr-$DATE.tar.gz \
/opt/stacks/media-management/jellyseerr/config/
docker start jellyseerr
find $BACKUP_DIR -name "jellyseerr-*.tar.gz" -mtime +7 -delete
Integration with Other Services
Jellyseerr + Jellyfin
- SSO authentication
- User import
- Library sync
- Availability checking
Jellyseerr + Sonarr + Radarr
- Automatic request forwarding
- Quality profile mapping
- Status tracking
- Download monitoring
Jellyseerr + Discord/Telegram
- Request notifications
- Approval notifications
- Availability notifications
- Admin alerts
Summary
Jellyseerr is the user-friendly request management system offering:
- Beautiful, modern interface
- Jellyfin SSO integration
- Automatic Sonarr/Radarr integration
- Request approval workflow
- User quotas and permissions
- Notification system
- Discovery and browsing
- Free and open-source
Perfect for:
- Shared Jellyfin servers
- Family media servers
- Non-technical users
- Request management
- Automated workflows
Key Points:
- Jellyfin authentication (SSO)
- Connect to Sonarr and Radarr
- Configure user permissions
- Set up notifications
- Enable/disable auto-approval
- Use quotas to prevent abuse
- Separate 4K management optional
Remember:
- Users need Jellyfin accounts
- API keys from Sonarr/Radarr required
- Configure quotas appropriately
- Test notifications
- Regular backups recommended
- Auto-approval optional
- 4K requires separate instances
Jellyseerr makes media requests simple and automated for everyone!