From 1e2010d92097149e4d35e4347e627ce1a936f5e3 Mon Sep 17 00:00:00 2001 From: cnst Date: Wed, 23 Jul 2025 17:41:16 +0200 Subject: [PATCH] uptimekuma --- hosts/sobotka/server.nix | 3 ++ modules/default.nix | 1 + modules/server/uptime-kuma/default.nix | 50 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 modules/server/uptime-kuma/default.nix diff --git a/hosts/sobotka/server.nix b/hosts/sobotka/server.nix index 37526464..8cecb5e3 100644 --- a/hosts/sobotka/server.nix +++ b/hosts/sobotka/server.nix @@ -39,6 +39,9 @@ jellyfin = { enable = true; }; + uptime-kuma = { + enable = true; + }; vaultwarden = { enable = true; url = "vault.cnst.dev"; diff --git a/modules/default.nix b/modules/default.nix index 1a007391..8f00b542 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -133,6 +133,7 @@ ./server/jellyseerr ./server/jellyfin ./server/qbittorrent + ./server/uptime-kuma ]; }; settings = { diff --git a/modules/server/uptime-kuma/default.nix b/modules/server/uptime-kuma/default.nix new file mode 100644 index 00000000..cf7600a3 --- /dev/null +++ b/modules/server/uptime-kuma/default.nix @@ -0,0 +1,50 @@ +{ + config, + lib, + ... +}: let + unit = "uptime-kuma"; + cfg = config.server.${unit}; + srv = config.server; +in { + options.server.${unit} = { + enable = lib.mkEnableOption { + description = "Enable ${unit}"; + }; + configDir = lib.mkOption { + type = lib.types.str; + default = "/var/lib/uptime-kuma"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "uptime.${srv.domain}"; + }; + homepage.name = lib.mkOption { + type = lib.types.str; + default = "Uptime Kuma"; + }; + homepage.description = lib.mkOption { + type = lib.types.str; + default = "Service monitoring tool"; + }; + homepage.icon = lib.mkOption { + type = lib.types.str; + default = "uptime-kuma.svg"; + }; + homepage.category = lib.mkOption { + type = lib.types.str; + default = "Services"; + }; + }; + config = lib.mkIf cfg.enable { + services.${unit} = { + enable = true; + }; + services.caddy.virtualHosts."${cfg.url}" = { + useACMEHost = srv.domain; + extraConfig = '' + reverse_proxy http://127.0.0.1:3001 + ''; + }; + }; +}