Skip to main content

max / makenotwork

4.4 KB · 184 lines History Blame Raw
1 [serve]
2 interval_secs = 300
3 prune_days = 30
4 listen = "100.106.221.39:9100"
5 peer_heartbeat_secs = 60
6 route_check_interval_secs = 300
7 dashboard = true
8 # api_token loaded from POM_API_TOKEN env var
9
10 # The database is at a fixed absolute path, not wherever XDG_DATA_HOME happens
11 # to point. The unit sets XDG_DATA_HOME=/var/lib and an interactive shell does
12 # not, so before this was configured `pom serve` and a hand-run `pom test` on
13 # this host opened two different files and neither said so: the suites ran,
14 # passed, and reported into a database nothing served.
15 [storage]
16 db_path = "/var/lib/pom/pom.db"
17
18 [instance]
19 name = "astra"
20
21 [targets.mnw]
22 label = "Makenotwork Production"
23 expected_routes = ["/", "/discover", "/login", "/docs"]
24
25 [[targets.mnw.dns]]
26 name = "makenot.work"
27 record_type = "A"
28 expected = []
29
30 [[targets.mnw.dns]]
31 name = "forums.makenot.work"
32 record_type = "A"
33 expected = []
34
35 [[targets.mnw.dns]]
36 name = "git.makenot.work"
37 record_type = "A"
38 expected = []
39
40 [targets.mnw.whois]
41 domain = "makenot.work"
42 warn_days = 30
43
44 [targets.mnw.health]
45 url = "https://makenot.work/api/health"
46 timeout_secs = 10
47
48 [targets.mnw.health.expect]
49 status_code = 200
50 json_fields = { "status" = "operational" }
51
52 [targets.mnw.health.trending]
53 baseline_window_hours = 168
54 spike_threshold = 2.0
55
56 [targets.mnw.tls]
57 host = "makenot.work"
58
59 [targets.mnw.tests]
60 command = "/var/lib/pom/staging/run-ci.sh mnw"
61 timeout_secs = 5400
62 staleness_days = 7
63
64 [targets.mt]
65 label = "Multithreaded Forum"
66 expected_routes = ["/"]
67
68 [targets.mt.health]
69 url = "https://forums.makenot.work/api/health"
70 timeout_secs = 10
71
72 [targets.mt.health.expect]
73 status_code = 200
74 json_fields = { "status" = "operational" }
75
76 [targets.mt.tls]
77 host = "forums.makenot.work"
78
79 [targets.mt.tests]
80 command = "/var/lib/pom/staging/run-ci.sh mt"
81 timeout_secs = 2700
82 staleness_days = 7
83
84 [targets.mnw-cli]
85 label = "MNW CLI SSH Server"
86
87 [[targets.mnw-cli.dns]]
88 name = "cli.makenot.work"
89 record_type = "A"
90 expected = []
91
92 [targets.mnw-cli.ssh_banner]
93 host = "5.78.144.244"
94 port = 22
95 timeout_secs = 5
96
97 [targets.htpy]
98 label = "htpy.app"
99
100 [[targets.htpy.dns]]
101 name = "htpy.app"
102 record_type = "A"
103 expected = []
104
105 [targets.htpy.whois]
106 domain = "htpy.app"
107 warn_days = 30
108
109 [targets.htpy.health]
110 # See the same block in pom-hetzner.toml: htpy-web listens on 3200, not 8080, and
111 # /archive/<name> 308s to /viewer/<name>. The stale address is why this target
112 # has carried an open incident since 2026-03-29 while the site served fine.
113 url = "http://100.99.153.68:3200/viewer/S_2"
114 timeout_secs = 10
115
116 [targets.htpy.health.expect]
117 status_code = 200
118 body_contains = "htpy"
119
120 [targets.htpy.tls]
121 host = "htpy.app"
122
123 [targets.go]
124 label = "GoingsOn"
125
126 [targets.go.tests]
127 command = "/var/lib/pom/staging/run-ci.sh go"
128 timeout_secs = 2700
129 staleness_days = 7
130
131 [targets.bb]
132 label = "Balanced Breakfast"
133
134 [targets.bb.tests]
135 command = "/var/lib/pom/staging/run-ci.sh bb"
136 timeout_secs = 2700
137 staleness_days = 7
138
139 [targets.af]
140 label = "AudioFiles"
141
142 [targets.af.tests]
143 command = "/var/lib/pom/staging/run-ci.sh af"
144 timeout_secs = 2700
145 staleness_days = 7
146
147 [targets.sk]
148 label = "SyncKit SDK"
149
150 [targets.sk.tests]
151 command = "/var/lib/pom/staging/run-ci.sh sk"
152 timeout_secs = 1200
153 staleness_days = 7
154
155 [peers.hetzner]
156 # By tailnet name. The label stays `hetzner` because that is what the MCP
157 # tools address an instance by; only the address moves.
158 address = "alpha-west-1:9100"
159 on_missing = "alert"
160 # token = "<hetzner's POM_API_TOKEN value>"
161
162 [peers.macbook]
163 # `mbp`, not 100.100.246.136. That address was NOT IN THE TAILNET when this was
164 # checked on 2026-08-23 -- mbp answers on 100.83.193.59 -- so this peer had been
165 # pointing at nothing, quietly, for as long as nobody looked. `on_missing` is
166 # "log" here, which is exactly why nobody did.
167 address = "mbp:9100"
168 on_missing = "log"
169 # token = "<macbook's POM_API_TOKEN value>"
170
171 [alerts]
172 # postmark_token loaded from POM_POSTMARK_TOKEN env var
173 to = "pom-alerts@makenot.work"
174
175 # MNW operator-log sink: also pushes alerts to POST {mnw_url}/api/internal/alerts.
176 # Caddy answers 404 to /api/internal/* on the public edge, so this addresses the
177 # app port over the tailnet instead (measured 2026-08-15 from astra: 401 without
178 # a token, so the route is reachable and only auth is missing).
179 #
180 # Inert until POM_ALERTS_INGEST_TOKEN is added to /etc/pom/env here, holding the
181 # same value as ALERTS_INGEST_TOKEN in MNW prod's /etc/mnw/makenotwork.env. The
182 # sink no-ops when either half is missing, so this line alone changes nothing.
183 mnw_url = "http://100.120.174.96:3000"
184