Project

General

Profile

Wiki » History » Version 4

Redmine Admin, 10/29/2026 08:57 AM
deploy-publish.sh

1 1 Redmine Admin
Rocky Linux 10.2 DMZ host (`dmz-web`) running every public web service of MDS as **rootless Podman Quadlet** units under `websvcmaster`, behind **Nginx Proxy Manager** (Let's Encrypt). Shared-nothing: each service has its own network, database, app container and volumes.
2
3 2 Redmine Admin
| Stack      | Network         | App container    | DB container  | DB engine   | Public name               |
4
|------------|-----------------|------------------|---------------|-------------|---------------------------|
5
| NPM        | all `net-*`     | `nginx-proxy-manager` | —        | —           | host :81/:444 (UI :8181)  |
6
| WordPress  | `net-<name>`    | `site-<name>`    | `db-<name>`   | MariaDB 11  | `<domain>` (e.g. www./staging.mdsdefense.com) |
7
| Redmine    | `net-redmine`   | `site-redmine`   | `db-redmine`  | PostgreSQL  | `<redmine-domain>`        |
8
| Snipe-IT   | `net-snipeit`   | `site-snipeit`   | `db-snipeit`  | MariaDB 11  | `assets.mdsdefense.com`   |
9 4 Redmine Admin
| PF         | `net-pf`, `net-pf-db` (Internal) | `site-pf` | `db-pf` | TimescaleDB (PG 16) | `pf.sibernet.com.tr` |
10 1 Redmine Admin
11
Naming inversion to remember: containers are `db-<name>`, secrets are `<name>-db-…`.
12
13
## Pages
14
15 2 Redmine Admin
* [[Conventions]] — shell setup, where things live, naming
16
* [[NPM]] — reverse proxy, Let's Encrypt, joining a site's network, access lists
17
* [[WordPress]] — add-wordpress-site.sh, volumes, MariaDB access, staging → production
18
* [[Redmine]] — PostgreSQL, bind mounts, Puma reload, mail relay
19
* [[Git Workflow]] — bare repos under /srv/git, who runs what, `deploy-commit.sh`, recovery
20
* [[Snipe-IT]] — APP_KEY, proxy env, upgrades, backups
21 4 Redmine Admin
* [[PF]] — portfolio stack: pf-install.sh, two networks, TimescaleDB backup/restore, app images
22 2 Redmine Admin
* [[Operations]] — services, inspecting, env vars, secrets, trailing-newline fix
23
* [[Health Check]] — check-sites.sh and the --resolve :444 trick
24
* [[Troubleshooting]] — what is up / defined, bringing a site back, 502 triage, boot persistence, reboot checklist
25
* [[Releases]] — version history of the cheat sheet and scripts
26
27 1 Redmine Admin
## Repository
28
29 4 Redmine Admin
`dmz-web-deploy` (Repository tab) = the host's `~/deploy`: bootstrap/setup scripts, `add-wordpress-site.sh`, `redmine-install.sh`, `check-sites.sh`, `pf-install.sh`, `root-bin/deploy-commit.sh` and `root-bin/deploy-publish.sh`, `quadlet/*` units, and the single-file versions of this wiki: `dmz-web-podman-cheatsheet.md` (host) and `pf-mgmt-cheatsheet.md` (PF). Secrets are never in the repo; they live only in the Podman secret store.
30 1 Redmine Admin
31
## Working rules
32
33 3 Redmine Admin
* Change a unit in the repo working copy (`~/deploy/quadlet/`), commit with `deploy-commit.sh`, then `cp` to `~/.config/containers/systemd/` and `daemon-reload` — never edit the live copy only.
34
* Every change to a running service gets an issue here (Maintenance / Update-Upgrade); the permanent outcome goes to the relevant wiki page, the step-by-step log stays in the issue.
35
* New secrets: `printf '%s' … | podman secret create` — no trailing newline.