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.* |