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