Mirror the French docs onto the English structure
This commit is contained in:
@@ -0,0 +1,264 @@
|
||||
---
|
||||
title: Jellyfin
|
||||
description: Installer Jellyfin, un serveur multimédia libre et open source, pour diffuser vos films et séries depuis n'importe où sans abonnement payant.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||

|
||||
|
||||
[Jellyfin](https://jellyfin.org) est une alternative libre et open source à Plex et Emby. Contrairement à Plex, il n'a pas d'offre payante, pas de télémétrie, et n'exige pas de compte en ligne pour utiliser ou administrer votre serveur : tout tourne en local et reste chez vous.
|
||||
|
||||
Il couvre les mêmes bases : une médiathèque avec métadonnées et jaquettes, le transcodage (accélération matérielle comprise), et des applications pour TV, Android, iOS, Windows et macOS.
|
||||
|
||||
Comme toujours, nous utiliserons l'[image linuxserver.io](https://docs.linuxserver.io/images/docker-jellyfin).
|
||||
|
||||
::note{to="/serveex/core/wireguard"}
|
||||
|
||||
Contrairement à Plex, Jellyfin n'a pas de relais cloud : pour accéder à votre serveur en dehors de votre réseau local, vous devez l'exposer vous-même (voir plus bas), ou utiliser un VPN comme **Wireguard**.
|
||||
::
|
||||
|
||||
## Installer Jellyfin
|
||||
|
||||
::file-tree
|
||||
---
|
||||
tree:
|
||||
/:
|
||||
- srv:
|
||||
- docker:
|
||||
- jellyfin:
|
||||
- compose.yaml
|
||||
- .env
|
||||
- config/
|
||||
- media:
|
||||
- tvseries/
|
||||
- movies/
|
||||
- library/
|
||||
---
|
||||
::
|
||||
|
||||
::steps{level="3"}
|
||||
### Créer les dossiers média
|
||||
|
||||
Créez les dossiers `movies`, `tvseries` et `library` dans `/media` :
|
||||
|
||||
```bash [Terminal]
|
||||
mkdir -p /media/movies /media/library /media/tvseries
|
||||
```
|
||||
|
||||
### Déployer la stack
|
||||
|
||||
Ouvrez Dockge, cliquez sur `compose`, nommez la stack `jellyfin`, et ajoutez la configuration suivante :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
container_name: jellyfin
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${GUID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /srv/docker/jellyfin/config:/config
|
||||
- /media:/media
|
||||
restart: unless-stopped
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
ports:
|
||||
- 8096:8096
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ Ajoutez le label Watchtower pour automatiser les mises à jour :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
jellyfin:
|
||||
#...
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
::
|
||||
|
||||
### Renseigner vos variables d'environnement
|
||||
|
||||
Trouvez vos PUID et GUID en lançant :
|
||||
|
||||
```bash [Terminal]
|
||||
id utilisateur
|
||||
```
|
||||
|
||||
Remplissez votre fichier `.env` avec les valeurs récupérées, par exemple :
|
||||
|
||||
```properties [.env]
|
||||
PUID=1000
|
||||
GUID=1000
|
||||
```
|
||||
|
||||
Déployez la stack. L'interface locale est disponible sur `http://ipdevotreserveur:8096`.
|
||||
|
||||
::note{to="https://docs.linuxserver.io/images/docker-jellyfin/#hardware-acceleration"}
|
||||
|
||||
Le périphérique `/dev/dri` n'est nécessaire que pour le transcodage accéléré matériellement sur GPU Intel/AMD. Retirez-le si votre serveur n'en a pas, ou adaptez-le pour un GPU NVIDIA en suivant la **documentation de linuxserver.io**.
|
||||
::
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
## Configurer Jellyfin
|
||||
À la première visite, Jellyfin vous guide dans un assistant de configuration :
|
||||
|
||||
- Choisissez une langue d'affichage et créez votre compte administrateur.
|
||||
- Ajoutez une médiathèque, en pointant `/media/movies` pour les films et `/media/tvseries` pour les séries.
|
||||
|
||||
Et voilà ! Ajoutez vos médias dans `/media/movies` et `/media/tvseries` sur votre serveur. Voir plus bas pour commencer à regarder, à la maison ou à distance.
|
||||
|
||||
::note{to="/general/networking/samba"}
|
||||
|
||||
Si vos médias sont stockés sur un disque réseau (un NAS ou un disque dur externe accessible par le réseau), reportez-vous au **guide de montage Samba** pour que Jellyfin puisse y accéder.
|
||||
::
|
||||
|
||||
## Transcodage matériel
|
||||
|
||||
Jellyfin réencode la vidéo à la volée dès qu'un client ne peut pas lire un fichier tel quel : la résolution de l'écran de l'appareil est inférieure à celle de la source, sa connexion réseau est trop lente pour le débit du fichier, ou il ne prend pas en charge le codec, le format HDR ou le type de sous-titres du fichier. C'est ce qu'on appelle le **transcodage**. Fait uniquement en logiciel, sur le processeur, c'est lent et cela peut saturer un serveur modeste avec seulement un ou deux flux simultanés. Le **transcodage matériel** délègue ce travail au GPU intégré à votre processeur (Intel QuickSync, sur la plupart du matériel de homelab), qui s'en occupe bien plus vite et laisse le CPU libre pour tout le reste.
|
||||
|
||||
Le **tone mapping** est une fonction liée mais distincte : convertir une vidéo HDR (qui a besoin d'un écran HDR compatible pour rendre correctement) en SDR pour qu'elle s'affiche correctement sur un écran, une TV ou un client qui ne gère pas le HDR, au lieu de paraître délavée ou trop sombre.
|
||||
|
||||
::note{to="https://docs.linuxserver.io/images/docker-jellyfin/#hardware-acceleration"}
|
||||
Cela ne concerne que les GPU intégrés Intel (et certains AMD) passés au conteneur avec `/dev/dri`, déjà présent dans le `compose.yaml` de ce tutoriel. Les GPU NVIDIA demandent une configuration entièrement différente, traitée dans la **documentation de linuxserver.io**. Si votre serveur n'a pas de GPU compatible, le transcodage fonctionne quand même, entièrement sur le CPU.
|
||||
::
|
||||
|
||||
::steps{level="3"}
|
||||
### Ajouter le mod OpenCL
|
||||
|
||||
Le tone mapping a spécifiquement besoin d'un runtime OpenCL Intel, que cette image n'embarque pas par défaut. Ajoutez le mod dédié à votre `compose.yaml` :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
services:
|
||||
jellyfin:
|
||||
environment:
|
||||
- DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel
|
||||
```
|
||||
|
||||
::note
|
||||
N'utilisez pas le mod générique `universal-package-install` avec `intel-opencl-icd` pour ça : il installe un runtime plus ancien issu des dépôts d'Ubuntu, connu pour causer des bugs de tone mapping. Le mod dédié en fournit un plus récent et prévu pour.
|
||||
::
|
||||
|
||||
Redéployez la stack pour que le mod prenne effet.
|
||||
|
||||
### Activer l'accélération matérielle
|
||||
|
||||
Dans Jellyfin, allez dans _Tableau de bord > Lecture_ et réglez **Accélération matérielle** sur **Intel QuickSync (QSV)** (ou **VA-API**, si QSV n'est pas disponible pour votre génération de processeur).
|
||||
|
||||
Décochez ensuite tout codec que votre GPU ne sait pas décoder matériellement. La [page d'accélération matérielle Intel](https://jellyfin.org/docs/general/administration/hardware-acceleration/intel/) liste précisément les codecs pris en charge par chaque génération de processeur.
|
||||
|
||||
### Activer le tone mapping
|
||||
|
||||
Plus bas sur la même page, activez le **Tone mapping**. Il ne prend effet qu'une fois le mod OpenCL ci-dessus installé et la stack redéployée ; l'activer sans cette étape préalable fera échouer les transcodages HDR au lieu de simplement ignorer le tone mapping.
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
## Regarder à la maison
|
||||
|
||||
Tant que vous êtes connecté à votre réseau domestique (Wi-Fi ou Ethernet, sur le même réseau local que votre serveur), aucune exposition ni VPN n'est nécessaire. Utilisez [Moonfin](https://github.com/Moonfin-Client/Moonfin-Core) partout où il est disponible (téléphones, tablettes, Android TV/Google TV, ordinateur, web) plutôt que l'application Jellyfin officielle : il a la même apparence et le même fonctionnement partout, et peut synchroniser vos réglages entre appareils via son propre plugin serveur. Connectez-vous sur `http://iplandevotreserveur:8096`.
|
||||
|
||||
Samsung Tizen et LG webOS ont droit à une [application Moonfin](https://github.com/Moonfin-Client/Smart-TV) séparée et dédiée (même nom, base de code différente), et l'Apple TV est mieux servie par [Neptune](https://apps.apple.com/us/app/neptune-media-player/id6756797773), un client tvOS dédié avec décodage natif HEVC/AV1/VP9 et passthrough Atmos complet. Là où aucun de ces clients n'existe (Fire TV, Roku, Kodi), voir le tableau ci-dessous :
|
||||
|
||||
| Plateforme | Application recommandée |
|
||||
|----------|-----------------|
|
||||
| Téléphone / Tablette (Android, iOS) | [Moonfin](https://github.com/Moonfin-Client/Moonfin-Core) (Play Store / App Store) |
|
||||
| Android TV / Google TV | [Moonfin](https://github.com/Moonfin-Client/Moonfin-Core) (Play Store ou APK) |
|
||||
| Apple TV | [Neptune](https://apps.apple.com/us/app/neptune-media-player/id6756797773) (App Store) |
|
||||
| Samsung Tizen / LG webOS | [Moonfin](https://github.com/Moonfin-Client/Smart-TV) (sideloadé) ; les applications officielles existent mais sont en retard |
|
||||
| Fire TV | Application Jellyfin officielle (Amazon Appstore) |
|
||||
| Roku | Application Jellyfin officielle |
|
||||
| Kodi | [Jellyfin pour Kodi](https://jellyfin.org/docs/general/clients/kodi/) (synchronise votre médiathèque dans Kodi), ou [JellyCon](https://github.com/jellyfin/jellycon) pour les boîtiers plus légers en streaming seul |
|
||||
|
||||
::caution
|
||||
|
||||
__Si ça ne marche pas :__ vérifiez les règles de votre pare-feu.
|
||||
::
|
||||
|
||||
## Regarder en dehors de chez soi
|
||||
|
||||
::warning
|
||||
Jellyfin ne sera pas exposé sur internet dans ce site, contrairement à la plupart des autres applications. Ses applications natives (téléphone, TV, Chromecast...) dialoguent directement avec son API plutôt qu'avec un navigateur, si bien qu'une couche de forward-auth comme [TinyAuth](/serveex/security/tinyauth) ou [Authentik](/serveex/advanced/authentik) ne peut pas se placer devant sans casser la connexion et la lecture sur ces clients, et Jellyfin lui-même n'a ni 2FA ni OIDC intégré pour compenser. Plutôt que de l'exposer, nous l'atteindrons donc via le [VPN WireGuard](/serveex/core/wireguard) déjà mis en place plus tôt dans ce guide.
|
||||
::
|
||||
|
||||
Plutôt que de faire passer tout le trafic d'un appareil par le VPN, ou même tout le sous-réseau VPN `10.8.0.0/24`, nous utiliserons un **split tunnel** plus serré : chaque appareil distant ne route par le tunnel que le trafic destiné à l'adresse VPN de votre serveur. Tout le reste (navigation, autres applications) reste sur la connexion normale de l'appareil, et le VPN ne sert jamais qu'à joindre cette seule machine.
|
||||
|
||||
::note{to="/serveex/core/wireguard#client-server-setup"}
|
||||
|
||||
Ceci suppose que votre serveur Jellyfin fait déjà tourner son propre client WireGuard, le reliant à votre VPN comme décrit dans **Client Server Setup**. Notez l'adresse VPN que wg-easy lui a attribuée (par exemple `10.8.0.2`) ; c'est l'adresse que viseront tous les appareils ci-dessous.
|
||||
::
|
||||
|
||||
::caution{to="#restreindre-un-pair-tiers-à-jellyfin-uniquement"}
|
||||
Ce split tunnel est une convention côté client, pas une frontière de sécurité imposée par le serveur : `AllowedIPs` est un réglage de routage, et wg-easy n'ajoute aucune règle de pare-feu pour l'appuyer par défaut. Quiconque a accès à un appareil (ou à son fichier `.conf`) pourrait remettre `AllowedIPs` sur quelque chose de plus large et atteindre tout ce que votre serveur WireGuard sait router, y compris les autres pairs connectés. Si un pair est l'un de vos propres appareils, c'est en général un risque acceptable. Si vous confiez un pair à un tiers (un ami, un membre de la famille) qui ne doit jamais atteindre que Jellyfin, voir **Restreindre un pair tiers à Jellyfin uniquement** plus bas pour une façon de l'imposer réellement côté serveur.
|
||||
::
|
||||
|
||||
::steps{level="3"}
|
||||
### Créer un client dans wg-easy pour chaque appareil
|
||||
|
||||
En suivant [Récupérer les fichiers de configuration](/serveex/core/wireguard#retrieve-configuration-files), créez un client par appareil (téléphone, ordinateur, TV/boîtier multimédia) et téléchargez son fichier de configuration.
|
||||
|
||||
### Restreindre le tunnel au seul serveur
|
||||
|
||||
Ouvrez chaque fichier `.conf` téléchargé et remplacez sa ligne `AllowedIPs` pour qu'elle ne couvre que l'adresse VPN de votre serveur Jellyfin, en `/32` (une seule IP, pas une plage) :
|
||||
|
||||
```properties [wg0.conf]
|
||||
AllowedIPs = 10.8.0.2/32
|
||||
```
|
||||
|
||||
::note
|
||||
|
||||
Remplacez `10.8.0.2` par l'adresse que votre serveur a réellement obtenue. Laisser le `10.8.0.0/24` par défaut ici ferait passer par le tunnel le trafic de tous les pairs VPN, pas seulement de votre serveur.
|
||||
::
|
||||
|
||||
### Importer la configuration sur chaque appareil
|
||||
|
||||
- **Téléphone :** installez l'application WireGuard, puis importez le fichier `.conf` modifié (ou scannez un QR code généré à partir de celui-ci).
|
||||
- **Ordinateur :** installez le [client WireGuard](https://www.wireguard.com/install/) et importez le fichier.
|
||||
- **TV :** si elle tourne sous Android TV ou Google TV, installez WireGuard depuis le Play Store. Copiez le fichier `.conf` sur une clé USB, branchez-la sur la TV ou le boîtier, puis utilisez l'option **Ajouter depuis un fichier** de l'application pour parcourir la clé et l'importer. La plupart des autres systèmes de TV (Tizen, webOS...) ne peuvent pas installer de client VPN directement, passez donc plutôt par un appareil qui a déjà le tunnel actif (un boîtier Android TV, ou du cast depuis un téléphone ou un ordinateur connecté).
|
||||
|
||||
::warning
|
||||
Un fichier `.conf` est un identifiant, pas un simple fichier de réglages : quiconque le possède peut se connecter à votre VPN en tant que cet appareil. Une fois importé, supprimez-le de la clé USB (et de partout où vous l'avez copié, comme les dossiers Téléchargements), et ne le partagez jamais avec qui que ce soit.
|
||||
::
|
||||
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
### Restreindre un pair tiers à Jellyfin uniquement
|
||||
|
||||
[wg-easy](/serveex/core/wireguard) (v15.3+) sait l'imposer lui-même, avec une vraie règle de pare-feu à l'intérieur de son propre conteneur plutôt qu'un réglage côté client. C'est la bonne approche quand le pair appartient à quelqu'un d'autre, et non à l'un de vos appareils.
|
||||
|
||||
::steps{level="4"}
|
||||
#### Activer le pare-feu par client
|
||||
|
||||
Dans le panneau d'administration de [wg-easy](/serveex/core/wireguard), allez dans les réglages de l'interface et activez **Per-Client Firewall**. Il est marqué expérimental, mais fonctionne en générant une chaîne `iptables` dédiée dans le conteneur wg-easy.
|
||||
|
||||
#### Restreindre la destination autorisée du pair
|
||||
|
||||
Modifiez le client du tiers et réglez ses **Firewall Allowed IPs** sur l'adresse VPN de votre serveur Jellyfin, par exemple `10.8.0.2`, ou plus restrictif encore, `10.8.0.2:8096/tcp` pour restreindre aussi le port et le protocole.
|
||||
|
||||
::note
|
||||
|
||||
Laisser ce champ vide retombe sur les `AllowedIPs` du client, ce qui n'est pas restrictif : il doit être renseigné explicitement pour ce pair. Cela coupe aussi l'accès internet classique de ce pair à travers le tunnel, puisque seul le trafic vers Jellyfin est désormais autorisé, ce qui est bien l'effet recherché pour un pair invité.
|
||||
::
|
||||
|
||||
#### Vérifier que la règle est appliquée
|
||||
|
||||
```bash [Terminal]
|
||||
docker exec wg-easy iptables -L WG_CLIENTS -n -v
|
||||
```
|
||||
|
||||
Vous devriez voir une ligne `ACCEPT` pour l'IP de ce pair pointant uniquement vers votre serveur Jellyfin, suivie d'un `DROP` fourre-tout.
|
||||
|
||||
#### Terminé !
|
||||
::
|
||||
|
||||
Une fois connecté, ouvrez l'application Jellyfin ou `http://10.8.0.2:8096` (l'adresse VPN de votre serveur) depuis cet appareil. Seul le trafic vers cette adresse passe par le VPN, le reste de la connexion de l'appareil n'est pas touché.
|
||||
@@ -1,303 +0,0 @@
|
||||
---
|
||||
title: Plex
|
||||
description: Installer Plex Media Server avec Tautulli sur votre homelab pour streamer films et séries depuis n'importe où sur tous vos appareils.
|
||||
---
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Plex
|
||||
|
||||
::note
|
||||
🎯 __Objectifs :__
|
||||
|
||||
- Installer Plex
|
||||
- Installer Tautulli
|
||||
- Accéder aux media depuis l'exterieur
|
||||
::
|
||||
|
||||
[Plex](https://www.plex.tv/fr/) est une plateforme de streaming vidéo déployable chez vous, pour manager votre bibliothèque de films ou de série, et les lire en locale ou à distance. Plex dispose d'applications TV, Android, iOS, Window et Mac OS, permettant la lecture de vos bibliothèques, à la Netflix.
|
||||
|
||||
Avec le *plexpass*, vous pouvez également organsier et lire vos contenus audio, à la spotify, la différence étant que c'est bien votre contenu qui est hébergé et lu depuis chez vous.
|
||||
|
||||

|
||||
|
||||
On installera également [Tautulli](https://docs.linuxserver.io/images/docker-tautulli/), un outil qui permet d'avoir des stats poussées sur Plex. On utilisera, comme dès qu'on le peut, les images de linuxserver.io.
|
||||
|
||||
- [Plus d'info sur le conteneur Plex](https://docs.linuxserver.io/images/docker-plex)
|
||||
- [Plus d'info sur le conteneur Tautulli](https://docs.linuxserver.io/images/docker-tautulli/)
|
||||
|
||||
::note
|
||||
|
||||
Vous serez amenés à creer un compte *Plex.tv*. Vous n'avez pas besoin d'exposer votre service Plex, il sera accessible directement par la plateforme. Votre serveur Plex sera gérable directement depuis votre compte.
|
||||
::
|
||||
|
||||
## Installer Plex
|
||||
Structure des dossiers :
|
||||
```text [Arborescence]
|
||||
root
|
||||
├── docker
|
||||
│ ├── plex
|
||||
│ │ ├── compose.yml
|
||||
│ │ ├── .env
|
||||
│ │ ├── config
|
||||
│ │ └── transcode
|
||||
│ └── tautulli
|
||||
│ └── config
|
||||
└── media
|
||||
├── tvseries
|
||||
├── movies
|
||||
└── library
|
||||
```
|
||||
|
||||
Créez les dossiers `movies`, `tvseries` et `library` dans /media :
|
||||
|
||||
```bash [Terminal]
|
||||
mkdir -p /media/movies /media/library /media/tvseries
|
||||
```
|
||||
|
||||
Ouvrez Dockge dans votre navigeateur, et cliquez sur `compose`.
|
||||
Nommez la stack `plex` et ajoutez la config suivante :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
linuxserver_plex:
|
||||
image: ghcr.io/linuxserver/plex:amd64-latest
|
||||
container_name: plex
|
||||
network_mode: host
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${GUID}
|
||||
- TZ=Europe/Paris
|
||||
- VERSION=docker
|
||||
volumes:
|
||||
- /docker/plex/config:/config
|
||||
- /docker/plex/transcode:/transcode
|
||||
- /media:/media
|
||||
restart: unless-stopped
|
||||
mem_limit: 4096m
|
||||
mem_reservation: 2048m
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
|
||||
tautulli:
|
||||
image: lscr.io/linuxserver/tautulli:latest
|
||||
container_name: tautulli
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${GUID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/tautulli/config:/config
|
||||
ports:
|
||||
- 8181:8181
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ Ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
|
||||
|
||||
```yaml [compose.yaml]
|
||||
services:
|
||||
plex:
|
||||
#...
|
||||
labels:
|
||||
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
|
||||
tautulli:
|
||||
#...
|
||||
labels:
|
||||
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
```
|
||||
::
|
||||
|
||||
Trouvez votre PUID et votre GUID en tapant la commande suivante :
|
||||
|
||||
```bash [Terminal]
|
||||
id nomdutilisateur
|
||||
```
|
||||
Et renseignez le `.env` avec les infos que vous avez trouvées, par exemple :
|
||||
|
||||
```properties [.env]
|
||||
PUID=1000
|
||||
GUID=1000
|
||||
```
|
||||
Déployez la stack.
|
||||
|
||||
L'interface locale est disponible via `http://ipduserveur:32400/web/index.html`. L'interface de Tautulli est joignable via `http://ipduserveur:8181`.
|
||||
|
||||
::warning
|
||||
|
||||
Vous devez impérativement être sur votre réseau local au moment du premier setup de Plex, sans quoi l'url vous renverra sur votre compte Plex sans detecter votre serveur. Un VPN ne vous sauvera pas. Si vous ne pouvez pas faire autrement, [vous pouvez gérer l'installation à distance via un tunnel SSH](https://support.plex.tv/articles/200288586-installation/#toc-2).
|
||||
::
|
||||
|
||||
## Paramétrer Plex
|
||||
Plex propose tout une gamme de film/série gratuitement. Après avoir créé votre compte, et pour ne pas polluer votre bibliothèque, je vous conseille de tout désactiver dans la section _Services en ligne_.
|
||||
|
||||
Ensuite rendez-vous dans la section _Accès à distance_ et choisissez un port manuellement (ici cela sera `1234`). Il est préférable de ne pas garder le port d'origine.
|
||||
|
||||

|
||||
|
||||
- Sur votre routeur, redirigez le port `TCP` source `1234` vers le port `32400`, vers l'IP de votre serveur via [les règles NAT](/fr/general/networking/nat).
|
||||
- Une fois fait, retournez dans Plex afin de vérifier que la connexion est bien opérationnelle
|
||||
|
||||
::caution
|
||||
|
||||
__En cas d'échec :__ vérifiez les règles de votre pare-feu et autorisez le port `32400` de votre serveur.
|
||||
::
|
||||
|
||||
- Si vous avez un abonnement PlexPass et un GPU ou iGPU, activez *l'accélération matérielle* dans la section _Transcodeur_.
|
||||
- Dans la section _Réglages/bibliothèque_, cochez _Analyser ma bibliothèque automatiquement_.
|
||||
- Dans la section _Gérer/bibliothèque_ modifiez ou ajouter les bibliothèque, et choisissez le répertoire `/media/movies` pour les films et `/media/tvseries` pour les séries.
|
||||
|
||||
Et voilà, vous avez un Plex fonctionnel !
|
||||
|
||||
Vous n'avez plus qu'a remplir les dossiers `/media/movies` et `/media/tvseries` sur votre serveur de vos média favoris. Vous pourrez alors télécharger l'application Plex sur vos appareils et lire vos média favoris, chez vous ou à distance !
|
||||
|
||||
::note
|
||||
|
||||
Si pour stocker vos média vous utilisez un disque réseau (par exemple un stockage sur un NAS ou un disque dur externe branché ailleurs sur le réseau), veuillez consulter la section [montage samba](/fr/general/networking/samba) afin que Plex puisse y accéder.
|
||||
::
|
||||
|
||||
## Exposer Tautulli avec Swag
|
||||
Plex n'a pas besoin d'etre exposé, étant joignable directement depuis votre compte Plex sur plex.tv.
|
||||
|
||||
En revanche, vous pouvez désirer exposer Tautulli, afin d'accéder aux stats même si vous n'est pas chez vous, depuis une simple url.
|
||||
::note
|
||||
|
||||
Nous partons du principe que vous avez le sous-domaine `tautulli.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/fr/general/networking/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/fr/serveex/security/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/fr/general/networking/nat).
|
||||
::
|
||||
|
||||
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de Tautulli :
|
||||
|
||||
```yaml [compose.yaml]
|
||||
---
|
||||
services:
|
||||
swag:
|
||||
container_name: # ...
|
||||
# ...
|
||||
networks: # Relie le conteneur au réseau custom
|
||||
# ...
|
||||
- tautulli # Nom du réseau déclaré dans la stack
|
||||
|
||||
networks: # Définit le réseau custom
|
||||
# ...
|
||||
tautulli: # Nom du réseau déclaré dans la stack
|
||||
name: tautulli_default # Nom véritable du réseau externe
|
||||
external: true # Précise que c'est un réseau à rechercher en externe
|
||||
```
|
||||
|
||||
Relancez la stack en cliquant sur "déployer" et patientez le temps que SWAG soit complètement opérationnel.
|
||||
|
||||
::note
|
||||
|
||||
Ici nous partons du principe que le nom du réseau de Tautulli est `tautulli_default`. Vous pouvez vérifier que la connexion est opérationnelle en visitant le dashboard de SWAG en tapant `http://ipduserveur:81`.
|
||||
::
|
||||
|
||||
Copiez en renommant le fichier `tautulli.subdomain.conf.sample` en `tautulli.subdomain.conf` et éditez le :
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::
|
||||
|
||||
```bash [Terminal]
|
||||
sudo cp /docker/swag/config/nginx/proxy-confs/tautulli.subdomain.conf.sample /docker/swag/config/nginx/proxy-confs/tautulli.subdomain.conf
|
||||
sudo nano /docker/swag/config/nginx/proxy-confs/tautulli.subdomain.conf
|
||||
```
|
||||
|
||||
Et vérifiez que la configuration correspond bien à ceci, sinon éditez le fichier :
|
||||
|
||||
```nginx [tautulli.subdomain.conf]
|
||||
## Version 2023/05/31
|
||||
# make sure that your tautulli container is named tautulli
|
||||
# make sure that your dns has a cname set for tautulli
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
|
||||
server_name tautulli.*;
|
||||
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
client_max_body_size 0;
|
||||
|
||||
# enable for ldap auth (requires ldap-location.conf in the location block)
|
||||
#include /config/nginx/ldap-server.conf;
|
||||
|
||||
# enable for Authelia (requires authelia-location.conf in the location block)
|
||||
#include /config/nginx/authelia-server.conf;
|
||||
|
||||
# enable for Authentik (requires authentik-location.conf in the location block)
|
||||
#include /config/nginx/authentik-server.conf;
|
||||
|
||||
location / {
|
||||
# enable the next two lines for http auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
# enable for ldap auth (requires ldap-server.conf in the server block)
|
||||
#include /config/nginx/ldap-location.conf;
|
||||
|
||||
# enable for Authelia (requires authelia-server.conf in the server block)
|
||||
#include /config/nginx/authelia-location.conf;
|
||||
|
||||
# enable for Authentik (requires authentik-server.conf in the server block)
|
||||
#include /config/nginx/authentik-location.conf;
|
||||
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
set $upstream_app tautulli;
|
||||
set $upstream_port 8181;
|
||||
set $upstream_proto http;
|
||||
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
|
||||
|
||||
}
|
||||
|
||||
location ~ (/tautulli)?/api {
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
set $upstream_app tautulli;
|
||||
set $upstream_port 8181;
|
||||
set $upstream_proto http;
|
||||
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
|
||||
|
||||
}
|
||||
|
||||
location ~ (/tautulli)?/newsletter {
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
set $upstream_app tautulli;
|
||||
set $upstream_port 8181;
|
||||
set $upstream_proto http;
|
||||
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
|
||||
|
||||
}
|
||||
|
||||
location ~ (/tautulli)?/image {
|
||||
include /config/nginx/proxy.conf;
|
||||
include /config/nginx/resolver.conf;
|
||||
set $upstream_app tautulli;
|
||||
set $upstream_port 8181;
|
||||
set $upstream_proto http;
|
||||
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
✨ Vous pouvez protéger cette app avec Authentik en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un fournisseur dans Authentik](/fr/serveex/security/authentik#protéger-une-app-par-reverse-proxy).
|
||||
::
|
||||
|
||||
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
|
||||
|
||||
Patientez quelques minutes puis tapez dans votre navigateur `http://tautulli.mondomaine.fr`.
|
||||
|
||||
::caution
|
||||
|
||||
__En cas d'échec :__ vérifiez les règles de votre pare-feu.
|
||||
::
|
||||
|
||||
Et voilà !
|
||||
@@ -3,15 +3,8 @@ title: Qbittorrent
|
||||
description: Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger des torrents de manière sécurisée derrière un VPN sur votre serveur auto-hébergé.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Qbittorrent
|
||||
|
||||
::note
|
||||
🎯 __Objectifs :__
|
||||
|
||||
- Installer et configurer Qbittorrent
|
||||
- Etre relié au réseau bittorent en toute sécurité avec Gluetun et Proton VPN
|
||||
::
|
||||
|
||||

|
||||
|
||||
@@ -73,7 +66,7 @@ services:
|
||||
- GSP_QBT_USERNAME=${ID}
|
||||
- GSP_QBT_PASSWORD=${PW}
|
||||
volumes:
|
||||
- /docker/seedbox/qbittorrent/config:/config
|
||||
- /srv/docker/seedbox/qbittorrent/config:/config
|
||||
- /media:/media
|
||||
depends_on:
|
||||
- gluetun
|
||||
@@ -84,7 +77,7 @@ services:
|
||||
restart: unless-stopped
|
||||
mem_limit: 4g
|
||||
volumes:
|
||||
- /docker/gluetun/config.toml:/gluetun/auth/config.toml:ro
|
||||
- /srv/docker/gluetun/config.toml:/gluetun/auth/config.toml:ro
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
ports:
|
||||
@@ -101,7 +94,7 @@ services:
|
||||
- WIREGUARD_PRIVATE_KEY=${PR_KEY}
|
||||
- SERVER_COUNTRIES=France
|
||||
- PORT_FORWARD_ONLY=on
|
||||
|
||||
|
||||
```
|
||||
|
||||
::tip{icon=""}
|
||||
@@ -134,16 +127,16 @@ A cet effet, ouvrez un terminal. Nous allons à présent générer une clé d'au
|
||||
sudo docker run --rm qmcgaw/gluetun genkey
|
||||
```
|
||||
|
||||
Notez la clé. Puis créez le dossier `/docker/gluetun`
|
||||
Notez la clé. Puis créez le dossier `/srv/docker/gluetun`
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mkdir /docker/gluetun
|
||||
sudo mkdir /srv/docker/gluetun
|
||||
```
|
||||
|
||||
Et créez le fichier `config.toml`
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /docker/gluetun/config.toml
|
||||
sudo nano /srv/docker/gluetun/config.toml
|
||||
```
|
||||
|
||||
Éditez le comme suit en ajoutant la clée que vous avez générée :
|
||||
@@ -205,14 +198,14 @@ Lorsque vous lancez un téléchargement, n'oubliez pas de préciser le bon répe
|
||||
|
||||
::warning
|
||||
|
||||
Qbitorrent n'utilise pas d'authentification multifacteur. Exposer Qbitorrent sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/fr/serveex/security/authentik). Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme [Wireguard](/fr/serveex/security/wireguard).
|
||||
Qbitorrent n'utilise pas d'authentification multifacteur. Exposer Qbitorrent sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/serveex/advanced/authentik). Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme [Wireguard](/serveex/core/wireguard).
|
||||
::
|
||||
|
||||
Afin de lancer des téléchargement hors de chez vous, sans VPN, vous pouvez exposer la webui de Qbittorrent.
|
||||
|
||||
::note
|
||||
|
||||
Nous partons du principe que vous avez le sous-domaine `seedbox.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/fr/general/networking/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/fr/serveex/security/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/fr/general/networking/nat).
|
||||
Nous partons du principe que vous avez le sous-domaine `seedbox.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans [zone DNS](/general/networking/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/general/networking/nat).
|
||||
::
|
||||
|
||||
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de Gluetun :
|
||||
@@ -226,7 +219,7 @@ services:
|
||||
networks: # Relie le conteneur au réseau custom
|
||||
# ...
|
||||
- seedbox # Nom du réseau déclaré dans la stack
|
||||
|
||||
|
||||
networks: # Définit le réseau custom
|
||||
# ...
|
||||
seedbox: # Nom du réseau déclaré dans la stack
|
||||
@@ -243,12 +236,12 @@ Ici nous partons du principe que le nom du réseau de la seedbox est `seedbox_de
|
||||
|
||||
Puis nous allons créer et éditer le fichier `seedbox.subdomain.conf`.
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce pour les allergiques au terminal :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce pour les allergiques au terminal :__ vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /docker/swag/config/nginx/proxy-confs/seedbox.subdomain.conf
|
||||
sudo nano /srv/docker/swag/config/nginx/proxy-confs/seedbox.subdomain.conf
|
||||
```
|
||||
|
||||
Copiez la configuration ci-dessous, en prenant soin de vérifier le port :
|
||||
@@ -304,7 +297,7 @@ server {
|
||||
}
|
||||
```
|
||||
::tip{icon=""}
|
||||
✨ Vous pouvez protéger cette app avec Authentik en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un fournisseur dans Authentik](/fr/serveex/security/authentik#protéger-une-app-par-reverse-proxy).
|
||||
✨ Vous pouvez protéger cette app avec Authentik en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un fournisseur dans Authentik](/serveex/advanced/authentik#protéger-une-app-par-reverse-proxy).
|
||||
::
|
||||
|
||||
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
---
|
||||
title: Automatisation
|
||||
description: Automatiser les téléchargements de médias avec la suite Servarr — Radarr, Sonarr, Bazarr, Prowlarr et Overseerr pour films et séries.
|
||||
description: Automatiser les téléchargements de médias avec la suite Servarr, Radarr, Sonarr, Bazarr, Prowlarr et Overseerr pour films et séries.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
# Servarr
|
||||
|
||||
::note
|
||||
🎯 __Objectifs :__
|
||||
|
||||
Automatiser les téléchargements de films et de séries avec Radarr, Sonarr, Bazarr, Prowlarr et Overseerr.
|
||||
::
|
||||
|
||||
[Servarr](https://wiki.servarr.com/) est une collection d'applications développées dans le but d'automatiser le téléchargement, la mise à jour et la gestions des media. Ici nous allons porter notre attention sur les films et séries avec comme objectif :
|
||||
|
||||
@@ -76,8 +70,8 @@ services:
|
||||
- VERSION=docker
|
||||
- PLEX_CLAIM= #optional
|
||||
volumes:
|
||||
- /docker/plex/config:/config
|
||||
- /docker/plex/transcode:/transcode #optional
|
||||
- /srv/docker/plex/config:/config
|
||||
- /srv/docker/plex/transcode:/transcode #optional
|
||||
- ${MEDIA_PATH}:/media
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
@@ -93,11 +87,11 @@ services:
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/tautulli/config:/config
|
||||
- /srv/docker/tautulli/config:/config
|
||||
ports:
|
||||
- 8181:8181
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: sonarr
|
||||
@@ -106,7 +100,7 @@ services:
|
||||
- PGID=${PGID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/sonarr/config:/config
|
||||
- /srv/docker/sonarr/config:/config
|
||||
- ${MEDIA_PATH}:/media
|
||||
ports:
|
||||
- 8989:8989
|
||||
@@ -120,7 +114,7 @@ services:
|
||||
- PGID=${PGID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/radarr/config:/config
|
||||
- /srv/docker/radarr/config:/config
|
||||
- ${MEDIA_PATH}:/media
|
||||
ports:
|
||||
- 7878:7878
|
||||
@@ -134,7 +128,7 @@ services:
|
||||
- PGID=${PGID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/prowlarr/data:/config
|
||||
- /srv/docker/prowlarr/data:/config
|
||||
ports:
|
||||
- 9696:9696
|
||||
restart: unless-stopped
|
||||
@@ -150,7 +144,7 @@ services:
|
||||
- PGID=${PGID}
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/overseerr/config:/config
|
||||
- /srv/docker/overseerr/config:/config
|
||||
ports:
|
||||
- 5055:5055
|
||||
restart: unless-stopped
|
||||
@@ -164,7 +158,7 @@ services:
|
||||
- PGID=1000
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /docker/bazarr/config:/config
|
||||
- /srv/docker/bazarr/config:/config
|
||||
- ${MEDIA_PATH}:/media
|
||||
ports:
|
||||
- 6767:6767
|
||||
@@ -180,7 +174,7 @@ services:
|
||||
labels:
|
||||
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
|
||||
|
||||
tautulli:
|
||||
#...
|
||||
labels:
|
||||
@@ -389,7 +383,7 @@ Il peut etre intéressant d'exposer Overseerr, si vous souhaitez pouvoir faire d
|
||||
|
||||
::note
|
||||
|
||||
Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` qui pointe vers `films.fr` dans [zone DNS](/fr/general/networking/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/fr/serveex/security/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/fr/general/networking/nat).
|
||||
Nous partons du principe que vous avez le sous-domaine `films.mondomaine.fr` avec un `CNAME` qui pointe vers `films.fr` dans [zone DNS](/general/networking/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/security/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur dans [les règles NAT](/general/networking/nat).
|
||||
::
|
||||
|
||||
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau d'overseer, qui est celui de Plex car dans la stack Plex :
|
||||
@@ -403,7 +397,7 @@ services:
|
||||
networks: # Relie le conteneur au réseau custom
|
||||
# ...
|
||||
- plex # Nom du réseau déclaré dans la stack
|
||||
|
||||
|
||||
networks: # Définit le réseau custom
|
||||
# ...
|
||||
plex: # Nom du réseau déclaré dans la stack
|
||||
@@ -420,12 +414,12 @@ Ici nous partons du principe que le nom du réseau de Tautulli est `plex_default
|
||||
|
||||
Créez le fichier `films.subdomain.conf` et éditez le :
|
||||
|
||||
::tip{icon=""}
|
||||
✨ __Astuce :__ vous pouvez utiliser [File Browser](/fr/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /docker/swag/config/nginx/proxy-confs/films.subdomain.conf
|
||||
sudo nano /srv/docker/swag/config/nginx/proxy-confs/films.subdomain.conf
|
||||
```
|
||||
|
||||
Collez la configuration suivante :
|
||||
|
||||
Reference in New Issue
Block a user