diff --git a/machines/core-security/default.nix b/machines/core-security/default.nix index 5cf363c..b231d2e 100644 --- a/machines/core-security/default.nix +++ b/machines/core-security/default.nix @@ -121,6 +121,9 @@ security.acme.certs."ca.luj".server = lib.mkForce "https://127.0.0.1:8444/acme/acme/directory"; + machine.meta.monitors."ca.luj - IPv4".url = lib.mkForce "https://100.100.45.14/health"; + machine.meta.monitors."ca.luj - IPv6".url = lib.mkForce "https://[fd7a:115c:a1e0::e]/health"; + systemd.services."step-ca".after = [ "keycloak.service" ]; # TODO: Remove when keycloak is update in stable channel diff --git a/machines/lambda/uptime-kuma.nix b/machines/lambda/uptime-kuma.nix index d2a0823..1f16d6a 100644 --- a/machines/lambda/uptime-kuma.nix +++ b/machines/lambda/uptime-kuma.nix @@ -1,9 +1,17 @@ { pkgs, + lib, + nixosConfigurations, config, inputs, ... }: +let + + probesFromConfig = lib.mkMerge ( + lib.mapAttrsToList (_: value: value.config.machine.meta.monitors) nixosConfigurations + ); +in { services.uptime-kuma = { @@ -30,6 +38,7 @@ statelessUptimeKuma = { enableService = true; + probesConfig.monitors = probesFromConfig; extraFlags = [ "-s" "-v DEBUG" diff --git a/machines/tower/default.nix b/machines/tower/default.nix index 27b2ef5..818be9c 100644 --- a/machines/tower/default.nix +++ b/machines/tower/default.nix @@ -133,6 +133,9 @@ root = "/home/gitlab-runner/artifacts"; }; + machine.meta.monitors."phd.julienmalka.me - IPv4".accepted_statuscodes = [ "401" ]; + machine.meta.monitors."phd.julienmalka.me - IPv6".accepted_statuscodes = [ "401" ]; + systemd.services.nginx.serviceConfig.ProtectHome = "read-only"; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/home/gitlab-runner/artifacts" ]; diff --git a/modules/meta/default.nix b/modules/meta/default.nix index 16d0fd5..f440663 100644 --- a/modules/meta/default.nix +++ b/modules/meta/default.nix @@ -1,4 +1,9 @@ -{ lib, profiles, ... }: +{ + pkgs, + lib, + profiles, + ... +}: { options.machine.meta = lib.mkOption { description = "Machine metadata"; @@ -38,6 +43,11 @@ default = with profiles; [ base ]; }; + monitors = mkOption { + default = { }; + type = types.attrsOf (pkgs.formats.json { }).type; + }; + defaultInterface = mkOption { description = "default interface of the machine"; default = "ens18"; diff --git a/modules/nginx/default.nix b/modules/nginx/default.nix index 498a084..aa2dd54 100644 --- a/modules/nginx/default.nix +++ b/modules/nginx/default.nix @@ -59,7 +59,7 @@ in ''; systemConfig = _: { - statelessUptimeKuma.probesConfig.monitors = lib.mkIf (name != "default") { + machine.meta.monitors = lib.mkIf (name != "default") { "${name} - IPv4" = { url = "https://${ if (hasSuffix "luj" name) then @@ -167,7 +167,6 @@ in ]; machine = mergeSub (c: c.machine); - statelessUptimeKuma = mergeSub (c: c.statelessUptimeKuma); }; }