Project

General

Profile

Health Check » History » Version 1

Redmine Admin, 10/25/2026 04:16 PM

1 1 Redmine Admin
# Health check
2
3
All `site-*` units at once, from the host. Requests go straight to NPM on  
4
5
127.0.0.1:444 — the same 443→444 translation the FortiGate VIP does — while  
6
7
`--resolve` keeps SNI/Host as the real domain. Domains come from each unit's  
8
9
`Description=<App> -- <domain>` line (WordPress, Redmine and Snipe-IT alike).
10
11
```
12
for u in ~/.config/containers/systemd/site-*.container; do
13
  d=$(sed -n 's/^Description=.* -- //p' "$u")
14
  printf '%-28s ' "$d"; curl -sI --max-time 10 --resolve "$d:444:127.0.0.1" "https://$d:444" | head -1
15
done
16
# add -k to curl while a Let's Encrypt cert isn't issued yet
17
18
# one site by hand
19
curl -sI --resolve <domain>:444:127.0.0.1 https://<domain>:444 | head -1
20
21
# from outside (mobile data / VPN client)
22
curl -sI https://<domain> | head -1
23
```
24
25
`~/deploy/check-sites.sh` is the same loop with container status alongside  
26
27
(uses the same `.* --` sed so non-WordPress units are included).
28
29
`200`/`301`/`302` healthy · `502` NPM up but can't reach the container  
30
31
(network membership? container down?) · `NO RESPONSE` NPM/TLS not answering on 444.
32
33
---
34
35
*Source: `dmz-web-podman-cheatsheet.md` v1.1.1 in the `dmz-web-deploy` repo ([Releases](#)). Edit the wiki and the repo copy together.*