ffdd-server

Original Source for Freifunk Dresden Server (ffdd-server) - https://www.freifunk-dresden.de/

View on GitHub

Freifunk Dresden: ffdd-server - calver

Configures an Debian (11/12) or Ubuntu-Server LTS (20.04/22.04/24.04) as Freifunk-Dresden Server, that could be used as internet gateway an as basis to add further services.

Releases - latest Stable Release - CHANGELOG

Issues - Wiki Documentation (German)

Debian Security Informations

Freifunk Ziel

Freifunk hat es sich zum Ziel gesetzt, Menschen möglichst flächendeckend mit freiem WLAN zu versorgen. Freier Zugang zu Informationen ist nicht nur eine Quelle für Wissen, sondern kann sich auch positiv auf die wirtschaftliche und kulturelle Entwicklung einer Stadt, Region und Land auswirken, da das Internet in der heutigen Zeit sicher ein fester Bestandteil des täglichen Lebens geworden ist. Freifunk bietet die Möglichkeit, Internet per WLAN frei zu nutzen - ohne Zugangssperren und sicher, da der Internettraffic via verschlüsselten Internettunnel (VPN) ins Ausland geroutet wird.

Freifunk Dresden Server (ffdd-server)

Dieses Repository bildet die Funktionalität eines Servers für Freifunk Dresden. Der ffdd-server arbeitet wie ein Freifunk Knoten und ist soweit konfiguriert, dass dieser eine Knotenwebseite anbietet, Backboneverbindungen (fastd2) akzeptiert und via Openvpn Internettunnel für den Internetverkehr aus dem Freifunknetz aufbauen kann.

HINWEIS: Der ffdd-server ist auf Freifunk Dresden zugeschnitten. Soll dieses als Basis für andere Freifunk Communities verwendet werden, müssen Anpassungen gemacht werden. Bitte dazu ein Issue im Github erstellen.


Wichtig ist, dass tun/tap devices und alle möglichen iptables module verfügbar sind. IPv6 ist nicht notwendig, da das Freifunk Netz in Dresden nur IPv4 unterstützt. (Platzmangel auf Routern und bmxd unterstützt dieses nicht.)

Voraussetzungen

Installation

Wichtig:

Folgendes cloned und Installiert das Repository.
Es wird beim ersten Durchführen einige Zeit in Anspruch nehmen da einige Packages und ihre Abhängigkeiten installiert, Files kopiert und noch einige Tools compiliert werden müssen.

git:

apt-get -y install git
git clone https://github.com/Freifunk-Dresden/ffdd-server.git /srv/ffdd-server
cd /srv/ffdd-server && git checkout T_RELEASE_latest
./init_server.sh -i -u

Alternative Installations Möglichkeiten:

curl:

apt-get -y install curl
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Freifunk-Dresden/ffdd-server/T_RELEASE_latest/init_server.sh)" -c "-i"

wget:

apt-get -y install wget
bash -c "$(wget https://raw.githubusercontent.com/Freifunk-Dresden/ffdd-server/T_RELEASE_latest/init_server.sh -O -)" -c "-i"


Coffee Time (~ 10min)

Manuelle Anpassungen

Nun müssen noch Host-Spezifische Dinge kontrolliert und angepasst werden:

Apply

Im letzten Schritt müssen die Änderungen noch übernommen und überprüft werden. (Dies geschieht auch automatisch jede Stunde per cronjob).
Wir wollen aber sehen ob alles läuft und auch alles erfolgreich initialisiert wird:

salt-call state.highstate --local

# Debug Mode
salt-call state.highstate --local -l debug

Nachdem dem nun alle deine Einstellungen überprüft und gesetzt hast sollte der Server einmal sauber neu gestartet werden.

Optional

Du hast selbstverständlich zu jeder Zeit die Möglichkeit dein System nach deinen wünschen anzupassen. Dazu gehören unter anderem auch folgende Optionen:

Autoupdate

Bei jeder Durchführung des salt-Befehls wird überprüft ob das locale ffdd-server Repository unter /srv/ffdd-server auf dem aktuellsten Stand ist. Dies gewährleistet dass Änderungen sowie Bugfixes aber auch Neuerungen schnellst möglich zur Verfügung gestellt werden können.

Manuell Update

Das Autoupdate kann zur jeder Zeit abgeschaltet werden. Dazu muss dieses lediglich über das folgende Kommando in der /etc/config/ffdd deaktiviert werden:
uci set ffdd.sys.autoupdate=0 ; uci commit

Ein manuelles Update durchzuführen:
use: /srv/ffdd-server/init_server.sh (incl. OS Upgrade)
or: /usr/local/bin/freifunk-manuell_update.sh

OR

cd /srv/ffdd-server
git stash
git checkout $(uci -qX get ffdd.sys.branch)
git pull -f origin $(uci -qX get ffdd.sys.branch)
salt-call state.highstate --local -l error

Fehlerhaftes Repository

Sollte es Probleme jeglicher Art mit dem ‘ffdd-server’ repo geben dann ist der einfachste Weg dieses neu zu erstellen und salt aufzurufen.

use: /usr/local/bin/freifunk-manuell_update.sh

OR

cd /srv/ && rm -rf /srv/ffdd-server
git clone https://github.com/Freifunk-Dresden/ffdd-server/ /srv/ffdd-server
cd /srv/ffdd-server/ && git checkout T_RELEASE_latest
salt-call state.highstate --local -l error

Development

Um eine andere Release-Version zu benutzen ist ein notwendig in der /etc/config/ffdd die Option “branch” anzupassen.

Default (Stable):

uci set ffdd.sys.branch='T_RELEASE_latest' ; uci commit

Development:

uci set ffdd.sys.branch='master' ; uci commit

Zudem ist es auch möglich seine eigene Repository URL zu nutzen.

uci set ffdd.sys.freifunk_repo='https://your_repo_url/' ; uci commit

DEV init_server.sh - Installation

git clone https://github.com/Freifunk-Dresden/ffdd-server.git /srv/ffdd-server
cd /srv/ffdd-server

# install master (devel) branch
./init_server.sh -i -b
# or
./init_server.sh -i -b <rev/branch/tag>

# do not overwrite local changes (disable git update)
./init_server.sh -i -u

Wichig für Communitiy Forks

Im moment gibt es keinen Schutz, dass Routerfirmware einer Communitiy sich mit Servern oder Routern anderer Communities verbinden. Es ist Fatal, wenn sich die Netze wegen gleicher WLAN BSSID oder via Backbone verbinden. Da überall das gleiche Routingprotokoll verwendet wird, würden Geräte von verschiedenen Communities miteinander reden können und das Netz würde gigantisch groß und die Router überlasten.

Bitte einhalten:

Freifunk Dresden
Wiki: Freifunk Dresden
Issues
Twitter
Facebook