diff --git a/adolf/openclaw.json b/adolf/openclaw.json index 5eba227..5bc1528 100644 --- a/adolf/openclaw.json +++ b/adolf/openclaw.json @@ -22,7 +22,32 @@ // /tools/invoke surface by default. The openclaw-tools MCP bridge // (P5) calls that surface for cron_create/cron_list/nodes_invoke, so // without this allow-list those tools 404 even with a valid token. - allow: ["cron", "nodes"], + // "browser" added (kb#64 follow-up) so Adolf can drive the OpenClaw + // browser via the openclaw-tools bridge for authenticated web access + // (e.g. the family wiki login form). + allow: ["cron", "nodes", "browser"], + }, + }, + + // Browser tool — bundled plugin, off by default. Enables a dedicated, + // agent-only headless Chromium profile ("openclaw") driven through the + // gateway's loopback control service. Chromium is already in the image + // (playwright chromium-1228). Needs both this browser.enabled=true and the + // "browser" entry in gateway.tools.allow above. + browser: { + enabled: true, + // Chromium's setuid sandbox can't initialize inside this container (no + // unprivileged user namespaces), so run with --no-sandbox. Safe here: the + // browser profile is agent-only and isolated, and the container already + // drops NET_RAW/NET_ADMIN. Without this, `browser start` fails with + // "No usable sandbox". + noSandbox: true, + // The local *.alogins.net services resolve to the host gateway (private + // 172.17.0.1 via extra_hosts), so the browser's SSRF guard blocks them by + // default ("navigation blocked by policy"). Opt in for this trusted, + // self-owned network — same decision as channels.matrix.network above. + ssrfPolicy: { + dangerouslyAllowPrivateNetwork: true, }, }, diff --git a/openai/docker-compose.yml b/openai/docker-compose.yml index 24a5750..9b44fe7 100644 --- a/openai/docker-compose.yml +++ b/openai/docker-compose.yml @@ -197,6 +197,14 @@ services: # same fix). Caddy on the host terminates TLS on :443 and proxies to # synapse:8008. - "mtx.alogins.net:host-gateway" + # Local *.alogins.net web services (family wiki / OtterWiki, РодоВики) — + # same hairpin-NAT dodge: the public A record can't loop back through the + # router from inside a container, so route the hostname to the host + # gateway where Caddy terminates TLS on :443 and proxies to the service. + # Lets Adolf's OpenClaw browser reach them with the real URL + the + # Vaultwarden creds. Add more *.alogins.net hosts here as needed. + - "family.alogins.net:host-gateway" + - "wiki.alogins.net:host-gateway" cap_drop: - NET_RAW - NET_ADMIN @@ -242,6 +250,12 @@ services: # this compose project's network) via shared-mcp.json's "kanboard" # entry — same host-gateway trick used by adolf/cognee/pipecat above. - "host.docker.internal:host-gateway" + # Local *.alogins.net web services: the Kimi CLI's own web-fetch tool + # runs IN THIS container, so it needs the same hairpin-NAT dodge as the + # adolf gateway (the public A record can't loop back through the router). + # Route to the host gateway where Caddy terminates TLS on :443. + - "family.alogins.net:host-gateway" + - "wiki.alogins.net:host-gateway" restart: unless-stopped # hindsight — Adolf memory backend, replacing cognee/cognee-mcp/cognee-llm