Freifunk/Aufsetzen der Mesh Karte: Unterschied zwischen den Versionen
Kjo (Diskussion | Beiträge) |
Kjo (Diskussion | Beiträge) |
||
Zeile 139: | Zeile 139: | ||
== Backend == | == Backend == | ||
Das Backend | Das Backend hat die Aufgabe die Daten für die Karte zu besorgen. | ||
Dazu benutzt es die Ausgabe folgender Kommandos: | Dazu benutzt es die Ausgabe folgender Kommandos: | ||
alfred-json -z -r 158 | alfred-json -z -r 158 | ||
alfred-json -z -r 159 | alfred-json -z -r 159 | ||
batadv-vis -u /var/run/alfred.sock -i bat0 -f json | batadv-vis -u /var/run/alfred.sock -i bat0 -f json | ||
batctl -m bat0 gwl -n | batctl -m bat0 gwl -n | ||
batctl -m bat0 gw | batctl -m bat0 gw | ||
Und eine "Konfigurationsdatei" | Und eine "Konfigurationsdatei": | ||
/opt/ffmap-backend/aliases.json | /opt/ffmap-backend/aliases.json | ||
Die | Die gewonnenen Informationen landen hier: | ||
1. /opt/ffmap-d3/build/nodes.json | ;1. /opt/ffmap-d3/build/nodes.json | ||
:Die zentrale Informationsammlung, die via Web Verfügbar gemacht wird. Hieraus bedient sich die Geo Karte, die Mesh-Karte, die Liste und sogar externe Dienste, freifunk-karte.de und hoffentlich bald auch die IOS Freifunk App. | |||
;2.. /opt/ffmap-d3/build/nodes/*png | |||
:Graphen die auf der Karte verlinkt sind | |||
;3. /opt/ffmap-backend/state.json | |||
:Statusinformationen, die auch Nodes beinhalten die mangels Aktivität aus der Alfred Datenbank verschwunden sind. Dank dieser Datei haben wir auch ausgeschaltete Nodes auf der Karte. | |||
;4. /opt/ffmap-backend/nodesdb/<mac>.rrd | |||
:RRD Datenbanken in denen für jeden einzelnen Node gespeichert wird, wann er Online war und wieviele Clients er hatte | |||
;5. /opt/ffmap-backend/nodesdb/nodes.rrd | |||
:RRD Datenbank mit der Anzahl Knoten und Clients im Netz über das gesamte letzte Jahr | |||
Das Backend gibt es in zig unterschiedlichen Versionen. Die Ursprungsversion ist zur Zeit hier: | Das Backend gibt es in zig unterschiedlichen Versionen. Die Ursprungsversion ist zur Zeit hier: https://github.com/ffnord/ffmap-backend | ||
Wir haben uns nach Studium des Entwicklungsverlaufs dazu entschieden, die Version von Freifunk Mainz, Wiesbaden & Umgebung zu nehmen. | |||
root@linux:/opt# git clone https://github.com/freifunk-mwu/ffmap-backend.git -b mwu | |||
Cloning into 'ffmap-backend'... | |||
remote: Counting objects: 1501, done. | |||
remote: Compressing objects: 100% (581/581), done. | |||
remote: Total 1501 (delta 912), reused 1492 (delta 907) | |||
Receiving objects: 100% (1501/1501), 489.23 KiB | 285 KiB/s, done. | |||
Resolving deltas: 100% (912/912), done. | |||
==Photon Installieren== | |||
Auch das MWU Backend verwendet seltsam zu instalierende Software. Ob das folgende so ist wie es sich der Autor gedacht hat weiss ich nicht 100%ig. | |||
Paketmanager... | |||
root@linux:/opt/ffmap-backend# aptitude install python3-pip | |||
Photon.. | |||
root@linux:/opt/ffmap-backend# pip-3.2 install photon_core | |||
Requirement already satisfied (use --upgrade to upgrade): photon-core in /usr/local/lib/python3.2/dist-packages | |||
Requirement already satisfied (use --upgrade to upgrade): PyYAML in /usr/lib/python3/dist-packages (from photon-core) | |||
Cleaning up... | |||
Offenbar wird das hier auch noch gebraucht: | |||
Die Aliases Datei | root@linux:/opt/ffmap-backend# git clone https://github.com/spookey/photon.git | ||
root@linux:/opt/ffmap-backend# cd photon/ | |||
root@linux:/opt/ffmap-backend/photon# python3 setup.py install | |||
== Aliases Datei == | |||
Die Aliases Datei ist wichtig. Aus ihr geht hervor welche der Nodes VPN Gateways sind. Ohne das sieht die Karte falsch aus: | |||
<pre> | |||
root@linux:/opt/ffmap-backend# cat aliases.json | root@linux:/opt/ffmap-backend# cat aliases.json | ||
{ | { | ||
Zeile 206: | Zeile 217: | ||
} | } | ||
} | } | ||
</pre> | |||
== Cron == | |||
Einen Cron-Job einrichten der folgendes tut: | Einen Cron-Job einrichten der folgendes tut: | ||
Zeile 215: | Zeile 226: | ||
./bat2nodes.py -a aliases.json -m bat0 -d /opt/ffmap-d3/build/ | ./bat2nodes.py -a aliases.json -m bat0 -d /opt/ffmap-d3/build/ | ||
Das | Das wars. |
Version vom 22. Februar 2015, 22:31 Uhr
Voraussetzungen
- Die Karte zieht ihre Informationen aus der A.L.F.R.E.D Datenbank. Mindestens das Backend muss also auf einem Rechner laufen, der Verbindung zu Alfred Datenbank hat, bzw. der Verbindung zum Mesh-Netzwerk hat. Wenn er das hat muss das hier funktionieren:
root@linux:~# alfred-json -z -r 158
Da sollte sowas raus kommen:
{ "c4:6e:1f:7a:9c:a8": { "location": { "longitude": 9.9046559999999992, "latitude": 51.553319000000002 }, "network": { "mac": "c4:6e:1f:7a:9c:a8", "addresses": [ "fde6:36fc:c985:0:c66e:1fff:fe7a:9ca8", "fe80:0:0:0:c66e:1fff:fe7a:9ca8" ], "mesh_interfaces": [ "c6:72:1f:7a:9c:a8", "c6:71:20:7a:9c:a8" ] }, "node_id": "c46e1f7a9ca8", "hostname": "ffgoe-2abc", "hardware": { "model": "TP-Link TL-WR841N/ND v9" [...]
- Auf dem Frontend muss ein Webserver laufen, in unserem Fall ein Apache2.
- Auf dem Server ist Debian Wheezy installiert
Pfade
Die Karte besteht aus einem Frontend und einem Backend.
Ich werde folgende Pfade verwenden:
Frontend /opt/ffmap-d3 Backend /opt/ffmap-backend
Frontend
Das Original Frontend liegt hier: https://github.com/ffnord/ffmap-d3
Ich verwende den Göttinger Clone davon.
root@linux:/opt# git clone https://github.com/freifunk-goettingen/ffmap-d3.git -b ffgoe Cloning into 'ffmap-d3'... remote: Counting objects: 1838, done. remote: Compressing objects: 100% (24/24), done. remote: Total 1838 (delta 9), reused 0 (delta 0) Receiving objects: 100% (1838/1838), 869.95 KiB | 609 KiB/s, done. Resolving deltas: 100% (1064/1064), done.
Zwei Konfigurationsdateien anpassen:
/opt/ffmap-d3/config.js sitename: "goettingen.freifunk.net",
/opt/ffmap-d3/config.json { "cityname": "Freifunk Göttingen", "sitename": "goettingen.freifunk.net", "url": "http://freifunk-goettingen.de" }
Jetzt bitte tapfer sein. Ab jetzt wird es sehr schlimm.
Node.js und NPM installieren
Der folgende Befehl sollte von einem Gebet an einen heiligen Deiner Wahl begleitet werden
root@linux:/opt/ffmap-d3# curl -sL https://deb.nodesource.com/setup | bash - root@linux:/opt/ffmap-d3# apt-get install nodejs
Grunt und Bower installieren
Mit dem nun gewonnenen npm
root@linux:/opt/ffmap-d3# npm install -g grunt-cli bower root@linux:/opt/ffmap-d3# npm install
Bower geht klugerweise davon aus, nicht als Root gestartet zu werden. Hab ich aber trotzdem gemacht:
root@linux:/opt/ffmap-d3# bower install --allow-root
Grunt benutzen
Mit grunt wird das Projekt fertig übersetzt. Der Output spricht für sich sebst.
grunt ist sowas wie make. Ohne Parameter Aufrufen übersetzt er den Code neu. Mit "grunt clean" kann man aufäumen. Aufräumen musste ich um Änderungen in config.js zu übernehmen, sonst nie.
root@linux:/opt/ffmap-d3# grunt [...] Done, without errors.
Das wars. Den Inhalt von ./build kann man direkt an Browser ausliefern.
Webserver aufsetzen
Lass den den Apache einen Alias auf das Buildverzeichnis zeigen:
/etc/apache2/sites-enabled/000-default <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /map /opt/ffmap-d3/build </VirtualHost>
Unter http://example.com/map ist jetzt schon die leere Karte zu sehen.
Backend
Das Backend hat die Aufgabe die Daten für die Karte zu besorgen.
Dazu benutzt es die Ausgabe folgender Kommandos:
alfred-json -z -r 158 alfred-json -z -r 159 batadv-vis -u /var/run/alfred.sock -i bat0 -f json batctl -m bat0 gwl -n batctl -m bat0 gw
Und eine "Konfigurationsdatei":
/opt/ffmap-backend/aliases.json
Die gewonnenen Informationen landen hier:
- 1. /opt/ffmap-d3/build/nodes.json
- Die zentrale Informationsammlung, die via Web Verfügbar gemacht wird. Hieraus bedient sich die Geo Karte, die Mesh-Karte, die Liste und sogar externe Dienste, freifunk-karte.de und hoffentlich bald auch die IOS Freifunk App.
- 2.. /opt/ffmap-d3/build/nodes/*png
- Graphen die auf der Karte verlinkt sind
- 3. /opt/ffmap-backend/state.json
- Statusinformationen, die auch Nodes beinhalten die mangels Aktivität aus der Alfred Datenbank verschwunden sind. Dank dieser Datei haben wir auch ausgeschaltete Nodes auf der Karte.
- 4. /opt/ffmap-backend/nodesdb/<mac>.rrd
- RRD Datenbanken in denen für jeden einzelnen Node gespeichert wird, wann er Online war und wieviele Clients er hatte
- 5. /opt/ffmap-backend/nodesdb/nodes.rrd
- RRD Datenbank mit der Anzahl Knoten und Clients im Netz über das gesamte letzte Jahr
Das Backend gibt es in zig unterschiedlichen Versionen. Die Ursprungsversion ist zur Zeit hier: https://github.com/ffnord/ffmap-backend
Wir haben uns nach Studium des Entwicklungsverlaufs dazu entschieden, die Version von Freifunk Mainz, Wiesbaden & Umgebung zu nehmen.
root@linux:/opt# git clone https://github.com/freifunk-mwu/ffmap-backend.git -b mwu Cloning into 'ffmap-backend'... remote: Counting objects: 1501, done. remote: Compressing objects: 100% (581/581), done. remote: Total 1501 (delta 912), reused 1492 (delta 907) Receiving objects: 100% (1501/1501), 489.23 KiB | 285 KiB/s, done. Resolving deltas: 100% (912/912), done.
Photon Installieren
Auch das MWU Backend verwendet seltsam zu instalierende Software. Ob das folgende so ist wie es sich der Autor gedacht hat weiss ich nicht 100%ig.
Paketmanager...
root@linux:/opt/ffmap-backend# aptitude install python3-pip
Photon..
root@linux:/opt/ffmap-backend# pip-3.2 install photon_core Requirement already satisfied (use --upgrade to upgrade): photon-core in /usr/local/lib/python3.2/dist-packages Requirement already satisfied (use --upgrade to upgrade): PyYAML in /usr/lib/python3/dist-packages (from photon-core) Cleaning up...
Offenbar wird das hier auch noch gebraucht:
root@linux:/opt/ffmap-backend# git clone https://github.com/spookey/photon.git root@linux:/opt/ffmap-backend# cd photon/ root@linux:/opt/ffmap-backend/photon# python3 setup.py install
Aliases Datei
Die Aliases Datei ist wichtig. Aus ihr geht hervor welche der Nodes VPN Gateways sind. Ohne das sieht die Karte falsch aus:
root@linux:/opt/ffmap-backend# cat aliases.json { "ca:fe:13:37:00:01" : { "name" : "Gauß (VPN1)", "vpn" : true, "firmware" : "Linux", "hardware" : "x86" }, "ca:fe:13:37:00:02" : { "name" : "Weber (VPN2)", "vpn" : true, "firmware" : "Linux", "hardware" : "x86" } }
Cron
Einen Cron-Job einrichten der folgendes tut:
cd /opt/ffmap-backend ./bat2nodes.py -a aliases.json -m bat0 -d /opt/ffmap-d3/build/
Das wars.