server/docker/: multi-stage image (rust:1-slim build, trixie runtime) with all four binaries plus the pinned yggdrasil 0.5.14 .deb (sha256-verified, fetched from the official release), a compose example per household (host network, NET_ADMIN, /dev/net/tun, init: true), a German-commented node.toml.example (safe default: leech mode) and a README covering privileges, two-household wiring, leech mode and the kill switch. Image build and smoke tests verified locally with docker 29.8.1. flake.nix: builds the workspace as one spidernet package via rustPlatform.buildRustPackage (cargoLock against the committed Cargo.lock) plus an experimental NixOS module; written without a local Nix and marked accordingly.
96 lines
3.8 KiB
TOML
96 lines
3.8 KiB
TOML
# Beispielkonfiguration für den SpiderNet-Node-Daemon (`sn-node daemon`).
|
|
#
|
|
# Vorlage: diese Datei nach `node.toml` kopieren und anpassen. Die
|
|
# Compose-Datei in diesem Ordner bindet `./node.toml` ein.
|
|
#
|
|
# KEINE GARANTIE — SpiderNet wird "as is" ohne jegliche Garantie
|
|
# bereitgestellt (AGPL §§ 15/16). Nutzung auf eigene Verantwortung;
|
|
# die Verantwortung für gesendete und empfangene Inhalte liegt bei den
|
|
# Nutzer:innen.
|
|
#
|
|
# WICHTIG: Die echte node.toml enthält persönliche Daten der Nachbarschaft
|
|
# (Public Keys, Adressen) und später den Node-Private-Key im state_dir.
|
|
# node.toml NIEMALS ins Repository committen.
|
|
|
|
[node]
|
|
# Admin-Socket des Yggdrasil-Knotens (tcp://host:port oder unix:///pfad).
|
|
# Wird auch als Yggdrasil-AdminListen verwendet, wenn der Daemon das
|
|
# Yggdrasil-Sidecar selbst verwaltet (siehe [yggdrasil].manage).
|
|
admin_endpoint = "tcp://localhost:9001"
|
|
|
|
# Verzeichnis für den Zustand des Nodes (node.key, generierte
|
|
# yggdrasil.conf). Optional, Standard "spidernet-state" — relativ zum
|
|
# Arbeitsverzeichnis des Daemons. Im Container besser absolut setzen,
|
|
# damit es auf das State-Volume fällt:
|
|
state_dir = "/var/lib/spidernet"
|
|
|
|
[yggdrasil]
|
|
# true = der Daemon startet und überwacht das Yggdrasil-Sidecar selbst.
|
|
# false = es wird ein bereits laufender Yggdrasil-Daemon verwendet.
|
|
manage = true
|
|
|
|
# Pfad/Name des Yggdrasil-Binary; nur relevant, wenn manage = true.
|
|
# Im Container ist yggdrasil unter /usr/local/bin/yggdrasil installiert.
|
|
binary = "yggdrasil"
|
|
|
|
# Peer-URIs (tcp://, tls://, quic://, socks://) für manuelles Peering.
|
|
# Über das Nachbarschafts-LAN peert Yggdrasil per Multicast automatisch;
|
|
# explizite Peers braucht man z. B. über WLAN-Brücken hinweg.
|
|
peers = []
|
|
|
|
# Listener-URIs für eingehende Peerings (tcp://, tls://, quic://).
|
|
listen = []
|
|
|
|
# Access-Control: 64-stellige Hex-Public-Keys der Nachbarn, die mit uns
|
|
# peeren dürfen (AllowedPublicKeys). Leere Liste = jeder darf peeren.
|
|
allow_keys = []
|
|
|
|
# true = Multicast-Auto-Peering im LAN deaktivieren.
|
|
no_multicast = false
|
|
|
|
# TUN-Interface: "auto" (Standard), "none" (headless, nur Router-Modus)
|
|
# oder ein fester Interface-Name.
|
|
ifname = "auto"
|
|
|
|
[exit]
|
|
# true = dieser Haushalt stellt seinen Uplink als Exit bereit (opt-in).
|
|
# false = Leech-Modus (Standard hier): der Node empfängt nur, bietet
|
|
# keinen Exit an — ausdrücklich legitim, niemand wird gedrosselt, nur
|
|
# fair priorisiert.
|
|
#
|
|
# Wer Exit anbieten will: enabled = true setzen UND in `allow` die
|
|
# Overlay-Adressen der Nachbarn eintragen — enabled = true mit leerer
|
|
# `allow`-Liste ist ungültig (der Daemon verweigert den Start; Ausnahme:
|
|
# Dev-Modus mit Loopback-bind).
|
|
enabled = false
|
|
|
|
# Explizite Bind-Adresse. Leer (Standard) = "[<Yggdrasil-Adresse>]:port",
|
|
# d. h. der Exit lauscht auf der eigenen Overlay-Adresse.
|
|
# UNGÜLTIG: allow = [] zusammen mit einem nicht-Loopback-bind — der Exit
|
|
# wäre sonst für beliebig viele Quellen offen (Schutz: ohne Allowlist nur
|
|
# Loopback, das ist der Dev-Modus).
|
|
bind = ""
|
|
|
|
# TCP-Port des Exit-Dienstes (u16, Standard 8080).
|
|
port = 8080
|
|
|
|
# Overlay-Adressen der Nachbarn, die diesen Exit nutzen dürfen.
|
|
# Leere Liste = nur Loopback (Dev-Modus); bei nicht-Loopback-bind Pflicht.
|
|
# Beispiel:
|
|
# allow = ["200:abcd:ef01::2", "200:abcd:ef01::3"]
|
|
allow = []
|
|
|
|
# Kontingent pro Nachbar: Bytes pro Zeitfenster (u64, Standard 1024 MiB).
|
|
# 0 = unbegrenzt (kein Kontingent).
|
|
quota_mib = 1024
|
|
|
|
# Länge des Kontingent-Zeitfensters in Stunden (fixed window).
|
|
window_hours = 24
|
|
|
|
# KILL-SWITCH: Wer nichts mehr teilen will, stoppt einfach den Exit bzw.
|
|
# den Daemon (Container: `docker compose stop`). Damit endet die
|
|
# Bereitstellung des eigenen Uplinks sofort — der eigene Node fällt auf
|
|
# den eigenen Internetanschluss zurück. SpiderNet v0 leitet normalen
|
|
# Verkehr nicht um: nur Downloads, die sn-fetch explizit über das Netz
|
|
# verteilt, nutzen die gepoolte Bandbreite.
|