hyperhive/nix/host-modules
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas cdb3c612b2 feat(3149): deliver the client secret between the two containers
The all-local case from the delivery ruling: when one host runs both the
forge and the swarm's authelia, nothing should need an operator.

Two containers, one secret, and the awkward part is that they share this
host's network namespace but not its filesystem. They reach each other on
127.0.0.1, which makes them feel co-located — the forge still cannot open
a path inside authelia's tree. The host is the only place both are
addressable, so the copy runs there, and `hostClientSecretDir` publishes
the outside view of the inside path exactly as `hostUsersFile` already
does for the users database.

Deliberately a copy rather than a `bindMounts` entry. nixos-container
refuses to start when a bind source is missing, and this secret does not
exist until authelia's first boot has minted it — binding it would make
the forge wait on a file that waits on a container that starts after it.
On a fresh hive that is a permanent stall presenting as "the forge is
broken", several layers from its cause.

The owning uid is discovered from the forge container's own state dir
rather than assumed. Whatever uid maps to forgejo inside that container
already owns the directory it was created with; writing a number here
would be a second place for it to be wrong.

The client entry is contributed to authelia's list by the forge module
itself, from the same source-name constant the registration uses, so the
redirect URI authelia allows and the one forgejo sends cannot drift.
A mismatch there is a rejected login with no error text worth reading.
2026-08-11 21:56:58 +02:00
..
hive-c0re move avatar-PNG helpers to hive-core, configurable org avatar 2026-08-09 23:33:00 +02:00
hive-forge feat(3149): deliver the client secret between the two containers 2026-08-11 21:56:58 +02:00
hive-gateway docs(gateway): describe what is, not what changed 2026-08-11 18:09:51 +02:00
lib feat(nix): issue each hive's CA under a swarm root CA 2026-08-05 15:57:50 +02:00
default.nix refactor(nix): swarm.peers becomes swarm.hives, a directory of every hive 2026-08-05 20:44:16 +02:00
hive-ci.nix feat(nix): move the forge host options under services.hyperhive.swarm 2026-08-05 03:44:53 +02:00
hive-matrix.nix feat(nix): the matrix container gets the swarm-internal trust anchor 2026-08-09 19:53:07 +02:00
hive-network.nix refactor(nix): a hive's domain comes out of the swarm directory 2026-08-05 22:43:17 +02:00
hive-priv.nix fix(#2573): also add /etc/tmpfiles.d to hive-priv ReadWritePaths (same EROFS class) 2026-07-18 16:39:20 +02:00
hive-tls.nix feat(nix): warn when a swarm service name has no certificate path here 2026-08-11 20:43:01 +02:00
hyperhive.nix refactor(nix): a hive's domain comes out of the swarm directory 2026-08-05 22:43:17 +02:00
local-defaults.nix refactor(nix): make all-local a deployment mode, not a default 2026-08-05 19:41:11 +02:00
otel.nix refactor: nix/host-modules + nix/agent-modules layout, update doc paths 2026-07-13 22:05:49 +02:00
swarm-authelia.nix feat(3149): deliver the client secret between the two containers 2026-08-11 21:56:58 +02:00
swarm-ca.nix fix(nix): a missing swarm-services leaf must not kill the whole gateway 2026-08-06 00:30:22 +02:00
swarm-controller.nix feat(#3089): add swarmctl and a user-add verb for the swarm's SSO 2026-08-10 21:48:45 +02:00
swarm-peers-removed.nix refactor(nix): swarm.peers becomes swarm.hives, a directory of every hive 2026-08-05 20:44:16 +02:00
swarm-required-services.nix refactor(nix): make all-local a deployment mode, not a default 2026-08-05 19:41:11 +02:00
swarm-snapshot-store.nix refactor(#2862): keep the option at services.hyperhive.snapshotStore 2026-07-31 19:03:24 +02:00
swarm-wireguard.nix refactor(nix): swarm.peers becomes swarm.hives, a directory of every hive 2026-08-05 20:44:16 +02:00
swarm.nix refactor(nix): a hive's domain comes out of the swarm directory 2026-08-05 22:43:17 +02:00