diff --git a/hosts/monitoring-3/prometheus.nix b/hosts/monitoring-3/prometheus.nix index 73abc9f..dd7533b 100644 --- a/hosts/monitoring-3/prometheus.nix +++ b/hosts/monitoring-3/prometheus.nix @@ -419,6 +419,19 @@ in { relabelAddressToInstance ]; } + { + job_name = "clerie_keys"; + scrape_interval = "5m"; + scheme = "https"; + metrics_path = "/gpg/clerie@clerie.de.metrics.txt"; + static_configs = [ + { + targets = [ + "clerie.de" + ]; + } + ]; + } ]; alertmanagers = [ { diff --git a/hosts/monitoring-3/rules.yml b/hosts/monitoring-3/rules.yml index 9a4a160..034f244 100644 --- a/hosts/monitoring-3/rules.yml +++ b/hosts/monitoring-3/rules.yml @@ -73,3 +73,17 @@ groups: annotations: summary: "Synapse of {{ $labels.target }} unavailable" description: "The Synapse backend of {{ $labels.target }} is unreachable or returns garbage" + - alert: ClerieKeysExpire + expr: last_over_time(clerie_keys_gpg_key_expire_time[15m]) - time() < 1209600 + labels: + severity: critical + annotations: + summary: "GPG {{ $labels.fingerprint }} is expiring" + description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then two weeks" + - alert: ClerieKeysAlmostExpire + expr: last_over_time(clerie_keys_gpg_key_expire_time[15m]) - time() < 3628800 + labels: + severity: warning + annotations: + summary: "GPG {{ $labels.fingerprint }} is expiring soon" + description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then six weeks" diff --git a/hosts/web-2/clerie.nix b/hosts/web-2/clerie.nix index 93a7cf4..7336cac 100644 --- a/hosts/web-2/clerie.nix +++ b/hosts/web-2/clerie.nix @@ -34,11 +34,6 @@ ''; }; locations."/gpg" = { - extraConfig = '' - types { - text/plain asc; - } - ''; root = pkgs.clerie-keys; }; locations."~ ^/.well-known/openpgpkey/hu/[a-z0-9]+/?$" = { diff --git a/pkgs/clerie-keys/default.nix b/pkgs/clerie-keys/default.nix index bca481f..de84c35 100644 --- a/pkgs/clerie-keys/default.nix +++ b/pkgs/clerie-keys/default.nix @@ -10,5 +10,8 @@ runCommand "clerie-keys" { gpg --import-options import-export --armor -o $out/gpg/clerie@clerie.de.asc --import ${../../users/clerie/gpg.asc} gpg --import-options import-export -o $out/gpg/clerie@clerie.de --import ${../../users/clerie/gpg.asc} - gpg --import-options show-only --with-colons --fingerprint --import ${../../users/clerie/gpg.asc} | awk -F: '$1 == "fpr" {print $10;}' | head -1 > $out/gpg/clerie@clerie.de.fingerprint.txt + gpg --import-options show-only --with-colons --fingerprint --import ${../../users/clerie/gpg.asc} > colons.txt + cat colons.txt | awk -F: '$1 == "fpr" {print $10;}' | head -1 > $out/gpg/clerie@clerie.de.fingerprint.txt + cat colons.txt | awk -F: '$1 == "pub" {print "@", $7;}' | date -f - -Iseconds > $out/gpg/clerie@clerie.de.expires.txt + cat colons.txt | awk '{printf "%s:%s", $0, ($0 ~ /^(pub|sub)/) ? ":" : "\n" }' | awk '$0 ~ /^(pub|sub)/ { print $0}' | awk -F: '{if ($1 == "pub") { fingerprint=$32; keyid=$5 }} {printf "clerie_keys_gpg_key_expire_time{fingerprint=\"%s\", keyid=\"%s\", subkeyfingerprint=\"%s\", subkeykeyid=\"%s\", type=\"%s\"} %s\n", fingerprint, keyid, ($1 == "sub") ? $30 : "", ($1 == "sub") ? $5 : "", $1, $7}' > $out/gpg/clerie@clerie.de.metrics.txt '' diff --git a/profiles/wg-clerie/default.nix b/profiles/wg-clerie/default.nix index e6efad1..2d99082 100644 --- a/profiles/wg-clerie/default.nix +++ b/profiles/wg-clerie/default.nix @@ -109,6 +109,20 @@ in }) cfg.ipv4s ) ++ [ + { + Priority = 19500; + Family = "ipv6"; + IncomingInterface = "lo"; + To = "2a01:4f8:c0c:15f1::8001/113"; + Table = "wg-clerie"; + } + { + Priority = 19500; + Family = "ipv4"; + IncomingInterface = "lo"; + To = "10.20.30.1/24"; + Table = "wg-clerie"; + } { Priority = 20000; Family = "ipv6"; diff --git a/users/clerie/gpg.asc b/users/clerie/gpg.asc index 510925d..2ce4eb7 100644 --- a/users/clerie/gpg.asc +++ b/users/clerie/gpg.asc @@ -11,20 +11,20 @@ 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 @@ -35,8 +35,8 @@ GZ1m/8et+bOPkcP4H59qHbxvr4JyWJgZpIDAfDWSn0PGE2XNuWREm5utbV9f32Bd f/J6vZebH7FPCqp98sp7tqO8eHWEZk83Enx9y0BPiTaN6HlSbtM5XZmWo6mN1oP1 wyXt3CTfI3U+tYGwRqvx9eAckLDf11BeThiLEUWxeFdTUVmKITR+vwEYSvcMzL8J z0/ZZAxIaSZVC4ijqhAbFn42TNBVITtMR0iPd44PQww5ptPzAJcAIEUEB64gNk/J -ABEBAAGJBF8EGAEIACcWIQQMmC+Ht6+6D1BPkKJinnQZR8h5KAUCZh1NfwMbAgQF -CQHhM4ACLMFqIAQZAQgAHRYhBHQOQiYTJ+rM4XH+/72fVkgIcLrSBQJmHU1/AADR +ABEBAAGJBGkEGAEIACcDGwIEFiEEDJgvh7evug9QT5CiYp50GUfIeSgFAmf9TEQF +CQPBMkUCNsFqIAQZAQgAHRYhBHQOQiYTJ+rM4XH+/72fVkgIcLrSBQJmHU1/AADR 8xAAmd4vlIGlt2xCpqgG4iKB44EWp5OcxQb1XV3ssnpzobu1s9QdyQv1MrHIKhQW 87DnHCkVmx9mkOu3eX6BfL8FpTim1UckBWch+t2qaoHCH/1Ef2rsDU9otU2+Qt+o UtI0N5GLWDlnGJkR2ZDAeoughX0ph0Mjz/wf8zx+mKYtEMtixULXFYCtaFjn8z8I @@ -47,63 +47,63 @@ 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 -cnkT -=NbZJ +8B1JLzQHZOHOBeO5vfMHxvMUJFZvBtEMMaPPrPWVtqN8ZigJEGKedBlHyHko0LMP ++wVkYamQqxJ8quwqNG6KwqvuRZYQ+3KB3xyKs6PlqX4B83+t05olFU8W6SDAH9c+ +UAxi8hlpitM+8jJ57L8fKvHtPQURdNh/UguiRLEQEOyHOINBNVemo+Y2xIhpDi6/ +TR4CbqdvBCmKy+yLaOmMjJbC9sUK/+n+v40oVh6azBnOAm7mpJe2KMkYppLoiRWV +zZKu81X4kmNqfVn8cRQr/SrsFzCef4WqM8KcZpiCqp9Ufp0a7FaI0pV2cuEXRcbZ +CocqrBI4+E/zsdsgWFGm0GVCfFLKaj7J5GLIC9SCMZUzg8NU7Y7/fBjVvE4UNjCH +Iknqiq5KtzjLOdcZ85SNYl91W/L6Bf5btSyt9jbNvf2PYXLZR15Qlbc/kp0Shc7C +RqwnymhsIfvFf1fjlNINxSppW8mYvxZoxt4sXhwd9D0WCkZKuG6hyBEsoznIOlHZ +dsgRd163SJVu6T0RlxCRjmcejR6q68HmwYszf/FbM/q+7GdT1bfq6OkElWW6d/Cz +iY02VzYZErn7eLaamkx/+ypzcwnu0z9k9FP1IeqgfMrtu4lS29A7r047ZBr73SBJ +QAKNCUcuv2XcdFlNNVoDy68Z0UR5AkNXnZjtfwkk1Ff5zNV1zliGEow4dciF7JM9 +bDjyiDmuwiO3fNs5f5KjN6l9zURRgjzCQsR/NLaPsPYsuQINBGYdTf8BEADEJ4Az +HY7sRQyIJx6w3a9iEt6gh05Y6TldHk9wA20SNnRCddMDl+n+I3+J1NQvmemhCvAL +C7tNvUlYi0N1vvyW4MCEHxK7fQC4oyMl0BmZETE56aMlqE8SmmTpRflGlWvkFBI/ +LldZQ4nkcfYFoxhy6UHoErcG03S5uiU07YmMjEXn5NH0Z/0q+ub/GGLhmoDhUAMK +vzDZrb8b0hjr7RlAv25HKKXFEzs3Y6QuVJfr3AkQrTsPo6x/pCFdp7/dw1L0gxpY +bR3aSGTw0Qt5SpetyI1tMr8dYPd/rBy9yK/rp1hAttea0LeLjk3YYor/J+Kgo56a +Dk9WMG/T96s64dfFQQ+sU6Z4XovO9X+uw1mEqFZ1XbWIuCZ+Ux19VSZhfhOTDiUA +SRAKd5HNcubd8ZUb7p2SpLPR5/28qaeWOxsySnRP3HZ1NV9GA31/snFIm1R4H5ZH +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 +=8JZo -----END PGP PUBLIC KEY BLOCK-----