Document daemon and packaging; refresh status across docs

Root README and documentation README: daemon + Docker/Nix status.
Roadmap: daemon checked off, real overlay peering stays open.
pilot.md: docker/nix and sn-node daemon mentioned as the comfortable
path beside the manual steps. AGENTS.md server status line updated.
This commit is contained in:
2026-09-24 20:13:02 +02:00
parent 57b9b44d8a
commit 246b7969d6
6 changed files with 63 additions and 11 deletions
+3 -1
View File
@@ -42,7 +42,9 @@ Das Projekt besteht aus zwei Hälften:
- Kernfeatures: Multi-Exit-Bandbreiten-Pooling, segmentierte Downloads,
Fairness-Scheduler, Nachbarschafts-Cache, **Leech-Modus** (Empfangen ohne
Exit-Bereitstellung ist ausdrücklich erlaubt — Netz unter Nachbarn)
- Status: Konzeptphase, Details in `server/README.md`
- Status: Code existiert und ist getestet (`sn-fetch`, `sn-node` inkl.
Daemon, `sn-exit`, `sn-fair`; Deployment via Docker/Nix) — Details in
`server/README.md`
## Git / Gitea
+6 -1
View File
@@ -55,9 +55,14 @@ Prototyp (Konzeptphase + erster Code):
mit `sn-fetch` gegen einen echten Server verifiziert
- **`sn-fair` v0** funktioniert: Fairness-Engine (gewichtetes Max-Min,
Leech-Politik) + Demo-CLI — die Soll-Aufteilung für den Piloten
- **`sn-node` Daemon** funktioniert: ein Befehl orchestriert Yggdrasil-
Sidecar + Exit-Dienst (`sn-node daemon --config node.toml`, TOML-Konfig,
Kill-Switch-Semantik)
- **Deployment:** Docker-Image (gebaut + getestet) und Nix-Flake
(unverifiziert) — Details in [server/README.md](server/README.md)
- **Nächste Schritte:** Pilot mit 2–3 Haushalten (Yggdrasil-Overlay
verkabeln, Messwerte — Handbuch:
[pilot.md](documentation/ideen/pilot.md)), `sn-node`-Daemon — siehe
[pilot.md](documentation/ideen/pilot.md)) — siehe
[Roadmap](documentation/ideen/roadmap.md)
## Doku lesen (Obsidian)
+7 -5
View File
@@ -30,11 +30,13 @@ ist — ohne Mehrkosten und mit besserer Versorgung schwacher Haushalte.
## Status
Prototypphase (siehe [[Roadmap]]): `sn-fetch` (segmentierter Multi-Exit-
Download mit Retry + Egress), `sn-node` v0 (Yggdrasil-Config + Status),
`sn-exit` v0 (kontingentierter Uplink-Proxy mit SSRF-Schutz) und `sn-fair`
v0 (Fairness-Engine + Demo-CLI) sind implementiert und getestet —
Details in [`server/README.md`](../server/README.md). Nächster
Meilenstein: Pilot mit 2–3 Haushalten (Handbuch: [[Pilot]]).
Download mit Retry + Egress), `sn-node` v0 + Daemon (Yggdrasil-Config,
Status, Sidecar-/Exit-Orchestrierung), `sn-exit` v0 (kontingentierter
Uplink-Proxy mit SSRF-Schutz) und `sn-fair` v0 (Fairness-Engine +
Demo-CLI) sind implementiert und getestet — Details in
[`server/README.md`](../server/README.md), Deployment via Docker/Nix
(`server/docker/`, `flake.nix`). Nächster Meilenstein: Pilot mit
2–3 Haushalten (Handbuch: [[Pilot]]).
## Verwandte Projekte (Prior Art)
+8
View File
@@ -51,6 +51,14 @@ cargo build --release --workspace
# → target/release/sn-node, sn-exit, sn-fetch, sn-fair
```
Alternativ (bequemer ab dem zweiten Haushalt): **Docker** —
`server/docker/README.md` (Image mit allen Binaries + Yggdrasil,
Compose-Beispiel) — oder **Nix** via `flake.nix`. Der Node-Daemon
(`sn-node daemon --config node.toml`, siehe `server/README.md`)
orchestriert Overlay + Exit in einem Befehl; die manuellen Schritte
unten zeigen trotzdem erst den Geräteweg, damit man sieht, was
gepoolt wird.
### Vor dem Termin (Checkliste)
- [ ] ISP-AGB der Teilnehmenden geprüft (Weitergabe an Dritte,
+4 -1
View File
@@ -24,8 +24,11 @@ Handbuch mit Messprotokoll: [[Pilot]].
end-to-end getestet
- [x] `sn-node` v0: Yggdrasil-Config-Generierung (`genconf`) + Admin-Socket-
Client (`status`) — die Overlay-Anbindung beginnt
- [x] `sn-node` Daemon v1: ein Befehl orchestriert Yggdrasil-Sidecar +
Exit-Dienst (TOML-Konfig, Node-Key-Persistenz, Kill-Switch-,
Supervisor-Semantik) — Deployment via Docker/Nix vorhanden
- [ ] Yggdrasil-Overlay zwischen 2 Haushalten (Kabel oder Kurzstrecke
WLAN/60-GHz), `sn-node`-Daemon orchestriert den Node
WLAN/60-GHz) aufsetzen
- [x] `sn-exit` v0: HTTP-Proxy auf der Yggdrasil-Adresse (Kontingente,
SSRF-Schutz, Kill-Switch = Prozess stoppen)
- [x] `sn-fair` v0: Fairness-Engine (gewichtetes Max-Min über zwei
+35 -3
View File
@@ -75,8 +75,40 @@ SHA-256 entspricht der offiziellen `SHA256SUMS`).
- Runtime-Integration in `sn-fetch` (echte gleichzeitige Downloads
drosseln) ist Phase 2, siehe [[Roadmap]]
**Noch nicht drin:** `sn-node`-Daemon (Supervisor, der yggdrasil +
sn-exit + sn-fetch orchestriert), Freenet-Integration, Cache.
**`sn-node` Daemon v1 ist implementiert** (`sn-node daemon`, siehe
`crates/sn-node/src/daemon.rs`):
- **Ein Befehl pro Haushalt:** `sn-node daemon --config node.toml`
orchestriert den Node — Yggdrasil-Sidecar (generierte Config +
persistenter Node-Key im `state_dir`, Identität bleibt über Neustarts
stabil: `PrivateKeyPath` hat Vorrang vor dem eingebetteten Key, siehe
[Config-Referenz](https://yggdrasil-network.github.io/configurationref.html))
+ optional den in-process `sn-exit`-Dienst
- **TOML-Konfiguration, validiert beim Laden** (`deny_unknown_fields`,
wiederverwendete validierte Typen; `sn-node daemon --check` prüft
ohne Start — für Packaging/Ops)
- **Leech-Modus per Konfig** (`[exit] enabled = false`): Overlay läuft,
kein Exit-Angebot; enabled + leere Allowlist = Start verweigert
(Ausnahme: Loopback-Dev-Bind)
- **Kill-Switch-Semantik:** SIGINT/SIGTERM → Accept-Loop stoppt,
Sidecar bekommt SIGTERM (5 s Gnade, dann SIGKILL); stirbt Yggdrasil
unerwartet, fährt der Daemon mit Fehler herunter (Supervisor-Pflicht)
- Getestet mit Fake-Yggdrasil (Script-Binary) und Fake-Admin-Socket:
Key-Persistenz, Exit-Bind, Shutdown, Sidecar-Tod
**Deployment: Docker & Nix** (siehe `server/docker/README.md` und
`flake.nix`):
- `server/docker/`: Multi-Stage-Image (alle 4 Binaries + Yggdrasil
v0.5.14, SHA-256-verifiziert), Compose-Beispiel pro Haushalt
(`network_mode: host`, `NET_ADMIN`, `/dev/net/tun`, `init: true`) —
Image gebaut und geraucht-getestet
- `flake.nix`: `nix build` baut das Workspace als ein Paket
(+ experimentelles NixOS-Modul) — **nicht lokal verifiziert**
(Nix nicht installiert), Feedback willkommen
**Noch nicht drin:** Freenet-Integration, Cache, Metriken/Onboarding
(Phase 2).
Details zum Overlay: [[Overlay]]. Pilot-Handbuch mit Messprotokoll:
[[Pilot]].
@@ -109,7 +141,7 @@ Einplatinenrechner), der:
| Crate/Binary | Zweck |
|---|---|
| `sn-node` | Node-Glue: Yggdrasil-Config (`genconf`), Overlay-Status (`status`), später Daemon/Supervisor |
| `sn-node` | Node-Glue: Yggdrasil-Config (`genconf`), Overlay-Status (`status`), Node-Daemon (`daemon`: Sidecar + Exit-Orchestrierung) |
| `sn-exit` | Exit-Dienst: kontingentierter Uplink-Proxy auf der Yggdrasil-Adresse (v0: Byte-Relay + Quota + SSRF-Schutz) |
| `sn-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) |
| `sn-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma, Leech-Modus) — v0: zwei-Klassen-Max-Min-Engine + Demo-CLI |