An open API service indexing awesome lists of open source software.

https://github.com/muchiny/media-stack-k8s


https://github.com/muchiny/media-stack-k8s

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          

# 🎬 Media Stack K8s

Stack mΓ©dia dΓ©ployΓ©e sur K3s avec ArgoCD (GitOps) sur Raspberry Pi 5.

## πŸ“‹ Vue d'ensemble

```mermaid
graph TB
subgraph "🌐 Internet"
DNS[DNS Queries]
Users[πŸ‘€ Utilisateurs]
end

subgraph "πŸ–₯️ Raspberry Pi 5"
subgraph "☸️ K3s Cluster"
ArgoCD[πŸ”„ ArgoCD
GitOps Controller]

subgraph "πŸ“¦ Namespace: media-stack"
CF[πŸ›‘οΈ dnscrypt-proxy
DNS-over-HTTPS
:5053]
Plex[πŸŽ₯ Plex
Media Server
:32400]
QB[⬇️ qBittorrent
Torrent Client
:8080]
end
end

Storage[(πŸ’Ύ /home/muchini/media-data)]
end

DNS --> CF
Users --> Plex
Users --> QB
ArgoCD --> CF
ArgoCD --> Plex
ArgoCD --> QB
Plex --> Storage
QB --> Storage
```

## πŸš€ Services

| Service | Description | Port | Namespace | Statut |
|---------|-------------|------|-----------|--------|
| πŸ›‘οΈ dnscrypt-proxy | DNS over HTTPS (anti-censure) | ClusterIP 5053 | media-stack | βœ… |
| πŸŽ₯ Plex | Media Server avec transcodage HW | 32400 (hostNetwork) | media-stack | βœ… |
| ⬇️ qBittorrent | Client torrent (anti-seeding) | 8080 (hostPort) | media-stack | βœ… |

## πŸ”§ DΓ©ploiement

```bash
# πŸ“₯ Appliquer le root app (App of Apps pattern)
kubectl apply -f apps/root-app.yaml

# πŸ‘€ Suivre le dΓ©ploiement
kubectl get applications -n argocd -w
```

## 🌐 Accès

| Service | URL |
|---------|-----|
| πŸ”„ ArgoCD | https://192.168.1.51:30443 |
| πŸŽ₯ Plex | http://192.168.1.51:32400/web |
| ⬇️ qBittorrent | http://192.168.1.51:8080 |

## πŸ“ Structure du projet

```mermaid
graph LR
subgraph "πŸ“‚ Repository"
ROOT[πŸ“„ root-app.yaml]

subgraph "πŸ“ apps/"
A1[dnscrypt-proxy.yaml]
A2[plex.yaml]
A3[qbittorrent.yaml]
end

subgraph "πŸ“ charts/"
C1[πŸ›‘οΈ dnscrypt-proxy/]
C2[πŸŽ₯ plex/]
C3[⬇️ qbittorrent/]
end

subgraph "πŸ“ base/"
B1[namespace.yaml]
end
end

ROOT --> A1
ROOT --> A2
ROOT --> A3
A1 --> C1
A2 --> C2
A3 --> C3
```

```
πŸ“¦ media-stack-k8s/
β”œβ”€β”€ πŸ“ apps/ # ArgoCD Application manifests
β”‚ β”œβ”€β”€ πŸ“„ root-app.yaml # App of Apps parent
β”‚ β”œβ”€β”€ πŸ“„ dnscrypt-proxy.yaml
β”‚ β”œβ”€β”€ πŸ“„ plex.yaml
β”‚ └── πŸ“„ qbittorrent.yaml
β”œβ”€β”€ πŸ“ base/ # Ressources de base
β”‚ └── πŸ“„ namespace.yaml
└── πŸ“ charts/ # Helm Charts
β”œβ”€β”€ πŸ›‘οΈ dnscrypt-proxy/
β”œβ”€β”€ πŸŽ₯ plex/
└── ⬇️ qbittorrent/
```

## ⚠️ Contraintes importantes

> 🚫 **NE PAS** activer le seeding dans qBittorrent
> 🚫 **NE PAS** exposer dnscrypt-proxy externellement
> 🚫 **NE PAS** ajouter les services *arr (Radarr, Sonarr, etc.)

## πŸ“Š Flux de donnΓ©es

```mermaid
sequenceDiagram
participant U as πŸ‘€ Utilisateur
participant QB as ⬇️ qBittorrent
participant CF as πŸ›‘οΈ dnscrypt-proxy
participant DNS as 🌐 Cloudflare DNS
participant P as πŸŽ₯ Plex
participant S as πŸ’Ύ Storage

U->>QB: Ajoute torrent
QB->>CF: RΓ©solution DNS
CF->>DNS: DNS-over-HTTPS
DNS-->>CF: IP rΓ©solue
CF-->>QB: RΓ©ponse DNS
QB->>S: TΓ©lΓ©charge fichier
S-->>P: Fichier disponible
U->>P: Stream mΓ©dia
P->>S: Lecture fichier
P-->>U: 🎬 Diffusion
```