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:
@@ -42,7 +42,9 @@ Das Projekt besteht aus zwei Hälften:
|
|||||||
- Kernfeatures: Multi-Exit-Bandbreiten-Pooling, segmentierte Downloads,
|
- Kernfeatures: Multi-Exit-Bandbreiten-Pooling, segmentierte Downloads,
|
||||||
Fairness-Scheduler, Nachbarschafts-Cache, **Leech-Modus** (Empfangen ohne
|
Fairness-Scheduler, Nachbarschafts-Cache, **Leech-Modus** (Empfangen ohne
|
||||||
Exit-Bereitstellung ist ausdrücklich erlaubt — Netz unter Nachbarn)
|
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
|
## Git / Gitea
|
||||||
|
|
||||||
|
|||||||
@@ -55,9 +55,14 @@ Prototyp (Konzeptphase + erster Code):
|
|||||||
mit `sn-fetch` gegen einen echten Server verifiziert
|
mit `sn-fetch` gegen einen echten Server verifiziert
|
||||||
- **`sn-fair` v0** funktioniert: Fairness-Engine (gewichtetes Max-Min,
|
- **`sn-fair` v0** funktioniert: Fairness-Engine (gewichtetes Max-Min,
|
||||||
Leech-Politik) + Demo-CLI — die Soll-Aufteilung für den Piloten
|
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
|
- **Nächste Schritte:** Pilot mit 2–3 Haushalten (Yggdrasil-Overlay
|
||||||
verkabeln, Messwerte — Handbuch:
|
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)
|
[Roadmap](documentation/ideen/roadmap.md)
|
||||||
|
|
||||||
## Doku lesen (Obsidian)
|
## Doku lesen (Obsidian)
|
||||||
|
|||||||
@@ -30,11 +30,13 @@ ist — ohne Mehrkosten und mit besserer Versorgung schwacher Haushalte.
|
|||||||
## Status
|
## Status
|
||||||
|
|
||||||
Prototypphase (siehe [[Roadmap]]): `sn-fetch` (segmentierter Multi-Exit-
|
Prototypphase (siehe [[Roadmap]]): `sn-fetch` (segmentierter Multi-Exit-
|
||||||
Download mit Retry + Egress), `sn-node` v0 (Yggdrasil-Config + Status),
|
Download mit Retry + Egress), `sn-node` v0 + Daemon (Yggdrasil-Config,
|
||||||
`sn-exit` v0 (kontingentierter Uplink-Proxy mit SSRF-Schutz) und `sn-fair`
|
Status, Sidecar-/Exit-Orchestrierung), `sn-exit` v0 (kontingentierter
|
||||||
v0 (Fairness-Engine + Demo-CLI) sind implementiert und getestet —
|
Uplink-Proxy mit SSRF-Schutz) und `sn-fair` v0 (Fairness-Engine +
|
||||||
Details in [`server/README.md`](../server/README.md). Nächster
|
Demo-CLI) sind implementiert und getestet — Details in
|
||||||
Meilenstein: Pilot mit 2–3 Haushalten (Handbuch: [[Pilot]]).
|
[`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)
|
## Verwandte Projekte (Prior Art)
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ cargo build --release --workspace
|
|||||||
# → target/release/sn-node, sn-exit, sn-fetch, sn-fair
|
# → 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)
|
### Vor dem Termin (Checkliste)
|
||||||
|
|
||||||
- [ ] ISP-AGB der Teilnehmenden geprüft (Weitergabe an Dritte,
|
- [ ] ISP-AGB der Teilnehmenden geprüft (Weitergabe an Dritte,
|
||||||
|
|||||||
@@ -24,8 +24,11 @@ Handbuch mit Messprotokoll: [[Pilot]].
|
|||||||
end-to-end getestet
|
end-to-end getestet
|
||||||
- [x] `sn-node` v0: Yggdrasil-Config-Generierung (`genconf`) + Admin-Socket-
|
- [x] `sn-node` v0: Yggdrasil-Config-Generierung (`genconf`) + Admin-Socket-
|
||||||
Client (`status`) — die Overlay-Anbindung beginnt
|
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
|
- [ ] 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,
|
- [x] `sn-exit` v0: HTTP-Proxy auf der Yggdrasil-Adresse (Kontingente,
|
||||||
SSRF-Schutz, Kill-Switch = Prozess stoppen)
|
SSRF-Schutz, Kill-Switch = Prozess stoppen)
|
||||||
- [x] `sn-fair` v0: Fairness-Engine (gewichtetes Max-Min über zwei
|
- [x] `sn-fair` v0: Fairness-Engine (gewichtetes Max-Min über zwei
|
||||||
|
|||||||
+35
-3
@@ -75,8 +75,40 @@ SHA-256 entspricht der offiziellen `SHA256SUMS`).
|
|||||||
- Runtime-Integration in `sn-fetch` (echte gleichzeitige Downloads
|
- Runtime-Integration in `sn-fetch` (echte gleichzeitige Downloads
|
||||||
drosseln) ist Phase 2, siehe [[Roadmap]]
|
drosseln) ist Phase 2, siehe [[Roadmap]]
|
||||||
|
|
||||||
**Noch nicht drin:** `sn-node`-Daemon (Supervisor, der yggdrasil +
|
**`sn-node` Daemon v1 ist implementiert** (`sn-node daemon`, siehe
|
||||||
sn-exit + sn-fetch orchestriert), Freenet-Integration, Cache.
|
`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:
|
Details zum Overlay: [[Overlay]]. Pilot-Handbuch mit Messprotokoll:
|
||||||
[[Pilot]].
|
[[Pilot]].
|
||||||
@@ -109,7 +141,7 @@ Einplatinenrechner), der:
|
|||||||
|
|
||||||
| Crate/Binary | Zweck |
|
| 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-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-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 |
|
| `sn-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma, Leech-Modus) — v0: zwei-Klassen-Max-Min-Engine + Demo-CLI |
|
||||||
|
|||||||
Reference in New Issue
Block a user