docs(web-research): the search egress re-read from the live boxes
Two pages described Dankclaw's search stack from memory, and one of them invented a port. `searxng-tuning.md` claimed "`:8081` (UI) / `:8082` (JSON API)". Re-probed 2026-10-21: JSON is served on **8081** (`/search?q=…&format=json` returns results) and **8082 is not SearXNG at all** — it publishes container port 8085, which is Marreta's nginx, moved off 8080 because SearXNG owns that port inside the shared namespace. Four containers print the same port list in `podman ps` because they share gluetun's namespace, which is exactly the detail that gets mistaken for "the JSON API is on another port". The policy-drift flag now carries today's reading: `/config` still reports 262 engines and zero disabled, unchanged since 2026-10-19, so the tuned engine policy is still not live — still an operator decision, still not silently re-applied. `vpn-routing.md` gave a mullvad-shaped gluetun example and no fleet shape at all, while the bundle's own work log says the manual-WireGuard law lives "on concept pages". It lives here now, read from the running container: `VPN_SERVICE_PROVIDER=custom` + `VPN_TYPE=wireguard` + the single-peer `WIREGUARD_*` names (`protonvpn` and the plural `WIREGUARD_PEERS_*` family are both wrong for this image), `FIREWALL_ENABLED_DISABLING_IT_SHOOTS_YOU_IN_YOUR_FOOT=on` — whose name is the warning that disabling it leaks egress while every check keeps passing — and `tun0` present. The mullvad block stays as the generic illustration, now labelled as one. Refs #64
This commit is contained in:
1 parent
c37ad6e870
commit
fb36a1b0fd
2 files changed
+45
-18
No files matched your search
@@ -8,7 +8,7 @@ tags:
|
|||||||
- privacy
|
- privacy
|
||||||
- configuration
|
- configuration
|
||||||
- unverified
|
- unverified
|
||||||
verified: 2026-10-19
|
verified: 2026-10-21
|
||||||
timestamp: 2026-08-11
|
timestamp: 2026-08-11
|
||||||
resource: https://docs.searxng.org
|
resource: https://docs.searxng.org
|
||||||
---
|
---
|
||||||
@@ -23,25 +23,27 @@ Compose (or Podman Quadlet) with a Valkey container.
|
|||||||
|
|
||||||
This page lists the settings that matter for speed, privacy, and useful results.
|
This page lists the settings that matter for speed, privacy, and useful results.
|
||||||
|
|
||||||
> **Fleet instance:** the harness `web/searxng` provider calls the instance at
|
> **Fleet instance:** the harness `web/searxng` provider calls
|
||||||
> `192.168.0.143:8081` (UI) / `:8082` (JSON API) on dankclaw. The pi-era
|
> `192.168.0.143:8081` on dankclaw — HTML **and** JSON on that one port
|
||||||
> [Pi Web Access](../pi/packages/pi-web-access.md) called the same host.
|
> (`/search?q=…&format=json`, re-probed 2026-10-21). Port **8082 is not a second SearXNG
|
||||||
|
> API**: it publishes container port 8085, which is Marreta's nginx (moved off 8080 because
|
||||||
|
> SearXNG owns it in that namespace). Both ports show up against four container names because
|
||||||
|
> `searxng`, `searxng-valkey`, `gluetun` and the `marreta` pair share one network namespace.
|
||||||
|
> The pi-era [Pi Web Access](../pi/packages/pi-web-access.md) called the same host.
|
||||||
|
|
||||||
## Live instance (probed 2026-10-19)
|
## Live instance (probed 2026-10-21)
|
||||||
|
|
||||||
User Quadlet stack on dankclaw: `searxng.container`
|
User Quadlet stack on dankclaw: `searxng.container`
|
||||||
(`ghcr.io/searxng/searxng:latest`) + `searxng-valkey.container`
|
(`ghcr.io/searxng/searxng:latest`) + `searxng-valkey.container`
|
||||||
(`docker.io/valkey/valkey:9-alpine`) + `gluetun.container` (VPN egress; the
|
(`docker.io/valkey/valkey:9-alpine`) + `gluetun.container` (VPN egress; the other containers
|
||||||
containers share its network namespace, which is why `podman ps` shows :8081/
|
join its network namespace, hence the shared port list) + `marreta`/`marreta_browser`.
|
||||||
:8082 on several names) + `marreta`/`marreta_browser`. `limiter.toml`: enabled,
|
`limiter.toml`: enabled, `pass_searxng_org: true`.
|
||||||
`pass_searxng_org: true`.
|
|
||||||
|
|
||||||
**Policy drift flag:** this page's tuned engine policy (google and bing
|
**Policy drift flag:** this page's tuned engine policy (google and bing disabled;
|
||||||
disabled; DuckDuckGo/Wikipedia/Google News enabled — verified via `/config` on
|
DuckDuckGo/Wikipedia/Google News enabled — verified via `/config` on 2026-08-16) is NOT live.
|
||||||
2026-08-16) is NOT live: `/config` on 2026-10-19 reports all 262 engines
|
`/config` re-read 2026-10-21: 262 engines, **zero disabled**, google and bing included —
|
||||||
enabled, google and bing included. Either the settings override was lost in
|
unchanged since 2026-10-19. Either the override was lost in the 2026-10 stack reinstatement or
|
||||||
the 2026-10 stack reinstatement or the policy was deliberately dropped.
|
the policy was deliberately dropped. Confirm with Frank before re-applying.
|
||||||
Confirm with Frank before re-applying.
|
|
||||||
|
|
||||||
|
|
||||||
## Plan the Deployment
|
## Plan the Deployment
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ tags:
|
|||||||
- networking
|
- networking
|
||||||
- proxy
|
- proxy
|
||||||
- unverified
|
- unverified
|
||||||
verified: 2026-08-28
|
verified: 2026-10-21
|
||||||
timestamp: 2026-08-19
|
timestamp: 2026-08-19
|
||||||
resource: https://docs.searxng.org/admin/settings/settings_outgoing.html
|
resource: https://docs.searxng.org/admin/settings/settings_outgoing.html
|
||||||
---
|
---
|
||||||
@@ -19,7 +19,10 @@ SearXNG talks to many upstream engines. Some of them rate-limit or block the sou
|
|||||||
|
|
||||||
This page gives four working patterns. Choose the one that matches how you run SearXNG.
|
This page gives four working patterns. Choose the one that matches how you run SearXNG.
|
||||||
|
|
||||||
> **Your setup:** SearXNG runs on another host at `192.168.0.143:8081` (dankclaw). Apply the Docker patterns on that host. The proxy pattern works from any host.
|
> **Fleet instance:** SearXNG runs on dankclaw (`192.168.0.143:8081`, HTML and JSON alike)
|
||||||
|
> inside gluetun's network namespace — Pattern 2 below, in Quadlet rather than Compose. The
|
||||||
|
> live shape is in [Fleet instance on dankclaw](#fleet-instance-on-dankclaw), read 2026-10-21.
|
||||||
|
> The proxy pattern (1) works from any host.
|
||||||
|
|
||||||
## The Goal
|
## The Goal
|
||||||
|
|
||||||
@@ -156,11 +159,33 @@ This pattern places the whole SearXNG process inside the tunnel namespace. The h
|
|||||||
| Dedicated network | Medium | High | No |
|
| Dedicated network | Medium | High | No |
|
||||||
| Inside VPN container | Medium | Highest | No |
|
| Inside VPN container | Medium | Highest | No |
|
||||||
|
|
||||||
|
## Fleet instance on dankclaw
|
||||||
|
|
||||||
|
Read from the running container 2026-10-21 (`podman inspect gluetun`, `podman ps`):
|
||||||
|
|
||||||
|
* **`VPN_SERVICE_PROVIDER=custom` with `VPN_TYPE=wireguard`.** The provider is Proton VPN,
|
||||||
|
configured as *manual* WireGuard: the single-peer `WIREGUARD_*` names
|
||||||
|
(`WIREGUARD_PRIVATE_KEY`, `WIREGUARD_PEER_PUBLIC_KEY`, `WIREGUARD_ENDPOINT_IP`) are what
|
||||||
|
gluetun reads. `VPN_SERVICE_PROVIDER=protonvpn` is wrong here, and so is the plural
|
||||||
|
`WIREGUARD_PEERS_*` family — that shape belongs to a different gluetun major.
|
||||||
|
* **One namespace, four names.** `searxng`, `searxng-valkey`, `marreta` and `marreta_browser`
|
||||||
|
join gluetun's network namespace, so `podman ps` prints the same published-port list against
|
||||||
|
all of them: `8081→8080` is SearXNG, `8082→8085` is Marreta's nginx, which moved off 8080
|
||||||
|
because SearXNG owns it inside that namespace.
|
||||||
|
* **`FIREWALL_ENABLED_DISABLING_IT_SHOOTS_YOU_IN_YOUR_FOOT=on`.** The name is the warning:
|
||||||
|
turning it off sends the container's egress out the plain internet while every "VPN is
|
||||||
|
configured" check keeps passing — results then quietly come from the host IP.
|
||||||
|
* **Health:** tunnel presence is `podman exec gluetun sh -c 'test -e /sys/class/net/tun0'`
|
||||||
|
(true on this box). gluetun ships no curl, so an egress-IP check needs a companion container
|
||||||
|
on its network — see [Verify the Route](#verify-the-route).
|
||||||
|
|
||||||
## Decisions That Matter
|
## Decisions That Matter
|
||||||
|
|
||||||
- A SOCKS proxy keeps the per-engine control. Use Pattern 1.
|
- A SOCKS proxy keeps the per-engine control. Use Pattern 1.
|
||||||
- Gluetun gives the cleanest full-tunnel setup. Use Pattern 2.
|
- Gluetun gives the cleanest full-tunnel setup. Use Pattern 2.
|
||||||
- Mullvad ships its own WireGuard keys for Gluetun.
|
* Copying an upstream example? Read the provider and env shape from
|
||||||
|
[Fleet instance on dankclaw](#fleet-instance-on-dankclaw) first: the mullvad-shaped block in
|
||||||
|
Pattern 2 is an illustration, not this fleet's config.
|
||||||
- An OpenVPN-only provider works with Pattern 3 or 4.
|
- An OpenVPN-only provider works with Pattern 3 or 4.
|
||||||
|
|
||||||
## Verify the Route
|
## Verify the Route
|
||||||
|
|||||||
Reference in new issue
Block a user