koopa-admin-log/configs/tops
Hernâni Marques 360fb363de docs: tops compose refresh and configs inventory index.
Update tops stack notes and configs/README service listing.
2026-07-17 01:07:00 +02:00
..
Caddyfile.snippet docs: new root as prior history lost (orphan + GC); ~215 commits not recoverable 2026-07-13 10:12:00 +02:00
compose.yml docs: tops compose refresh and configs inventory index. 2026-07-17 01:07:00 +02:00
container-koopa-tops.service docs: new root as prior history lost (orphan + GC); ~215 commits not recoverable 2026-07-13 10:12:00 +02:00
nginx-default.conf docs: new root as prior history lost (orphan + GC); ~215 commits not recoverable 2026-07-13 10:12:00 +02:00
README.md docs: tops compose refresh and configs inventory index. 2026-07-17 01:07:00 +02:00

tops — koopa-tops-ng1ng3

Item Value
Live /home/hernani/koopa-tops/
Containers koopa-tops-ng1, koopa-tops-ng2, koopa-tops-ng3
Image docker.io/nginxinc/nginx-unprivileged:1.27-alpine (non-root, container port 8080)
Compose compose.yml (this dir)
Secrets none

Site HTML is not in this repo (container wiring only).

Containers

Container Host port Caddy host
koopa-tops-ng1 9090 tops.ng1.hacktivism.ch
koopa-tops-ng2 9091 tops.ng2.hacktivism.ch
koopa-tops-ng3 9092 tops.ng3.hacktivism.ch

Caddy snippet: Caddyfile.snippet.

nginx

Mirror: nginx-default.conf → mounted as /etc/nginx/conf.d/default.conf in each container.

Cache (always fresh)

Preview sites must not be cached by browsers/proxies:

  • Cache-Control: no-store, no-cache, must-revalidate, max-age=0, private
  • Pragma: no-cache / Expires: 0
  • etag off · if_modified_since off · expires -1

After editing the conf on the host (bind mount), reload nginx inside the container (do not stop the container):

for c in koopa-tops-ng1 koopa-tops-ng2 koopa-tops-ng3; do
  podman exec "$c" nginx -t && podman exec "$c" nginx -s reload
done

Autostart

User unit container-koopa-tops.service (mirror in this dir) starts all three via compose.

# as hernani on koopa
mkdir -p ~/.config/systemd/user
cp ~/koopa-tops/deploy/container-koopa-tops.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now container-koopa-tops.service

Needs linger so the unit runs without an interactive login:

# once as root, if needed
loginctl enable-linger hernani
loginctl show-user hernani -p Linger

Check:

systemctl --user status container-koopa-tops.service
podman ps --filter name=koopa-tops

configs/ports.md · host/overview/LIVE.md