refactor(#2015): drop redundant domain != null checks (domain is required) + update docs
This commit is contained in:
parent
816d387c65
commit
c8ae3371e1
6 changed files with 88 additions and 130 deletions
|
|
@ -280,21 +280,18 @@ dashboard reach by design — the surface is privileged (approve /
|
|||
deny / destroy) and must not be exposed without a real reverse
|
||||
proxy in front.
|
||||
|
||||
## `HIVE_FORGE_URL`: domain via gateway for isolated agents, loopback for shared-netns
|
||||
## `HIVE_FORGE_URL`: agents reach the forge via the gateway by domain
|
||||
|
||||
Agents poll `HIVE_FORGE_URL` for Forgejo notifications + run all
|
||||
`hive-forge` calls against it. `hive-c0re.nix` sets this based on the
|
||||
network isolation mode:
|
||||
|
||||
- **`network.isolateContainers = true`**: agents run in private netns and
|
||||
get the bridge dnsmasq as their resolver. `HIVE_FORGE_URL` is set to
|
||||
`http://<forge.domain>` (default `forge.<hive-domain>`). Agents resolve
|
||||
the hostname via dnsmasq → bridge IP, then reach nginx on port 80 (bridge
|
||||
firewall opens 80+443 when isolation is on). nginx proxies to forgejo — the
|
||||
same path an operator browser takes, no raw port exposure needed.
|
||||
- **`network.isolateContainers = false`** (default): agents share the host's
|
||||
network namespace, so loopback reaches forgejo directly. `HIVE_FORGE_URL`
|
||||
is `http://127.0.0.1:<forge.httpPort>`.
|
||||
`hive-forge` calls against it. Network isolation is always on (the
|
||||
shared-netns mode was removed), so agents run in a private netns and
|
||||
can never reach the host's loopback. `hive-c0re.nix` sets
|
||||
`HIVE_FORGE_URL` to `http://<forge.domain>` (default
|
||||
`forge.<hive-domain>`; `services.hyperhive.domain` is required). Agents
|
||||
get the bridge dnsmasq as their resolver, resolve the hostname →
|
||||
bridge IP, then reach nginx on port 80 (the bridge firewall opens
|
||||
80+443). nginx proxies to forgejo — the same path an operator browser
|
||||
takes, no raw port exposure needed.
|
||||
|
||||
## hive-forge container shape
|
||||
|
||||
|
|
@ -306,10 +303,13 @@ the operator already runs on the host — separate systemd namespace,
|
|||
separate state dir, separate port unless the operator deliberately
|
||||
collides.
|
||||
|
||||
Container shares the host network namespace
|
||||
(`privateNetwork = false`) so agents reach the forge at
|
||||
`http://localhost:<httpPort>` without extra plumbing — nixos-container
|
||||
is here for state + systemd-unit isolation, not network isolation.
|
||||
The forge container shares the host network namespace
|
||||
(`privateNetwork = false`), so forgejo's listeners look like a
|
||||
host-side service — nixos-container is here for state + systemd-unit
|
||||
isolation, not network isolation. Note this is the FORGE container;
|
||||
agent containers are network-isolated and reach the forge through the
|
||||
gateway by `forge.<domain>` (see `HIVE_FORGE_URL` above), not via the
|
||||
host's loopback.
|
||||
|
||||
State lives at `/var/lib/nixos-containers/hive-forge/var/lib/forgejo/`
|
||||
and survives container restart / host reboot. To wipe, destroy the
|
||||
|
|
@ -336,9 +336,9 @@ via `-p 2222`). Port 22 is left alone on the host for openssh.
|
|||
|
||||
`openFirewall` (default **false**) controls whether `httpPort` and
|
||||
`sshPort` are opened in the host firewall. Off by default (secure by
|
||||
default): every agent container reaches Forgejo at `localhost:<httpPort>`
|
||||
via the shared host netns without a firewall hole. Flip to `true` when
|
||||
you need:
|
||||
default): agents reach Forgejo through the gateway (`forge.<domain>` on
|
||||
the bridge), not the raw port, so no firewall hole is needed. Flip to
|
||||
`true` when you need:
|
||||
- The operator's browser to reach `http://<host>:<httpPort>/` directly
|
||||
(not behind the gateway).
|
||||
- External git clients that push/pull via SSH directly to the host.
|
||||
|
|
|
|||
Loading…
Reference in a new issue