Compare commits

..

3 commits

Author SHA1 Message Date
c3163fb861
traefik: add services
All checks were successful
flake check / check (push) Successful in 4m40s
fmt check / check (push) Successful in 1m5s
2024-01-15 00:01:37 -05:00
112cf3877e
haru: remove agh, switch to blocky + unbound 2024-01-15 00:01:16 -05:00
bfb4a893ed
kariru: init lidarr + readarr 2024-01-14 20:58:20 -05:00
9 changed files with 199 additions and 305 deletions

View file

@ -8,8 +8,7 @@ _: {
}; };
environment.etc = { environment.etc = {
"resolv.conf".text = '' "resolv.conf".text = ''
nameserver 1.1.1.1 nameserver 9.9.9.9
nameserver 1.0.0.1
''; '';
}; };
} }

View file

@ -1,54 +0,0 @@
{config, ...}: {
imports = [
./filters.nix
./rewrites.nix
];
sops.secrets.nextdns = {owner = "adguardhome";};
users.users.adguardhome = {
isSystemUser = true;
group = "adguardhome";
};
users.groups.adguardhome = {};
networking.firewall.allowedTCPPorts = [53 3000];
networking.firewall.allowedUDPPorts = [53];
services.adguardhome = {
enable = true;
openFirewall = true;
mutableSettings = true;
settings = {
bind_port = 3000;
bind_host = "192.168.1.103";
os = {
user = "adguardhome";
group = "adguardhome";
};
dns = {
upstream_dns_file = config.sops.secrets.nextdns.path;
enable_dnssec = true;
cache_optimistic = true;
bootstrap_dns = [
"9.9.9.10"
"149.112.112.10"
"2620:fe::10"
"2620:fe::fe:10"
];
};
statistics = {
enabled = true;
interval = "336h";
ignored = [
# i dont wanna see what people are watching
"youporn.com"
"pornhub.com"
"xvideos.com"
"onlyfans.com"
"fansly.com"
"xnxx.com"
];
};
};
};
}

View file

@ -1,170 +0,0 @@
_: {
services.adguardhome.settings = {
filters = [
{
name = "blocklistproject";
enabled = true;
url = "https://blocklistproject.github.io/Lists/ads.txt";
id = 1;
}
{
name = "StevenBlack";
enabled = true;
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts";
id = 2;
}
{
name = "adaway";
enabled = true;
url = "https://adaway.org/hosts.txt";
id = 3;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/AdguardDNS.txt";
id = 4;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/Admiral.txt";
id = 5;
}
{
name = "anudeepND";
enabled = true;
url = "https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt";
id = 6;
}
{
name = "simple_ad";
enabled = true;
url = "https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt";
id = 7;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/Easylist.txt";
id = 8;
}
{
name = "pgl.yoyo.org";
enabled = true;
url = "https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext";
id = 9;
}
{
name = "UncheckyAds";
enabled = true;
url = "https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts";
id = 10;
}
{
name = "bigdargon";
enabled = true;
url = "https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts";
id = 11;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/Easyprivacy.txt";
id = 12;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/Prigent-Ads.txt";
id = 13;
}
{
name = "FadeMind";
enabled = true;
url = "https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts";
id = 14;
}
{
name = "crazy-max";
enabled = true;
url = "https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt";
id = 15;
}
{
name = "hostfiles.frogeye.fr";
enabled = true;
url = "https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt";
id = 16;
}
{
name = "DandelionSprout";
enabled = true;
url = "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt";
id = 17;
}
{
name = "osint.digitalside.it";
enabled = true;
url = "https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt";
id = 18;
}
{
name = "simple_malvertising";
enabled = true;
url = "https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt";
id = 19;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/Prigent-Crypto.txt";
id = 20;
}
{
name = "FadeMind";
enabled = true;
url = "https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts";
id = 21;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/RPiList-Phishing.txt";
id = 22;
}
{
name = "v.fire.blog";
enabled = true;
url = "https://v.firebog.net/hosts/RPiList-Malware.txt";
id = 23;
}
{
name = "zerodot1.gitlab.io";
enabled = true;
url = "https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser";
id = 24;
}
{
name = "StevenBlack";
enabled = true;
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-only/hosts";
id = 25;
}
];
whitelist_filters = [
{
name = "whitelist";
enabled = true;
url = "https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/whitelist.txt";
id = 1;
}
{
name = "whitelist - optionals";
enabled = true;
url = "https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/optional-list.txt";
id = 1;
}
];
};
}

View file

@ -1,78 +0,0 @@
_: {
services.adguardhome.settings = {
dns.rewrites = [
{
domain = "adguardhome.internal.flake.sh";
answer = "192.168.1.103";
}
{
domain = "dashboard.internal.flake.sh";
answer = "192.168.1.98";
}
{
domain = "truenas.internal.flake.sh";
answer = "192.168.1.199";
}
{
domain = "assistant.internal.flake.sh";
answer = "192.168.1.189";
}
{
domain = "udm.internal.flake.sh";
answer = "192.168.1.1";
}
{
domain = "pve.internal.flake.sh";
answer = "192.168.1.37";
}
{
domain = "pbs.internal.flake.sh";
answer = "192.168.1.38";
}
{
domain = "jellyfin.internal.flake.sh";
answer = "192.168.1.98";
}
{
domain = "jellyseerr.internal.flake.sh";
answer = "192.168.1.98";
}
{
domain = "sonarr.internal.flake.sh";
answer = "192.168.1.54";
}
{
domain = "radarr.internal.flake.sh";
answer = "192.168.1.54";
}
{
domain = "bazarr.internal.flake.sh";
answer = "192.168.1.54";
}
{
domain = "whisparr.internal.flake.sh";
answer = "192.168.1.54";
}
{
domain = "prowlarr.internal.flake.sh";
answer = "192.168.1.54";
}
{
domain = "stash.internal.flake.sh";
answer = "192.168.1.98";
}
{
domain = "nextcloud.internal.flake.sh";
answer = "192.168.1.199";
}
{
domain = "wallos.internal.flake.sh";
answer = "192.168.1.98";
}
{
domain = "synology.internal.flake.sh";
answer = "192.168.1.71";
}
];
};
}

View file

@ -0,0 +1,137 @@
{
pkgs,
config,
...
}: {
networking.firewall.allowedTCPPorts = [53 4000];
networking.firewall.allowedUDPPorts = [53];
environment.systemPackages = [pkgs.blocky];
services.blocky = {
enable = true;
settings = {
connectIPVersion = "v4";
upstreamTimeout = "30s";
startVerifyUpstream = false;
minTlsServeVersion = "1.2";
log = {
level = "debug";
privacy = true;
};
ports = {
dns = 53;
http = 4000;
https = 443;
};
upstream.default = ["tcp+udp:127.0.0.1:5335"];
blocking = {
loading = {
strategy = "fast";
concurrency = 8;
};
blackLists = {
ads = [
"https://blocklistproject.github.io/Lists/ads.txt"
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
"https://adaway.org/hosts.txt"
"https://v.firebog.net/hosts/AdguardDNS.txt"
"https://v.firebog.net/hosts/Admiral.txt"
"https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt"
"https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt"
"https://v.firebog.net/hosts/Easylist.txt"
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext"
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts"
"https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts"
];
tracking = [
"https://v.firebog.net/hosts/Easyprivacy.txt"
"https://v.firebog.net/hosts/Prigent-Ads.txt"
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts"
"https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt"
"https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt"
];
malicious = [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt"
"https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt"
"https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt"
"https://v.firebog.net/hosts/Prigent-Crypto.txt"
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts"
"https://v.firebog.net/hosts/RPiList-Phishing.txt"
"https://v.firebog.net/hosts/RPiList-Malware.txt"
];
misc = [
"https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser"
"https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-only/hosts"
];
};
whiteLists = {
default = [
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/whitelist.txt"
"https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/optional-list.txt"
];
};
clientGroupsBlock = {
default = [
"ads"
"tracking"
"malicious"
"misc"
];
};
};
customDNS = {
customTTL = "1h";
mapping = {
# infra
"truenas.internal.flake.sh" = "192.168.1.199";
"assistant.internal.flake.sh" = "192.168.1.189";
"dashboard.internal.flake.sh" = "192.168.1.98";
"udm.internal.flake.sh" = "192.168.1.1";
"pve.internal.flake.sh" = "192.168.1.37";
"pbs.internal.flake.sh" = "192.168.1.38";
# media
"jellyfin.internal.flake.sh" = "192.168.1.98";
"jellyseerr.internal.flake.sh" = "192.168.1.98";
"sonarr.internal.flake.sh" = "192.168.1.54";
"radarr.internal.flake.sh" = "192.168.1.54";
"readarr.internal.flake.sh" = "192.168.1.54";
"lidarr.internal.flake.sh" = "192.168.1.54";
"whisparr.internal.flake.sh" = "192.168.1.54";
"bazarr.internal.flake.sh" = "192.168.1.54";
"prowlarr.internal.flake.sh" = "192.168.1.54";
"stash.internal.flake.sh" = "192.168.1.98";
"nextcloud.internal.flake.sh" = "192.168.1.199";
# misc
"wallos.internal.flake.sh" = "192.168.1.98";
"synology.internal.flake.sh" = "192.168.1.71";
};
};
redis = {
address = "100.94.214.100:6381";
password = "blocky";
database = 2;
required = false;
connectionAttempts = 10;
connectionCooldown = "5s";
};
caching = {
minTime = "2h";
maxTime = "12h";
maxItemsCount = 0;
prefetching = true;
prefetchExpires = "2h";
prefetchThreshold = 5;
};
prometheus = {
enable = true;
path = "/metrics";
};
};
};
}

View file

@ -1,5 +1,6 @@
_: { _: {
imports = [ imports = [
./adguardhome/adguardhome.nix ./blocky.nix
./unbound.nix
]; ];
} }

View file

@ -0,0 +1,37 @@
_: {
services.unbound = {
enable = true;
resolveLocalQueries = false;
settings = {
server = {
verbosity = 0;
interface = "0.0.0.0";
port = 5335;
do-ip4 = true;
do-udp = true;
do-tcp = true;
harden-glue = true;
harden-dnssec-stripped = true;
use-caps-for-id = false;
edns-buffer-size = 1232;
prefetch = true;
num-threads = 2;
so-rcvbuf = "1m";
access-control = [
"10.0.0.0/8 allow"
"172.16.0.0/12 allow"
"192.168.0.0/16 allow"
];
private-address = [
"192.168.0.0/16"
"169.254.0.0/16"
"172.16.0.0/12"
"10.0.0.0/8"
"fd00::/8"
"fe80::/10"
];
};
};
};
}

View file

@ -27,6 +27,16 @@
openFirewall = true; openFirewall = true;
}; };
services.readarr = {
enable = true;
openFirewall = true;
};
services.lidarr = {
enable = true;
openFirewall = true;
};
virtualisation.oci-containers.containers = { virtualisation.oci-containers.containers = {
whisparr = { whisparr = {
image = "hotio/whisparr:nightly-7b7bdb9"; image = "hotio/whisparr:nightly-7b7bdb9";

View file

@ -20,6 +20,16 @@ _: {
entryPoints = ["web"]; entryPoints = ["web"];
service = "radarr"; service = "radarr";
}; };
readarr = {
rule = "Host(`readarr.internal.flake.sh`)";
entryPoints = ["web"];
service = "readarr";
};
lidarr = {
rule = "Host(`lidarr.internal.flake.sh`)";
entryPoints = ["web"];
service = "lidarr";
};
bazarr = { bazarr = {
rule = "Host(`bazarr.internal.flake.sh`)"; rule = "Host(`bazarr.internal.flake.sh`)";
entryPoints = ["web"]; entryPoints = ["web"];
@ -39,6 +49,8 @@ _: {
services = { services = {
sonarr.loadBalancer.servers = [{url = "http://localhost:8989";}]; sonarr.loadBalancer.servers = [{url = "http://localhost:8989";}];
radarr.loadBalancer.servers = [{url = "http://localhost:7878";}]; radarr.loadBalancer.servers = [{url = "http://localhost:7878";}];
readarr.loadBalancer.servers = [{url = "http://localhost:8787";}];
lidarr.loadBalancer.servers = [{url = "http://localhost:8686";}];
bazarr.loadBalancer.servers = [{url = "http://localhost:6767";}]; bazarr.loadBalancer.servers = [{url = "http://localhost:6767";}];
whisparr.loadBalancer.servers = [{url = "http://localhost:6969";}]; whisparr.loadBalancer.servers = [{url = "http://localhost:6969";}];
prowlarr.loadBalancer.servers = [{url = "http://localhost:9696";}]; prowlarr.loadBalancer.servers = [{url = "http://localhost:9696";}];