Wiki v1.0
Added a wiki
This commit is contained in:
@@ -0,0 +1,393 @@
|
||||
====== Calibre-Web ======
|
||||
|
||||
Calibre-Web is a web application that provides a clean web interface for browsing, reading, and downloading eBooks stored in a Calibre database. It allows you to access your eBook library from any device with a web browser.
|
||||
|
||||
===== Overview =====
|
||||
|
||||
**Purpose:** Web interface for Calibre eBook library
|
||||
**URL:** https://calibre.yourdomain.duckdns.org
|
||||
**Authentication:** Built-in user management
|
||||
**Deployment:** Media stack
|
||||
**Database:** SQLite (Calibre database)
|
||||
|
||||
===== Key Features =====
|
||||
|
||||
**Library Management:**
|
||||
* **Browse Books**: Browse your eBook collection
|
||||
* **Search & Filter**: Advanced search and filtering
|
||||
* **Categories**: Organize by author, genre, series
|
||||
* **Metadata Display**: Rich book information display
|
||||
|
||||
**Reading Features:**
|
||||
* **Online Reading**: Read books directly in browser
|
||||
* **Download Options**: Download in multiple formats
|
||||
* **Reading Progress**: Track reading progress
|
||||
* **Bookmarks**: Save reading positions
|
||||
|
||||
**User Management:**
|
||||
* **Multiple Users**: Separate accounts for users
|
||||
* **Access Control**: Configure user permissions
|
||||
* **Reading Statistics**: Track reading habits
|
||||
* **Personal Shelves**: Create custom book collections
|
||||
|
||||
===== Configuration =====
|
||||
|
||||
**Container Configuration:**
|
||||
```yaml
|
||||
services:
|
||||
calibre-web:
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
container_name: calibre-web
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- DOCKER_MODS=linuxserver/mods:universal-calibre # Calibre integration
|
||||
volumes:
|
||||
- ./calibre-web/config:/config
|
||||
- /mnt/media/books:/books # Calibre library location
|
||||
networks:
|
||||
- traefik-network
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 128M
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.calibre-web.rule=Host(`calibre.${DOMAIN}`)"
|
||||
- "traefik.http.routers.calibre-web.entrypoints=websecure"
|
||||
- "traefik.http.routers.calibre-web.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.calibre-web.middlewares=authelia@docker"
|
||||
- "traefik.http.services.calibre-web.loadbalancer.server.port=8083"
|
||||
- "x-dockge.url=https://calibre.${DOMAIN}"
|
||||
```
|
||||
|
||||
**Environment Variables:**
|
||||
```bash
|
||||
# User permissions
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Timezone
|
||||
TZ=America/New_York
|
||||
|
||||
# Calibre integration (optional)
|
||||
DOCKER_MODS=linuxserver/mods:universal-calibre
|
||||
```
|
||||
|
||||
===== Calibre Database Setup =====
|
||||
|
||||
**Calibre Library Structure:**
|
||||
```
|
||||
/mnt/media/books/
|
||||
├── metadata.db # Calibre database
|
||||
├── metadata_db_prefs_backup.json
|
||||
├── books/ # Book files
|
||||
│ ├── Author Name/
|
||||
│ │ ├── Book Title (Year)/
|
||||
│ │ │ ├── book.epub
|
||||
│ │ │ ├── cover.jpg
|
||||
│ │ │ └── metadata.opf
|
||||
│ └── Another Author/
|
||||
└── covers/ # Cover images
|
||||
```
|
||||
|
||||
**Database Connection:**
|
||||
* **Path**: `/books` (mounted Calibre library)
|
||||
* **Auto-Detection**: Automatically finds metadata.db
|
||||
* **Metadata Access**: Full access to Calibre metadata
|
||||
* **Cover Images**: Access to book covers
|
||||
|
||||
**Initial Setup:**
|
||||
1. **Place Calibre Library**: Mount existing Calibre library
|
||||
2. **Database Detection**: Calibre-Web finds metadata.db
|
||||
3. **Admin Account**: Create administrator account
|
||||
4. **Library Scan**: Scan and index books
|
||||
|
||||
===== User Management =====
|
||||
|
||||
**Administrator Setup:**
|
||||
1. **First Access**: Visit Calibre-Web URL
|
||||
2. **Create Admin**: Set up administrator account
|
||||
3. **Configure Library**: Point to Calibre database
|
||||
4. **User Settings**: Configure application settings
|
||||
|
||||
**User Accounts:**
|
||||
* **User Creation**: Add user accounts
|
||||
* **Permission Levels**: Admin, User, Guest
|
||||
* **Library Access**: Control book access per user
|
||||
* **Download Rights**: Configure download permissions
|
||||
|
||||
**Authentication:**
|
||||
* **Username/Password**: Standard authentication
|
||||
* **LDAP Integration**: External user directory (optional)
|
||||
* **Guest Access**: Allow anonymous browsing
|
||||
* **Session Management**: Configurable session timeouts
|
||||
|
||||
===== Library Features =====
|
||||
|
||||
**Browse & Search:**
|
||||
* **Book Grid/List**: Multiple viewing modes
|
||||
* **Advanced Search**: Search by title, author, genre
|
||||
* **Filters**: Filter by language, format, rating
|
||||
* **Sorting**: Sort by various criteria
|
||||
|
||||
**Book Details:**
|
||||
* **Metadata Display**: Title, author, description
|
||||
* **Cover Images**: High-quality book covers
|
||||
* **File Information**: Format, size, pages
|
||||
* **Ratings & Reviews**: User ratings and reviews
|
||||
|
||||
**Reading Interface:**
|
||||
* **EPUB Reader**: Built-in EPUB reader
|
||||
* **PDF Viewer**: PDF document viewer
|
||||
* **Progress Tracking**: Reading progress saving
|
||||
* **Bookmarking**: Save reading positions
|
||||
|
||||
===== Download & Formats =====
|
||||
|
||||
**Supported Formats:**
|
||||
* **EPUB**: Most common eBook format
|
||||
* **PDF**: Portable document format
|
||||
* **MOBI**: Kindle format
|
||||
* **AZW3**: Amazon format
|
||||
* **TXT**: Plain text
|
||||
* **RTF**: Rich text format
|
||||
|
||||
**Download Options:**
|
||||
* **Direct Download**: Download original format
|
||||
* **Format Conversion**: Convert to other formats
|
||||
* **Bulk Download**: Download multiple books
|
||||
* **ZIP Archives**: Download as compressed archives
|
||||
|
||||
**Conversion Features:**
|
||||
* **Calibre Integration**: Use Calibre for conversion
|
||||
* **Format Support**: Convert between supported formats
|
||||
* **Quality Settings**: Adjust conversion quality
|
||||
* **Metadata Preservation**: Maintain book metadata
|
||||
|
||||
===== Customization =====
|
||||
|
||||
**Interface Themes:**
|
||||
* **Light Theme**: Clean, bright interface
|
||||
* **Dark Theme**: Easy on the eyes
|
||||
* **Custom CSS**: Advanced customization
|
||||
* **Responsive Design**: Mobile-friendly interface
|
||||
|
||||
**Language Support:**
|
||||
* **Multiple Languages**: 20+ supported languages
|
||||
* **Interface Translation**: Full UI translation
|
||||
* **Metadata Languages**: Support for various languages
|
||||
* **RTL Support**: Right-to-left language support
|
||||
|
||||
**Display Options:**
|
||||
* **Books per Page**: Configure pagination
|
||||
* **Cover Sizes**: Adjust cover image sizes
|
||||
* **Metadata Fields**: Customize displayed fields
|
||||
* **Grid/List Views**: Choose viewing preferences
|
||||
|
||||
===== Advanced Features =====
|
||||
|
||||
**Shelves & Collections:**
|
||||
* **Custom Shelves**: Create personal book collections
|
||||
* **Public Shelves**: Share collections with others
|
||||
* **Smart Shelves**: Dynamic collections based on criteria
|
||||
* **Shelf Management**: Organize and categorize shelves
|
||||
|
||||
**Reading Statistics:**
|
||||
* **Reading Progress**: Track reading progress
|
||||
* **Reading Time**: Monitor reading duration
|
||||
* **Books Read**: Track completed books
|
||||
* **Reading Goals**: Set reading targets
|
||||
|
||||
**Social Features:**
|
||||
* **User Reviews**: Write and read book reviews
|
||||
* **Ratings**: Rate books and see averages
|
||||
* **Recommendations**: Book recommendation system
|
||||
* **User Activity**: See what others are reading
|
||||
|
||||
===== Integration Features =====
|
||||
|
||||
**Calibre Integration:**
|
||||
* **Database Sync**: Sync with Calibre desktop
|
||||
* **Metadata Updates**: Update from Calibre
|
||||
* **Cover Downloads**: Download covers from Calibre
|
||||
* **Format Conversion**: Use Calibre conversion tools
|
||||
|
||||
**External Services:**
|
||||
* **Goodreads**: Import ratings and reviews
|
||||
* **Google Books**: Enhanced metadata
|
||||
* **Open Library**: Additional book information
|
||||
* **ISBN Lookup**: Automatic ISBN resolution
|
||||
|
||||
**API Access:**
|
||||
* **REST API**: Programmatic access
|
||||
* **Webhook Support**: Event notifications
|
||||
* **Third-party Integration**: Connect with other services
|
||||
* **Automation**: Script-based automation
|
||||
|
||||
===== Security Considerations =====
|
||||
|
||||
**Access Control:**
|
||||
* **User Authentication**: Secure user authentication
|
||||
* **Permission Levels**: Granular access control
|
||||
* **IP Restrictions**: Limit access by IP address
|
||||
* **Session Security**: Secure session management
|
||||
|
||||
**Data Protection:**
|
||||
* **File Permissions**: Proper file system permissions
|
||||
* **Database Security**: SQLite database protection
|
||||
* **Backup Security**: Secure backup procedures
|
||||
* **Encryption**: Data encryption options
|
||||
|
||||
===== Performance Optimization =====
|
||||
|
||||
**Resource Management:**
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.2'
|
||||
memory: 128M
|
||||
```
|
||||
|
||||
**Database Optimization:**
|
||||
* **Index Maintenance**: Regular database maintenance
|
||||
* **Query Optimization**: Efficient database queries
|
||||
* **Cache Management**: Metadata and cover caching
|
||||
* **Search Optimization**: Fast search capabilities
|
||||
|
||||
===== Troubleshooting =====
|
||||
|
||||
**Database Connection Issues:**
|
||||
```bash
|
||||
# Check database file permissions
|
||||
ls -la /mnt/media/books/metadata.db
|
||||
|
||||
# Verify database integrity
|
||||
docker exec calibre-web sqlite3 /books/metadata.db ".tables"
|
||||
|
||||
# Check Calibre-Web logs
|
||||
docker logs calibre-web
|
||||
```
|
||||
|
||||
**Book Display Problems:**
|
||||
* **Cover Images**: Check cover file permissions
|
||||
* **Metadata Issues**: Verify database integrity
|
||||
* **File Permissions**: Check book file access
|
||||
* **Format Support**: Verify supported formats
|
||||
|
||||
**User Authentication Issues:**
|
||||
* **Login Problems**: Check user credentials
|
||||
* **Permission Errors**: Verify user permissions
|
||||
* **Session Issues**: Clear browser cookies
|
||||
* **Password Reset**: Administrator password reset
|
||||
|
||||
**Reading Interface Issues:**
|
||||
* **EPUB Display**: Check EPUB file validity
|
||||
* **PDF Viewer**: Verify PDF compatibility
|
||||
* **Progress Saving**: Check database write permissions
|
||||
* **Bookmark Issues**: Clear browser cache
|
||||
|
||||
**Troubleshooting Steps:**
|
||||
1. **Check logs**: `docker logs calibre-web`
|
||||
2. **Verify database**: Test database connectivity
|
||||
3. **Check permissions**: Validate file permissions
|
||||
4. **Test access**: Verify web interface access
|
||||
5. **Restart service**: `docker restart calibre-web`
|
||||
|
||||
===== Backup & Recovery =====
|
||||
|
||||
**Configuration Backup:**
|
||||
```bash
|
||||
# Backup Calibre-Web configuration
|
||||
docker run --rm \
|
||||
-v calibre-web-config:/config \
|
||||
-v $(pwd)/backup:/backup \
|
||||
busybox tar czf /backup/calibre-web-config.tar.gz /config
|
||||
```
|
||||
|
||||
**Database Backup:**
|
||||
```bash
|
||||
# Backup Calibre database
|
||||
docker run --rm \
|
||||
-v /mnt/media/books:/books \
|
||||
-v $(pwd)/backup:/backup \
|
||||
busybox tar czf /backup/calibre-library.tar.gz /books
|
||||
```
|
||||
|
||||
**Recovery Process:**
|
||||
1. **Restore Configuration**: Restore config directory
|
||||
2. **Restore Database**: Restore Calibre library
|
||||
3. **Verify Integrity**: Check database and files
|
||||
4. **Update Permissions**: Fix file permissions
|
||||
5. **Test Access**: Verify web interface works
|
||||
|
||||
===== Best Practices =====
|
||||
|
||||
**Library Management:**
|
||||
* **Consistent Naming**: Follow Calibre naming conventions
|
||||
* **Metadata Quality**: Maintain accurate metadata
|
||||
* **File Organization**: Proper folder structure
|
||||
* **Regular Backups**: Frequent library backups
|
||||
|
||||
**User Management:**
|
||||
* **Permission Planning**: Plan user access levels
|
||||
* **Regular Audits**: Review user permissions
|
||||
* **Password Policies**: Enforce strong passwords
|
||||
* **Activity Monitoring**: Monitor user activity
|
||||
|
||||
**Performance:**
|
||||
* **Resource Allocation**: Appropriate CPU/memory limits
|
||||
* **Database Maintenance**: Regular database optimization
|
||||
* **Cache Management**: Optimize caching settings
|
||||
* **Network Optimization**: Fast network access
|
||||
|
||||
**Maintenance:**
|
||||
* **Regular Updates**: Keep Calibre-Web updated
|
||||
* **Database Maintenance**: Regular database cleanup
|
||||
* **File System Checks**: Verify file integrity
|
||||
* **Security Updates**: Apply security patches
|
||||
|
||||
===== Advanced Configuration =====
|
||||
|
||||
**Reverse Proxy Configuration:**
|
||||
```nginx
|
||||
# Nginx configuration for additional features
|
||||
location /calibre {
|
||||
proxy_pass http://calibre-web:8083;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
```
|
||||
|
||||
**LDAP Integration:**
|
||||
```python
|
||||
# LDAP configuration in config files
|
||||
LDAP_URL = "ldap://your-ldap-server"
|
||||
LDAP_USER_DN = "ou=users,dc=example,dc=com"
|
||||
LDAP_GROUP_DN = "ou=groups,dc=example,dc=com"
|
||||
```
|
||||
|
||||
**API Usage Examples:**
|
||||
```bash
|
||||
# Get library information
|
||||
curl -u username:password https://calibre.yourdomain.duckdns.org/api/books
|
||||
|
||||
# Search books
|
||||
curl -u username:password "https://calibre.yourdomain.duckdns.org/api/books?search=author:smith"
|
||||
```
|
||||
|
||||
Calibre-Web provides a beautiful, user-friendly web interface for your Calibre eBook library, making it easy to browse, read, and manage your digital book collection from any device.
|
||||
|
||||
**Next:** Learn about [[services:media:qbittorrent|qBittorrent]] or explore [[architecture:backup|Backup Architecture]].
|
||||
424
config-templates/dokuwiki/data/pages/services/media/jellyfin.txt
Normal file
424
config-templates/dokuwiki/data/pages/services/media/jellyfin.txt
Normal file
@@ -0,0 +1,424 @@
|
||||
====== Jellyfin ======
|
||||
|
||||
Jellyfin is a free, open-source media server that allows you to organize, manage, and stream your personal media collection. It provides a modern, user-friendly interface for accessing movies, TV shows, music, and photos from any device.
|
||||
|
||||
===== Overview =====
|
||||
|
||||
**Purpose:** Media server and streaming platform
|
||||
**URL:** https://jellyfin.yourdomain.duckdns.org
|
||||
**Authentication:** Built-in user management (no SSO)
|
||||
**Deployment:** Media stack
|
||||
**Features:** Multi-device streaming, transcoding, metadata management
|
||||
|
||||
===== Key Features =====
|
||||
|
||||
**Media Management:**
|
||||
* **Library Organization**: Automatic media organization
|
||||
* **Metadata Fetching**: Rich metadata from online sources
|
||||
* **Poster Art**: High-quality artwork and posters
|
||||
* **Collections**: Custom media collections and playlists
|
||||
|
||||
**Streaming Capabilities:**
|
||||
* **Multi-Device Support**: Stream to any device
|
||||
* **Adaptive Streaming**: Automatic quality adjustment
|
||||
* **Transcoding**: Real-time video transcoding
|
||||
* **Direct Play**: Direct streaming when supported
|
||||
|
||||
**User Management:**
|
||||
* **Multiple Users**: Separate accounts for family members
|
||||
* **Parental Controls**: Content restrictions and ratings
|
||||
* **Viewing History**: Track watched content
|
||||
* **Personal Libraries**: User-specific content access
|
||||
|
||||
===== Configuration =====
|
||||
|
||||
**Container Configuration:**
|
||||
```yaml
|
||||
services:
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- JELLYFIN_PublishedServerUrl=https://jellyfin.${DOMAIN}
|
||||
volumes:
|
||||
- ./jellyfin/config:/config
|
||||
- /mnt/media/movies:/data/movies
|
||||
- /mnt/media/tv:/data/tv
|
||||
- /mnt/media/music:/data/music
|
||||
- /mnt/transcode:/config/transcodes
|
||||
devices:
|
||||
- /dev/dri:/dev/dri # Hardware acceleration (optional)
|
||||
networks:
|
||||
- traefik-network
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 512M
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)"
|
||||
- "traefik.http.routers.jellyfin.entrypoints=websecure"
|
||||
- "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt"
|
||||
# No Authelia middleware - direct access for app compatibility
|
||||
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
|
||||
- "x-dockge.url=https://jellyfin.${DOMAIN}"
|
||||
```
|
||||
|
||||
**Environment Variables:**
|
||||
```bash
|
||||
# User permissions
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Timezone
|
||||
TZ=America/New_York
|
||||
|
||||
# Public URL (for external access)
|
||||
JELLYFIN_PublishedServerUrl=https://jellyfin.yourdomain.duckdns.org
|
||||
```
|
||||
|
||||
===== Media Library Setup =====
|
||||
|
||||
**Directory Structure:**
|
||||
```
|
||||
/mnt/media/
|
||||
├── movies/ # Movie files
|
||||
│ ├── Movie1 (2023)/
|
||||
│ └── Movie2 (2023)/
|
||||
├── tv/ # TV show files
|
||||
│ ├── Show1/
|
||||
│ │ ├── Season 01/
|
||||
│ │ └── Season 02/
|
||||
│ └── Show2/
|
||||
├── music/ # Music files
|
||||
│ ├── Artist1/
|
||||
│ └── Artist2/
|
||||
└── photos/ # Photo collections
|
||||
```
|
||||
|
||||
**Library Configuration:**
|
||||
* **Movie Library**: Point to `/data/movies`
|
||||
* **TV Library**: Point to `/data/tv`
|
||||
* **Music Library**: Point to `/data/music`
|
||||
* **Photo Library**: Point to `/data/photos`
|
||||
|
||||
**Naming Conventions:**
|
||||
```
|
||||
Movies: "Movie Name (Year)/Movie Name (Year).mkv"
|
||||
TV: "Show Name/Season 01/Show Name - S01E01.mkv"
|
||||
Music: "Artist/Album/01 - Song Title.mp3"
|
||||
```
|
||||
|
||||
===== Hardware Acceleration =====
|
||||
|
||||
**Intel Quick Sync:**
|
||||
```yaml
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
|
||||
environment:
|
||||
- JELLYFIN_FFmpeg__probesize=1G
|
||||
- JELLYFIN_FFmpeg__analyzeduration=200M
|
||||
```
|
||||
|
||||
**NVIDIA GPU:**
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
|
||||
environment:
|
||||
- NVIDIA_VISIBLE_DEVICES=all
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
```
|
||||
|
||||
**VAAPI (Software):**
|
||||
```yaml
|
||||
environment:
|
||||
- JELLYFIN_FFmpeg__hwaccel=vaapi
|
||||
- JELLYFIN_FFmpeg__hwaccel_device=/dev/dri/renderD128
|
||||
- JELLYFIN_FFmpeg__hwaccel_output_format=vaapi
|
||||
```
|
||||
|
||||
===== User Management =====
|
||||
|
||||
**Administrator Setup:**
|
||||
1. **First Access**: Visit Jellyfin URL
|
||||
2. **Create Admin Account**: Set up administrator account
|
||||
3. **Configure Libraries**: Add media libraries
|
||||
4. **Set Preferences**: Configure server settings
|
||||
|
||||
**User Accounts:**
|
||||
* **User Creation**: Add family member accounts
|
||||
* **Access Levels**: Configure library access per user
|
||||
* **Parental Controls**: Set content ratings and restrictions
|
||||
* **Device Limits**: Control simultaneous streams
|
||||
|
||||
**Authentication:**
|
||||
* **Local Users**: Username/password authentication
|
||||
* **Easy PIN**: Simple PIN for quick access
|
||||
* **Auto Login**: Remember login on trusted devices
|
||||
|
||||
===== Transcoding Configuration =====
|
||||
|
||||
**Transcoding Settings:**
|
||||
```yaml
|
||||
# Transcode location
|
||||
volumes:
|
||||
- /mnt/transcode:/config/transcodes
|
||||
```
|
||||
|
||||
**Quality Settings:**
|
||||
* **Video Quality**: Adjust bitrate and resolution
|
||||
* **Audio Quality**: Configure audio encoding
|
||||
* **Container Format**: Choose output format
|
||||
* **Hardware Acceleration**: Enable GPU transcoding
|
||||
|
||||
**Performance Tuning:**
|
||||
* **Concurrent Streams**: Limit simultaneous transcodes
|
||||
* **Buffer Size**: Adjust transcoding buffer
|
||||
* **Thread Count**: Configure encoding threads
|
||||
* **Quality Presets**: Balance quality vs speed
|
||||
|
||||
===== Metadata Management =====
|
||||
|
||||
**Metadata Sources:**
|
||||
* **The Movie Database (TMDb)**: Movie and TV metadata
|
||||
* **TheTVDB**: TV show information
|
||||
* **MusicBrainz**: Music metadata
|
||||
* **FanArt.tv**: Artwork and posters
|
||||
|
||||
**Metadata Refresh:**
|
||||
* **Automatic Updates**: Regular metadata updates
|
||||
* **Manual Refresh**: Force metadata refresh
|
||||
* **Image Downloads**: Download posters and artwork
|
||||
* **Language Settings**: Configure metadata language
|
||||
|
||||
**Custom Metadata:**
|
||||
* **Override Information**: Manually edit metadata
|
||||
* **Custom Images**: Upload custom artwork
|
||||
* **Collections**: Create custom collections
|
||||
* **Tags**: Add custom tags and genres
|
||||
|
||||
===== Client Applications =====
|
||||
|
||||
**Official Apps:**
|
||||
* **Android/iOS**: Mobile apps for streaming
|
||||
* **Roku**: TV streaming device support
|
||||
* **Fire TV**: Amazon Fire TV support
|
||||
* **Android TV**: Android TV support
|
||||
|
||||
**Third-Party Clients:**
|
||||
* **Kodi**: Media center integration
|
||||
* **Plex**: Alternative media server
|
||||
* **Emby**: Similar media server
|
||||
* **Infuse**: iOS/macOS media player
|
||||
|
||||
**Web Client:**
|
||||
* **Modern Interface**: Responsive web player
|
||||
* **Keyboard Shortcuts**: Full keyboard navigation
|
||||
* **Cast Support**: Chromecast and DLNA
|
||||
* **Offline Sync**: Download for offline viewing
|
||||
|
||||
===== Plugins & Extensions =====
|
||||
|
||||
**Official Plugins:**
|
||||
* **Open Subtitles**: Subtitle downloading
|
||||
* **MusicBrainz**: Enhanced music metadata
|
||||
* **AniList**: Anime tracking integration
|
||||
* **Trakt**: Watch history synchronization
|
||||
|
||||
**Community Plugins:**
|
||||
* **Kodi Sync**: Sync with Kodi library
|
||||
* **FanArt**: Additional artwork sources
|
||||
* **Theme Videos**: Movie theme videos
|
||||
* **Trailer**: Trailer playback
|
||||
|
||||
**Plugin Installation:**
|
||||
1. **Dashboard > Plugins**: Access plugin catalog
|
||||
2. **Browse Repository**: Find desired plugins
|
||||
3. **Install**: Click install button
|
||||
4. **Configure**: Set plugin preferences
|
||||
|
||||
===== Backup & Recovery =====
|
||||
|
||||
**Configuration Backup:**
|
||||
```bash
|
||||
# Backup Jellyfin configuration
|
||||
docker run --rm \
|
||||
-v jellyfin-config:/config \
|
||||
-v $(pwd)/backup:/backup \
|
||||
busybox tar czf /backup/jellyfin-config.tar.gz /config
|
||||
```
|
||||
|
||||
**Database Backup:**
|
||||
```bash
|
||||
# Backup Jellyfin database
|
||||
docker exec jellyfin sqlite3 /config/data/library.db .dump > jellyfin-backup.sql
|
||||
```
|
||||
|
||||
**Media Backup:**
|
||||
* **File System**: Backup media files separately
|
||||
* **Metadata**: Configuration includes metadata
|
||||
* **User Data**: User preferences and watch history
|
||||
* **Plugins**: Plugin configurations
|
||||
|
||||
===== Performance Optimization =====
|
||||
|
||||
**Resource Management:**
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 2G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 512M
|
||||
```
|
||||
|
||||
**Optimization Tips:**
|
||||
* **Library Scanning**: Schedule scans during off-hours
|
||||
* **Transcoding Limits**: Limit concurrent transcodes
|
||||
* **Cache Management**: Configure appropriate cache sizes
|
||||
* **Network Optimization**: Use appropriate network settings
|
||||
|
||||
===== Troubleshooting =====
|
||||
|
||||
**Playback Issues:**
|
||||
```bash
|
||||
# Check transcoding logs
|
||||
docker logs jellyfin | grep -i ffmpeg
|
||||
|
||||
# Verify hardware acceleration
|
||||
docker exec jellyfin vainfo # VAAPI
|
||||
docker exec jellyfin nvidia-smi # NVIDIA
|
||||
```
|
||||
|
||||
**Library Scanning Problems:**
|
||||
* **Permission Issues**: Check file permissions
|
||||
* **Naming Problems**: Verify file naming conventions
|
||||
* **Metadata Errors**: Check metadata provider status
|
||||
* **Network Issues**: Verify internet connectivity
|
||||
|
||||
**Web Interface Issues:**
|
||||
* **Loading Problems**: Clear browser cache
|
||||
* **SSL Errors**: Check certificate validity
|
||||
* **CORS Issues**: Verify reverse proxy configuration
|
||||
* **JavaScript Errors**: Check browser compatibility
|
||||
|
||||
**Transcoding Issues:**
|
||||
* **Hardware Acceleration**: Verify GPU access
|
||||
* **Codec Support**: Check supported codecs
|
||||
* **Resource Limits**: Monitor CPU/memory usage
|
||||
* **Quality Settings**: Adjust transcoding parameters
|
||||
|
||||
**Troubleshooting Steps:**
|
||||
1. **Check logs**: `docker logs jellyfin`
|
||||
2. **Verify configuration**: Check environment variables
|
||||
3. **Test access**: Verify web interface access
|
||||
4. **Check permissions**: Validate file permissions
|
||||
5. **Restart service**: `docker restart jellyfin`
|
||||
|
||||
===== Security Considerations =====
|
||||
|
||||
**Access Control:**
|
||||
* **User Authentication**: Strong password requirements
|
||||
* **Network Security**: Restrict network access
|
||||
* **HTTPS Only**: Force secure connections
|
||||
* **Session Management**: Configure session timeouts
|
||||
|
||||
**Media Security:**
|
||||
* **File Permissions**: Proper file system permissions
|
||||
* **Network Shares**: Secure network share access
|
||||
* **Backup Security**: Encrypt backup data
|
||||
* **Access Logging**: Monitor access patterns
|
||||
|
||||
===== Integration with Media Stack =====
|
||||
|
||||
**Sonarr/Radarr Integration:**
|
||||
* **Automatic Downloads**: Integration with download clients
|
||||
* **Library Updates**: Automatic library refreshes
|
||||
* **Quality Profiles**: Match download quality to playback
|
||||
* **Naming Conventions**: Consistent file naming
|
||||
|
||||
**qBittorrent Integration:**
|
||||
* **Download Monitoring**: Track download progress
|
||||
* **Category Management**: Organize downloads by type
|
||||
* **Completion Notifications**: Notify when downloads complete
|
||||
* **File Management**: Automatic file organization
|
||||
|
||||
**Hardware Acceleration:**
|
||||
* **GPU Utilization**: Leverage available GPU resources
|
||||
* **Transcoding Efficiency**: Optimize transcoding performance
|
||||
* **Power Management**: Balance performance and power usage
|
||||
* **Resource Monitoring**: Monitor hardware utilization
|
||||
|
||||
===== Best Practices =====
|
||||
|
||||
**Library Management:**
|
||||
* **Consistent Naming**: Follow naming conventions
|
||||
* **Quality Standards**: Maintain consistent quality
|
||||
* **Metadata Accuracy**: Keep metadata up-to-date
|
||||
* **Regular Maintenance**: Periodic library cleanup
|
||||
|
||||
**Performance:**
|
||||
* **Resource Allocation**: Appropriate CPU/memory limits
|
||||
* **Transcoding Settings**: Balance quality and performance
|
||||
* **Caching Strategy**: Optimize cache usage
|
||||
* **Network Configuration**: Optimize network settings
|
||||
|
||||
**User Experience:**
|
||||
* **Interface Customization**: Customize user interfaces
|
||||
* **Device Profiles**: Optimize for different devices
|
||||
* **Subtitle Management**: Configure subtitle preferences
|
||||
* **Audio Settings**: Configure audio preferences
|
||||
|
||||
**Maintenance:**
|
||||
* **Regular Updates**: Keep Jellyfin updated
|
||||
* **Library Scans**: Regular library maintenance
|
||||
* **Backup Routine**: Regular configuration backups
|
||||
* **Performance Monitoring**: Monitor system performance
|
||||
|
||||
===== Advanced Configuration =====
|
||||
|
||||
**Custom CSS:**
|
||||
```css
|
||||
/* Custom theme modifications */
|
||||
.dashboardHeader {
|
||||
background-color: #your-color;
|
||||
}
|
||||
|
||||
.libraryCard {
|
||||
border-radius: 10px;
|
||||
}
|
||||
```
|
||||
|
||||
**API Access:**
|
||||
```bash
|
||||
# Access Jellyfin API
|
||||
curl -H "X-MediaBrowser-Token: your-api-key" \
|
||||
https://jellyfin.yourdomain.duckdns.org/Items
|
||||
```
|
||||
|
||||
**Webhook Integration:**
|
||||
* **Playback Events**: Trigger actions on media events
|
||||
* **User Actions**: Monitor user activities
|
||||
* **System Events**: Respond to system events
|
||||
* **External Integration**: Connect with other services
|
||||
|
||||
Jellyfin provides a powerful, free alternative to proprietary media servers, offering comprehensive media management and streaming capabilities with excellent client support across all platforms.
|
||||
|
||||
**Next:** Learn about [[services:media:calibre-web|Calibre-Web]] or explore [[architecture:storage|Storage Architecture]].
|
||||
@@ -0,0 +1,391 @@
|
||||
====== qBittorrent ======
|
||||
|
||||
qBittorrent is a free and open-source BitTorrent client that provides a web-based interface for downloading and managing torrent files. In the AI-Homelab, it's configured to route all traffic through Gluetun VPN for enhanced privacy and security.
|
||||
|
||||
===== Overview =====
|
||||
|
||||
**Purpose:** Torrent downloading with VPN protection
|
||||
**URL:** https://qbit.yourdomain.duckdns.org
|
||||
**Authentication:** Built-in web UI authentication
|
||||
**Deployment:** Media stack (VPN-routed through Gluetun)
|
||||
**VPN Integration:** Routes through Gluetun container
|
||||
|
||||
===== Key Features =====
|
||||
|
||||
**Torrent Management:**
|
||||
* **Web Interface**: Clean, responsive web UI
|
||||
* **Torrent Creation**: Create torrents from files/folders
|
||||
* **Magnet Links**: Support for magnet link downloads
|
||||
* **Batch Downloads**: Download multiple torrents
|
||||
* **RSS Feeds**: Automatic RSS feed monitoring
|
||||
|
||||
**Download Control:**
|
||||
* **Speed Limits**: Set download/upload speed limits
|
||||
* **Bandwidth Management**: Per-torrent bandwidth allocation
|
||||
* **Queue Management**: Priority-based download queuing
|
||||
* **Auto-Management**: Automatic torrent management
|
||||
|
||||
**Privacy & Security:**
|
||||
* **VPN Routing**: All traffic through Gluetun VPN
|
||||
* **IP Binding**: Bind to VPN interface only
|
||||
* **Encryption**: Protocol encryption support
|
||||
* **Proxy Support**: SOCKS5/HTTP proxy support
|
||||
|
||||
===== Configuration =====
|
||||
|
||||
**Container Configuration:**
|
||||
```yaml
|
||||
services:
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
network_mode: "service:gluetun" # Route through VPN
|
||||
depends_on:
|
||||
- gluetun
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=8080
|
||||
volumes:
|
||||
- ./qbittorrent/config:/config
|
||||
- /mnt/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2.0'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.5'
|
||||
memory: 256M
|
||||
```
|
||||
|
||||
**Gluetun Configuration (Update):**
|
||||
```yaml
|
||||
# In gluetun service, add port mapping
|
||||
gluetun:
|
||||
ports:
|
||||
- 8080:8080 # qBittorrent WebUI
|
||||
- 6881:6881 # Torrent ports (TCP)
|
||||
- 6881:6881/udp # Torrent ports (UDP)
|
||||
```
|
||||
|
||||
**Environment Variables:**
|
||||
```bash
|
||||
# User permissions
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Timezone
|
||||
TZ=America/New_York
|
||||
|
||||
# Web UI port
|
||||
WEBUI_PORT=8080
|
||||
```
|
||||
|
||||
===== VPN Integration =====
|
||||
|
||||
**Network Mode:**
|
||||
```yaml
|
||||
network_mode: "service:gluetun"
|
||||
```
|
||||
|
||||
**Benefits:**
|
||||
* **IP Protection**: All torrent traffic through VPN
|
||||
* **ISP Protection**: Hide torrenting from ISP
|
||||
* **Geographic Access**: Access geo-restricted content
|
||||
* **Privacy**: Enhanced download privacy
|
||||
|
||||
**Port Mapping:**
|
||||
* **WebUI**: 8080 (internal to Gluetun)
|
||||
* **Torrent TCP**: 6881
|
||||
* **Torrent UDP**: 6881
|
||||
|
||||
**VPN Verification:**
|
||||
```bash
|
||||
# Check if qBittorrent is using VPN IP
|
||||
docker exec gluetun curl -s ifconfig.me
|
||||
|
||||
# Verify qBittorrent is accessible through VPN
|
||||
curl -k https://qbit.yourdomain.duckdns.org
|
||||
```
|
||||
|
||||
===== Initial Setup =====
|
||||
|
||||
**First Access:**
|
||||
1. **Navigate**: Visit qBittorrent URL
|
||||
2. **Default Credentials**: admin/adminadmin
|
||||
3. **Change Password**: Immediately change default password
|
||||
4. **Configure Settings**: Set up download preferences
|
||||
|
||||
**Basic Configuration:**
|
||||
* **Download Location**: Set to `/downloads`
|
||||
* **Temporary Files**: Configure temp directory
|
||||
* **Auto-Management**: Enable automatic torrent management
|
||||
* **WebUI Settings**: Configure interface preferences
|
||||
|
||||
===== Download Management =====
|
||||
|
||||
**Adding Torrents:**
|
||||
* **Torrent Files**: Upload .torrent files
|
||||
* **Magnet Links**: Paste magnet links
|
||||
* **URLs**: Add torrent URLs
|
||||
* **Batch Operations**: Add multiple torrents
|
||||
|
||||
**Download Categories:**
|
||||
* **Category Creation**: Create download categories
|
||||
* **Path Assignment**: Assign paths per category
|
||||
* **Automatic Sorting**: Auto-assign categories
|
||||
* **Category Management**: Organize downloads
|
||||
|
||||
**Queue Management:**
|
||||
* **Priority Setting**: Set download priorities
|
||||
* **Queue Limits**: Limit concurrent downloads
|
||||
* **Speed Allocation**: Allocate bandwidth per torrent
|
||||
* **Sequential Downloads**: Download files in order
|
||||
|
||||
===== Advanced Features =====
|
||||
|
||||
**RSS Integration:**
|
||||
* **RSS Feeds**: Add RSS torrent feeds
|
||||
* **Automatic Downloads**: Auto-download matching torrents
|
||||
* **Filters**: Set download filters and rules
|
||||
* **Smart Filtering**: Advanced filtering options
|
||||
|
||||
**Search Integration:**
|
||||
* **Built-in Search**: Search torrent sites
|
||||
* **Search Plugins**: Install additional search plugins
|
||||
* **Plugin Management**: Manage search engines
|
||||
* **Search History**: Track search history
|
||||
|
||||
**Automation:**
|
||||
* **Watch Folders**: Monitor folders for new torrents
|
||||
* **Auto-Tagging**: Automatic torrent tagging
|
||||
* **Script Integration**: Execute scripts on completion
|
||||
* **API Integration**: REST API for automation
|
||||
|
||||
===== Performance Optimization =====
|
||||
|
||||
**Speed Settings:**
|
||||
```yaml
|
||||
# Recommended settings for VPN
|
||||
Global maximum number of upload slots: 20
|
||||
Global maximum number of half-open connections: 500
|
||||
Maximum number of upload slots per torrent: 4
|
||||
Maximum number of connections per torrent: 100
|
||||
```
|
||||
|
||||
**Disk Settings:**
|
||||
* **Disk Cache**: Set to 64-128 MB
|
||||
* **Disk Cache Expiry**: 60 seconds
|
||||
* **OS Cache**: Enable OS cache
|
||||
* **Coalesce Reads**: Enable for SSDs
|
||||
|
||||
**Connection Settings:**
|
||||
* **Global Max Connections**: 500
|
||||
* **Max Per Torrent**: 100
|
||||
* **Max Upload Slots**: 20
|
||||
* **Max Half-Open**: 500
|
||||
|
||||
===== Security Configuration =====
|
||||
|
||||
**WebUI Security:**
|
||||
* **Authentication**: Enable username/password
|
||||
* **HTTPS**: Force HTTPS connections
|
||||
* **IP Filtering**: Restrict access by IP
|
||||
* **Session Timeout**: Configure session limits
|
||||
|
||||
**Network Security:**
|
||||
* **Encryption**: Enable protocol encryption
|
||||
* **DHT**: Enable DHT for peer discovery
|
||||
* **PEX**: Enable peer exchange
|
||||
* **LSD**: Enable local service discovery
|
||||
|
||||
**VPN Security:**
|
||||
* **Kill Switch**: Gluetun provides kill switch
|
||||
* **DNS Leak Protection**: VPN DNS protection
|
||||
* **IPv6 Blocking**: Block IPv6 leaks
|
||||
* **Port Forwarding**: VPN port forwarding
|
||||
|
||||
===== Integration with Media Stack =====
|
||||
|
||||
**Sonarr/Radarr Integration:**
|
||||
```yaml
|
||||
# In Sonarr/Radarr settings
|
||||
Download Client: qBittorrent
|
||||
Host: qbittorrent # Container name
|
||||
Port: 8080
|
||||
Username: your-username
|
||||
Password: your-password
|
||||
Category: sonarr # Use categories for organization
|
||||
```
|
||||
|
||||
**Category Setup:**
|
||||
* **sonarr**: For TV show downloads
|
||||
* **radarr**: For movie downloads
|
||||
* **manual**: For manual downloads
|
||||
* **books**: For book downloads
|
||||
|
||||
**Path Mapping:**
|
||||
* **/downloads/complete/sonarr**: TV shows
|
||||
* **/downloads/complete/radarr**: Movies
|
||||
* **/downloads/complete/manual**: Manual downloads
|
||||
|
||||
===== Monitoring & Maintenance =====
|
||||
|
||||
**Health Checks:**
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
**Log Monitoring:**
|
||||
```bash
|
||||
# View qBittorrent logs
|
||||
docker logs qbittorrent
|
||||
|
||||
# View Gluetun logs (VPN)
|
||||
docker logs gluetun
|
||||
```
|
||||
|
||||
**Performance Monitoring:**
|
||||
* **Download Speed**: Monitor download/upload speeds
|
||||
* **Connection Count**: Track peer connections
|
||||
* **Disk I/O**: Monitor disk usage
|
||||
* **Memory Usage**: Track memory consumption
|
||||
|
||||
===== Troubleshooting =====
|
||||
|
||||
**VPN Connection Issues:**
|
||||
```bash
|
||||
# Check VPN status
|
||||
docker exec gluetun sh -c "curl -s ifconfig.me"
|
||||
|
||||
# Verify Gluetun is running
|
||||
docker ps | grep gluetun
|
||||
|
||||
# Check Gluetun logs
|
||||
docker logs gluetun | grep -i wireguard
|
||||
```
|
||||
|
||||
**WebUI Access Issues:**
|
||||
* **Port Mapping**: Verify port 8080 is mapped in Gluetun
|
||||
* **Network Mode**: Confirm `network_mode: "service:gluetun"`
|
||||
* **Firewall**: Check firewall rules
|
||||
* **Traefik**: Verify Traefik routing
|
||||
|
||||
**Download Problems:**
|
||||
* **Port Forwarding**: Check if VPN supports port forwarding
|
||||
* **Speed Limits**: Remove artificial speed limits
|
||||
* **Tracker Issues**: Check tracker status
|
||||
* **Peer Connections**: Verify peer connectivity
|
||||
|
||||
**Common Issues:**
|
||||
* **No Downloads**: Check VPN connection and port forwarding
|
||||
* **Slow Speeds**: Verify VPN server selection and speed
|
||||
* **Connection Errors**: Check firewall and network settings
|
||||
* **Authentication**: Verify username/password credentials
|
||||
|
||||
**Troubleshooting Steps:**
|
||||
1. **Check VPN**: Verify Gluetun is connected
|
||||
2. **Test Access**: Access WebUI directly
|
||||
3. **Check Logs**: Review container logs
|
||||
4. **Verify Ports**: Confirm port mappings
|
||||
5. **Test Downloads**: Try a known working torrent
|
||||
|
||||
===== Backup & Recovery =====
|
||||
|
||||
**Configuration Backup:**
|
||||
```bash
|
||||
# Backup qBittorrent configuration
|
||||
docker run --rm \
|
||||
-v qbittorrent-config:/config \
|
||||
-v $(pwd)/backup:/backup \
|
||||
busybox tar czf /backup/qbittorrent-config.tar.gz /config
|
||||
```
|
||||
|
||||
**Download Recovery:**
|
||||
* **Resume Downloads**: qBittorrent auto-resumes
|
||||
* **Torrent Files**: Backup .torrent files
|
||||
* **Fast Resume**: Use fast resume data
|
||||
* **Re-add Torrents**: Re-add from backup
|
||||
|
||||
**Migration:**
|
||||
1. **Stop Container**: Stop qBittorrent
|
||||
2. **Backup Config**: Backup configuration directory
|
||||
3. **Restore Config**: Restore to new location
|
||||
4. **Update Paths**: Update download paths if changed
|
||||
5. **Start Container**: Restart qBittorrent
|
||||
|
||||
===== Best Practices =====
|
||||
|
||||
**VPN Usage:**
|
||||
* **Dedicated Server**: Use VPN server optimized for P2P
|
||||
* **Port Forwarding**: Enable port forwarding when available
|
||||
* **Kill Switch**: Always use VPN kill switch
|
||||
* **IP Rotation**: Rotate VPN servers periodically
|
||||
|
||||
**Download Management:**
|
||||
* **Category Organization**: Use categories for organization
|
||||
* **Speed Limits**: Set reasonable speed limits
|
||||
* **Queue Management**: Limit concurrent downloads
|
||||
* **Disk Space**: Monitor available disk space
|
||||
|
||||
**Security:**
|
||||
* **Strong Passwords**: Use strong WebUI passwords
|
||||
* **IP Restrictions**: Limit WebUI access
|
||||
* **Regular Updates**: Keep qBittorrent updated
|
||||
* **VPN Always**: Never disable VPN routing
|
||||
|
||||
**Performance:**
|
||||
* **Resource Allocation**: Appropriate CPU/memory limits
|
||||
* **Disk I/O**: Use fast storage for downloads
|
||||
* **Network Optimization**: Optimize VPN server selection
|
||||
* **Cache Settings**: Optimize disk cache settings
|
||||
|
||||
===== Advanced Configuration =====
|
||||
|
||||
**qBittorrent.conf Settings:**
|
||||
```ini
|
||||
[Preferences]
|
||||
WebUI\Username=your-username
|
||||
WebUI\Password_PBKDF2="encrypted-password"
|
||||
WebUI\Port=8080
|
||||
Downloads\SavePath=/downloads
|
||||
Downloads\TempPath=/downloads/temp
|
||||
```
|
||||
|
||||
**API Usage:**
|
||||
```bash
|
||||
# Get torrent list
|
||||
curl -u username:password "http://localhost:8080/api/v2/torrents/info"
|
||||
|
||||
# Add magnet link
|
||||
curl -X POST \
|
||||
-u username:password \
|
||||
-d "urls=magnet:?..." \
|
||||
http://localhost:8080/api/v2/torrents/add
|
||||
```
|
||||
|
||||
**Integration Scripts:**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Auto-organize completed downloads
|
||||
QB_HOST="http://localhost:8080"
|
||||
QB_USER="username"
|
||||
QB_PASS="password"
|
||||
|
||||
# Get completed torrents
|
||||
completed=$(curl -s -u $QB_USER:$QB_PASS "$QB_HOST/api/v2/torrents/info?filter=completed")
|
||||
|
||||
# Process completed torrents
|
||||
# Add your organization logic here
|
||||
```
|
||||
|
||||
qBittorrent provides a powerful, privacy-focused torrent downloading solution that integrates seamlessly with your media automation stack while maintaining security through VPN routing.
|
||||
|
||||
**Next:** Explore [[services:media-management:start|Media Management Services]] or return to [[services:media:start|Media Services Overview]].
|
||||
194
config-templates/dokuwiki/data/pages/services/media/start.txt
Normal file
194
config-templates/dokuwiki/data/pages/services/media/start.txt
Normal file
@@ -0,0 +1,194 @@
|
||||
====== Media Services ======
|
||||
|
||||
The Media Services stack provides comprehensive media management, streaming, and downloading capabilities for your homelab. These services handle everything from media library organization to automated downloading and streaming.
|
||||
|
||||
===== Overview =====
|
||||
|
||||
**Stack Components:**
|
||||
* **[[services:media:jellyfin|Jellyfin]]**: Media server for streaming movies, TV shows, and music
|
||||
* **[[services:media:calibre-web|Calibre-Web]]**: Web interface for eBook library management
|
||||
* **[[services:media:qbittorrent|qBittorrent]]**: Torrent client with VPN protection
|
||||
|
||||
**Key Features:**
|
||||
* **Unified Media Access**: Stream media from any device
|
||||
* **EBook Management**: Browse and read digital books
|
||||
* **Secure Downloading**: VPN-protected torrent downloads
|
||||
* **Cross-Platform**: Works on all devices and platforms
|
||||
|
||||
===== Service Details =====
|
||||
|
||||
^ Service ^ Purpose ^ URL ^ Authentication ^ Storage ^
|
||||
| [[services:media:jellyfin|Jellyfin]] | Media streaming server | https://jellyfin.${DOMAIN} | Apps/devices | /mnt/media |
|
||||
| [[services:media:calibre-web|Calibre-Web]] | eBook web interface | https://calibre.${DOMAIN} | Built-in users | /mnt/media/books |
|
||||
| [[services:media:qbittorrent|qBittorrent]] | Torrent downloads | https://qbit.${DOMAIN} | Web UI auth | /mnt/downloads |
|
||||
|
||||
===== Architecture =====
|
||||
|
||||
**Storage Layout:**
|
||||
```
|
||||
/mnt/media/
|
||||
├── movies/ # Movie files
|
||||
├── tv/ # TV show files
|
||||
├── music/ # Music files
|
||||
├── books/ # Calibre eBook library
|
||||
│ ├── metadata.db
|
||||
│ └── books/
|
||||
└── photos/ # Photo collections
|
||||
|
||||
/mnt/downloads/
|
||||
├── complete/ # Completed downloads
|
||||
├── incomplete/ # Active downloads
|
||||
└── temp/ # Temporary files
|
||||
```
|
||||
|
||||
**Network Configuration:**
|
||||
* **Jellyfin**: Direct access (no SSO for app compatibility)
|
||||
* **Calibre-Web**: Authelia SSO protection
|
||||
* **qBittorrent**: Authelia SSO + VPN routing through Gluetun
|
||||
|
||||
===== Deployment =====
|
||||
|
||||
**Docker Compose (media.yml):**
|
||||
```yaml
|
||||
services:
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
# ... Jellyfin configuration
|
||||
|
||||
calibre-web:
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
# ... Calibre-Web configuration
|
||||
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
network_mode: "service:gluetun" # VPN routing
|
||||
# ... qBittorrent configuration
|
||||
```
|
||||
|
||||
**Prerequisites:**
|
||||
* **Core Stack**: Traefik, Authelia, Gluetun must be running
|
||||
* **Storage**: /mnt/media and /mnt/downloads mounted
|
||||
* **VPN**: Gluetun configured with torrent-friendly provider
|
||||
* **Permissions**: Proper PUID/PGID for file access
|
||||
|
||||
===== Integration =====
|
||||
|
||||
**With Media Management:**
|
||||
* **Sonarr/Radarr**: Auto-download TV/movies
|
||||
* **qBittorrent**: Download client for automation
|
||||
* **Jellyfin**: Media library scanning and streaming
|
||||
* **Prowlarr**: Indexer management
|
||||
|
||||
**With Home Automation:**
|
||||
* **Home Assistant**: Media control integration
|
||||
* **Node-RED**: Custom media workflows
|
||||
* **MotionEye**: Security camera integration
|
||||
|
||||
**With Monitoring:**
|
||||
* **Uptime Kuma**: Service availability monitoring
|
||||
* **Grafana**: Performance dashboards
|
||||
* **Prometheus**: Resource monitoring
|
||||
|
||||
===== Security Considerations =====
|
||||
|
||||
**Access Control:**
|
||||
* **Jellyfin**: No SSO (device/app compatibility)
|
||||
* **Calibre-Web**: SSO protected
|
||||
* **qBittorrent**: SSO protected + VPN isolation
|
||||
|
||||
**Network Security:**
|
||||
* **VPN Routing**: qBittorrent traffic through VPN
|
||||
* **Firewall Rules**: Restrict external access
|
||||
* **SSL/TLS**: All services use HTTPS
|
||||
* **Authentication**: Strong passwords required
|
||||
|
||||
===== Performance Optimization =====
|
||||
|
||||
**Hardware Acceleration:**
|
||||
* **Jellyfin**: GPU transcoding support
|
||||
* **Intel Quick Sync**: Hardware encoding/decoding
|
||||
* **NVIDIA NVENC**: GPU-accelerated transcoding
|
||||
* **VAAPI**: Linux video acceleration
|
||||
|
||||
**Storage Optimization:**
|
||||
* **SSD Storage**: Fast access for media files
|
||||
* **RAID Arrays**: Data redundancy and performance
|
||||
* **Network Storage**: NAS integration for large libraries
|
||||
* **Caching**: Metadata and thumbnail caching
|
||||
|
||||
**Resource Allocation:**
|
||||
```yaml
|
||||
# Recommended limits
|
||||
jellyfin:
|
||||
cpus: '2.0'
|
||||
memory: 4G
|
||||
|
||||
calibre-web:
|
||||
cpus: '1.0'
|
||||
memory: 512M
|
||||
|
||||
qbittorrent:
|
||||
cpus: '2.0'
|
||||
memory: 1G
|
||||
```
|
||||
|
||||
===== Maintenance =====
|
||||
|
||||
**Regular Tasks:**
|
||||
* **Library Scans**: Regular media library scanning
|
||||
* **Database Optimization**: Calibre database maintenance
|
||||
* **Download Cleanup**: Remove completed torrents
|
||||
* **Update Checks**: Keep services updated
|
||||
|
||||
**Backup Strategy:**
|
||||
* **Configuration**: Backup service configurations
|
||||
* **Databases**: Backup Calibre and Jellyfin databases
|
||||
* **Metadata**: Preserve media metadata
|
||||
* **Automation**: Automated backup scripts
|
||||
|
||||
===== Troubleshooting =====
|
||||
|
||||
**Common Issues:**
|
||||
* **Media Not Showing**: Check file permissions and paths
|
||||
* **Slow Streaming**: Verify transcoding settings
|
||||
* **Download Issues**: Check VPN connection and ports
|
||||
* **Authentication**: Verify SSO configuration
|
||||
|
||||
**Diagnostic Commands:**
|
||||
```bash
|
||||
# Check service status
|
||||
docker compose -f media.yml ps
|
||||
|
||||
# View logs
|
||||
docker compose -f media.yml logs -f service-name
|
||||
|
||||
# Test VPN connection
|
||||
docker exec gluetun curl -s ifconfig.me
|
||||
|
||||
# Check file permissions
|
||||
ls -la /mnt/media/
|
||||
```
|
||||
|
||||
===== Best Practices =====
|
||||
|
||||
**Library Organization:**
|
||||
* **Consistent Naming**: Follow media naming conventions
|
||||
* **Folder Structure**: Logical folder hierarchy
|
||||
* **Metadata Quality**: Accurate media information
|
||||
* **Regular Maintenance**: Keep libraries organized
|
||||
|
||||
**Security:**
|
||||
* **VPN Always**: Never disable VPN for downloads
|
||||
* **Strong Passwords**: Use strong authentication
|
||||
* **Access Logging**: Monitor access patterns
|
||||
* **Regular Updates**: Keep services current
|
||||
|
||||
**Performance:**
|
||||
* **Resource Monitoring**: Track CPU/memory usage
|
||||
* **Storage Optimization**: Use appropriate storage types
|
||||
* **Network Optimization**: Fast network connections
|
||||
* **Caching**: Enable appropriate caching
|
||||
|
||||
The Media Services stack provides a complete media entertainment solution with streaming, eBook management, and secure downloading capabilities.
|
||||
|
||||
**Next:** Explore [[services:media-management:start|Media Management Services]] for automated downloading or return to [[services:start|Services Overview]].
|
||||
Reference in New Issue
Block a user