marreta: content-cleaning proxy on Dankclaw, gluetun netns, guard-chained
Deploy manualdousuario/marreta (Laravel / serversideup php:8.4-fpm-nginx) as a rootless Quadlet pair (marreta + marreta-browser/Lightpanda), both joining gluetun's netns so all fetch egress exits the same ProtonVPN tunnel as SearXNG. - marreta relocated to NGINX_HTTP_PORT=8085 (netns already has searxng on 8080); gluetun publishes 8082:8085; Caddy dials 192.168.0.143:8082. - Guard chain: marreta.franksdank.cloud -> Anubis :8923 -> Authentik -> post-auth :8017 @marreta -> 8082. Access = any authenticated user. - Secrets seeded to /home/dank/Containers/marreta/env (0600) from MARRETA_APP_KEY / MARRETA_ADMIN_EMAIL / MARRETA_ADMIN_PASSWORD. - deploy-plan.py: marreta joins the gluetun netns family. - New seam tests/marreta_quadlet.bats (17 contracts); scoping test updated for the widened netns family. Doc: Dankclaw/Marreta.md + index + log.
This commit is contained in:
@@ -11,6 +11,31 @@ timestamp: 2026-09-14
|
||||
|
||||
# Bundle Change Log
|
||||
|
||||
## 2026-09-12 — Marreta content-cleaning proxy deployed on Dankclaw
|
||||
- Added `manualdousuario/marreta` (Laravel / `serversideup/php:8.4-fpm-nginx`)
|
||||
as a rootless Quadlet pair: `marreta` + `marreta-browser` (Lightpanda),
|
||||
both joining **gluetun's netns** so all fetch egress exits the same
|
||||
ProtonVPN tunnel as [[SearXNG]].
|
||||
- **Port-collision fix:** the shared netns already has SearXNG on 8080, so
|
||||
marreta is relocated to `NGINX_HTTP_PORT=8085` (verified against the
|
||||
serversideup source: the image does not bake `conf.d/*.conf`; the
|
||||
entrypoint `envsubst`s `${NGINX_HTTP_PORT}` at start). Gluetun publishes
|
||||
`8082:8085` on marreta's behalf; Caddy dials `192.168.0.143:8082`.
|
||||
- **Egress rationale:** netns sharing, not `PROXY_URL` — the browser's CDP
|
||||
fetch passes no proxy, so only netns keeps the browser off the home IP.
|
||||
- **Guard chain:** `marreta.franksdank.cloud` → Anubis `:8923` → Authentik
|
||||
→ post-auth `:8017` `@marreta` → `192.168.0.143:8082`. Access model is
|
||||
**any authenticated user** (no group gate). Requires a one-time
|
||||
`ProxyProvider` (external_host `https://marreta.franksdank.cloud/`,
|
||||
internal_host `http://caddy:8017`) on the embedded outpost.
|
||||
- Secrets seeded to `/home/dank/Containers/marreta/env` (0600, dank-owned)
|
||||
from `MARRETA_APP_KEY` / `MARRETA_ADMIN_EMAIL` / `MARRETA_ADMIN_PASSWORD`.
|
||||
- New test seam `tests/marreta_quadlet.bats` (17 contracts). deploy-plan.py:
|
||||
marreta joins the gluetun netns family. Doc: [[Marreta]].
|
||||
- **Not yet run live:** this box has no deploy key for Dankclaw. The deploy
|
||||
and the Authentik provider registration must be run from a host with
|
||||
access; see the doc's Deploy + Guard chain sections.
|
||||
|
||||
## 2026-09-04 — *arr fleet consolidated on FrankBook-Pro; all egress VPN-gated
|
||||
- Operator decision: **FrankBook-Pro is the sole *arr deployment.** The
|
||||
Dankserver compose copy (booted earlier the same day) was removed;
|
||||
|
||||
Reference in New Issue
Block a user