cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

config.yaml (9527B)


      1 storage:
      2   type: sqlite
      3   path: /data/gatus.db
      4 
      5 metrics: true
      6 
      7 web:
      8   port: 8080
      9 
     10 ui:
     11   title: "Status | midnightthoughts.space"
     12   header: "Service Status"
     13   dark-mode: true
     14 
     15 # Announcements display a banner at the top of the status page.
     16 # Useful for communicating planned maintenance or incidents.
     17 # Types: outage, warning, information, operational, none
     18 # Add new entries at the top — they're shown in reverse chronological order.
     19 # Set archived: true to hide old announcements without deleting them.
     20 #
     21 # announcements:
     22 #   - timestamp: 2026-03-13T10:00:00Z
     23 #     type: warning
     24 #     message: "Scheduled maintenance 10:00-12:00 UTC — some services may be unavailable."
     25 #   - timestamp: 2026-03-13T12:00:00Z
     26 #     type: operational
     27 #     message: "Maintenance completed. All services restored."
     28 #     archived: false
     29 
     30 endpoints:
     31 
     32   ##############################################################################
     33   # DNS
     34   ##############################################################################
     35 
     36   - name: dns-a Reachability
     37     group: DNS
     38     url: "tcp://46.62.175.246:53"
     39     interval: 1m
     40     conditions:
     41       - "[CONNECTED] == true"
     42 
     43   - name: dns-b Reachability
     44     group: DNS
     45     url: "tcp://46.62.199.69:53"
     46     interval: 1m
     47     conditions:
     48       - "[CONNECTED] == true"
     49 
     50   - name: dns-a Authoritative (nordgedanken.dev)
     51     group: DNS
     52     url: "46.62.175.246:53"
     53     dns:
     54       query-type: "A"
     55       query-name: "nordgedanken.dev"
     56     interval: 2m
     57     conditions:
     58       - "[DNS_RCODE] == NOERROR"
     59 
     60   - name: dns-b Authoritative (nordgedanken.dev)
     61     group: DNS
     62     url: "46.62.199.69:53"
     63     dns:
     64       query-type: "A"
     65       query-name: "nordgedanken.dev"
     66     interval: 2m
     67     conditions:
     68       - "[DNS_RCODE] == NOERROR"
     69 
     70   - name: dns-a Authoritative (midnightthoughts.space)
     71     group: DNS
     72     url: "46.62.175.246:53"
     73     dns:
     74       query-type: "A"
     75       query-name: "midnightthoughts.space"
     76     interval: 2m
     77     conditions:
     78       - "[DNS_RCODE] == NOERROR"
     79 
     80   - name: dns-b Authoritative (midnightthoughts.space)
     81     group: DNS
     82     url: "46.62.199.69:53"
     83     dns:
     84       query-type: "A"
     85       query-name: "midnightthoughts.space"
     86     interval: 2m
     87     conditions:
     88       - "[DNS_RCODE] == NOERROR"
     89 
     90   - name: dns-a Recursive
     91     group: DNS
     92     url: "46.62.175.246:53"
     93     dns:
     94       query-type: "A"
     95       query-name: "one.one.one.one"
     96     interval: 5m
     97     conditions:
     98       - "[DNS_RCODE] == NOERROR"
     99 
    100   - name: dns-b Recursive
    101     group: DNS
    102     url: "46.62.199.69:53"
    103     dns:
    104       query-type: "A"
    105       query-name: "one.one.one.one"
    106     interval: 5m
    107     conditions:
    108       - "[DNS_RCODE] == NOERROR"
    109 
    110   ##############################################################################
    111   # INFRASTRUCTURE
    112   ##############################################################################
    113 
    114   - name: Authentik (SSO)
    115     group: Infrastructure
    116     url: "https://auth.midnightthoughts.space/-/health/live/"
    117     interval: 1m
    118     conditions:
    119       - "[STATUS] == 200"
    120       - "[CERTIFICATE_EXPIRATION] > 24h"
    121       - "[RESPONSE_TIME] < 5000"
    122 
    123   - name: Grafana
    124     group: Infrastructure
    125     url: "https://grafana.midnightthoughts.space/api/health"
    126     interval: 2m
    127     conditions:
    128       - "[STATUS] == 200"
    129       - "[CERTIFICATE_EXPIRATION] > 24h"
    130 
    131   - name: ntfy
    132     group: Infrastructure
    133     url: "https://notify.mtrnord.blog/v1/health"
    134     interval: 1m
    135     conditions:
    136       - "[STATUS] == 200"
    137       - "[BODY].healthy == true"
    138       - "[CERTIFICATE_EXPIRATION] > 24h"
    139 
    140   - name: Flux Webhook
    141     group: Infrastructure
    142     url: "https://webhook.kubernetes.midnightthoughts.space"
    143     interval: 5m
    144     conditions:
    145       - "[STATUS] == any(200, 404)"  # endpoint exists, auth required
    146       - "[CERTIFICATE_EXPIRATION] > 24h"
    147 
    148   ##############################################################################
    149   # SOCIAL & COMMUNICATION
    150   ##############################################################################
    151 
    152   - name: GoToSocial
    153     group: Social
    154     url: "https://gts.mtrnord.blog/livez"
    155     interval: 1m
    156     conditions:
    157       - "[STATUS] == 200"
    158       - "[CERTIFICATE_EXPIRATION] > 24h"
    159       - "[RESPONSE_TIME] < 3000"
    160 
    161   - name: Matrix (continuwuity)
    162     group: Social
    163     url: "https://matrix.mtrnord.blog/_matrix/client/versions"
    164     interval: 1m
    165     conditions:
    166       - "[STATUS] == 200"
    167       - "[CERTIFICATE_EXPIRATION] > 24h"
    168       - "has([BODY].versions) == true"
    169 
    170   - name: Matrix Well-Known
    171     group: Social
    172     url: "https://mtrnord.blog/.well-known/matrix/server"
    173     interval: 5m
    174     conditions:
    175       - "[STATUS] == 200"
    176       - "[CERTIFICATE_EXPIRATION] > 24h"
    177 
    178   - name: Matrix Client Well-Known
    179     group: Social
    180     url: "https://mtrnord.blog/.well-known/matrix/client"
    181     interval: 5m
    182     conditions:
    183       - "[STATUS] == 200"
    184       - "[CERTIFICATE_EXPIRATION] > 24h"
    185 
    186   - name: Draupnir
    187     group: Social
    188     url: "https://draupnir.midnightthoughts.space"
    189     interval: 5m
    190     conditions:
    191       - "[STATUS] == any(200, 404)"
    192       - "[CERTIFICATE_EXPIRATION] > 24h"
    193 
    194   ##############################################################################
    195   # MAIL
    196   ##############################################################################
    197 
    198   - name: SMTP (25)
    199     group: Mail
    200     url: "tcp://mail.midnightthoughts.space:25"
    201     interval: 2m
    202     conditions:
    203       - "[CONNECTED] == true"
    204 
    205   - name: SMTPS (465)
    206     group: Mail
    207     url: "tcp://mail.midnightthoughts.space:465"
    208     interval: 2m
    209     conditions:
    210       - "[CONNECTED] == true"
    211 
    212   - name: SMTP Submission (587)
    213     group: Mail
    214     url: "tcp://mail.midnightthoughts.space:587"
    215     interval: 2m
    216     conditions:
    217       - "[CONNECTED] == true"
    218 
    219   - name: IMAPS (993)
    220     group: Mail
    221     url: "tcp://mail.midnightthoughts.space:993"
    222     interval: 2m
    223     conditions:
    224       - "[CONNECTED] == true"
    225 
    226   - name: MTA-STS
    227     group: Mail
    228     url: "https://mta-sts.midnightthoughts.space/.well-known/mta-sts.txt"
    229     interval: 15m
    230     conditions:
    231       - "[STATUS] == 200"
    232       - "[CERTIFICATE_EXPIRATION] > 24h"
    233 
    234   - name: WKD (nordgedanken.dev)
    235     group: Mail
    236     url: "https://openpgpkey.nordgedanken.dev/.well-known/openpgpkey/nordgedanken.dev/policy"
    237     interval: 15m
    238     conditions:
    239       - "[STATUS] == 200"
    240       - "[CERTIFICATE_EXPIRATION] > 24h"
    241 
    242   ##############################################################################
    243   # PERSONAL SERVICES
    244   ##############################################################################
    245 
    246   - name: Vaultwarden
    247     group: Personal
    248     url: "https://vault.midnightthoughts.space/alive"
    249     interval: 1m
    250     conditions:
    251       - "[STATUS] == 200"
    252       - "[CERTIFICATE_EXPIRATION] > 24h"
    253 
    254   - name: Immich
    255     group: Personal
    256     url: "https://immich.mtrnord.blog/api/server/ping"
    257     interval: 2m
    258     conditions:
    259       - "[STATUS] == 200"
    260       - "[BODY].res == pong"
    261       - "[CERTIFICATE_EXPIRATION] > 24h"
    262 
    263   - name: FreshRSS
    264     group: Personal
    265     url: "https://rss.mtrnord.blog"
    266     interval: 5m
    267     conditions:
    268       - "[STATUS] == 200"
    269       - "[CERTIFICATE_EXPIRATION] > 24h"
    270 
    271   - name: Bookwyrm
    272     group: Personal
    273     url: "https://books.mtrnord.blog"
    274     interval: 5m
    275     conditions:
    276       - "[STATUS] == 200"
    277       - "[CERTIFICATE_EXPIRATION] > 24h"
    278 
    279   - name: ActualBudget
    280     group: Personal
    281     url: "https://budget.midnightthoughts.space"
    282     interval: 5m
    283     conditions:
    284       - "[STATUS] == 200"
    285       - "[CERTIFICATE_EXPIRATION] > 24h"
    286 
    287   - name: Peertube
    288     group: Personal
    289     url: "https://peertube.mtrnord.blog"
    290     interval: 5m
    291     conditions:
    292       - "[STATUS] == 200"
    293       - "[CERTIFICATE_EXPIRATION] > 24h"
    294 
    295   - name: Collabora
    296     group: Personal
    297     url: "https://collabora.midnightthoughts.space"
    298     interval: 5m
    299     conditions:
    300       - "[STATUS] == 200"
    301       - "[CERTIFICATE_EXPIRATION] > 24h"
    302 
    303   ##############################################################################
    304   # PRODUCTIVITY
    305   ##############################################################################
    306 
    307   - name: Kimai
    308     group: Productivity
    309     url: "https://kimai.midnightthoughts.space"
    310     interval: 5m
    311     conditions:
    312       - "[STATUS] == 200"
    313       - "[CERTIFICATE_EXPIRATION] > 24h"
    314 
    315   - name: Plane
    316     group: Productivity
    317     url: "https://plane.midnightthoughts.space"
    318     interval: 5m
    319     conditions:
    320       - "[STATUS] == 200"
    321       - "[CERTIFICATE_EXPIRATION] > 24h"
    322 
    323   - name: Weblate
    324     group: Productivity
    325     url: "https://weblate.mtrnord.blog"
    326     interval: 5m
    327     conditions:
    328       - "[STATUS] == 200"
    329       - "[CERTIFICATE_EXPIRATION] > 24h"
    330 
    331   ##############################################################################
    332   # PUBLISHING & DEV
    333   ##############################################################################
    334 
    335   - name: Blog
    336     group: Publishing
    337     url: "https://mtrnord.blog"
    338     interval: 5m
    339     conditions:
    340       - "[STATUS] == 200"
    341       - "[CERTIFICATE_EXPIRATION] > 24h"
    342 
    343   - name: cgit
    344     group: Publishing
    345     url: "https://git.midnightthoughts.space"
    346     interval: 5m
    347     conditions:
    348       - "[STATUS] == 200"
    349       - "[CERTIFICATE_EXPIRATION] > 24h"
    350 
    351   - name: Connectivity Tester
    352     group: Publishing
    353     url: "https://connectivity-tester.mtrnord.blog"
    354     interval: 2m
    355     conditions:
    356       - "[STATUS] == 200"
    357       - "[CERTIFICATE_EXPIRATION] > 24h"
    358 
    359   - name: Connectivity Tester API
    360     group: Publishing
    361     url: "https://api.connectivity-tester.mtrnord.blog/api/federation/federation-ok?server_name=mtrnord.blog"
    362     interval: 5m
    363     conditions:
    364       - "[STATUS] == 200"
    365       - "[CERTIFICATE_EXPIRATION] > 24h"