Add network exposure posture host facts #16
Labels
No labels
area:authentication
area:flake-utilities
area:performance
area:tbd
host:chaos
host:electra
host:fleet
host:lyra
host:nova
host:vega
investigation
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
priority:high
priority:medium
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:auto-update-remediation
project:declarative-purity-cleanup
project:external-review
project:fleet-boundary-cleanup
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:nixos-build-deployment-pipeline
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
project:wiki-rebuild
repo:numtide/flake-utils
repo:numtide/nix-auth
repo:numtide/nixos-passthru-cache
repo:numtide/nix-relay
service:auto-update
service:mem0
service:nix
service:sillytavern
service:slskd
service:synthseek
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config#16
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Implement Priority 3 from
projects/host-facts-refactor-roadmap.md: define a host-level network exposure posture that service modules can use as a default.Acceptance Checklist
local,lan,vpn, andpublic.Guardrails
publicmeans authenticated reverse-proxy/tunnel ingress, never a directly opened application port.Initial declarative inventory — 2026-08-10
This inventory is from evaluated NixOS firewall configuration, not a runtime port scan.
Decision workflow
Classify service listeners in focused batches. For each record the intended audience, bind address, ingress path, authentication, and whether a client without Nebula needs access.
Initial candidate defaults
local: loopback only, no firewall rule.vpn: Nebula bind/address and an explicit mesh firewall rule.lan: physical LAN bind/rule only for clients that cannot use Nebula.public: loopback or container-private application listener behind authenticated ingress.Next deliverable
Review the Lyra LAN listener set and Vega's mixed direct/mesh listeners as the first decision batches. Only after those decisions are recorded should a
nixosConfig.network.exposureoption and first consumer module be implemented.Correction to the initial exposure inventory: Attic is a public/proxied service, not LAN or Nebula. Lyra and Vega are load-balanced Newt tunnel backends for https://attic.nimmog.uk; clients must not access port 8081 directly. The current shared Attic module still listens on 0.0.0.0:8081 and opens the global firewall port, so the #16 implementation must move the backend to a Newt-reachable loopback listener and remove the direct firewall exception. Verify the Pangolin/Newt target before changing the bind address.
Live Pangolin verification: Attic resource 62 is healthy and load-balances Newt targets 63 (vega-nix, 192.168.8.108:8081) and 67 (lyra, 192.168.8.146:8081). The healthy BookStack Newt target on Vega already uses 127.0.0.1:80, confirming loopback is supported. Safe ordering: first change both Attic targets to 127.0.0.1:8081 and confirm both health checks remain green; then deploy the shared Nix change that binds atticd to loopback and removes firewall port 8081 on both hosts.