Freifunk/Aufsetzen der Mesh Karte

Aus Wiki CCC Göttingen
Zur Navigation springen Zur Suche springen

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

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 root@linux:/opt/ffmap-d3# npm install -g grunt-cli bower

root@linux:/opt/ffmap-d3# npm install

root@linux:/opt/ffmap-d3# bower install --allow-root root@linux:/opt/ffmap-d3# grunt [...] Done, without errors. <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>

=Backend?

Das Backend ist in python geschrieben. Es 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 Der Inhalt dieser Datei wird den oben gewonnenen Informationen hinzugefügt. Vor allem werden hier die VPN Gateways bekannt gemacht. Ohne diese Datei würden die VPN Gateways als normale Nodes mit sehr vielen Verbindungen erscheinen.

Die dabei 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. a. /opt/ffmap-d3/build/nodes/*png - Graphen die auf der Karte verlinkt sind 2. /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. 3. /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 4. /opt/ffmap-backend/nodesdb/nodes.rrd -

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 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

aptitude install python3-pip

  1. 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...


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

Die Aliases Datei schreiben: 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"
  }

}



Einen Cron-Job einrichten der folgendes tut:

cd /opt/ffmap-backend ./bat2nodes.py -a aliases.json -m bat0 -d /opt/ffmap-d3/build/

Das sollte bereits Fehlerfrei durchlaufen.