docs: tops compose refresh and configs inventory index.

Update tops stack notes and configs/README service listing.
This commit is contained in:
Hernâni Marques 2026-07-17 01:07:00 +02:00
parent 85d4e05ef0
commit 360fb363de
3 changed files with 19 additions and 14 deletions

View file

@ -10,11 +10,15 @@ Directories are named to match **live podman container names** where possible.
| `taler-exchange-ansible/` | **`taler-hacktivism-exchange-ansible`** | `taler-hacktivism-exchange-ansible:landing` | | `taler-exchange-ansible/` | **`taler-hacktivism-exchange-ansible`** | `taler-hacktivism-exchange-ansible:landing` |
| `bank-landing/` `exchange-landing/` `merchant-landing/` | nginx landing snippets | ports 90139015 | | `bank-landing/` `exchange-landing/` `merchant-landing/` | nginx landing snippets | ports 90139015 |
| `koopa-*` apps | `koopa-castopod`, `koopa-bonfire`, … | compose mirrors | | `koopa-*` apps | `koopa-castopod`, `koopa-bonfire`, … | compose mirrors |
| `tops/` | `koopa-tops-ng1``ng3` | `nginx:1.27-alpine` | | `tops/` | `koopa-tops-ng1``ng3` | `nginxinc/nginx-unprivileged:1.27-alpine` (non-root, :8080) |
| `caddy/` `firewalld/` `systemd/` | host services | | | `caddy/` `firewalld/` `systemd/` | host services | |
| `tor/` | **`koopa-tor-relay`** (podman host net) | `localhost/koopa-tor-relay:latest` | | `tor/` | **`koopa-tor-relay`** (podman host net) | `localhost/koopa-tor-relay:latest` (**non-root** uid 1000) |
| `nym/` | **`koopa-nym`** (nym.com nym-node) | `localhost/koopa-nym:latest` | | `nym/` | **`koopa-nym`** (nym.com nym-node) | `localhost/koopa-nym:latest` (**non-root** uid 1000) |
| `paivana/` | **`koopa-paivana`** (+ upstream) | `localhost/koopa-paivana:latest` | | `paivana/` | **`koopa-paivana`** (+ upstream) | `localhost/koopa-paivana:latest` (**non-root**); upstream unprivileged nginx |
| `forgejo/` | **`koopa-forgejo`** | rootless image + `user: 1000` + `userns keep-id` |
| `prime/` | jellyfin / qbittorrent | linuxserver **PUID/PGID=1000** |
**Container process privilege policy:** service processes must not run as root inside the container when we control the image/compose. Pattern: uid/gid **1000** + rootless podman **`userns_mode: keep-id`** (see forgejo/nym/tor/paivana). Official DB images already drop to `postgres`/`redis`/`mysql`. Exceptions: **`taler-exchange-ansible`** (lab image with root SSH — not production service), third-party app images without a rootless variant (bonfire/castopod — track upstream).
**Authoritative running inventory:** `host/overview/LIVE.md`. **Authoritative running inventory:** `host/overview/LIVE.md`.

View file

@ -4,7 +4,7 @@
|------|--------| |------|--------|
| Live | `/home/hernani/koopa-tops/` | | Live | `/home/hernani/koopa-tops/` |
| Containers | `koopa-tops-ng1`, `koopa-tops-ng2`, `koopa-tops-ng3` | | Containers | `koopa-tops-ng1`, `koopa-tops-ng2`, `koopa-tops-ng3` |
| Image | `docker.io/library/nginx:1.27-alpine` | | Image | `docker.io/nginxinc/nginx-unprivileged:1.27-alpine` (non-root, container port **8080**) |
| Compose | `compose.yml` (this dir) | | Compose | `compose.yml` (this dir) |
| Secrets | none | | Secrets | none |

View file

@ -2,13 +2,14 @@
# Live: /home/hernani/koopa-tops/ # Live: /home/hernani/koopa-tops/
# Usage: cd ~/koopa-tops && podman compose -f deploy/compose.yml up -d # Usage: cd ~/koopa-tops && podman compose -f deploy/compose.yml up -d
# nginxinc/nginx-unprivileged: process is non-root; listens on 8080 (not 80).
services: services:
tops-ng1: tops-ng1:
image: docker.io/library/nginx:1.27-alpine image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
container_name: koopa-tops-ng1 container_name: koopa-tops-ng1
restart: unless-stopped restart: unless-stopped
ports: ports:
- "9090:80" - "9090:8080"
volumes: volumes:
- ../ng1:/usr/share/nginx/html:ro - ../ng1:/usr/share/nginx/html:ro
labels: labels:
@ -17,17 +18,17 @@ services:
org.hacktivism.site: tops.ng1.hacktivism.ch org.hacktivism.site: tops.ng1.hacktivism.ch
org.hacktivism.managed_by: koopa-admin org.hacktivism.managed_by: koopa-admin
healthcheck: healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1/"] test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/"]
interval: 30s interval: 30s
timeout: 5s timeout: 5s
retries: 3 retries: 3
tops-ng2: tops-ng2:
image: docker.io/library/nginx:1.27-alpine image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
container_name: koopa-tops-ng2 container_name: koopa-tops-ng2
restart: unless-stopped restart: unless-stopped
ports: ports:
- "9091:80" - "9091:8080"
volumes: volumes:
- ../ng2:/usr/share/nginx/html:ro - ../ng2:/usr/share/nginx/html:ro
labels: labels:
@ -36,17 +37,17 @@ services:
org.hacktivism.site: tops.ng2.hacktivism.ch org.hacktivism.site: tops.ng2.hacktivism.ch
org.hacktivism.managed_by: koopa-admin org.hacktivism.managed_by: koopa-admin
healthcheck: healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1/"] test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/"]
interval: 30s interval: 30s
timeout: 5s timeout: 5s
retries: 3 retries: 3
tops-ng3: tops-ng3:
image: docker.io/library/nginx:1.27-alpine image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
container_name: koopa-tops-ng3 container_name: koopa-tops-ng3
restart: unless-stopped restart: unless-stopped
ports: ports:
- "9092:80" - "9092:8080"
volumes: volumes:
- ../ng3:/usr/share/nginx/html:ro - ../ng3:/usr/share/nginx/html:ro
labels: labels:
@ -55,7 +56,7 @@ services:
org.hacktivism.site: tops.ng3.hacktivism.ch org.hacktivism.site: tops.ng3.hacktivism.ch
org.hacktivism.managed_by: koopa-admin org.hacktivism.managed_by: koopa-admin
healthcheck: healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1/"] test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/"]
interval: 30s interval: 30s
timeout: 5s timeout: 5s
retries: 3 retries: 3