From 9f7a144459a38f8939bee3ad2fef9228c602d39d Mon Sep 17 00:00:00 2001 From: Truxnell <19149206+truxnell@users.noreply.github.com> Date: Thu, 18 Apr 2024 21:18:37 +1000 Subject: [PATCH] feat: adguard tweaks (#108) * feat: adguard tweaks * hacking docs * chore: update zfs scrib int * hack * feat: warning for adguard schema mismatch --------- Co-authored-by: Truxnell <9149206+truxnell@users.noreply.github.com> --- docs/includes/abbreviations.md | 16 +- docs/includes/assets/motd.png | Bin 0 -> 56055 bytes docs/maintenance/backups.md | 37 +++- docs/motd.md | 7 +- docs/motd.png | Bin 152746 -> 0 bytes docs/network/dns.md | 3 + docs/vm/faq.md | 2 +- .../nixos/containers/arr/lidarr/default.nix | 6 +- .../nixos/containers/arr/prowlarr/default.nix | 6 +- .../nixos/containers/arr/radarr/default.nix | 6 +- .../nixos/containers/arr/readarr/default.nix | 6 +- .../nixos/containers/arr/sonarr/default.nix | 6 +- .../nixos/containers/backrest/default.nix | 6 +- .../nixos/containers/gatus/default.nix | 98 +-------- .../nixos/containers/homepage/default.nix | 27 ++- .../containers/homepage/secrets.sops.yaml | 66 +++--- .../modules/nixos/containers/plex/default.nix | 14 +- .../nixos/containers/qbittorrent/default.nix | 6 +- .../nixos/containers/sabnzbd/default.nix | 6 +- .../nixos/containers/tautulli/default.nix | 13 +- nixos/modules/nixos/lib.nix | 21 ++ .../nixos/services/adguardhome/default.nix | 205 ++++++++++++++---- .../services/adguardhome/secrets.sops.yaml | 71 ++++++ .../nixos/services/glances/default.nix | 10 +- .../nixos/services/powerdns/default.nix | 27 ++- .../nixos/services/traefik/default.nix | 14 +- nixos/modules/nixos/system/default.nix | 1 - .../nixos/system/technitium-dns/default.nix | 86 -------- nixos/modules/nixos/system/zfs.nix | 2 + nixos/profiles/role-server.nix | 6 +- 30 files changed, 438 insertions(+), 336 deletions(-) create mode 100644 docs/includes/assets/motd.png delete mode 100644 docs/motd.png create mode 100644 docs/network/dns.md create mode 100644 nixos/modules/nixos/services/adguardhome/secrets.sops.yaml delete mode 100644 nixos/modules/nixos/system/technitium-dns/default.nix diff --git a/docs/includes/abbreviations.md b/docs/includes/abbreviations.md index b4db56b..e567779 100644 --- a/docs/includes/abbreviations.md +++ b/docs/includes/abbreviations.md @@ -1,8 +1,8 @@ -*[CI]: Continuous Integration -*[PR]: Pull Request -*[HASS]: Home-assistant -*[k8s]: Kubernetes -*[YAML]: Yet Another Markup Language -*[JSON]: JavaScript Object Notation -*[ZFS]: Originally 'Zettabyte File System', a COW filesystem. -*[COW]: Copy on Write +_[CI]: Continuous Integration +_[PR]: Pull Request +_[HASS]: Home-assistant +_[k8s]: Kubernetes +_[YAML]: Yet Another Markup Language +_[JSON]: JavaScript Object Notation +_[ZFS]: Originally 'Zettabyte File System', a COW filesystem. +_[COW]: Copy on Write diff --git a/docs/includes/assets/motd.png b/docs/includes/assets/motd.png new file mode 100644 index 0000000000000000000000000000000000000000..b82720aee0299d13c51f895d74ca16d7eed470f4 GIT binary patch literal 56055 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 )ysXS=$!a$vlS*!BEH?eH2my$Sw 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 z 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≧)3=BVE{c{02Z!bT^Nf@-@z>uRYC9va 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
c)p*1xWqVzJyO4!GeB{VGVMp&oVgR2_{|Z#P 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 literal 0 HcmV?d00001 diff --git a/docs/maintenance/backups.md b/docs/maintenance/backups.md index cb60339..31a26b9 100644 --- a/docs/maintenance/backups.md +++ b/docs/maintenance/backups.md @@ -32,11 +32,38 @@ Backups are created per-service in each services module. This is largely done wi NixOS will create a service + timer for each job - below shows the output for a prowlarr local/remote backup. ```bash -truxnell@daedalus ~> systemctl list-unit-files | grep restic-backups-prowlarr -restic-backups-prowlarr-local.service linked enabled -restic-backups-prowlarr-remote.service linked enabled -restic-backups-prowlarr-local.timer enabled enabled -restic-backups-prowlarr-remote.timer enabled enabled +# Confirming snapshot taken overnight - we can see 2AM +truxnell@daedalus ~> systemctl status restic_nightly_snapshot.service +○ restic_nightly_snapshot.service - Nightly ZFS snapshot for Restic + Loaded: loaded (/etc/systemd/system/restic_nightly_snapshot.service; linked; preset: enabled) + Active: inactive (dead) since Wed 2024-04-17 02:00:02 AEST; 5h 34min ago + Duration: 61ms +TriggeredBy: ● restic_nightly_snapshot.timer + Process: 606080 ExecStart=/nix/store/vd0pr3la91pi0qhmcn7c80rwrn7jkpx9-unit-script-restic_nightly_snapshot-start/bin/restic_nightly_snapshot-start (code=exited, status=0/SUCCESS) + Main PID: 606080 (code=exited, status=0/SUCCESS) + IP: 0B in, 0B out + CPU: 21ms +# confirming local snapshot occured - we can see 05:05AM +truxnell@daedalus ~ [1]> sudo restic-prowlarr-local snapshots +repository 9d9bf357 opened (version 2, compression level auto) +ID Time Host Tags Paths +--------------------------------------------------------------------------------------------------------------------- +293dad23 2024-04-15 19:24:37 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +24938fe8 2024-04-16 12:42:50 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +442d4de3 2024-04-17 05:05:04 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +--------------------------------------------------------------------------------------------------------------------- +3 snapshots + +# confirming remote snapshot occured - we can see 4:52AM +truxnell@daedalus ~> sudo restic-prowlarr-remote snapshots +repository 30b7eef0 opened (version 2, compression level auto) +ID Time Host Tags Paths +--------------------------------------------------------------------------------------------------------------------- +e7d933c4 2024-04-15 22:07:09 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +aa605c6b 2024-04-16 02:39:47 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +68f91a20 2024-04-17 04:52:59 daedalus /persist/.zfs/snapshot/restic_nightly_snap/containers/prowlarr +--------------------------------------------------------------------------------------------------------------------- +3 snapshots ``` NixOS (as of 23.05 IIRC) now provides shims to enable easy access to the restic commands with the correct env vars mounted same as the service. diff --git a/docs/motd.md b/docs/motd.md index 93b8323..f430618 100644 --- a/docs/motd.md +++ b/docs/motd.md @@ -5,7 +5,12 @@ Why not include a nice message of the day for each server I log into? The below gives some insight into what the servers running, status of zpools, usage, etc. While not show below - thankfully - If a zpool error is found the status gives a full `zpool status -x` debrief which is particulary eye-catching upon login. -![Alt text](motd.png) +I've also squeezed in a 'reboot required' flag for when the server had detected its running kernel/init/systemd is a different version to what it booted with - useful to know when long running servers require a reboot to pick up new kernel/etc versions. + +
+![Screenshot of message of the day prompt on login to server](../includes/assets/motd.png) +
Message of the day
+
Code TLDR diff --git a/docs/motd.png b/docs/motd.png deleted file mode 100644 index 9f815481b6acab448c1d7c58c5428eaed021bee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152746 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

Andk%fV19!p+0Xf@a+Z) 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 Oe~PkdGNmtG2mTk$7^5Qq diff --git a/docs/network/dns.md b/docs/network/dns.md new file mode 100644 index 0000000..56ff993 --- /dev/null +++ b/docs/network/dns.md @@ -0,0 +1,3 @@ +2 x adguard -> powerdns (authoritive) -> (quad9 || mullvad) +note reverse dns (in.arpa) and split brain setup. +dnssec diff --git a/docs/vm/faq.md b/docs/vm/faq.md index 7319a55..5b106af 100644 --- a/docs/vm/faq.md +++ b/docs/vm/faq.md @@ -1,3 +1,3 @@ ## Why not recurse the module folder -Imports are special in NIX and its important that they are definet at runtime for lazy evaluation - if you do optional/coded imports not everything is avaliable for evaluating. +Imports are special in NIX and its important that they are defined at runtime for lazy evaluation - if you do optional/coded imports not everything is available for evaluating. diff --git a/nixos/modules/nixos/containers/arr/lidarr/default.nix b/nixos/modules/nixos/containers/arr/lidarr/default.nix index 99869f8..5737bc3 100644 --- a/nixos/modules/nixos/containers/arr/lidarr/default.nix +++ b/nixos/modules/nixos/containers/arr/lidarr/default.nix @@ -65,7 +65,7 @@ in Lidarr = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Music management"; container = "${app}"; widget = { @@ -77,12 +77,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/arr/prowlarr/default.nix b/nixos/modules/nixos/containers/arr/prowlarr/default.nix index 0e8306e..9325778 100644 --- a/nixos/modules/nixos/containers/arr/prowlarr/default.nix +++ b/nixos/modules/nixos/containers/arr/prowlarr/default.nix @@ -62,7 +62,7 @@ in Prowlarr = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Content locator"; container = "${app}"; widget = { @@ -74,12 +74,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/arr/radarr/default.nix b/nixos/modules/nixos/containers/arr/radarr/default.nix index 2a9fad1..29c97cb 100644 --- a/nixos/modules/nixos/containers/arr/radarr/default.nix +++ b/nixos/modules/nixos/containers/arr/radarr/default.nix @@ -64,7 +64,7 @@ in Radarr = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Movie management"; container = "${app}"; widget = { @@ -76,12 +76,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/arr/readarr/default.nix b/nixos/modules/nixos/containers/arr/readarr/default.nix index 389b33f..c548291 100644 --- a/nixos/modules/nixos/containers/arr/readarr/default.nix +++ b/nixos/modules/nixos/containers/arr/readarr/default.nix @@ -63,7 +63,7 @@ in Readar = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Book management"; container = "${app}"; widget = { @@ -75,12 +75,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/arr/sonarr/default.nix b/nixos/modules/nixos/containers/arr/sonarr/default.nix index cc76579..10fc304 100644 --- a/nixos/modules/nixos/containers/arr/sonarr/default.nix +++ b/nixos/modules/nixos/containers/arr/sonarr/default.nix @@ -66,7 +66,7 @@ in Sonarr = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "TV show management"; container = "${app}"; widget = { @@ -78,12 +78,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/backrest/default.nix b/nixos/modules/nixos/containers/backrest/default.nix index 4a64b14..b3efc3b 100644 --- a/nixos/modules/nixos/containers/backrest/default.nix +++ b/nixos/modules/nixos/containers/backrest/default.nix @@ -56,19 +56,19 @@ in Backrest = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Local restic backup browser"; container = "${app}"; }; } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "infrastructure"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/gatus/default.nix b/nixos/modules/nixos/containers/gatus/default.nix index 7dc3d6c..76c383b 100644 --- a/nixos/modules/nixos/containers/gatus/default.nix +++ b/nixos/modules/nixos/containers/gatus/default.nix @@ -1,6 +1,7 @@ { lib , config , pkgs +, self , ... }: with lib; @@ -15,11 +16,12 @@ let persistentFolder = "${config.mySystem.persistentFolder}/${appFolder}"; containerPersistentFolder = "/config"; extraEndpoints = [ + # TODO refactor these out into their own file or fake host? { name = "firewall"; group = "servers"; url = "icmp://unifi.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } @@ -27,7 +29,7 @@ let name = "pikvm"; group = "servers"; url = "icmp://pikvm.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } @@ -35,7 +37,7 @@ let name = "octoprint"; group = "servers"; url = "icmp://prusa.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } @@ -43,7 +45,7 @@ let name = "icarus"; group = "k8s"; url = "icmp://icarus.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } @@ -51,7 +53,7 @@ let name = "xerxes"; group = "k8s"; url = "icmp://xerxes.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } @@ -59,96 +61,18 @@ let name = "shodan"; group = "k8s"; url = "icmp://shodan.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; alerts = [{ type = "pushover"; }]; conditions = [ "[CONNECTED] == true" ]; } - { - name = "daedalus"; - group = "servers"; - url = "icmp://daedalus.${config.mySystem.internalDomain}"; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[CONNECTED] == true" ]; - } - { - name = "dns01 external dns"; - group = "dns"; - url = "dns01.${config.mySystem.internalDomain}"; - dns = { - query-name = "cloudflare.com"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - { - name = "dns02 external dns"; - group = "dns"; - url = "dns02.${config.mySystem.internalDomain}"; - dns = { - query-name = "cloudflare.com"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - { - name = "dns01 internal dns"; - group = "dns"; - url = "dns01.${config.mySystem.internalDomain}"; - dns = { - query-name = "unifi.${config.mySystem.internalDomain}"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - { - name = "dns02 internal dns"; - group = "dns"; - url = "dns02.${config.mySystem.internalDomain}"; - dns = { - query-name = "unifi.${config.mySystem.internalDomain}"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - { - name = "dns01 split DNS"; - group = "dns"; - url = "dns01.${config.mySystem.internalDomain}"; - dns = { - query-name = "${app}.trux.dev"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - { - name = "dns02 split DNS"; - group = "dns"; - url = "dns02.${config.mySystem.internalDomain}"; - dns = { - query-name = "${app}.trux.dev"; - query-type = "A"; - }; - interval = "30s"; - alerts = [{ type = "pushover"; }]; - conditions = [ "[DNS_RCODE] == NOERROR" ]; - } - ] ++ config.mySystem.services.gatus.monitors; + ] ++ builtins.concatMap (cfg: (cfg.config.mySystem.services.gatus.monitors)) + (builtins.attrValues self.nixosConfigurations); configAlerting = { + # TODO really should make this libdefault and let modules overwrite failure-threshold etc. pushover = { title = "${app} Internal"; application-token = "$PUSHOVER_APP_TOKEN"; diff --git a/nixos/modules/nixos/containers/homepage/default.nix b/nixos/modules/nixos/containers/homepage/default.nix index 5e808e9..1c7b333 100644 --- a/nixos/modules/nixos/containers/homepage/default.nix +++ b/nixos/modules/nixos/containers/homepage/default.nix @@ -1,6 +1,7 @@ { lib , config , pkgs +, self , ... }: with lib; @@ -23,7 +24,7 @@ let showStats = true; disableCollape = true; cardBlur = "md"; - statusStyle = "dot"; + statusStyle = "none"; datetime = { text_size = "l"; @@ -101,7 +102,7 @@ let { "UDMP" = { href = "https://unifi.${config.mySystem.internalDomain}"; - ping = "https://unifi.${config.mySystem.internalDomain}"; + description = "Unifi Dream Machine Pro"; icon = "ubiquiti"; widget = { @@ -144,7 +145,7 @@ let { "Prusa Octoprint" = { href = "http://prusa.${config.mySystem.internalDomain}:5000"; - ping = "http://prusa.${config.mySystem.internalDomain}:5000"; + description = "Prusa MK3s 3D printer"; icon = "octoprint"; widget = { @@ -155,10 +156,20 @@ let }; } ]; + services = [ - { Infrastructure = cfg.infrastructure-services ++ extraInfrastructure; } - { Home = cfg.home-services ++ extraHome; } - { Media = cfg.media-services; } + { + Infrastructure = builtins.concatMap (cfg: (cfg.config.mySystem.services.homepage.infrastructure-services)) + (builtins.attrValues self.nixosConfigurations) ++ extraInfrastructure; + } + { + Home = builtins.concatMap (cfg: (cfg.config.mySystem.services.homepage.home-services)) + (builtins.attrValues self.nixosConfigurations) ++ extraHome; + } + { + Media = builtins.concatMap (cfg: (cfg.config.mySystem.services.homepage.media-services)) + (builtins.attrValues self.nixosConfigurations); + } ]; servicesFile = builtins.toFile "homepage-config.yaml" (builtins.toJSON services); emptyFile = builtins.toFile "docker.yaml" (builtins.toJSON [{ }]); @@ -287,11 +298,11 @@ in ]; }; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "infrastructure"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/homepage/secrets.sops.yaml b/nixos/modules/nixos/containers/homepage/secrets.sops.yaml index 31ea93f..7014094 100644 --- a/nixos/modules/nixos/containers/homepage/secrets.sops.yaml +++ b/nixos/modules/nixos/containers/homepage/secrets.sops.yaml @@ -1,6 +1,6 @@ services: homepage: - env: ENC[AES256_GCM,data:Oz5OZipRWFnZx4kEvSSHKEOG8YipOc4m4JMA5fd3RZ7nRwSSotADxM8z/6Va6lsjde2OcN3IckJ09MJYT0+a3+WnWsR48E7Uh9H5617H6bb1a5h0BZaHMKkulLIWsWS1K+qNlt45bGsTeLQNdDJTekcgzzHRB3GGwt0Qj+pmDXyaUmMLFLjdulfT9IlBW3QAjjtZx/jBwzpwNG4kBTuRC9pKik8L/OjqZ2Wrx/TmQ45RLQ4o2Vne86CB2/NBj7xLXH7jE7/UhcJY68Mr6DEevecA0cw0c99Ytble1GdpCcj0mb0pL9aD9USighjtIjhljnFKBx+ZvO1UVqA9L5wlSIQeGrBpn45oHOgKG/KTBYRLgCYSHOfUhAA+Zp3vWdajiQ2LPsLpNp1AGROu7ea2iJuim7AYfaXdO320i8jnZCLSPiBXd2DOo+AeqpV+9kbg3Vx4tt0SgIWtSA88oMzm5Lz4Wd5ddIuvuCBUEMnYcdzXBtOO3DgIOvi4AUcV4l2VHCp4iU+ZSvEybF0M54omYsw/yeXkIeYyTY7SLqKxhenrSkG/KXVdPB50zYpXu19/r2qccgPTFj37kxdDCX4Nz64r9ecikqZu5g2paNMINOV/ha/UbehkzdJY/RsPKgU4GSuHxqWEmPzREcUPHpx4HQP6EvS4IPzelg0ZZ0qe77f6hdQAXDux3WYuvy+00PAN+iIhxy4ozE0y8kKtEyFnfqowlzyrjIAyIN6JDiQzQnJyU7sRu6kMkX4K3zJoIdNKkEthJYeOsrcmB67hWD7INtPCy62gc4mgUVux+huZuBBjqw==,iv:fGF0WzgDIR/Z4s7/njbPtP8kk7h1VGz2g3MLN5v7gSw=,tag:n9NAbizmQh2lDf6B+fDGKw==,type:str] + env: ENC[AES256_GCM,data:vFNwH73hmfiyVb2kGS0L+FbJ8RtmFPKdUHtqot3Qah5t9LvD1TsBKGRfmvpqEtEsrOzTs0cexzaSYWk9U32c7DGTZpxOUO4pJf917jX1aE1e2jNd++pO9wve2EvyVTnLFUQPzY1c5oYQZlS7EpNAB4pbZowqVRlElDuuiXd4Z78lhQXoUUEcpQo7nCJ2eSj6cmiHEleuE2Kgik2RcWPzsWdR2X/OppZHCI29s/RzuXtt4/J2GcaQrvYwtmejn2GmKwD5HqQMZfJZJjcjO30RzFiFumPfMytK+lmAfohvTztfl7denu1pAQzriSUZ4UYUDmfGXAs+19Ttby7yCB1W3/Hu444PRAUmE5qn2EQhWe8BZ9UgUhfJ9yFPYcMO9fiLNRfF6PnGPQRqoKx+OIAe80tjXZAF600yvvrzXvAoFIxuViMyqk6fth7lo/VKA/sWgZPQayMJ4v69845MAT/Prlc0FGg6f/LYJLRDX+7C5JRo/ZXFaAjwPFB5nLfPkHNWIvowWfALJVparX6mmmF8VynDxwXQ0dDszanr9bzjTiMG6VyshdHUjufzUxYExFOR2869LKHGxIadnMvtWUVvfTKe4BtXKGp5tpi07Bo5kMyva0UEpGBxGQVp656i9OqD6ulT0xWsC5nyfsq7+3RACrBqvGen9AME5+xrz4zaditXp8s+irKTrq3Q5Ge9cV2a9qIJ/LlBnNGjfcM9Mh7xs3pw9pnhF1r9nxcfinPL82JsLXourWS2/s7Nzl/p1VxFCic70k6Y1Ym+meYwdsy+YCJlQfMmMZcuqbhe9yAdwtcvPQRJnIDW9Qy04AK/KUcVryC4acPb7MsiwxvUjfrf/8cU7dWQcf9voF4K7HgjGsBAjE4dzRqAPANIVUgYaZfaQPI=,iv:V4Kwqmt0WwYJZ9LDp4DpTuddpi4Zses57cM+gHfB+tA=,tag:iV7QW1A2kCrUA7pzmVoerg==,type:str] sops: kms: [] gcp_kms: [] @@ -10,59 +10,59 @@ sops: - recipient: age1lj5vmr02qkudvv2xedfj5tq8x93gllgpr6tzylwdlt7lud4tfv5qfqsd5u enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwb2JCV1BpWXMrWXdxaElB - TDBrb0UxVXBxaHhWNDdPVUt6dk9lOVYxYmxjCit3OGVvVytmM0xoMUgyL0pYU3VW - engydEpENEJpdGJGMFBiWTcyWGtpeFEKLS0tIDJPMjM2cnFSdDVoWU1mMEl0bHZX - YUEwR2hmNHdDZDdxcmc3OW9rN0J5Q1UK7YIJgv4mNUUJZd+1jJBcYdBLB/g+NEJW - 8nLi1IgSHRMryYOviyu1lJ7zd27pMhjjTkajaIymwi2T1txug7xwAQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6ZDJpS01TWmMxMGp3eHAr + aWpWWi9OREV4L3M4N1JhMC9zdHBqaHZjWjJBCmlUNWordUNkVk5NUmMyLy9wQUVL + WU8rUE44Y0VXdngrUlg1S1RaQWxPOU0KLS0tIGozK3JsZUlqQkpjandXVDBvMGVx + NUl2enFMcW9zc0hWUXdrUUNzUzEzYzQKI2U2w5DipoczfO9NeMcLr57KZ2QqtLLa + V5q/Wiy3F/+OIxWNBupG6UZLj6N1x3aVw3Qe1FzQGnDaiKy/y8tI1Q== -----END AGE ENCRYPTED FILE----- - recipient: age17edew3aahg3t5nte5g0a505sn96vnj8g8gqse8q06ccrrn2n3uysyshu2c enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3b0RTRHd0enhXcEFtZXZ5 - Tk8zRWRYbm1UOHRjMFgyRGRQb016bzYzWVRJCjFWbVhZT3p2ZjhCcjFRR05TZnRK - KzkxT1plTWVzSythQWFsZXh1Z0ZzRjAKLS0tIEU1cWxZcWg1bTRrYkpWSFFNUkJ2 - NlROTG9YZWhZeTQ1djEvaUw3NWpKZWsKvWkqBd2nMSnSlwsMf9Y/H/7lZu3TYR6C - S2DayCyLe6JfE3sgTIDiFo9awwTZYM9z+HXdMffnlKdBd1UTGRvH0Q== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuVXQ1eW5SSnFmd0FGbHlM + emJCK05kemRkdll4TzlpUHRMcDYxNnpVd1JFCnd5MElKbE9IV2o4dFFZYVhQOGdW + SXZwUmtaTWo1Y0VSV2F6NFROS1ErVEEKLS0tIDFHeGwyMFI0cmtkQllkM1ZnRDh2 + akVGZVRlM2xlcExEQWJWMml0K0dGWUkKJ7rcTIfMQvO0n4zMkTt3G0toRxhamtxM + zZvl67/U32na4ypKe70+L7GrEppUcb7ovr45fFoBE07lmJHpp1AQ8Q== -----END AGE ENCRYPTED FILE----- - recipient: age1u4tht685sqg6dkmjyer96r93pl425u6353md6fphpd84jh3jwcusvm7mgk enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvQS9jQUJDU2xHVFM5YXFU - alBvZjh0TnZEb2ZRTnNHazFEcU9JOHRGWFhnCnpWYlhpVWZHTFQ4S2k5NERNNDE1 - bTF5U1htYTRtQjFmclJCNXhCcnFlS0UKLS0tIHpGaE1odmJCSWdRWU1zWnpxRFJo - cWJXQWpFWVk1N3JFeS9zZkt3RGRlMHcKieWN/vbbTCscmY+jAoY2qU46+N+susmN - AlIHI5B65LlHZ8oAVsfGDrSb4u81dM2sPqg28iY+Ij32AuWBCTWfIQ== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0N3N0bDRTdmI5OUJieHdk + amh5MVE5bVRkWDU1STBScTFITWlUSk5veUI4CnFGNi9CaG1zQ0VHZldVWjEzUi9S + aXZ2OTlpcmpjMExvS0ZYNXQzdEtuQVUKLS0tIFo0QXdyL0s0RmZhVFI0SXU5U0Qr + SERFVWFuVHpZeFpjNUM1YkVtS2ZkdWcKVMlnbImup10EOwcboHs4eUyUA21HIevR + uU2YkJiu3jH9QK+iyRz6MNI1ykKQKKCeic3Y+38YVLwGhOy/Fy0cEQ== -----END AGE ENCRYPTED FILE----- - recipient: age1cp6vegrmqfkuj8nmt2u3z0sur7n0f7e9x9zmdv4zygp8j2pnucpsdkgagc enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTMFZLS1IrT3BzelZYVlAw - M1ExNXVPcDlqNzIvREFOMDVzYk82L0h5YUNBClVvWkxDdnFrU2RDSTBWOWNiVWVL - bmprdEJsT2Yvcnc2cGdpUEllYS9adDQKLS0tIHdxT3JPd0tkakNpalVKU2NMUjln - bCs4S2ZyZDJZRUFqY3JRcHI1UDZGTzAKlW2nKct0J9LpE1WNE73fp0OUpLXesgNx - V8QJ4cNix3V1TX7pPsGOt+driC83kGEjj/jukvrUCiT9IHscDOpY3A== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJNU1MbWhnd2lNbUVML1Jx + MHRBakJwN29iM08vMlV5S1J2TmgwZnlJM204CnBxRUZMTE1BamhHYTM2dzFlZ3pN + QkpFTUhteFNPdklHcGk3YXZWc3FLR2cKLS0tIEV0S05yM09LTkhKZHN0UzRaaWVZ + Qm9PeWQvcHVmRlhTMXBhK1BkaUJBUm8Kbjf/8SPQuVDzUKBtFaYH7dDCvBJG1eJc + RP6GTA5X3yMetkmOCmFqwMsPlglDrXdPhgDlEr21jkrKrmPz+depmg== -----END AGE ENCRYPTED FILE----- - recipient: age1j2r8mypw44uvqhfs53424h6fu2rkr5m7asl7rl3zn3xzva9m3dcqpa97gw enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAySG54VVEzOVY2TGNGTGdn - bVVaMUtqamwwamRRQk9qYmpzdk9YbzEvYTAwCkpIb1pXb3VKdUxPNUdyRnZVNWJU - cGIzVDNHQWlSSkkxMXJ0RGp1MFNRckEKLS0tIHNSQ0t6SkJYVWZramkwZkUxRGpw - SnZRYUJzMGJwZTFYc0J3Slcrd2ZPYVEKfQ263loKlS0MGe/CCgAiu29trQbR0z/9 - l7ehDvRN+POsckFL12xs/gapkOFIuY9MJ5ngibKVUqVWwGG8cedkRA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlaE5rSU0weTVUMHArRzdU + MU50UGh4QUsrUDFaYTcxV1hVWTR4UlV4TUg4CjRXWVRRaGkrOThXN2RMNFZJK3cw + VzI5SjZyU3hxZnVQRVdyMmdjTTNEWUUKLS0tIEdOajN0RTY5U2YvNm1BaDFNaU0r + UjAxcGhXVXF3U2J5UVJZZUw2RE1STVkKoHLeXECXccCV54SMMC6DCMgT3/x52948 + x2KSBJ6s33JaIUX8l/Q53NjIOvE9PtevPVT88y+xrdoWccvvGV4yfg== -----END AGE ENCRYPTED FILE----- - recipient: age1jpeh4s553taxkyxhzlshzqjfrtvmmp5lw0hmpgn3mdnmgzku332qe082dl enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUcmN3UXRGRlJrODQ3MEpr - SkdaWUJENXVmRG9tZ2I4ZEVXUTJQOVlrRkdFCk5TUWNtZFk4L0MxeVhvQW1sMllP - bHp2cyt2V1R0UmJOQ0laSUpqWEtZcFkKLS0tIGU4c0s5blJPRWIvU1JZTGtURkZh - U2NXcDlaWUNJbm5lV0lVQklwTXowajQK3Sdo0OcVXThYTWBZMd/t7hey2ITfKIDT - pyKaJc2xDzsgKx/bc2DxjElsROPBF+7Z0gYMv7/aOIhkcGEU3lPKsA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXZGlJeVU3UCtjOFFQUXRv + T1ZWOCtFc1d2Wk0rTmRiNkFXcTlQSnBOTFdzCmFOVHU0RnZpVHliNXNlSnRKa1kx + d1dMamMrZzRJQXB6Z2JJZ0FzY1VwTFUKLS0tIHUzV2IzN1BHSlVrNlVpaGhnOUFP + Rnp2UG1IYTk0RWZjY2luTkpyR2JsNGMKUkm0/xUg3yjq44AYxgSZHgon8sMBSn0N + xEdGlN2gpdVTM7ivB4FJrOqalT5KogZc8PQKsAxyja48wv7WXeyS2w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-15T06:36:15Z" - mac: ENC[AES256_GCM,data:AeluQaUlgrC4iYyG/Yqjk4bVv3TWmFYy2uRRN/kFuytjN+TmDlevkWAbQpg9rtJn0f0FohWYvsDB/NNF5uvbDrwwMCqqcUUNs581fxa6QQr89IfXCIlSOCgBKVUtAqH/M1SjHh6K0LxVAlDW5mvr0OvW2WFURDBo45YMMfvoPVs=,iv:1ia1N+rkoTKXmtvEuVyKtZ758PDOfh7FuKOMaoxq49o=,tag:Au6rcmAKcYLzCvEkWiC2Qg==,type:str] + lastmodified: "2024-04-17T08:04:55Z" + mac: ENC[AES256_GCM,data:F2m/YpyHn+BkDm5W6j3O7GAiD/fqiz58tHX2Bo7rrhHz+nhf+3MhqEBLZm9OoGxpDGgDo1D6VBwNcSCY5Q97NDcum/B2v1CHFVMDRm+/nR6L0lnjtObhOsABtZyxzwyzllHOGJtQSen72wc2lYg0EQYod0xYquCa/dLWD5Ce8hw=,iv:zL9zcUVqR61/87ZfkQ54nLzPT6GNkbTvIXpf+46psxg=,tag:NabVmlZgrANHh9rXi+Tc+Q==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/nixos/modules/nixos/containers/plex/default.nix b/nixos/modules/nixos/containers/plex/default.nix index 7f43a39..cf3e1ae 100644 --- a/nixos/modules/nixos/containers/plex/default.nix +++ b/nixos/modules/nixos/containers/plex/default.nix @@ -57,24 +57,24 @@ in Plex = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Media streaming service"; container = "${app}"; widget = { - type = "${app}"; - url = "https://${app}.${config.mySystem.domain}"; - key = "{{HOMEPAGE_VAR_LIDARR__API_KEY}}"; + type = "tautulli"; + url = "https://tautulli.${config.mySystem.domain}"; + key = "{{HOMEPAGE_VAR_TAUTULLI__API_KEY}}"; }; }; } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; - url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + url = "https://${app}.${config.mySystem.domain}/web/"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/qbittorrent/default.nix b/nixos/modules/nixos/containers/qbittorrent/default.nix index c754837..877d498 100644 --- a/nixos/modules/nixos/containers/qbittorrent/default.nix +++ b/nixos/modules/nixos/containers/qbittorrent/default.nix @@ -62,7 +62,7 @@ in Qbittorrent = { icon = "${app}.png"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Torrent Downloader"; container = "${app}"; widget = { @@ -73,12 +73,12 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/sabnzbd/default.nix b/nixos/modules/nixos/containers/sabnzbd/default.nix index df77816..4d50fc1 100644 --- a/nixos/modules/nixos/containers/sabnzbd/default.nix +++ b/nixos/modules/nixos/containers/sabnzbd/default.nix @@ -60,13 +60,13 @@ in } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/containers/tautulli/default.nix b/nixos/modules/nixos/containers/tautulli/default.nix index e5dfa01..3542678 100644 --- a/nixos/modules/nixos/containers/tautulli/default.nix +++ b/nixos/modules/nixos/containers/tautulli/default.nix @@ -45,26 +45,21 @@ in mySystem.services.homepage.media-services = mkIf cfg.addToHomepage [ { Tautulli = { - icon = "${app}.png"; + icon = "${app}.svg"; href = "https://${app}.${config.mySystem.domain}"; - ping = "https://${app}.${config.mySystem.domain}"; + description = "Plex Monitoring & Stats"; container = "${app}"; - widget = { - type = "${app}"; - url = "https://${app}.${config.mySystem.domain}"; - key = "{{HOMEPAGE_VAR_LIDARR__API_KEY}}"; - }; }; } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ name = app; group = "media"; url = "https://${app}.${config.mySystem.domain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/lib.nix b/nixos/modules/nixos/lib.nix index 6793e6a..f73978b 100644 --- a/nixos/modules/nixos/lib.nix +++ b/nixos/modules/nixos/lib.nix @@ -75,4 +75,25 @@ with lib; } ); + # Will be v. useful when i grok + # https://github.com/ahbk/my-nixos/blob/5fe1521b11422c66fd823b442393b3b044a5a5b8/lib.nix#L5 + # pick a list of attributes from an attrSet + lib.mySystem.pick = attrNames: attrSet: lib.filterAttrs (name: value: lib.elem name attrNames) attrSet; + + # create an env-file (package) that can be sourced to set environment variables + lib.mySystem.mkEnv = name: value: pkgs.writeText "${name}-env" (concatStringsSep "\n" (mapAttrsToList (n: v: "${n}=${v}") value)); + + # loop over an attrSet and merge the attrSets returned from f into one (latter override the former in case of conflict) + lib.mySystem.mergeAttrs = f: attrs: foldlAttrs (acc: name: value: (recursiveUpdate acc (f name value))) { } attrs; + + # Iterate all attrs in base and return + # the merged set from all iterated keys in base from + # return path + # lib.mySystem.mkMergeMap = base: return: builtins.concatMap (cfg: (cfg.return)) (builtins.attrValues base); + } + +# # useful? +# foldlAttrs +# # attrbypath? +# let diff --git a/nixos/modules/nixos/services/adguardhome/default.nix b/nixos/modules/nixos/services/adguardhome/default.nix index ecb0f8e..14018e6 100644 --- a/nixos/modules/nixos/services/adguardhome/default.nix +++ b/nixos/modules/nixos/services/adguardhome/default.nix @@ -6,85 +6,198 @@ with lib; let cfg = config.mySystem.services.adguardhome; + app = "adguard-home"; + yaml_schema_version=23; port = 53; port_webui = 3000; in { options.mySystem.services.adguardhome = { enable = mkEnableOption "Adguard Home"; + addToHomepage = mkEnableOption "Add ${app} to homepage" // { default = true; }; openFirewall = mkEnableOption "Open firewall for ${app}" // { default = true; }; }; - config = mkIf cfg.enable { + config = mkIf cfg.enable { - services.adguardhome = { - enable = true; - mutableSettings = false; - settings = { - bind_host = "0.0.0.0"; - bind_port = port_webui; - auth_attempts = 3; - block_auth_min = 3600; - dns = { - bind_host = "127.0.0.1"; - port = port; - upstream_dns = [ - "https://dns10.quad9.net/dns-query" - "https://doh.mullvad.net/dns-query" - ]; - fallback_dns = [ "https://dns.cloudflare.com/dns-query" ]; - bootstrap_dns = [ - # quad9 - "9.9.9.10" - "149.112.112.10" - "2620:fe::10" - "2620:fe::fe:10" - # cloudflare - "1.1.1.1" - "2606:4700:4700::1111" - ]; - upstream_mode = "load_balance"; - cache_size = 4194304; - cache_ttl_min = 60; - cache_optimistic = true; - use_private_ptr_resolvers = true; - local_ptr_upstreams = [ "localhost:5353" ]; + # Warn if backups are disable and machine isnt a dev box + warnings = mkIf (yaml_schema_version != pkgs.adguardhome.schema_version) [ "WARNING: Adguard upstream YAML schema is version ${builtins.toString pkgs.adguardhome.schema_version}, this config is set to ${builtins.toString config.services.adguardhome.settings.schema_version}"]; + + sops.secrets = { + "system/networking/bind/trux.dev".sopsFile = ./secrets.sops.yaml; + "system/networking/bind/trux.dev".restartUnits = [ "bind.service" ]; + }; + + services.adguardhome = { + enable = true; + + mutableSettings = false; + settings = { + bind_host = "0.0.0.0"; + bind_port = port_webui; + schema_version=yaml_schema_version; # Just to be cautious, defualt is pkgs.adguardhome.schema_version. + + auth_attempts = 3; + block_auth_min = 3600; + + dns = { + # dns server bind deets + bind_host = "127.0.0.1"; + port = port; + + # bootstrap DNS - used for resolving upstream dns deets + bootstrap_dns = [ + # quad9 + "9.9.9.10" + "149.112.112.10" + "2620:fe::10" + "2620:fe::fe:10" + + # cloudflare + "1.1.1.1" + "2606:4700:4700::1111" + ]; + + # upstream DNS + upstream_dns = [ + # split brain dns - forward to local powerdns + "[/trux.dev/]127.0.0.1:5353" + "[/natallan.com/]127.0.0.1:5353" + + # resolve fqdn for local ip's + "[/l.voltaicforge.com/]10.8.10.1" + + # reverse dns setup + "[/in-addr.arpa/]10.8.10.1" # reverse dns lookup to UDMP + "[/ip6.arpa/]10.8.10.1" # reverse dns lookup to UDMP + + # primary dns - quad9 + "https://dns10.quad9.net/dns-query" + + ]; + upstream_mode = "load_balance"; + + # fallback dns - cloudflare and mullvad + fallback_dns = [ + "https://dns.cloudflare.com/dns-query" + "https://doh.mullvad.net/dns-query" + ]; + + # resolving local addresses + local_ptr_upstreams = [ "10.8.10.1" ]; # UDMP router + use_private_ptr_resolvers = true; + + # security + enable_dnssec = true; + + # local cache settings + cache_size = 100000000; # 100MB - unnessecary but hey + cache_ttl_min = 60; + cache_optimistic = true; + + theme = "auto"; + }; - rewrites = [{ - domain = "*.${config.networking.domain}"; - answer = "10.8.10.1"; # UDMP router - }]; filters = [ { + # AdGuard Base filter, Social media filter, Spyware filter, Mobile ads filter, EasyList and EasyPrivacy + enabled = true; + id = 1; name = "AdGuard DNS filter"; url = "https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt"; - enabled = true; } { + # AdAway default blocklist + enabled = true; + id = 2; name = "AdAway Default Blocklist"; url = "https://adaway.org/hosts.txt"; - enabled = true; } { - name = "OISD (Big)"; - url = "https://big.oisd.nl"; + # Big OSID enabled = true; + id = 3; + name = "Big OSID"; + url = "https://big.oisd.nl"; } + { + # 1Hosts Lite + enabled = true; + id = 4; + name = "1Hosts Lite"; + url = "https://o0.pages.dev/Lite/adblock.txt"; + } + { + # HAGEZI Multi Pro + enabled = true; + id = 4; + name = "hagezi multi pro"; + url = "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/adblock/pro.txt"; + } + + + ]; }; }; - }; - networking.firewall = mkIf cfg.openFirewall { + networking.firewall = mkIf cfg.openFirewall { + + allowedTCPPorts = [ port port_webui ]; + allowedUDPPorts = [ port port_webui ]; + + }; + + mySystem.services.gatus.monitors = [ + { + name = "${config.networking.hostName} external dns"; + group = "dns"; + url = "${config.networking.hostName}.${config.mySystem.internalDomain}:${builtins.toString port}"; + dns = { + query-name = "cloudflare.com"; + query-type = "A"; + }; + interval = "1m"; + alerts = [{ type = "pushover"; }]; + conditions = [ "[DNS_RCODE] == NOERROR" ]; + } + { + name = "${config.networking.hostName} internal dns"; + group = "dns"; + url = "${config.networking.hostName}.${config.mySystem.internalDomain}:${builtins.toString port}"; + dns = { + query-name = "unifi.${config.mySystem.internalDomain}"; + query-type = "A"; + }; + interval = "1m"; + alerts = [{ type = "pushover"; }]; + conditions = [ "[DNS_RCODE] == NOERROR" ]; + } + ]; + + mySystem.services.homepage.infrastructure-services = mkIf cfg.addToHomepage [ + { + "Adguard ${config.networking.hostName}" = { + icon = "${app}.svg"; + href = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:${builtins.toString port_webui}"; + description = "DNS Ad blocking"; + container = "Infrastructure"; + widget = + { + type = "adguard"; + url = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:${builtins.toString port_webui}"; + # username = ""; + # password = ""; + }; + }; + } + ]; - allowedTCPPorts = [ port port_webui ]; - allowedUDPPorts = [ port port_webui ]; }; - }; } diff --git a/nixos/modules/nixos/services/adguardhome/secrets.sops.yaml b/nixos/modules/nixos/services/adguardhome/secrets.sops.yaml new file mode 100644 index 0000000..f6b6744 --- /dev/null +++ b/nixos/modules/nixos/services/adguardhome/secrets.sops.yaml @@ -0,0 +1,71 @@ +system: + networking: + bind: + key: ENC[AES256_GCM,data:43QoyVqdwHO6eSgjbjgl28FSlD2xaoNxWpnc5D7g7jj6HaMwkz0tAnmg+g1fxEj1m826wxxqtgBjbMaDPj/hHtqYrgXsIvPShBSUDAyjoLcNFcsr0BhFVQ/ZWCCiI95SScbMTBJVcegf,iv:/R/7Qb+xPQXjYaQbF3NLeA63XAvdctayO5G8pE9bCE4=,tag:roNy7HNjWrIwZjy3BDAedw==,type:str] + trux.dev: ENC[AES256_GCM,data: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,iv:MEA1aXQR/4LFrVOrJmWWwXkbT3FWR8Hp2c4kiw4yv7Y=,tag:FufABt/+oXZCXXw55hvuwA==,type:str] + natallan.com: ENC[AES256_GCM,data:nsivV8P1dSHSN/ty7tvBciKz/9xslQFohHh8fYkgoMy2dRoywaxT4+S3/tl499KP1mepw6E0z8SC3vnj5XzT4kFPEcSoUk6OpZTaqNWlwIU7PsaPys41uK9wszkj4W0J1BdbExC9hn4IkwXJ7iRlMqwSlTc2VlNiu+nhiuixvSdsYWqzGpXFzWzd0oPphq/PmJCM2ZQMbVKTnFSer9oeQBRxJ6lj4XYxO6HxT2XNPkXBnx8dr7vgLSANN8GwdnYHbIZ9XWDhaVw+VY21pXyF0I9tnbuZ5oherqTO9cbZ6NGpYeschs3ep9tpoC7QLnJwbOncfCcCvbKxjbdfRzJ+8Mjv16jAmDyFjQII9tvW7NtJtV1zWM59l62u2d7NAHuaEYE2Gr+UES4+DDKw5n6SoYAgHw6k9jMmrtSUKI8TRaBDBTrbuvnhbZOaYF0kLV2De5HWs2wvR7W58tWkmKejI2xYinpkXjtdF8zESdPjgDImnDobQX03GF7HY7tdbZ0ZtdWMI7fud66Db8TumXN3bbQAx9nOFTaNba49jKjVybwVMeOVKrYbbh3X9SpM+REh6fDN0a4iEgrP4I8YF+PqeAxVFlmHWe8JAICLR3JhU75mVYve3u27XGxX3DhGzvIM/JiifcpOg3Lg1rn1RhWt3Zq+H9ygo4N9Sigk/pT7pBhlm548uibYi7/TFe1I5CXkGGQ+I47CKUJzK934EqN9zZ80qDdQS0AN7cI8hXCXgc7+nVBNc/5cu3y9ubKF7xWyhL3RgwdSbCnthG2EQ7GEMZnhDRdazYtdmZhoJw6MyL/AFVZgbHfAyg==,iv:TLCkT60LTZ2m3gYCz4YQ/XYhvbdZJApoW3OekEVjULI=,tag:ZlxHEZQa/pUwjQF3HdqYdw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1lj5vmr02qkudvv2xedfj5tq8x93gllgpr6tzylwdlt7lud4tfv5qfqsd5u + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6cW5zMXc2Skc0S0lvWXF2 + NE0za1kyOU5GY0Z0QW9hTDVuTWRPd2pTcTBjClhOT0xrYUo4Y2Rtd0dyQU9MeWtq + dHZMWGZhbWtTOUVPMDlhWUdhVEhIZVEKLS0tIG12Ujh6WEVNeUdvVmtuYmZJdVJG + bWZxWXU5TzlYNDZnY1Fua3RGUEJnNUkKMC/png4A565h/S3B2ZVce7LJi1SMDS5n + aYx/nrPTktIe8bCvwF300tNZoZolXONR4awJ9e88uw84t8GYjlNNPw== + -----END AGE ENCRYPTED FILE----- + - recipient: age17edew3aahg3t5nte5g0a505sn96vnj8g8gqse8q06ccrrn2n3uysyshu2c + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGVmkxam5MVW1FSEo4QjB4 + c0VKUDJIVDI1WkFOYmJ2TEcrWGlqQVFGQm1RClBxSjRjSGd3SkRIbUc4OUdhT0F2 + WVJoUlR0amdOcTE4YUMwR1JjTGlBRUkKLS0tIHZFKy9XWnVoQUJLTzZGclp6Y0tQ + cUVoQk9JMEpRNUNQbjcxbnFiUDNmbFUKIBJcq8uJCIhdMv5e79K66Qrxlg88K/Gb + MT1h2v6h5uiYm6JaspSqz9Hqx9YfRocl/kJmVy/QdeIGPVzm24dnIQ== + -----END AGE ENCRYPTED FILE----- + - recipient: age1u4tht685sqg6dkmjyer96r93pl425u6353md6fphpd84jh3jwcusvm7mgk + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1Sy85ZVA3WGVhVWlSZmhy + VDBDK2dZYmR6djlQYkhhQ25zeWdxM1JpMEg0Ck5hZm12ZmtkQmJLUmdMNm94WnZL + NnY1eG1neEpLSEVkRGhkY2FHUFhTWVkKLS0tIGVpNlZrRGtqRFR1OVc3enpRUVQ2 + N2swa1BIellpbjBUbmsyc2NnYmphOU0Kx/4I/zjyi3GlYMgcNIb7sYufLfvJ9Xny + HeR7r03YuHu5dOQ1T8iFigXUhy/2DkdW8kWtKlpuT0qg35dKqjCi/w== + -----END AGE ENCRYPTED FILE----- + - recipient: age1cp6vegrmqfkuj8nmt2u3z0sur7n0f7e9x9zmdv4zygp8j2pnucpsdkgagc + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyVjBXb2EzM3U0MDRnRGV6 + YWJieTFHaXFFOEhFdjJNU2x3VVlSOEpBNFFjCkpNZWpxa3ZRRFVabXd5enFqenZY + aXpqOC90YXB2aTR5K1FFQ2dnNXVCZlUKLS0tIGkvTmpLeFNGdWpaRU9CaGtLcWgr + d09aV285U3YrNjY2VVpFaGtFS1B3bUUKRL1dsEHuWbEjRaKqd2F6xrhC7htNo0hw + fItd7J3gccRP5jUTzJ0QZBJvsj9wCAQU1iJfv14zcO6TzOB5B4jW7w== + -----END AGE ENCRYPTED FILE----- + - recipient: age1j2r8mypw44uvqhfs53424h6fu2rkr5m7asl7rl3zn3xzva9m3dcqpa97gw + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2WE5LVEFIdVFXT3I1Znk1 + NmJzWWZHQ05GclNuMFUvZE9PazdFYmZVWmlNClpHVVB1bFhUU3phUjlhQTBDTENq + QkNFMTc3VTU1SkxtK0x3SnFzYm90aTgKLS0tIHJHc3NXekM4Ly9SSEFydFZrTk9l + MVUxcEpUemlmWmRvQThUdTdkQ2svNHcK0WyOuWbv+eyYWLFsKBl+K+/n9QCfehqQ + 0hC0SY2Nf+9YHMDXrSse44NPs/ucOPlYRFV/HbPNvfEF62K7Gt79lA== + -----END AGE ENCRYPTED FILE----- + - recipient: age1jpeh4s553taxkyxhzlshzqjfrtvmmp5lw0hmpgn3mdnmgzku332qe082dl + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3SHFQQUIzQXlqZFFnTWNt + YVJIb0MzTFM2NENpNFFiaHFmaU95K3VLNGdZCkFyMEFHZjhZclJMTE4yRWNJQnJR + T25yTWZQOFE5L011M3FnMUxPb3hPbVEKLS0tIElzYlpHUEQwejlDNTFmK3R1dU0r + RzJ5UGIvUUluZXNzRzlXRWl5aGdmaUUKObqo2Wj62ZcK0qMcsttRHphWTgkPOTz4 + NkvAvOaSX2wJHRhH9SHGhkPwEhsgdmaagsVpwpLPrOCRlWI/bd1Qhg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-04-16T06:30:13Z" + mac: ENC[AES256_GCM,data:PsD5hu5nyjPY9/bgLTiTReqoT+hwlJx8A5pOkCTcPNQs63So4GM5mDDTuWG8u1WlBOEdKEDqVefVMtCiwOsC6xIVM8AHCGOcad2j4qQbHR+2lc8nMZE8R7ceJc2ZeLBPlD5/BQ2R5XiQ+NXu0qypHjYkVwnkI62nPSXALSd9btg=,iv:cy7slD5dcfTEeObWraswcghwhgAe1RylU4aafXezEYU=,tag:/nSCQJDYfrWpfpfdkigV7w==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.8.1 diff --git a/nixos/modules/nixos/services/glances/default.nix b/nixos/modules/nixos/services/glances/default.nix index 8a896cd..dd92a4d 100644 --- a/nixos/modules/nixos/services/glances/default.nix +++ b/nixos/modules/nixos/services/glances/default.nix @@ -28,7 +28,7 @@ with lib; }; }; - config = { + config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ glances python310Packages.psutil hddtemp ]; @@ -74,16 +74,16 @@ with lib; name = "${app} ${config.networking.hostName}"; group = "${app}"; - url = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:61208"; - ping = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:61208"; - interval = "30s"; + url = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:61208:/api/3/status"; + + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; mySystem.services.homepage.infrastructure-services = mkIf cfg.addToHomepage [ { "Glances ${config.networking.hostName}" = { - icon = "${app}.png"; + icon = "${app}.svg"; href = "http://${config.networking.hostName}.${config.mySystem.internalDomain}:61208"; description = "System Monitoring"; container = "Infrastructure"; diff --git a/nixos/modules/nixos/services/powerdns/default.nix b/nixos/modules/nixos/services/powerdns/default.nix index a57da2c..07dace9 100644 --- a/nixos/modules/nixos/services/powerdns/default.nix +++ b/nixos/modules/nixos/services/powerdns/default.nix @@ -9,17 +9,19 @@ let persistentFolder = "${config.mySystem.persistentFolder}/nixos/pdns"; user = "pdns"; group = "pdns"; + portDns = 5353; # avoiding conflict with adguardhome + portWebUI = 8081; configDir = pkgs.writeTextDir "pdns.conf" "${pdnsConfig}"; # $APIKEY is replaced via envsubst in the pdns module pdnsConfig = '' expand-alias=yes resolver=9.9.9.9:53 - local-address=0.0.0.0:5353 + local-address=0.0.0.0:${builtins.toString portDns} launch=gsqlite3 gsqlite3-database=${persistentFolder}/pdns.sqlite3 webserver=yes - webserver-address=0.0.0.0:8081 + webserver-address=0.0.0.0:${builtins.toString portWebUI} webserver-allow-from=10.8.10.0/20 api=yes api-key=$APIKEY @@ -81,11 +83,28 @@ in networking.firewall = mkIf cfg.openFirewall { - allowedTCPPorts = [ 8081 5353 ]; - allowedUDPPorts = [ 8081 5353 ]; + allowedTCPPorts = [ portWebUI portDns ]; + allowedUDPPorts = [ portDns ]; }; + mySystem.services.gatus.monitors = [ + + { + name = "${config.networking.hostName} split DNS"; + group = "dns"; + url = "${config.networking.hostName}.${config.mySystem.internalDomain}:${builtins.toString portDns}"; + dns = { + query-name = "canary.trux.dev"; # special domain always present for testing + query-type = "A"; + }; + interval = "1m"; + alerts = [{ type = "pushover"; }]; + conditions = [ "[DNS_RCODE] == NOERROR" ]; + } + ]; + + }; } diff --git a/nixos/modules/nixos/services/traefik/default.nix b/nixos/modules/nixos/services/traefik/default.nix index 5c9d6a2..d1cb7c3 100644 --- a/nixos/modules/nixos/services/traefik/default.nix +++ b/nixos/modules/nixos/services/traefik/default.nix @@ -181,23 +181,23 @@ in { Traefik = { icon = "traefik.png"; - href = "https://traefik.${config.mySystem.domain}/dashboard/"; - ping = "https://traefik.${config.mySystem.domain}/dashboard/"; + href = "https://traefik-${config.networking.hostName}.${config.mySystem.domain}/dashboard/"; + description = "Reverse Proxy"; widget = { type = "traefik"; - url = "https://traefik.${config.mySystem.domain}"; + url = "https://traefik-${config.networking.hostName}.${config.mySystem.domain}"; }; }; } ]; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ + mySystem.services.gatus.monitors = [{ - name = "traefik"; + name = "Traefik ${config.networking.hostName}"; group = "infrastructure"; - url = "https://traefik.${config.mySystem.domain}"; - interval = "30s"; + url = "https://traefik-${config.networking.hostName}.${config.mySystem.domain}"; + interval = "1m"; conditions = [ "[CONNECTED] == true" "[STATUS] == 200" "[RESPONSE_TIME] < 50" ]; }]; diff --git a/nixos/modules/nixos/system/default.nix b/nixos/modules/nixos/system/default.nix index 0a5664e..3435aca 100644 --- a/nixos/modules/nixos/system/default.nix +++ b/nixos/modules/nixos/system/default.nix @@ -9,6 +9,5 @@ ./nfs ./motd ./pushover - ./technitium-dns ]; } diff --git a/nixos/modules/nixos/system/technitium-dns/default.nix b/nixos/modules/nixos/system/technitium-dns/default.nix deleted file mode 100644 index 862a6dd..0000000 --- a/nixos/modules/nixos/system/technitium-dns/default.nix +++ /dev/null @@ -1,86 +0,0 @@ -{ lib -, config -, pkgs -, ... -}: -with lib; -let - - stateDir = "/var/lib/technitium-dns-server"; - cfg = config.mySystem.system.technitium-dns; -in -{ - options.mySystem.system.technitium-dns.enable = mkEnableOption "technitium-dns"; - - config = mkIf cfg.enable { - - networking.firewall = { - allowedUDPPorts = [ 53 ]; - allowedTCPPorts = [ - 53 - 80 - 443 - 5380 - 53443 - ]; - }; - - systemd.services.technitium-dns-server = { - description = "Technitium DNS Server"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - - serviceConfig = { - ExecStart = "${pkgs.unstable.technitium-dns-server}/bin/technitium-dns-server ${stateDir}"; - - User = "technitiumdns"; - Group = "technitiumdns"; - - StateDirectory = "technitium-dns-server"; - WorkingDirectory = stateDir; - BindPaths = stateDir; - - Restart = "always"; - RestartSec = 10; - TimeoutStopSec = 10; - KillSignal = "SIGINT"; - - # Harden the service - LockPersonality = true; - NoNewPrivileges = true; - PrivateDevices = true; - PrivateMounts = true; - PrivateTmp = true; - ProtectClock = true; - ProtectControlGroups = true; - ProtectHome = true; - ProtectHostname = true; - ProtectKernelLogs = true; - ProtectKernelModules = true; - ProtectKernelTunables = true; - ProtectSystem = "strict"; - RemoveIPC = true; - RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX AF_NETLINK"; - RestrictNamespaces = true; - RestrictRealtime = true; - RestrictSUIDSGID = true; - - AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; - CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ]; - }; - }; - - users = { - users = { - technitiumdns = { - group = "technitiumdns"; - isSystemUser = true; - }; - }; - groups = { - technitiumdns = { }; - }; - }; - - }; -} diff --git a/nixos/modules/nixos/system/zfs.nix b/nixos/modules/nixos/system/zfs.nix index ed0481b..f4e657d 100644 --- a/nixos/modules/nixos/system/zfs.nix +++ b/nixos/modules/nixos/system/zfs.nix @@ -34,6 +34,8 @@ with lib; services.zfs = { autoScrub.enable = true; + # Defaults to weekly and is a bit too regular for my NAS + autoScrub.interval = "monthly"; trim.enable = true; }; diff --git a/nixos/profiles/role-server.nix b/nixos/profiles/role-server.nix index 15d1e9b..1ff404e 100644 --- a/nixos/profiles/role-server.nix +++ b/nixos/profiles/role-server.nix @@ -16,13 +16,11 @@ with lib; mySystem.security.wheelNeedsSudoPassword = false; mySystem.services.cockpit.enable = true; mySystem.system.motd.enable = true; - mySystem.services.gatus.monitors = mkIf config.mySystem.services.gatus.enable [{ - - + mySystem.services.gatus.monitors = [{ name = config.networking.hostName; group = "servers"; url = "icmp://${config.networking.hostName}.${config.mySystem.internalDomain}"; - interval = "30s"; + interval = "1m"; conditions = [ "[CONNECTED] == true" ]; }];