From 38fb2ec1d56c1483bf86094323d4793e6f54ebbf Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Fri, 20 Jun 2025 00:35:08 +0200 Subject: [PATCH] Check gatus uptime with healthchecks.io --- hosts/cumulus/secrets.yaml | 7 ++----- modules/system/services/gatus.nix | 30 +++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/hosts/cumulus/secrets.yaml b/hosts/cumulus/secrets.yaml index 5864b02..f10992f 100644 --- a/hosts/cumulus/secrets.yaml +++ b/hosts/cumulus/secrets.yaml @@ -1,9 +1,6 @@ seb-password: ENC[AES256_GCM,data:laGJomW5c5TB3alpPgZKElQ3Y46OBxPrA0AxVNgx/09oSuG0EM63cnnkwZkrTeZxqjBH2UOryLqCr9DUr9mhZsovqNtZ2t8Uzg==,iv:GpBQNm1jspU8PCN+SzfAUKSps3YySg6JJVYOLOFetOI=,tag:2nARGI9XwzLfJFRhDyGBSw==,type:str] tailscale-auth-key: ENC[AES256_GCM,data:FKHQsrLhELUKUg/nuf/UakS14Qj8z3arRR3366Cc3wag8+lpLrVjKXT8a5ZFd4ZtIghrCSvyXUefAKcVmQ==,iv:jvuoo8DD7ls0WZA6ZrCbz3w4O8NCyXZjv1mscnx/T94=,tag:HczecDubwKkCVu04rqhh9w==,type:str] service-tailscale-auth-key: ENC[AES256_GCM,data:S1LXXdGd78y1LAAeBxQ/yC8ggm/Mq8JkXVx7umMEk6nlOx0NLHqklSJ8JX+QUhgmx9hoCBSKJ9q1DxbFzsw=,iv:uDAG/00sl/n+Tp11SmsEQFKWQ9KOxcWfvgnFnIUuMcw=,tag:3A8vv97+HmTzBVxH9hqEfg==,type:str] -restic: - environment: ENC[AES256_GCM,data:0slVHi88t9iqM8kdp+iWngLO4+fsUztma0wGghFl1gCvgWCrF59N1x2KkrfsMynMOX5EsnokELWJvctpQyeJun/heSwVheH9MlYkx5USKjHIfc82hgcY/9PMpLK8gqCpbEw=,iv:EnNlyIBZgRT7d8o0KTDcPV5uNSfDwbmss3M5rxMwAns=,tag:wcMnfb8FqlInvHj4NI7V4g==,type:str] - password: ENC[AES256_GCM,data:/VY9RlJ6MTHhAPQ7BODp0M3rgoNFUIDDFkg++PoL,iv:LxubXHR6F1X6vkdbLmbNt/o1hYAULhSXQw8587jQkls=,tag:E67MoC5ViZyKaSPP4Mg3Kw==,type:str] healthchecks-ping-key: ENC[AES256_GCM,data:j2AJZ0VvRxJMsy1VSA/7mOmCBka2KA==,iv:5LjD9u08wdU3W+RlL8UK5AaU9GSy+6FqTUTkIJkea2c=,tag:wKOjFncxgURIlQSCBLXLSw==,type:str] sops: age: @@ -25,7 +22,7 @@ sops: V1F2cjlmRWNKWkN1U3hwNWl6U2lEb1kKgsj22mpgxpgA5oXTXhoA5DtkySqqcn17 OrpUiZmfOABXEZ0b5pnkAD06aW+7j2SqajYpvguxIrD9x1w562FmZA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-06-09T21:39:42Z" - mac: ENC[AES256_GCM,data:25WhVN2xQjwzG+ntaTXStMDFZOc57PTaHyb1aWRZpQt5hKR9Ot+nhyx0PrzckgOCfBXBBlzetRBGj0akLhVEMKNXtsLzI6BIttqgH1RniZqM35wEOp63ZNYwpXCB23tYyNkoiDheb/yWDVuWMlJxj5vgYv1BFhPo2MbHGGcLDHU=,iv:2hWf8B6C0SdHiG2T1906zChuElhB/Ae0MPzr3mz1zD0=,tag:UELD567RvAcz02Fgcg74Hg==,type:str] + lastmodified: "2025-06-19T22:27:27Z" + mac: ENC[AES256_GCM,data:HPVe70zuMv3AKwxJdBeY4LXlg+Yod6HeJmfPV/h9+ykA3z9jW4JniHzdtkTa9ZE//92zdkJgaQyJK560h+tCEoZSmLplS5Wig2t9oKI+NBl4z1me4waKXSgAmhlc4J2/j+QZcUcUHRkMrUFu69ioOHE2V41WQnQ7w6sCIm6ZSx8=,iv:TNFL5PlOpN824zPX9yOmM3cpYm6vKmlHX1IvuKTvtB8=,tag:QFxiRi36TAg//xkLTaWz9A==,type:str] unencrypted_suffix: _unencrypted version: 3.10.2 diff --git a/modules/system/services/gatus.nix b/modules/system/services/gatus.nix index 9268bc5..e7347e2 100644 --- a/modules/system/services/gatus.nix +++ b/modules/system/services/gatus.nix @@ -51,8 +51,16 @@ in config = lib.mkIf cfg.enable { meta.ports.list = [ cfg.port ]; + sops = { + secrets."healthchecks-ping-key" = { }; + templates."gatus.env".content = '' + HEALTHCHECKS_PING_KEY=${config.sops.placeholder."healthchecks-ping-key"} + ''; + }; + services.gatus = { enable = true; + environmentFile = config.sops.templates."gatus.env".path; settings = { web.port = cfg.port; @@ -110,11 +118,23 @@ in } ); in - self.nixosConfigurations - |> lib.mapAttrsToList (_: value: value.config.custom.services.gatus.endpoints) - |> lib.map (entry: lib.mapAttrsToList (_: value: value) entry) - |> lib.concatLists - |> lib.map (entry: mkEndpoint entry); + [ + { + name = "Healthchecks.io"; + group = "Monitoring"; + url = "https://hc-ping.com/\${HEALTHCHECKS_PING_KEY}/gatus-uptime?create=1"; + interval = "2h"; + alerts = [ { type = "ntfy"; } ]; + conditions = [ "[STATUS] == 200" ]; + } + ] + ++ ( + self.nixosConfigurations + |> lib.mapAttrsToList (_: value: value.config.custom.services.gatus.endpoints) + |> lib.map (entry: lib.mapAttrsToList (_: value: value) entry) + |> lib.concatLists + |> lib.map (entry: mkEndpoint entry) + ); }; }; };