mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-10 04:36:40 +00:00
Per-app nginx gateways used proxy_pass with a literal docker container hostname. nginx OSS resolves that hostname once at startup; if the upstream container later restarts and gets a new IP (e.g. a partial compose-up after credential change), the gateway proxies onto a dead address until nginx itself reloads — the 502 we hit on taiga after a reuse-kept replaced the taiga-back container. Switch every per-app docker-hostname proxy_pass to a variable form so the embedded docker DNS re-resolves at request time: set $upstream_<rolename>_<purpose> http://<host>:<port>; proxy_pass $upstream_<rolename>_<purpose>; The full `resolver` directive (TTL + ipv6 toggle inherited from NETWORK_IPV6_ENABLED) lives in one SPOT — NETWORK_DOCKER_DNS_NGINX_DIRECTIVE in group_vars/all/08_networks.yml — so cache TTL and ipv6 stay consistent across the stack. In taiga the upstream `set` declarations hoist to server scope because taiga-back is reused across /api/, /oidc/ and /admin/; in nextcloud and kix each upstream is used exactly once so the declaration stays local. Locations whose original proxy_pass stripped the location prefix (`proxy_pass http://.../;` on /media/, /whiteboard/, /standalone-signaling/) keep that semantics via an explicit `rewrite ^<loc>(.*)$ /\$1 break;`, because variable-proxy_pass drops the implicit prefix-strip. kix's static files/kix-proxy.default.conf moves to templates/kix-proxy.default.conf.j2 so it can reference the new constant; the deploy task switches from copy to template accordingly. Drive-by: scripts/tests/e2e/rerun-spec.sh docstring refresh — the "only overwrites tests/playwright.spec.js" claim went stale when the rerunner started restaging every role-local playwright/*.js. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Test Utilities 🧪
This directory holds the operational side of testing in Infinito.Nexus.
These assets are meant to support confidence, not ceremony. They help the project validate real-world behavior across local development, CI environments, and deployment-oriented smoke tests. The emphasis is on practical feedback: when something breaks, the surrounding test tooling should make the failure easier to understand, easier to reproduce, and easier to clean up. 🚀
Good changes in this area usually make the test experience more:
- repeatable
- diagnosable
- environment-aware
- safe to rerun
The ideal outcome is boring reliability: contributors should be able to trust that a test run says something meaningful about the system, not just about the machine that happened to execute it. ✅