This commit is contained in:
2025-01-13 00:32:08 +01:00
parent b2d37a9c5a
commit 33caf58f9c
17 changed files with 664 additions and 28 deletions

124
README.md
View File

@ -2,6 +2,7 @@
This repository contains a collection of Helm charts for deploying a complete media server stack on Kubernetes. The stack includes:
- **Plex**: Media server for streaming your media collection
- **Jackett**: Index manager/proxy for torrent trackers
- **qBittorrent**: Torrent client for downloading
- **Sonarr**: TV shows management and automation
@ -56,6 +57,7 @@ Each chart supports the following common configurations through their respective
- `resources`: CPU/Memory limits and requests
#### Service-Specific Ports
- Plex: 32400 (main), 32469 (DLNA), 1900 (DLNA/UDP), 32410-32414 (GDM)
- Jackett: 9117
- qBittorrent: 8080 (WebUI), 6881 (BitTorrent)
- Sonarr: 8989
@ -88,45 +90,119 @@ persistence:
#### Setting Up Ingress
Example ingress configuration for each service:
Each service can be exposed using Kubernetes ingress. Here's a detailed example:
```yaml
ingress:
enabled: true
className: nginx
className: "nginx" # Specify your ingress controller
annotations:
# For automatic HTTPS with cert-manager
cert-manager.io/cluster-issuer: letsencrypt-prod
# If you're using nginx-ingress
nginx.ingress.kubernetes.io/ssl-redirect: "true"
# Add this if you're having issues with paths
nginx.ingress.kubernetes.io/rewrite-target: /
hosts:
- host: service-name.example.com
- host: jackett.example.com # Replace with your domain
paths:
- path: /
pathType: ImplementExact
pathType: Prefix # Use Prefix for most cases
tls:
- secretName: service-name-tls
- secretName: jackett-tls
hosts:
- service-name.example.com
- jackett.example.com
```
Common ingress configurations for different controllers:
1. **nginx-ingress**:
```yaml
ingress:
className: "nginx"
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
```
2. **traefik**:
```yaml
ingress:
className: "traefik"
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
```
3. **contour**:
```yaml
ingress:
className: "contour"
annotations:
projectcontour.io/websocket-routes: "/"
```
### Ingress Troubleshooting
If you encounter issues with ingress:
1. **Check ingress controller**:
```bash
# Verify ingress controller is running
kubectl get pods -n ingress-nginx
# Check ingress resource
kubectl get ingress
kubectl describe ingress jackett
```
2. **Common issues and solutions**:
- If paths aren't working, try changing `pathType` to `Prefix`
- For 404 errors, check if the `rewrite-target` annotation is needed
- For SSL/TLS issues, verify cert-manager setup and TLS secret creation
3. **Verify service connectivity**:
```bash
# Test service directly
kubectl port-forward svc/jackett 9117:9117
```
## Initial Setup
After installing all services, follow these steps:
1. **Jackett**:
1. **Plex**:
- Get your claim token from https://plex.tv/claim
- Set the claim token in values.yaml:
```yaml
env:
PLEX_CLAIM: "your-claim-token"
```
- For hardware transcoding, enable it in values.yaml:
```yaml
transcoding:
hardware:
enabled: true
intel: true # For Intel GPU
# or
nvidia: true # For Nvidia GPU
```
- Configure your media libraries in the Plex web interface
2. **Jackett**:
- Access the Jackett UI and add your preferred indexers
- Note down the API key and indexer URLs for Sonarr/Radarr
2. **qBittorrent**:
3. **qBittorrent**:
- Access the WebUI (default credentials: admin/adminadmin)
- Configure download paths and settings
- Note down the username/password for Sonarr/Radarr
3. **Sonarr/Radarr**:
4. **Sonarr/Radarr**:
- Add Jackett indexers
- Configure qBittorrent as download client
- Set up media library paths
- Get API keys for Overseerr
4. **Overseerr**:
5. **Overseerr**:
- Configure Sonarr/Radarr connections using their API keys
- Set up user authentication
@ -167,4 +243,30 @@ Common issues and solutions:
## Contributing
Feel free to submit issues and pull requests for improvements.
Feel free to submit issues and pull requests for improvements.
## Hardware Transcoding
Plex supports hardware transcoding with compatible GPUs:
### Intel GPU
```yaml
transcoding:
hardware:
enabled: true
intel: true
```
### Nvidia GPU
```yaml
transcoding:
hardware:
enabled: true
nvidia: true
```
Note: Hardware transcoding requires:
- Compatible GPU hardware on your Kubernetes nodes
- Proper drivers installed on the host
- Appropriate permissions/security contexts
- Plex Pass subscription