status(host): configure external status page and uptime monitoring host
Some checks failed
/ Ansible Lint (push) Failing after 2m0s
Some checks failed
/ Ansible Lint (push) Failing after 2m0s
This commit is contained in:
parent
51bbdd42a2
commit
fe52127e82
14 changed files with 1381 additions and 2 deletions
36
resources/external/status/docker_compose/compose.yaml.j2
vendored
Normal file
36
resources/external/status/docker_compose/compose.yaml.j2
vendored
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# https://gatus.io/
|
||||
# https://github.com/TwiN/gatus
|
||||
# https://github.com/TwiN/gatus/blob/master/.examples/docker-compose-postgres-storage/compose.yaml
|
||||
|
||||
services:
|
||||
database:
|
||||
image: docker.io/library/postgres:18.1
|
||||
volumes:
|
||||
- ./database:/var/lib/postgresql
|
||||
environment:
|
||||
- "POSTGRES_DB=gatus"
|
||||
- "POSTGRES_USER=gatus"
|
||||
- "POSTGRES_PASSWORD={{ secret__gatus_db_password }}"
|
||||
networks:
|
||||
- gatus
|
||||
|
||||
gatus:
|
||||
image: ghcr.io/twin/gatus:v5.34.0
|
||||
restart: always
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- "GATUS_CONFIG_PATH=/config"
|
||||
- "POSTGRES_DB=gatus"
|
||||
- "POSTGRES_USER=gatus"
|
||||
- "POSTGRES_PASSWORD={{ secret__gatus_db_password }}"
|
||||
- "MATRIX_ACCESS_TOKEN={{ secret__gatus_matrix_access_token }}"
|
||||
volumes:
|
||||
- ./configs:/config
|
||||
networks:
|
||||
- gatus
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
networks:
|
||||
gatus:
|
||||
303
resources/external/status/docker_compose/config/easterhegg-websites.yaml
vendored
Normal file
303
resources/external/status/docker_compose/config/easterhegg-websites.yaml
vendored
Normal file
|
|
@ -0,0 +1,303 @@
|
|||
# Easterhegg Websites and Websites (Redirects)
|
||||
# (hosted on public-web-static)
|
||||
# One could probably also generate this list from the public-web-static config.
|
||||
easterhegg-websites-defaults: &easterhegg_websites_defaults
|
||||
group: Websites
|
||||
interval: 5m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 3
|
||||
success-threshold: 1
|
||||
minimum-reminder-interval: "12h"
|
||||
send-on-resolved: true
|
||||
|
||||
easterhegg-websites-redirects-defaults: &easterhegg_websites_redirects_defaults
|
||||
group: Websites (Redirects)
|
||||
interval: 15m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 3
|
||||
success-threshold: 1
|
||||
minimum-reminder-interval: "24h"
|
||||
send-on-resolved: true
|
||||
|
||||
endpoints:
|
||||
# Websites
|
||||
- name: eh03.easterhegg.eu
|
||||
url: "https://eh03.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easter(h)egg 2003*)"
|
||||
|
||||
- name: eh05.easterhegg.eu
|
||||
url: "https://eh05.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2005 - The workshop weekend*)"
|
||||
|
||||
- name: eh07.easterhegg.eu
|
||||
url: "https://eh07.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: eh09.easterhegg.eu
|
||||
url: "https://eh09.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: eh11.easterhegg.eu
|
||||
url: "https://eh11.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: eh20.easterhegg.eu
|
||||
url: "https://eh20.easterhegg.eu"
|
||||
<<: *easterhegg_websites_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*EH20 - Back to root*)"
|
||||
|
||||
# Websites (Redirects)
|
||||
# eh03.easterhegg.eu
|
||||
- name: eh2003.hamburg.ccc.de
|
||||
url: "https://eh2003.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easter(h)egg 2003*)"
|
||||
|
||||
- name: www.eh2003.hamburg.ccc.de
|
||||
url: "https://www.eh2003.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easter(h)egg 2003*)"
|
||||
|
||||
- name: easterhegg2003.hamburg.ccc.de
|
||||
url: "https://easterhegg2003.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easter(h)egg 2003*)"
|
||||
|
||||
- name: www.easterhegg2003.hamburg.ccc.de
|
||||
url: "https://www.easterhegg2003.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easter(h)egg 2003*)"
|
||||
|
||||
# eh05.easterhegg.eu
|
||||
- name: eh2005.hamburg.ccc.de
|
||||
url: "https://eh2005.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2005 - The workshop weekend*)"
|
||||
|
||||
- name: www.eh2005.hamburg.ccc.de
|
||||
url: "https://www.eh2005.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2005 - The workshop weekend*)"
|
||||
|
||||
- name: easterhegg2005.hamburg.ccc.de
|
||||
url: "https://easterhegg2005.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2005 - The workshop weekend*)"
|
||||
|
||||
- name: www.easterhegg2005.hamburg.ccc.de
|
||||
url: "https://www.easterhegg2005.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2005 - The workshop weekend*)"
|
||||
|
||||
# eh07.easterhegg.eu
|
||||
- name: eh2007.hamburg.ccc.de
|
||||
url: "https://eh2007.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: www.eh2007.hamburg.ccc.de
|
||||
url: "https://www.eh2007.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: eh07.hamburg.ccc.de
|
||||
url: "https://eh07.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: www.eh07.hamburg.ccc.de
|
||||
url: "https://www.eh07.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: easterhegg2007.hamburg.ccc.de
|
||||
url: "https://easterhegg2007.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
- name: www.easterhegg2007.hamburg.ccc.de
|
||||
url: "https://www.easterhegg2007.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2007 - The Workshop weekend*)"
|
||||
|
||||
# eh09.easterhegg.eu
|
||||
- name: eh2009.hamburg.ccc.de
|
||||
url: "https://eh2009.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: www.eh2009.hamburg.ccc.de
|
||||
url: "https://www.eh2009.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: eh09.hamburg.ccc.de
|
||||
url: "https://eh09.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: www.eh09.hamburg.ccc.de
|
||||
url: "https://www.eh09.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: easterhegg2009.hamburg.ccc.de
|
||||
url: "https://easterhegg2009.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
- name: www.easterhegg2009.hamburg.ccc.de
|
||||
url: "https://www.easterhegg2009.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2009*)"
|
||||
|
||||
# eh11.easterhegg.eu
|
||||
- name: eh2011.hamburg.ccc.de
|
||||
url: "https://eh2011.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: www.eh2011.hamburg.ccc.de
|
||||
url: "https://www.eh2011.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: eh11.hamburg.ccc.de
|
||||
url: "https://eh11.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: www.eh11.hamburg.ccc.de
|
||||
url: "https://www.eh11.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: easterhegg2011.hamburg.ccc.de
|
||||
url: "https://easterhegg2011.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
- name: www.easterhegg2011.hamburg.ccc.de
|
||||
url: "https://www.easterhegg2011.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2011*)"
|
||||
|
||||
# eh20.easterhegg.eu
|
||||
- name: www.eh20.easterhegg.eu
|
||||
url: "https://www.eh20.easterhegg.eu"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*EH20 - Back to root*)"
|
||||
|
||||
- name: eh20.hamburg.ccc.de
|
||||
url: "https://eh20.hamburg.ccc.de"
|
||||
<<: *easterhegg_websites_redirects_defaults
|
||||
conditions:
|
||||
- "[status] == 200"
|
||||
- "[certificate_expiration] > 48h"
|
||||
- "[BODY] == pat(*EH20 - Back to root*)"
|
||||
25
resources/external/status/docker_compose/config/general.yaml
vendored
Normal file
25
resources/external/status/docker_compose/config/general.yaml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
storage:
|
||||
type: postgres
|
||||
path: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}?sslmode=disable"
|
||||
|
||||
ui:
|
||||
title: CCCHH Status
|
||||
description: Automated uptime monitoring and status page for CCCHH services. Powered by Gatus.
|
||||
header: CCCHH Status
|
||||
buttons:
|
||||
- name: Website
|
||||
link: "https://hamburg.ccc.de"
|
||||
- name: Git
|
||||
link: "https://git.hamburg.ccc.de"
|
||||
- name: Kontakt & Impressum
|
||||
link: "https://hamburg.ccc.de/imprint/"
|
||||
default-sort-by: group
|
||||
|
||||
alerting:
|
||||
matrix:
|
||||
server-url: "https://matrix-client.matrix.org"
|
||||
access-token: "${MATRIX_ACCESS_TOKEN}"
|
||||
internal-room-id: "!jG755onbGAH-lZsZo8SRKtlsncSMvq7nzPhwCi5CgdQ"
|
||||
|
||||
# A bit more than the default 5 concurrent checks should be fine.
|
||||
concurrency: 15
|
||||
264
resources/external/status/docker_compose/config/services-chaosknoten.yaml
vendored
Normal file
264
resources/external/status/docker_compose/config/services-chaosknoten.yaml
vendored
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
# Services (Chaosknoten)
|
||||
services-chaosknoten-defaults: &services_chaosknoten_defaults
|
||||
group: Services (Chaosknoten)
|
||||
interval: 1m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 5
|
||||
success-threshold: 2
|
||||
minimum-reminder-interval: "6h"
|
||||
send-on-resolved: true
|
||||
|
||||
endpoints:
|
||||
- name: CCCHH ID/Keycloak (main page/account console)
|
||||
url: "https://id.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*JavaScript is required to use the Account Console.*)"
|
||||
|
||||
- name: CCCHH ID/Keycloak (ccchh realm)
|
||||
url: "https://id.hamburg.ccc.de/realms/ccchh/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY].realm == ccchh"
|
||||
|
||||
- name: ccchoir
|
||||
url: "https://ccchoir.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*The Choir of the Chaos Computer Club*)"
|
||||
|
||||
- name: Cloud (status info)
|
||||
url: "https://cloud.hamburg.ccc.de/status.php"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY].installed == true"
|
||||
- "[BODY].maintenance == false"
|
||||
|
||||
- name: Cloud (main page/login)
|
||||
url: "https://cloud.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Sign in to CCCHH*)"
|
||||
|
||||
- name: cow (main page/login)
|
||||
url: "https://cow.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*mailcow UI*)"
|
||||
|
||||
- name: cow (SMTP port 25)
|
||||
url: "tcp://cow.hamburg.ccc.de:25"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: cow (SMTPS port 465)
|
||||
url: "tls://cow.hamburg.ccc.de:465"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: cow (SMTP with STARTTLS port 587)
|
||||
url: "starttls://cow.hamburg.ccc.de:587"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: cow (IMAP port 143)
|
||||
url: "tcp://cow.hamburg.ccc.de:143"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: cow (IMAPS port 465)
|
||||
url: "tls://cow.hamburg.ccc.de:465"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: Design/penpot
|
||||
url: "https://design.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Penpot - Design Freedom for Teams*)"
|
||||
|
||||
- name: EH22 Website/Wiki
|
||||
url: "https://eh22.easterhegg.eu/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2025*)"
|
||||
|
||||
- name: Git
|
||||
url: "https://git.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*CCCHH Git*)"
|
||||
|
||||
- name: GitLab
|
||||
url: "https://gitlab.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Moin beim Gitlab des CCC Hamburg!*)"
|
||||
|
||||
- name: Grafana
|
||||
url: "https://grafana.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Sign in to CCCHH*)"
|
||||
|
||||
- name: Jitsi
|
||||
url: "https://jitsi.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Jitsi Meet*)"
|
||||
|
||||
- name: Lists
|
||||
url: "https://lists.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Mailing Lists*)"
|
||||
|
||||
- name: Matrix
|
||||
url: "https://matrix.hamburg.ccc.de/_matrix/client/versions"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "has([BODY].versions) == true"
|
||||
- "has([BODY].unstable_features) == true"
|
||||
|
||||
- name: Mumble (tcp)
|
||||
url: "tcp://mumble.hamburg.ccc.de:64738"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: Mumble (udp)
|
||||
url: "udp://mumble.hamburg.ccc.de:64738"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: NetBox
|
||||
url: "https://NetBox.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*NetBox*)"
|
||||
|
||||
- name: ntfy
|
||||
url: "https://ntfy.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*ntfy web requires JavaScript*)"
|
||||
|
||||
- name: OnlyOffice
|
||||
url: "https://onlyoffice.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*ONLYOFFICE Docs Community Edition installed*)"
|
||||
|
||||
- name: Pad
|
||||
url: "https://pad.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*HedgeDoc - Ideas grow better together*)"
|
||||
|
||||
- name: Pretalx (main page)
|
||||
url: "https://pretalx.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*pretalx*)"
|
||||
|
||||
- name: Pretalx (EH22/Easterhegg 2025)
|
||||
url: "https://cfp.eh22.easterhegg.eu/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Easterhegg 2025*)"
|
||||
- "[BODY] == pat(*pretalx*)"
|
||||
|
||||
- name: SpaceAPI
|
||||
url: "https://spaceapi.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY].space == CCCHH"
|
||||
|
||||
- name: Surveillance under Surveillance
|
||||
url: "https://sunders.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Surveillance under Surveillance*)"
|
||||
|
||||
- name: Tickets/pretix
|
||||
url: "https://tickets.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*pretix*)"
|
||||
|
||||
- name: Wiki
|
||||
url: "https://wiki.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*CCCHH Wiki*)"
|
||||
|
||||
- name: Woodpecker
|
||||
url: "https://woodpecker.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Woodpecker*)"
|
||||
|
||||
- name: Zammad
|
||||
url: "https://zammad.hamburg.ccc.de/"
|
||||
<<: *services_chaosknoten_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*zammad*)"
|
||||
23
resources/external/status/docker_compose/config/sites.yaml
vendored
Normal file
23
resources/external/status/docker_compose/config/sites.yaml
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Sites
|
||||
sites-defaults: &sites_defaults
|
||||
group: Sites
|
||||
interval: 1m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 5
|
||||
success-threshold: 2
|
||||
minimum-reminder-interval: "6h"
|
||||
send-on-resolved: true
|
||||
|
||||
endpoints:
|
||||
- name: Chaosknoten/IRZ42
|
||||
url: "icmp://chaosknoten.hamburg.ccc.de"
|
||||
<<: *sites_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
|
||||
- name: Z9
|
||||
url: "icmp://185.161.129.129"
|
||||
<<: *sites_defaults
|
||||
conditions:
|
||||
- "[CONNECTED] == true"
|
||||
174
resources/external/status/docker_compose/config/websites.yaml
vendored
Normal file
174
resources/external/status/docker_compose/config/websites.yaml
vendored
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
# Websites, Websites (Staging) and Websites (Redirects)
|
||||
# (hosted on public-web-static)
|
||||
# One could probably also generate this list from the public-web-static config.
|
||||
websites-defaults: &websites_defaults
|
||||
group: Websites
|
||||
interval: 1m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 5
|
||||
success-threshold: 2
|
||||
minimum-reminder-interval: "6h"
|
||||
send-on-resolved: true
|
||||
|
||||
websites-staging-defaults: &websites_staging_defaults
|
||||
group: Websites (Staging)
|
||||
interval: 5m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 3
|
||||
success-threshold: 1
|
||||
minimum-reminder-interval: "24h"
|
||||
send-on-resolved: true
|
||||
|
||||
websites-redirects-defaults: &websites_redirects_defaults
|
||||
group: Websites (Redirects)
|
||||
interval: 5m
|
||||
alerts:
|
||||
- type: matrix
|
||||
failure-threshold: 3
|
||||
success-threshold: 1
|
||||
minimum-reminder-interval: "24h"
|
||||
send-on-resolved: true
|
||||
|
||||
endpoints:
|
||||
# Websites
|
||||
- name: branding-resources.hamburg.ccc.de
|
||||
url: "https://branding-resources.hamburg.ccc.de/logo/sources.txt"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*file: ccchh-logo.png*)"
|
||||
|
||||
- name: c3cat.de
|
||||
url: "https://c3cat.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Cat Ears Operation Center*)"
|
||||
|
||||
- name: cryptoparty-hamburg.de
|
||||
url: "https://cryptoparty-hamburg.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Digitale Selbstverteidigung in Hamburg*)"
|
||||
|
||||
- name: element-admin.hamburg.ccc.de
|
||||
url: "https://element-admin.hamburg.ccc.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Loading Element Admin*)"
|
||||
|
||||
- name: element.hamburg.ccc.de
|
||||
url: "https://element.hamburg.ccc.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Sorry, Element requires JavaScript to be enabled.*)"
|
||||
|
||||
- name: hacker.tours
|
||||
url: "https://hacker.tours"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
# Once suites support alerting, we can also monitor the target as well.
|
||||
- "[BODY] == pat(*<meta http-equiv=\"refresh\" content=\"0; url=https://hacker.tours/de/\">*)"
|
||||
|
||||
- name: hackertours.hamburg.ccc.de
|
||||
url: "https://hackertours.hamburg.ccc.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
# Once suites support alerting, we can also monitor the target as well.
|
||||
- "[BODY] == pat(*<meta http-equiv=\"refresh\" content=\"0; url=https://hackertours.hamburg.ccc.de/de/\">*)"
|
||||
|
||||
- name: hamburg.ccc.de
|
||||
url: "https://hamburg.ccc.de"
|
||||
<<: *websites_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Wir sind der Chaos Computer Club der Hansestadt Hamburg.*)"
|
||||
|
||||
# Websites (Staging)
|
||||
- name: staging.c3cat.de
|
||||
url: "https://staging.c3cat.de"
|
||||
<<: *websites_staging_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*c3cat.de Staging Environment*)"
|
||||
|
||||
- name: staging.cryptoparty-hamburg.de
|
||||
url: "https://staging.cryptoparty-hamburg.de"
|
||||
<<: *websites_staging_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*cryptoparty-hamburg.de Staging Environment*)"
|
||||
|
||||
- name: staging.hacker.tours
|
||||
url: "https://staging.hacker.tours"
|
||||
<<: *websites_staging_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*hacker.tours Staging Environment*)"
|
||||
|
||||
- name: staging.hackertours.hamburg.ccc.de
|
||||
url: "https://staging.hackertours.hamburg.ccc.de"
|
||||
<<: *websites_staging_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*hackertours.hamburg.ccc.de Staging Environment*)"
|
||||
|
||||
- name: staging.hamburg.ccc.de
|
||||
url: "https://staging.hamburg.ccc.de"
|
||||
<<: *websites_staging_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*hamburg.ccc.de Staging Environment*)"
|
||||
|
||||
# Website (Redirects)
|
||||
- name: www.c3cat.de
|
||||
url: "https://www.c3cat.de"
|
||||
<<: *websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Cat Ears Operation Center*)"
|
||||
|
||||
- name: cryptoparty.hamburg.ccc.de
|
||||
url: "https://cryptoparty.hamburg.ccc.de"
|
||||
<<: *websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Digitale Selbstverteidigung in Hamburg*)"
|
||||
|
||||
- name: staging.cryptoparty.hamburg.ccc.de
|
||||
url: "https://staging.cryptoparty.hamburg.ccc.de"
|
||||
<<: *websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*cryptoparty-hamburg.de Staging Environment*)"
|
||||
|
||||
- name: www.hamburg.ccc.de
|
||||
url: "https://www.hamburg.ccc.de"
|
||||
<<: *websites_redirects_defaults
|
||||
conditions:
|
||||
- "[STATUS] == 200"
|
||||
- "[CERTIFICATE_EXPIRATION] > 48h"
|
||||
- "[BODY] == pat(*Wir sind der Chaos Computer Club der Hansestadt Hamburg.*)"
|
||||
14
resources/external/status/nginx/http_handler.conf
vendored
Normal file
14
resources/external/status/nginx/http_handler.conf
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
server_name status.hamburg.ccc.de;
|
||||
|
||||
location / {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
proxy_pass http://127.0.0.1:31820/.well-known/acme-challenge/;
|
||||
}
|
||||
}
|
||||
33
resources/external/status/nginx/status.hamburg.ccc.de.conf
vendored
Normal file
33
resources/external/status/nginx/status.hamburg.ccc.de.conf
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# partly generated 2022-01-08, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration
|
||||
# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6
|
||||
server {
|
||||
listen 443 ssl http2 default_server;
|
||||
listen [::]:443 ssl http2 default_server;
|
||||
|
||||
server_name status.hamburg.ccc.de;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/status.hamburg.ccc.de/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/status.hamburg.ccc.de/privkey.pem;
|
||||
# verify chain of trust of OCSP response using Root CA and Intermediate certs
|
||||
ssl_trusted_certificate /etc/letsencrypt/live/status.hamburg.ccc.de/chain.pem;
|
||||
|
||||
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
|
||||
add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Port 443;
|
||||
# This is https in any case.
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
# Hide the X-Forwarded header.
|
||||
proxy_hide_header X-Forwarded;
|
||||
# Assume we are the only Reverse Proxy.
|
||||
# Also provide "_hidden" for by, since it's not relevant.
|
||||
proxy_set_header Forwarded "for=$remote_addr;proto=https;host=$host;by=_hidden";
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8080/;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue