add readme
This commit is contained in:
170
README.md
Normal file
170
README.md
Normal file
@ -0,0 +1,170 @@
|
||||
# Media Server Helm Charts
|
||||
|
||||
This repository contains a collection of Helm charts for deploying a complete media server stack on Kubernetes. The stack includes:
|
||||
|
||||
- **Jackett**: Index manager/proxy for torrent trackers
|
||||
- **qBittorrent**: Torrent client for downloading
|
||||
- **Sonarr**: TV shows management and automation
|
||||
- **Radarr**: Movies management and automation
|
||||
- **Overseerr**: Request management and discovery interface
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes cluster
|
||||
- Helm 3.x installed
|
||||
- Storage class available for persistent volumes
|
||||
- (Optional) Ingress controller if you plan to use ingress
|
||||
|
||||
## Installation
|
||||
|
||||
Each service can be installed independently, but they are designed to work together. Here's the recommended installation order:
|
||||
|
||||
1. qBittorrent (for downloads)
|
||||
2. Jackett (for indexers)
|
||||
3. Sonarr and Radarr (for media management)
|
||||
4. Overseerr (for request management)
|
||||
|
||||
### Basic Installation
|
||||
|
||||
```bash
|
||||
# Install qBittorrent
|
||||
helm install qbittorrent ./qbittorrent
|
||||
|
||||
# Install Jackett
|
||||
helm install jackett ./jackett
|
||||
|
||||
# Install Sonarr
|
||||
helm install sonarr ./sonarr
|
||||
|
||||
# Install Radarr
|
||||
helm install radarr ./radarr
|
||||
|
||||
# Install Overseerr
|
||||
helm install overseerr ./overseerr
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Each chart supports the following common configurations through their respective `values.yaml`:
|
||||
|
||||
#### Common Settings
|
||||
- `replicaCount`: Number of replicas (default: 1)
|
||||
- `image.tag`: Container image tag (default: "latest")
|
||||
- `persistence.*.storageClass`: Storage class for PVCs
|
||||
- `securityContext.PUID/PGID`: User/Group IDs (default: 1000)
|
||||
- `ingress`: Ingress configuration
|
||||
- `resources`: CPU/Memory limits and requests
|
||||
|
||||
#### Service-Specific Ports
|
||||
- Jackett: 9117
|
||||
- qBittorrent: 8080 (WebUI), 6881 (BitTorrent)
|
||||
- Sonarr: 8989
|
||||
- Radarr: 7878
|
||||
- Overseerr: 5055
|
||||
|
||||
### Example Values
|
||||
|
||||
#### Using Existing Download Directory
|
||||
|
||||
To share the download directory between qBittorrent, Sonarr, and Radarr:
|
||||
|
||||
1. First, install qBittorrent:
|
||||
```yaml
|
||||
# qbittorrent/values.yaml
|
||||
persistence:
|
||||
downloads:
|
||||
enabled: true
|
||||
size: 100Gi
|
||||
```
|
||||
|
||||
2. Then configure Sonarr/Radarr to use the existing PVC:
|
||||
```yaml
|
||||
# sonarr/values.yaml or radarr/values.yaml
|
||||
persistence:
|
||||
downloads:
|
||||
enabled: true
|
||||
existingClaim: "qbittorrent-downloads" # Use the PVC created by qBittorrent
|
||||
```
|
||||
|
||||
#### Setting Up Ingress
|
||||
|
||||
Example ingress configuration for each service:
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
hosts:
|
||||
- host: service-name.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementExact
|
||||
tls:
|
||||
- secretName: service-name-tls
|
||||
hosts:
|
||||
- service-name.example.com
|
||||
```
|
||||
|
||||
## Initial Setup
|
||||
|
||||
After installing all services, follow these steps:
|
||||
|
||||
1. **Jackett**:
|
||||
- Access the Jackett UI and add your preferred indexers
|
||||
- Note down the API key and indexer URLs for Sonarr/Radarr
|
||||
|
||||
2. **qBittorrent**:
|
||||
- Access the WebUI (default credentials: admin/adminadmin)
|
||||
- Configure download paths and settings
|
||||
- Note down the username/password for Sonarr/Radarr
|
||||
|
||||
3. **Sonarr/Radarr**:
|
||||
- Add Jackett indexers
|
||||
- Configure qBittorrent as download client
|
||||
- Set up media library paths
|
||||
- Get API keys for Overseerr
|
||||
|
||||
4. **Overseerr**:
|
||||
- Configure Sonarr/Radarr connections using their API keys
|
||||
- Set up user authentication
|
||||
|
||||
## Persistence
|
||||
|
||||
Each service requires persistent storage:
|
||||
|
||||
- **Jackett**: Configuration data
|
||||
- **qBittorrent**: Configuration and downloads
|
||||
- **Sonarr**: Configuration and TV shows library
|
||||
- **Radarr**: Configuration and movies library
|
||||
- **Overseerr**: Configuration data
|
||||
|
||||
Make sure your storage class supports the required access modes (ReadWriteOnce by default).
|
||||
|
||||
## Security
|
||||
|
||||
- All services run as non-root with configurable PUID/PGID
|
||||
- Default credentials should be changed after installation
|
||||
- Consider using ingress with TLS for secure access
|
||||
- API keys should be kept secure and not shared
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Common issues and solutions:
|
||||
|
||||
1. **PVC Issues**:
|
||||
- Ensure storage class exists
|
||||
- Check PVC status with `kubectl get pvc`
|
||||
|
||||
2. **Permission Issues**:
|
||||
- Adjust PUID/PGID to match your media files ownership
|
||||
- Ensure consistent permissions across services
|
||||
|
||||
3. **Network Issues**:
|
||||
- Verify services can communicate using internal DNS
|
||||
- Check service and pod status with `kubectl get pods,svc`
|
||||
|
||||
## Contributing
|
||||
|
||||
Feel free to submit issues and pull requests for improvements.
|
Reference in New Issue
Block a user