v0.0.2 - spinning out n_signer

This commit is contained in:
Laan Tungir
2026-05-02 09:21:19 -04:00
parent faf2838632
commit adebb27c62
34 changed files with 2074 additions and 310 deletions

View File

@@ -7,12 +7,13 @@ survive individual work sessions.
## 1. Big-picture goal
A single bootable/installable Debian Live ISO that, the moment it finishes
booting, is running:
booting, has all n-OS-tr services installed and configured, then presents a
boot-time identity + service-selection TUI before login:
- [`fips`](../includes/fips) — Rust mesh-routing daemon, npub-addressed IPv6 overlay
- [`c-relay`](../includes/c-relay) — C Nostr relay with event-based config and embedded admin
- [`ginxsom`](../includes/ginxsom) — C Blossom (blob) server as FastCGI behind nginx
- `nginx` — TLS front door, static blob serving, reverse proxy
- [`fips`](../includes/fips) — Rust mesh-routing daemon, npub-addressed IPv6 overlay (optional start)
- [`c-relay`](../includes/c-relay) — C Nostr relay with event-based config and embedded admin (optional start)
- [`ginxsom`](../includes/ginxsom) — C Blossom (blob) server as FastCGI behind nginx (optional start)
- `nginx` — TLS front door, static blob serving, reverse proxy (optional start)
No Docker. No `curl | bash` provisioning. All three apps run as native
systemd services directly on the host.
@@ -116,28 +117,46 @@ sequenceDiagram
participant LB as live-boot / initramfs
participant Sd as systemd PID 1
participant Fb as n-os-tr-firstboot.service
participant IA as nostr-id.service
participant TUI as nostr-id-tui.service
participant Fp as fips.service
participant Cr as c-relay.service
participant Gx as ginxsom.service
participant Ng as nginx.service
participant GT as getty@tty1.service
LB->>Sd: hand off
Sd->>Fb: start oneshot (Before= the app units)
Sd->>Fb: start oneshot (Before= identity + app units)
alt First boot
Fb->>Fb: mkdir /var/lib/n-os-tr<br/>generate ginxsom key<br/>generate fips key<br/>write EnvironmentFile<br/>touch .provisioned
else Already provisioned
Fb-->>Sd: exit 0 (ConditionPathExists trip)
end
Fb-->>Sd: done
par
Sd->>Fp: start (reads /etc/fips/fips.yaml)
and
Sd->>Cr: start (self-provisions admin key to /var/lib/c-relay/)
and
Sd->>Gx: start (spawn-fcgi, reads env file for privkey)
and
Sd->>Ng: start (serves /var/www/blobs, proxies to c-relay and ginxsom)
Sd->>IA: start identity-agent
IA-->>Sd: active (control socket ready)
Sd->>TUI: start boot-time identity + services flow on tty1
TUI->>IA: load_mnemonic / load_bunker / load_amnesia
IA-->>TUI: identity loaded
TUI->>Sd: start/stop selected services via systemctl
opt User enabled nginx
Sd->>Ng: start
end
opt User enabled c-relay
Sd->>Cr: start
end
opt User enabled ginxsom
Sd->>Gx: start
end
opt User enabled fips
Sd->>Fp: start
end
TUI->>Sd: exit 0
Sd->>GT: start (after TUI exits)
```
## 5. Phase 0.A — Gitea artifact fetch