Project

General

Profile

Troubleshooting » History » Version 2

Redmine Admin, 10/25/2026 07:23 PM

1 2 Redmine Admin
## What is up right now?
2
3
```bash
4 1 Redmine Admin
~/deploy/check-sites.sh                          # every site-* container: status + HTTP answer through NPM
5
podman ps --format 'table {{.Names}}\t{{.Status}}\t{{.Networks}}'
6
systemctl --user list-units 'net-*' 'db-*' 'site-*' 'nginx-proxy-manager*' --no-pager
7
systemctl --user --failed                        # anything that died
8 2 Redmine Admin
```
9
10
## What is defined (even if not running)?
11
12
```bash
13 1 Redmine Admin
ls ~/.config/containers/systemd/                 # the live units = the list of sites
14
systemctl --user list-unit-files 'net-*' 'db-*' 'site-*' 'nginx-proxy-manager*'
15
podman ps -a                                     # containers incl. stopped/exited
16
podman volume ls ; podman network ls ; podman secret ls
17
/usr/libexec/podman/quadlet -dryrun -user 2>&1 | grep -iE 'error|warn'   # unit syntax problems
18 2 Redmine Admin
```
19 1 Redmine Admin
20 2 Redmine Admin
A site = `net-<name>.network` + `db-<name>.container` + `site-<name>.container`
21
(+ `.volume` files). If the files are there and `podman ps` doesn't show the
22
containers, the services are stopped or failed — see next.
23 1 Redmine Admin
24 2 Redmine Admin
## Bringing a site back
25
26
Order matters (network → db → site); `Requires=`/`After=` do it for you when
27
you start the site unit, but starting them one by one shows where it fails:
28
29
```bash
30 1 Redmine Admin
systemctl --user start net-<name>-network.service
31
systemctl --user start db-<name>.service   && sleep 5 && podman logs --tail 20 db-<name>
32
systemctl --user start site-<name>.service && sleep 5 && podman logs --tail 20 site-<name>
33
systemctl --user status site-<name>.service --no-pager
34
journalctl --user -u site-<name>.service -e --no-pager | tail -30
35 2 Redmine Admin
```
36 1 Redmine Admin
37 2 Redmine Admin
Typical causes: image pull failed (no egress / registry down) → `podman pull <image>`;
38
secret missing → `podman secret ls` (a container whose `Secret=` is missing
39
won't start); volume removed → the DB initialises **empty** on next start, stop
40
immediately and restore from backup; `Restart=always` loop → `podman logs`.
41
42
## NPM says 502 / site unreachable but container is up
43
44
```bash
45 1 Redmine Admin
podman inspect nginx-proxy-manager | jq '.[0].NetworkSettings.Networks | keys'   # must list net-<name>
46
podman network inspect net-<name> | jq '.[0].containers | map(.name)'            # db, site, nginx-proxy-manager
47
podman exec nginx-proxy-manager sh -c 'getent hosts site-<name>; curl -sI http://site-<name>/ | head -1'
48 2 Redmine Admin
```
49 1 Redmine Admin
50 2 Redmine Admin
NPM not in the network → the live `nginx-proxy-manager.container` lost the
51
`Network=` line (see [[NPM]]) → fix the unit, `cp`, `daemon-reload`,
52
`restart nginx-proxy-manager.service`. Name doesn't resolve inside NPM → NPM
53
joined the network after it started → same restart. Restarting NPM interrupts
54
**all** sites for ~10–20 s.
55
56
## Does it come back after a reboot?
57
58 1 Redmine Admin
Yes, by design, if three things hold:
59
60 2 Redmine Admin
1. **Lingering** for websvcmaster (the user manager starts at boot without a login):
61
   `loginctl show-user websvcmaster | grep Linger` → `Linger=yes` (root: `loginctl enable-linger websvcmaster`).
62
2. Every unit has `[Install] WantedBy=default.target` — Quadlet units are
63
   *enabled by that section*, not by `systemctl enable` (which doesn't work on
64
   generated units). Check: `grep -L 'WantedBy=default.target' ~/.config/containers/systemd/*.container`
65
   → must print nothing.
66
3. `Restart=always` in `[Service]` so a crash is retried.
67 1 Redmine Admin
68 2 Redmine Admin
Dry test without rebooting: `systemctl --user stop site-<name>.service db-<name>.service && systemctl --user start default.target`
69
→ both come back. Real test: reboot the host, then `check-sites.sh` after ~2 min
70
(MariaDB + Puma + Apache need a moment).
71
72
## After a host reboot — checklist
73
74
```bash
75 1 Redmine Admin
loginctl show-user websvcmaster | grep Linger     # yes
76
systemctl --user --failed                         # empty
77
~/deploy/check-sites.sh                           # all 200/30x
78
firewall-cmd --list-all                           # (root) 81/444 + 8181 rich rules still there
79 2 Redmine Admin
```
80
81
## Data safety reminders
82
83
* Secrets live only in `~/.local/share/containers/storage/secrets/` — back up
84
  that directory (or re-create the secrets from your password store); without
85
  `snipeit-app-key` the Snipe-IT DB is unreadable, without the DB secrets the
86
  containers won't start.
87
* Volumes: `podman volume export <vol> > file.tar` / `podman volume import <vol> file.tar`,
88
  plus DB dumps ([[WordPress]], [[Redmine]], [[Snipe-IT]]).
89
* `podman system reset` or removing `~/.local/share/containers` deletes
90
  **everything** above; never run it on this host.
91
92
---
93
_Source: `dmz-web-podman-cheatsheet.md` v1.2 in the `dmz-web-deploy` repo ([[Releases]]). Edit the wiki and the repo copy together._