# Ein vollständiger Kartenserver für Freifunk-Leipzig ## Architektur ### fastd Der fastd-Container verbindet sich mit ein oder mehreren peers im Freifunk-Netz uvia fastd und startet batman-adv, um das peering herzustellen.. Über diese Verbindung können IPV6-Broadcasts der Knoten empfangen werden, über die die Kartendaten zusammengestellt werden. Umgebungsvariablen: * FASTD_MTU (benötigt): MTU der fastd-Verbindung * FASTD_PEER1_NAME (default: peer1): Name des ersten peers * FASTD_PEER1_REMOTE (benötigt): Remote-Adresse des Peers in fastd Syntax, z.B. `"gluon20162a61.leipzig.freifunk.net" port 1006` * FASTD_PEER1_KEY (benötigt): öffentlicher Schlüssel des Peers * FASTD_PEER`n`_NAME (optional): weitere Peers (fortlaufend numeriert) * FASTD_LOG_LEVEL (default: info) * IPV6_PREFIX (optional): Prefix für radvd, nötig um hosts im Netz über ihre nicht-link-lokale IPv6 anzupingen. z.B. `fdef:ffc0:7030::/64` ### yanic Yanic ist ein Client für respondd und verantwortlich, Knoten-Broadcasts einzusammeln und daraus die Knoten-Daten für die Karte zu generieren. Der Container verwendet das Netzwerk von "fastd", um Zugang zum Feifunk-Netz zu bekommen. Die generierten Daten werden auf ein Volume geschrieben, welches vom Meshviewer-Kartenserver aus zugäglich ist. Umgebungsvariablen: * keine ### meshviewer-collector Ein kleines Programm (https://github.com/genofire/meshviewer-collector), welches weitere Karten einsammelt und an Yanic weiterleitet. Wird verwendet, um Libremesh-Nodes in die Karte einzubinden. Umgebungsvariablen: * keine * TODO: externe Node-Quellen konfigurierbar machen ### meshviewer Der Meshviewer-Container stellt die Meshviewer-Anwendung aus https://git.dezentrale.cloud/Freifunk-Leipzig/meshviewer/src/branch/ffle sowie die zugehörigen Meshviewer-Daten bereit. ### victoriametrics VictoriaMetrics ist eine Prometheus-kompatible, hoch performante Zeitreihen-Datenbank, welche das InfluxDB Protokoll unterstützt. Sie kommt zur Speicherung der Knoten-Metriken zum Einsatz. ### grafana Grafana wird zur Visualisierung der Knoten-Metriken verwendet. Dabei werden die Datenquelle und die Dashboards automatisch beim Start provisioniert. Umgebungsvariablen: * GF_SECURITY_ADMIN_USER: initialier Admin-Benutzer für Grafana * GF_SECURITY_ADMIN_PASSWORD: initiales Admin-Passwort (sollte beim ersten Login unbedingt geändert werden!) ### renderer / renderer-proxy Da Grafana Bilder sehr langsam rendert, wird prometheus-png als Renderer eingesetzt. Die Charts werden direkt aus den Victoriametrics-Daten erzeugt. Vor dem Renderer ist NGinx als Proxy, um die URLs mit den PromQL-Queries korrekt zusammenzubauen.