Project

General

Profile

Conventions » History » Version 3

Redmine Admin, 10/31/2026 07:01 PM
deploy-publish.sh

1 3 Redmine Admin
*Chapter 0 of the dmz-web documentation · headings are numbered like the cheat sheets · index: [[Wiki]]*
2
3 2 Redmine Admin
Host: `dmz-web` (Rocky Linux 10.2). Everything runs **rootless** under user
4
`websvcmaster` (no sudo) as Quadlet units in `~/.config/containers/systemd/`.
5
Design rule: **shared-nothing** — every service gets its own network, DB
6
container, app container and volumes; the only thing joined to all of them is
7 1 Redmine Admin
Nginx Proxy Manager.
8
9 2 Redmine Admin
10 1 Redmine Admin
Naming inversion to remember: containers are `db-<name>`, secrets are `<name>-db-…`.
11 2 Redmine Admin
12 1 Redmine Admin
13 3 Redmine Admin
## 0. Shell setup (every session)
14 1 Redmine Admin
15 2 Redmine Admin
`sudo -iu websvcmaster` doesn't run PAM session setup, so `systemctl --user`
16 1 Redmine Admin
fails with "Failed to connect to user scope bus" until:
17
18 2 Redmine Admin
```bash
19 1 Redmine Admin
export XDG_RUNTIME_DIR=/run/user/$(id -u)
20
export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
21
systemctl --user show-environment >/dev/null && echo OK
22
```
23
24 2 Redmine Admin
Lingering must be on (`loginctl show-user websvcmaster | grep Linger`, as root).
25 1 Redmine Admin
No write access to system `/tmp` — use `~/tmp`.
26
27
Where things live:
28
29 2 Redmine Admin
```bash
30 1 Redmine Admin
~/.config/containers/systemd/          # live Quadlet units (the "pod config")
31
~/deploy/                              # add-wordpress-site.sh, check-sites.sh
32
~/deploy/quadlet/                      # generated unit templates (source of truth, cp'd into the dir above)
33
~/.local/share/containers/storage/volumes/<vol>/_data/   # named volume contents
34
~/.local/share/containers/storage/secrets/filedriver/    # secret store
35
~/redmine_data/                        # Redmine bind mounts (config, plugins, images, assets)
36
/srv/git/                              # bare git repos (root-owned, read-only into Redmine)
37
```
38
39
40 2 Redmine Admin
---
41
_Source: `dmz-web-podman-cheatsheet.md` v1.1.1 in the `dmz-web-deploy` repo ([[Releases]]). Edit the wiki and the repo copy together._