Commit 264fa6f9a738

Vincent Demeester <vincent@sbr.pm>
2025-12-12 16:52:03
feat(homelab): Add Healthchecks uptime monitoring service
- Enable proactive monitoring of services and scheduled tasks - Provide centralized alerting for homelab infrastructure health - Integrate with Homepage Dashboard for easy access Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent ad5cf74
Changed files (3)
systems
common
rhea
systems/common/services/homepage.nix
@@ -145,6 +145,13 @@ in
               icon = "grafana.png";
             };
           }
+          {
+            Healthchecks = {
+              description = "Uptime Monitoring";
+              href = "https://healthchecks.sbr.pm";
+              icon = "healthchecks.png";
+            };
+          }
           {
             "Home Assistant" = {
               description = "Home Automation";
systems/rhea/extra.nix
@@ -135,6 +135,7 @@
               altHosts = [ "music.sbr.pm" ];
             };
             homepage.port = 3001;
+            healthchecks.port = 8000;
           };
 
           # Generate routers for local services
@@ -400,13 +401,36 @@
       mediaLocation = "/neo/pictures/photos";
     };
     postgresql = {
-      ensureDatabases = [ "immich" ];
+      ensureDatabases = [
+        "immich"
+        "healthchecks"
+      ];
       ensureUsers = [
         {
           name = "vincent";
         }
+        {
+          name = "healthchecks";
+        }
       ];
     };
+    healthchecks = {
+      enable = true;
+      user = "healthchecks";
+      group = "healthchecks";
+      listenAddress = "127.0.0.1";
+      port = 8000;
+      settings = {
+        ALLOWED_HOSTS = [ "healthchecks.sbr.pm" ];
+        SITE_ROOT = "https://healthchecks.sbr.pm";
+        SITE_NAME = "Healthchecks";
+        DEBUG = false;
+        DB = "postgres";
+        DB_HOST = "/run/postgresql";
+        DB_NAME = "healthchecks";
+        DB_USER = "healthchecks";
+      };
+    };
     jellyfin = {
       enable = true;
       user = "vincent";
globals.nix
@@ -526,6 +526,8 @@ _: {
     homepage.host = "rhea";
     # Traefik dashboard
     traefik.host = "rhea";
+    # Healthchecks monitoring
+    healthchecks.host = "rhea";
     # Music streaming on aion (routed through rhea/traefik)
     music.host = "rhea";
     navidrome.host = "rhea";