add readme

This commit is contained in:
2025-01-10 13:46:01 +01:00
parent 0ab0d5facc
commit b2d37a9c5a

170
README.md Normal file
View 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.