https://github.com/muchiny/media-stack-k8s
https://github.com/muchiny/media-stack-k8s
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/muchiny/media-stack-k8s
- Owner: muchiny
- License: mit
- Created: 2025-12-21T03:06:34.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-02-14T20:24:13.000Z (5 months ago)
- Last Synced: 2026-02-15T00:23:50.239Z (5 months ago)
- Language: Go Template
- Size: 147 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
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
```