From 072f9577732a4845723a1d770116faba1eb5c9f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Sun, 14 Jan 2024 19:46:21 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(cesium/services)=20create=20status?= =?UTF-8?q?=20pages=20with=20gatus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flake.lock | 44 +++--- flake.nix | 4 +- hosts/cesium/services/default.nix | 1 + hosts/cesium/services/gatus/config.yml | 176 ++++++++++++++++++++++++ hosts/cesium/services/gatus/default.nix | 16 +++ 5 files changed, 217 insertions(+), 24 deletions(-) create mode 100644 hosts/cesium/services/gatus/config.yml create mode 100644 hosts/cesium/services/gatus/default.nix diff --git a/flake.lock b/flake.lock index e4b31aa..8d84287 100644 --- a/flake.lock +++ b/flake.lock @@ -193,11 +193,11 @@ ] }, "locked": { - "lastModified": 1705075138, - "narHash": "sha256-0slYsXoR1Sd5FwTfFZLYxAsI015+J4lvgvo55u4Gw1A=", + "lastModified": 1705231690, + "narHash": "sha256-PYIdQ6eb1Zs0sKM0g3y0/OHqfsMn8tjNypGjvH8WmfI=", "owner": "nix-community", "repo": "disko", - "rev": "f78b6498f69e04514cb84393e5daba669198c1c1", + "rev": "036d480ae895afff54da5034331950827a7f317a", "type": "github" }, "original": { @@ -348,11 +348,11 @@ ] }, "locked": { - "lastModified": 1705104164, - "narHash": "sha256-pllCu3Hcm1wP/B0SUxgUXvHeEd4w8s2aVrEQRdIL1yo=", + "lastModified": 1705169127, + "narHash": "sha256-j9OEtNxOIPWZWjbECVMkI1TO17SzlpHMm0LnVWKOR/g=", "owner": "nix-community", "repo": "home-manager", - "rev": "0912d26b30332ae6a90e1b321ff88e80492127dd", + "rev": "f2942f3385f1b35cc8a1abb03a45e29c9cb4d3c8", "type": "github" }, "original": { @@ -370,11 +370,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1705070596, - "narHash": "sha256-Xq3JOddIH7AnACEHGaSKg71IF8CATE1zSTzdgR4pnlo=", + "lastModified": 1705253252, + "narHash": "sha256-u3gEnjPq5zJR+/bJXHFw1gH7MB3ovj5bHFe3f7Pb2eo=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "c4da4b026deefd58f532353b64e9f17130e760ca", + "rev": "b6516bad0281efb55195e8db180aa2dcaf8b98e4", "type": "github" }, "original": { @@ -494,11 +494,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1704786394, - "narHash": "sha256-aJM0ln9fMGWw1+tjyl5JZWZ3ahxAA2gw2ZpZY/hkEMs=", + "lastModified": 1705187059, + "narHash": "sha256-dSj+iIYqLA+7/5rLXWfUxw9IXRm0w8Mrm39af8klUH0=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "b34a6075e9e298c4124e35c3ccaf2210c1f3a43b", + "rev": "ef811636cc847355688804593282078bac7758d4", "type": "github" }, "original": { @@ -614,18 +614,18 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1704722960, - "narHash": "sha256-mKGJ3sPsT6//s+Knglai5YflJUF2DGj7Ai6Ynopz0kI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "317484b1ead87b9c1b8ac5261a8d2dd748a0492d", - "type": "github" + "dirtyRev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d-dirty", + "dirtyShortRev": "9b19f5e77dd9-dirty", + "lastModified": 1705133751, + "narHash": "sha256-N2uMQQ9DEjVcUbYx+vMlvJcgPGMZN1DAl8yeyVJpf7I=", + "shallow": true, + "type": "git", + "url": "file:///home/laurent/Documents/github.com/NixOS/nixpkgs" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "shallow": true, + "type": "git", + "url": "file:///home/laurent/Documents/github.com/NixOS/nixpkgs" } }, "pre-commit-hooks-nix": { diff --git a/flake.nix b/flake.nix index 018ac62..461fc80 100644 --- a/flake.nix +++ b/flake.nix @@ -7,8 +7,8 @@ inputs = { # core stuff nixpkgs = { - url = "github:NixOS/nixpkgs/nixos-unstable"; - # url = "git+file:///home/laurent/Documents/nixpkgs?shallow=1"; + # url = "github:NixOS/nixpkgs/nixos-unstable"; + url = "git+file:///home/laurent/Documents/github.com/NixOS/nixpkgs?shallow=1"; }; home-manager = { url = "github:nix-community/home-manager"; diff --git a/hosts/cesium/services/default.nix b/hosts/cesium/services/default.nix index dbf16f3..79668d7 100644 --- a/hosts/cesium/services/default.nix +++ b/hosts/cesium/services/default.nix @@ -2,6 +2,7 @@ imports = [ ./acme ./atuin + ./gatus ./gitea ./nginx ./ssh diff --git a/hosts/cesium/services/gatus/config.yml b/hosts/cesium/services/gatus/config.yml new file mode 100644 index 0000000..8a15783 --- /dev/null +++ b/hosts/cesium/services/gatus/config.yml @@ -0,0 +1,176 @@ +web: + port: 2020 + +endpoints: + - name: fainsin.bzh + url: "https://fainsin.bzh" + interval: 6h + conditions: + - "[DOMAIN_EXPIRATION] > 720h" + + - name: laurent.fainsin.bzh + group: web + url: "https://laurent.fainsin.bzh" + interval: 5m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*Laurent Fainsin*)" + - "[CERTIFICATE_EXPIRATION] > 240h" + + - name: resume.laurent.fainsin.bzh + group: web + url: "https://resume.laurent.fainsin.bzh" + interval: 5m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[CERTIFICATE_EXPIRATION] > 240h" + + - name: git.fainsin.bzh + group: services + url: "https://git.fainsin.bzh" + interval: 5m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[CERTIFICATE_EXPIRATION] > 240h" + - "[BODY] == pat(*Explore - gitea: Gitea Service*)" + + - name: atuin.fainsin.bzh + group: services + url: "https://atuin.fainsin.bzh" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[CERTIFICATE_EXPIRATION] > 240h" + - "[BODY].homage == pat(*Sir Terry Pratchett*)" + + - name: status.fainsin.bzh + group: services + url: "https://status.fainsin.bzh" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[CERTIFICATE_EXPIRATION] > 240h" + - "[BODY] == pat(*Health Dashboard | Gatus*)" + + - name: n7.laurent.fainsin.bzh + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh" + interval: 15m + conditions: + - "[CERTIFICATE_EXPIRATION] > 240h" + + - name: "projet-audionumerique" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-audionumerique/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*Whisper*)" + + - name: "projet-systemes-algorithmes-repartis" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-systemes-algorithmes-repartis/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*The RAFT Consensus Algorithm*)" + + - name: "projet-intelligence-artificielle-multimedia" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-intelligence-artificielle-multimedia/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*Projet IAM*)" + + - name: "projet-probleme-inverse-3D" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-probleme-inverse-3D/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*slidevjs/slidev*)" + - "[BODY] == pat(*/projet-probleme-inverse-3D/assets/index*)" + + - name: "projet-modelisation-geometrique" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-modelisation-geometrique/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*Projet de Modélisation Géométrique*)" + + - name: "projet-long" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-long/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*slidevjs/slidev*)" + - "[BODY] == pat(*/projet-long/assets/index*)" + + - name: "projet-oral-japonais" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-oral-japonais/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*わたしたちのまちは*)" + + - name: "projet-oral-anglais" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-oral-anglais/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*CAPTCHA*)" + + - name: "projet-fin-etude" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/projet-fin-etude/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*slidevjs/slidev*)" + - "[BODY] == pat(*/projet-fin-etude/assets/index*)" + + - name: "TP-calcul-parallele" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/TP-calcul-parallele/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*Benchmarking Distributed GEMM Algorithms*)" + + - name: "TP-reinforcement-learning" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/TP-reinforcement-learning/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*pluto_notebook*)" + + - name: "TP-traitement-audio-visuel" + group: n7.laurent.fainsin.bzh + url: "https://n7.laurent.fainsin.bzh/TP-traitement-audio-visuel/" + interval: 15m + conditions: + - "[STATUS] == 200" + - "[RESPONSE_TIME] < 300" + - "[BODY] == pat(*pluto_notebook*)" diff --git a/hosts/cesium/services/gatus/default.nix b/hosts/cesium/services/gatus/default.nix new file mode 100644 index 0000000..501da56 --- /dev/null +++ b/hosts/cesium/services/gatus/default.nix @@ -0,0 +1,16 @@ +{...}: { + services.gatus = { + enable = true; + configPath = ./config.yml; + }; + + services.nginx = { + virtualHosts = { + "status.fainsin.bzh" = { + forceSSL = true; + enableACME = true; + locations."/".proxyPass = "http://127.0.0.1:2020"; + }; + }; + }; +}