Wiki v1.0
Added a wiki
This commit is contained in:
@@ -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]].
|
||||
Reference in New Issue
Block a user