servarr: added qbittorrent and sonarr
This commit is contained in:
parent
1356d52050
commit
8aea0d6f44
|
@ -1,4 +1,7 @@
|
||||||
{ lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption mkEnableOption types;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
options.profile.podman = {
|
options.profile.podman = {
|
||||||
enable = lib.mkEnableOption "podman";
|
enable = lib.mkEnableOption "podman";
|
||||||
|
@ -9,5 +12,33 @@
|
||||||
redmage.enable = lib.mkEnableOption "redmage podman";
|
redmage.enable = lib.mkEnableOption "redmage podman";
|
||||||
redmage-demo.enable = lib.mkEnableOption "redmage-demo podman";
|
redmage-demo.enable = lib.mkEnableOption "redmage-demo podman";
|
||||||
qbittorrent.enable = lib.mkEnableOption "qbittorrent podman";
|
qbittorrent.enable = lib.mkEnableOption "qbittorrent podman";
|
||||||
|
|
||||||
|
servarr = {
|
||||||
|
enable = mkEnableOption "servarr group";
|
||||||
|
qbittorrent.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
real-debrid-manager.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
prowlarr.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
radar.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
sonarr.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
bazarr.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = config.profile.podman.servarr.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
redmage.enable = true;
|
redmage.enable = true;
|
||||||
redmage-demo.enable = true;
|
redmage-demo.enable = true;
|
||||||
qbittorrent.enable = true;
|
qbittorrent.enable = true;
|
||||||
|
servarr.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
docker = {
|
docker = {
|
||||||
|
|
|
@ -30,8 +30,8 @@ in
|
||||||
bantime = "24h"; # Ban IPs for one day on the first ban
|
bantime = "24h"; # Ban IPs for one day on the first ban
|
||||||
bantime-increment = {
|
bantime-increment = {
|
||||||
enable = true; # Enable increment of bantime after each violation
|
enable = true; # Enable increment of bantime after each violation
|
||||||
formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)";
|
# formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)";
|
||||||
# multipliers = "1 2 4 8 16 32 64";
|
multipliers = "1 2 4 8 16 32 64";
|
||||||
maxtime = "168h"; # Do not ban for more than 1 week
|
maxtime = "168h"; # Do not ban for more than 1 week
|
||||||
overalljails = true; # Calculate the bantime based on all the violations
|
overalljails = true; # Calculate the bantime based on all the violations
|
||||||
};
|
};
|
||||||
|
|
|
@ -47,5 +47,6 @@ in
|
||||||
./redmage.nix
|
./redmage.nix
|
||||||
./suwayomi.nix
|
./suwayomi.nix
|
||||||
./ytptube.nix
|
./ytptube.nix
|
||||||
|
./servarr
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
8
system/podman/servarr/default.nix
Normal file
8
system/podman/servarr/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./real-debrid-manager.nix
|
||||||
|
./qbittorrent.nix
|
||||||
|
./sonarr.nix
|
||||||
|
];
|
||||||
|
}
|
56
system/podman/servarr/qbittorrent.nix
Normal file
56
system/podman/servarr/qbittorrent.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
podman = config.profile.podman;
|
||||||
|
qbittorrent = podman.servarr.qbittorrent;
|
||||||
|
name = "qbittorrent-servarr";
|
||||||
|
ip = "10.88.2.2";
|
||||||
|
image = "lscr.io/linuxserver/qbittorrent:latest";
|
||||||
|
root = "/nas/mediaserver/servarr";
|
||||||
|
configVolume = "${root}/qbittorrent";
|
||||||
|
mediaVolume = "${root}/data/torrents";
|
||||||
|
domain = "${name}.tigor.web.id";
|
||||||
|
user = config.profile.user;
|
||||||
|
uid = toString user.uid;
|
||||||
|
gid = toString user.gid;
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = mkIf (podman.enable && qbittorrent.enable) {
|
||||||
|
services.caddy.virtualHosts.${domain}.extraConfig = ''
|
||||||
|
reverse_proxy ${ip}:8080
|
||||||
|
'';
|
||||||
|
|
||||||
|
system.activationScripts."podman-${name}" = ''
|
||||||
|
mkdir -p ${configVolume} ${mediaVolume}
|
||||||
|
chown ${uid}:${gid} ${mediaVolume} ${configVolume}
|
||||||
|
'';
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers.${name} = {
|
||||||
|
inherit image;
|
||||||
|
hostname = name;
|
||||||
|
autoStart = true;
|
||||||
|
environment = {
|
||||||
|
PUID = uid;
|
||||||
|
PGID = gid;
|
||||||
|
TZ = "Asia/Jakarta";
|
||||||
|
WEBUI_PORT = "8080";
|
||||||
|
TORRENTING_PORT = "6882";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"${configVolume}:/config"
|
||||||
|
"${mediaVolume}:/data/torrents"
|
||||||
|
];
|
||||||
|
ports = [
|
||||||
|
"6882:6882"
|
||||||
|
"6882:6882/udp"
|
||||||
|
];
|
||||||
|
extraOptions = [
|
||||||
|
"--ip=${ip}"
|
||||||
|
"--network=podman"
|
||||||
|
];
|
||||||
|
labels = {
|
||||||
|
"io.containers.autoupdate" = "registry";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
49
system/podman/servarr/real-debrid-manager.nix
Normal file
49
system/podman/servarr/real-debrid-manager.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
podman = config.profile.podman;
|
||||||
|
cfg = podman.servarr.real-debrid-manager;
|
||||||
|
name = "real-debrid-manager";
|
||||||
|
ip = "10.88.2.1";
|
||||||
|
image = "docker.io/hyperbunny77/realdebridmanager:latest";
|
||||||
|
volume = "/nas/mediaserver/servarr/real-debrid-manager";
|
||||||
|
domain = "rdm.tigor.web.id";
|
||||||
|
user = config.profile.user;
|
||||||
|
uid = toString user.uid;
|
||||||
|
gid = toString user.gid;
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = mkIf (podman.enable && cfg.enable) {
|
||||||
|
services.caddy.${domain}.extraConfig = ''
|
||||||
|
reverse_proxy ${ip}:5000
|
||||||
|
'';
|
||||||
|
|
||||||
|
system.activationScripts."podman-${name}" = ''
|
||||||
|
mkdir -p ${volume}/{config,downloads,watch}
|
||||||
|
chown -R ${uid}:${gid} ${volume}/{config,downloads,watch}
|
||||||
|
'';
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers.${name} = {
|
||||||
|
inherit image;
|
||||||
|
hostname = name;
|
||||||
|
autoStart = true;
|
||||||
|
user = "${uid}:${gid}";
|
||||||
|
enviroment = {
|
||||||
|
TZ = "Asia/Jakarta";
|
||||||
|
rdmport = "5000";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"${volume}/config:/config"
|
||||||
|
"${volume}/downloads:/downloads"
|
||||||
|
"${volume}/watch:/watch"
|
||||||
|
];
|
||||||
|
extraOptions = [
|
||||||
|
"--network=podman"
|
||||||
|
"--ip=${ip}"
|
||||||
|
];
|
||||||
|
labels = {
|
||||||
|
"io.containers.autoupdate" = "registry";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
50
system/podman/servarr/sonarr.nix
Normal file
50
system/podman/servarr/sonarr.nix
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
podman = config.profile.podman;
|
||||||
|
sonarr = podman.servarr.sonarr;
|
||||||
|
name = "sonarr";
|
||||||
|
ip = "10.88.2.3";
|
||||||
|
image = "lscr.io/linuxserver/sonarr:latest";
|
||||||
|
root = "/nas/mediaserver/servarr";
|
||||||
|
configVolume = "${root}/sonarr";
|
||||||
|
mediaVolume = "${root}/data";
|
||||||
|
domain = "${name}.tigor.web.id";
|
||||||
|
user = config.profile.user;
|
||||||
|
uid = toString user.uid;
|
||||||
|
gid = toString user.gid;
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = mkIf (podman.enable && sonarr.enable) {
|
||||||
|
services.caddy.virtualHosts.${domain}.extraConfig = ''
|
||||||
|
reverse_proxy ${ip}:8989
|
||||||
|
'';
|
||||||
|
|
||||||
|
system.activationScripts."podman-${name}" = ''
|
||||||
|
mkdir -p ${configVolume} ${mediaVolume}
|
||||||
|
chown ${uid}:${gid} ${mediaVolume} ${configVolume}
|
||||||
|
'';
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers.${name} = {
|
||||||
|
inherit image;
|
||||||
|
hostname = name;
|
||||||
|
autoStart = true;
|
||||||
|
environment = {
|
||||||
|
PUID = uid;
|
||||||
|
PGID = gid;
|
||||||
|
TZ = "Asia/Jakarta";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"${configVolume}:/config"
|
||||||
|
"${mediaVolume}:/data"
|
||||||
|
];
|
||||||
|
extraOptions = [
|
||||||
|
"--ip=${ip}"
|
||||||
|
"--network=podman"
|
||||||
|
];
|
||||||
|
labels = {
|
||||||
|
"io.containers.autoupdate" = "registry";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue