/home/marc/media posait deux problèmes : /home/marc est 0700 (chaque service
devait recevoir un droit de traversée) et systemd-tmpfiles refuse de créer
quoi que ce soit sous /home/marc (« unsafe path transition », exit 73).
- services/media (nouveau) : dataset nixos/media -> /srv/media, groupe media
(setgid, dossiers 2775/2770), arborescence movies/tvshows/music/books/downloads
- disko.nix : dataset media à côté de marc/nix
- navidrome, jellyfin, kodi : bibliothèque -> /srv/media/{music,movies,tvshows}
- qbittorrent : téléchargements dans le même dataset que la bibliothèque
(permet aux *arr d'importer par lien dur au lieu de copier)
- radarr : dataDir corrigé (pointait sur celui de sonarr par copier-coller),
déplacé hors /home (impossible avec ProtectHome+tmpfiles du module)
- sonarr : dataDir dédié + migration depuis /home/marc/radarr (était figé
depuis le 28/07, port 8006 muet) ; réparé le 27/09/2026
- readarr : bibliothèque -> /srv/media/books
73 lines
3.0 KiB
Nix
73 lines
3.0 KiB
Nix
{
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
# Radarr = le « Sonarr des films ». Il télécharge/renomme et dépose les films
|
|
# dans une racine de bibliothèque, ici /srv/media/movies : le MÊME dossier que
|
|
# la bibliothèque « Films » de Jellyfin. C'est ça, la connexion utile : Jellyfin
|
|
# surveille le dossier en temps réel (surveillance activée par défaut sur un
|
|
# stockage local), donc un film importé apparaît tout seul. Le « Connect »
|
|
# Emby/Jellyfin de Radarr (URL + clé API Jellyfin) ne sert qu'à déclencher en
|
|
# plus un rescan explicite à chaque import.
|
|
{
|
|
services.radarr = {
|
|
enable = true;
|
|
user = "marc";
|
|
group = "users";
|
|
|
|
# PIEGE 1 : ne PAS reprendre `dataDir = "/home/marc/radarr"` (valeur du
|
|
# module sonarr, qui a été copiée-collée ici et là : Sonarr TOURNAIT avec
|
|
# -data=/home/marc/radarr). Les deux partageraient le même dossier de config.
|
|
# PIEGE 2 : un dataDir sous /home/marc est impossible pour Radarr : son
|
|
# module pose ProtectHome=true et crée le dossier par systemd-tmpfiles, qui
|
|
# REFUSE tout chemin sous /home/marc (cf. services/jellyfin, section
|
|
# « unsafe path transition »). D'où ce dataDir hors /home.
|
|
dataDir = "/var/lib/radarr/.config/Radarr";
|
|
|
|
settings = {
|
|
server = {
|
|
urlbase = "localhost";
|
|
port = 8086;
|
|
bindaddress = "*";
|
|
};
|
|
};
|
|
};
|
|
|
|
# Média partagé (cf. services/media) : UMask=0002 pour que les fichiers
|
|
# importés soient modifiables par les autres membres du groupe `media`
|
|
# (le module pose 0022 par défaut, d'où le mkForce).
|
|
systemd.services.radarr.serviceConfig.UMask = lib.mkForce "0002";
|
|
|
|
# Exposition publique via Pangolin (newt, site "tower") : radarr.marcpartensky.com
|
|
# -> 127.0.0.1:8086. `site` omis : Pangolin affecte le site qui applique le
|
|
# blueprint. Cle `proxy-resources` + champ `protocol` = schema reellement
|
|
# compris par le Pangolin du VPS (cf. commentaire detaille dans services/newt).
|
|
#
|
|
# SSO Pangolin ACTIVE (contrairement a Jellyfin, qui a besoin de ses clients
|
|
# natifs) : le tunnel newt tape en local, donc Radarr voit les requetes
|
|
# distantes comme locales (127.0.0.1) et sa propre auth
|
|
# "DisabledForLocalAddresses" ne filtrerait RIEN. Sans SSO, l'UI complete et
|
|
# l'API v3 (qui suffit a piloter Radarr) seraient ouvertes a Internet.
|
|
services.newt.blueprint.proxy-resources.radarr = {
|
|
name = "Radarr";
|
|
protocol = "http";
|
|
full-domain = "radarr.marcpartensky.com";
|
|
auth.sso-enabled = true;
|
|
targets = [
|
|
{
|
|
hostname = "127.0.0.1";
|
|
port = 8086;
|
|
method = "http";
|
|
}
|
|
];
|
|
};
|
|
|
|
# Plus de ProtectHome=false ici : depuis que le média est dans /srv/media,
|
|
# Radarr ne touche plus du tout au home de marc (données dans
|
|
# /var/lib/radarr, téléchargements et bibliothèque dans /srv), donc le
|
|
# durcissement du module reste en place.
|
|
|
|
# Pas d'openFirewall : comme les autres *arr, Radarr reste joignable
|
|
# uniquement depuis la machine (et par le tunnel/SSO si on l'expose un jour).
|
|
} |