Dieser Ordner enthält einen containerisierten Freifunk-Servernode mit:
registrar(Registrierung, Node-ID, fastd/bmxd Runtime-Dateien)sysinfo(30s-Refresh vonsysinfo.json+nodes.json)wireguard(Status-Logging für WireGuard-Peers)fastd+bmxdnginx(Port 80, UI + JSON-Endpunkte)
- Docker + Docker Compose Plugin
- Linux-Host mit
/dev/net/tun - Der Container muss
net.ipv4.ip_forward=1aktivieren können
cd dockernode
cp .env.example .envMindestens diese Werte in .env setzen:
NODE_CONTACT_EMAILNODE_NAMENODE_COMMUNITY(DresdenoderLeipzig)NODE_GPS_LATITUDENODE_GPS_LONGITUDE
Optional:
BACKBONE_PEERSleer lassen → Defaults ausconfig/defaults.yamlNODE_REGISTRATION_URLleer lassen → Defaults ausconfig/defaults.yamlREGISTRAR_INTERVALmuss zwischen3600und21600Sekunden liegen (1–6h)
docker compose build dockernodeBei einem Git-Tag-Push baut GitHub Actions automatisch ein Image und pusht es nach GHCR:
ghcr.io/freifunkstuff/ffdd-node:<tag>- Push auf
mastererzeugt zusätzlich:ghcr.io/freifunkstuff/ffdd-node:master
Beispiel:
git tag v1.0.0
git push origin v1.0.0Ergebnis:
ghcr.io/freifunkstuff/ffdd-node:v1.0.0
Pull-Beispiel:
docker pull ghcr.io/freifunkstuff/ffdd-node:master
docker pull ghcr.io/freifunkstuff/ffdd-node:v1.0.0docker compose up -d dockernodedocker compose ps
curl -sSf http://127.0.0.1/sysinfo.json | head
curl -sSf http://127.0.0.1/nodes.json | head
curl -sSf http://127.0.0.1/ui/ | headIm Container laufen getrennte Dienste:
registrarsysinfowireguardfastdbmxdnginx
Status prüfen:
docker compose exec -T dockernode sh -lc 'sv status registrar; sv status sysinfo; sv status wireguard; sv status fastd; sv status bmxd; sv status nginx'Einzelnen Dienst neu starten:
docker compose exec -T dockernode sv restart sysinfoLogs ansehen:
docker compose logs -f dockernodePersistente Daten liegen auf dem Host in:
./data/node.yaml
Darin werden u. a. gespeichert:
registration.node_idregistration.register_keyfastd.secretwireguard.secret
Flüchtige Laufzeitdaten liegen im Container unter:
/run/freifunk/fastd/run/freifunk/bmxd/run/freifunk/sysinfo/run/freifunk/www
GET /sysinfo.jsonGET /sysinfo-json.cgiGET /nodes.jsonGET /ui/GET /licenses/*(Rechtstexte)
Ausführen im Container:
docker compose exec -T dockernode <kommando>bmxd -c status- Kurzstatus des Daemons (Uptime/Node/IP/Last)
bmxd -c options- Effektive bmxd-Parameter
bmxd -c --links- Direkte Nachbarn + Linkqualität (
RTQ,RQ,TQ)
bmxd -c --gateways- Bekannte Gateways + bevorzugtes/ausgewähltes Gateway
bmxd -c --originators- Originator-Tabelle (Mesh-Routen, Next-Hop, BRC)