feat: Configure *arr stack
This commit is contained in:
parent
32849cc5d2
commit
217fee5b3f
1 changed files with 183 additions and 45 deletions
|
|
@ -42,6 +42,104 @@ in {
|
|||
};
|
||||
|
||||
fileSystems = lib.mkIf inUse {
|
||||
"/srv/bazarr-backup" = lib.mkIf cfg.bazarr.enable {
|
||||
device = "192.168.0.11:/mnt/BIG/BACKUP/BAZARR";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/lidarr-backup" = lib.mkIf cfg.lidarr.enable {
|
||||
device = "192.168.0.11:/mnt/BIG/BACKUP/LIDARR";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/prowlarr-backup" = lib.mkIf cfg.prowlarr.enable {
|
||||
device = "192.168.0.11:/mnt/BIG/BACKUP/PROWLARR";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/qbittorrent" = lib.mkIf cfg.qbittorrent.enable {
|
||||
device = "192.168.0.11:/mnt/SMALL/CONFIG/QBITTORRENT";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/radarr-backup" = lib.mkIf cfg.radarr.enable {
|
||||
device = "192.168.0.11:/mnt/BIG/BACKUP/RADARR";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/sonarr-backup" = lib.mkIf cfg.sonarr.enable {
|
||||
device = "192.168.0.11:/mnt/BIG/BACKUP/SONARR";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/torrent" = {
|
||||
device = "192.168.0.11:/mnt/SMALL/MEDIA/TORRENT";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"hard"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/video" = {
|
||||
device = "192.168.0.11:/mnt/SMALL/MEDIA/VIDEO";
|
||||
fsType = "nfs";
|
||||
|
|
@ -55,20 +153,6 @@ in {
|
|||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
|
||||
"/srv/qbittorrent" = {
|
||||
device = "192.168.0.11:/mnt/SMALL/CONFIG/QBITTORRENT";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"rw"
|
||||
"auto"
|
||||
"nfsvers=4.2"
|
||||
"hard"
|
||||
"rsize=1048576" "wsize=1048576"
|
||||
"timeo=600" "retrans=2"
|
||||
"_netdev" "nosuid" "tcp"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Make sure the Docker network exists.
|
||||
|
|
@ -143,42 +227,53 @@ in {
|
|||
};
|
||||
|
||||
virtualisation.oci-containers.containers = {
|
||||
bazarr = lib.mkIf cfg.bazarr.enable {
|
||||
bazarr = let
|
||||
port = 6767;
|
||||
in lib.mkIf cfg.bazarr.enable {
|
||||
hostname = "bazarr";
|
||||
image = "ghcr.io/hotio/bazarr:release-1.4.4";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"6767:6767/tcp"
|
||||
"6767:6767/udp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
# "${toString port}:${toString port}/udp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
||||
"--mount" ''type=volume,source=bazarr-backup,target=/backup,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/mnt/BIG/BACKUP/BAZARR,"volume-opt=o=addr=192.168.0.11,rw,nfsvers=4.2,async,nosuid"''
|
||||
];
|
||||
environment = {
|
||||
PUID = toString config.users.users.bazarr.uid;
|
||||
inherit PGID UMASK;
|
||||
TZ = config.time.timeZone;
|
||||
WEBUI_PORTS = "6767/tcp,6767/udp";
|
||||
WEBUI_PORTS = "${toString port}/tcp,${toString port}/udp";
|
||||
};
|
||||
volumes = [
|
||||
"bazarr-config:/config"
|
||||
"/srv/video:/data"
|
||||
|
||||
"/srv/bazarr-backup:/config/backup"
|
||||
|
||||
"/srv/video/Films:/media/movies"
|
||||
"/srv/video/Series:/media/series"
|
||||
];
|
||||
labels = {
|
||||
"traefik.enable" = "true";
|
||||
"traefik.http.routers.bazarr.rule" = "Host(`bazarr.depeuter.dev`)";
|
||||
"traefik.http.services.bazarr.loadbalancer.server.port" = toString port;
|
||||
};
|
||||
};
|
||||
|
||||
lidarr = lib.mkIf cfg.lidarr.enable {
|
||||
lidarr = let
|
||||
port = 8686;
|
||||
in lib.mkIf cfg.lidarr.enable {
|
||||
hostname = "lidarr";
|
||||
image = "ghcr.io/hotio/lidarr:release-2.5.3.4341";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"8686:8686/tcp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
||||
"--mount" ''type=volume,source=lidarr-backup,target=/backup,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/mnt/BIG/BACKUP/LIDARR,"volume-opt=o=addr=192.168.0.11,rw,nfsvers=4.2,async,nosuid"''
|
||||
];
|
||||
environment = {
|
||||
PUID = toString config.users.users.lidarr.uid;
|
||||
|
|
@ -187,16 +282,21 @@ in {
|
|||
};
|
||||
volumes = [
|
||||
"lidarr-config:/config"
|
||||
# TODO "data:/data"
|
||||
|
||||
# TODO Fix path
|
||||
"/srv/lidarr-backup:/media/Backups"
|
||||
];
|
||||
};
|
||||
|
||||
prowlarr = lib.mkIf cfg.prowlarr.enable {
|
||||
prowlarr = let
|
||||
port = 9696;
|
||||
in lib.mkIf cfg.prowlarr.enable {
|
||||
hostname = "prowlarr";
|
||||
image = "ghcr.io/hotio/prowlarr:release-1.23.1.4708";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"9696:9696/tcp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
|
@ -207,41 +307,58 @@ in {
|
|||
TZ = config.time.timeZone;
|
||||
};
|
||||
volumes = [
|
||||
# TODO "config:/config"
|
||||
"prowlarr-config:/config"
|
||||
|
||||
"/srv/prowlarr-backup:/config/Backups"
|
||||
];
|
||||
labels = {
|
||||
"traefik.enable" = "true";
|
||||
"traefik.http.routers.prowlarr.rule" = "Host(`prowlarr.depeuter.dev`)";
|
||||
"traefik.http.services.prowlarr.loadbalancer.server.port" = toString port;
|
||||
};
|
||||
};
|
||||
|
||||
qbittorrent = lib.mkIf cfg.qbittorrent.enable {
|
||||
qbittorrent = let
|
||||
port = 10095;
|
||||
in lib.mkIf cfg.qbittorrent.enable {
|
||||
hostname = "qbittorrent";
|
||||
image = "ghcr.io/hotio/qbittorrent:release-4.6.7";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"10095:10095/udp"
|
||||
"10095:10095/tcp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
# "${toString port}:${toString port}/udp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
||||
"--mount" ''type=volume,source=torrents,target=/data,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/mnt/SMALL/MEDIA/TORRENT,"volume-opt=o=addr=192.168.0.11,rw,auto,nfsvers=4.2,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,nosuid,tcp"''
|
||||
];
|
||||
environment = {
|
||||
PUID = toString config.users.users.qbittorrent.uid;
|
||||
inherit PGID UMASK;
|
||||
TZ = config.time.timeZone;
|
||||
WEBUI_PORTS = "10095/tcp,10095/udp";
|
||||
WEBUI_PORTS = "${toString port}/tcp,${toString port}/udp";
|
||||
};
|
||||
volumes = [
|
||||
"/srv/qbittorrent:/config/config"
|
||||
"/srv/video:/media/video"
|
||||
"/srv/qbittorrent:/config"
|
||||
|
||||
"/srv/torrent:/media/cache"
|
||||
];
|
||||
labels = {
|
||||
"traefik.enable" = "true";
|
||||
"traefik.http.routers.qbittorrent.rule" = "Host(`qb.depeuter.dev`)";
|
||||
"traefik.http.services.qbittorrent.loadbalancer.server.port" = toString port;
|
||||
};
|
||||
};
|
||||
|
||||
radarr = lib.mkIf cfg.radarr.enable {
|
||||
radarr = let
|
||||
port = 7878;
|
||||
in lib.mkIf cfg.radarr.enable {
|
||||
hostname = "radarr";
|
||||
image = "ghcr.io/hotio/radarr:release-5.9.1.9070";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"7878:7878/tcp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
|
@ -252,17 +369,29 @@ in {
|
|||
TZ = config.time.timeZone;
|
||||
};
|
||||
volumes = [
|
||||
# TODO "config:/config"
|
||||
# TODO "data:/data"
|
||||
"radarr-config:/config"
|
||||
|
||||
"/srv/radarr-backup:/config/Backups"
|
||||
|
||||
"/srv/torrent:/media/cache"
|
||||
"/srv/video/Films:/media/movies"
|
||||
];
|
||||
labels = {
|
||||
"traefik.enable" = "true";
|
||||
"traefik.http.routers.radarr.rule" = "Host(`radarr.depeuter.dev`)";
|
||||
"traefik.http.services.radarr.loadbalancer.server.port" = toString port;
|
||||
};
|
||||
};
|
||||
|
||||
sonarr = lib.mkIf cfg.sonarr.enable {
|
||||
sonarr = let
|
||||
port = 8989;
|
||||
in lib.mkIf cfg.sonarr.enable {
|
||||
hostname = "sonarr";
|
||||
image = "ghcr.io/hotio/sonarr:release-4.0.9.2244";
|
||||
autoStart = true;
|
||||
ports = [
|
||||
"8989:8989/tcp"
|
||||
# Open ports if you don't use Traefik
|
||||
# "${toString port}:${toString port}/tcp"
|
||||
];
|
||||
extraOptions = [
|
||||
"--network=${networkName}"
|
||||
|
|
@ -273,9 +402,18 @@ in {
|
|||
TZ = config.time.timeZone;
|
||||
};
|
||||
volumes = [
|
||||
# TODO "config:/config"
|
||||
# TODO "data:/data"
|
||||
"sonarr-config:/config"
|
||||
|
||||
"/srv/sonarr-backup:/config/Backups"
|
||||
|
||||
"/srv/torrent:/media/cache"
|
||||
"/srv/video/Series:/media/series"
|
||||
];
|
||||
labels = {
|
||||
"traefik.enable" = "true";
|
||||
"traefik.http.routers.sonarr.rule" = "Host(`sonarr.depeuter.dev`)";
|
||||
"traefik.http.services.sonarr.loadbalancer.server.port" = toString port;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue