ciao gente!
(There is a copy in english of this email below)
Volevo condividere questo articolo dal blog di freifunk
che ho scritto in occasione del google summer of code di quest'anno.
https://blog.freifunk.net/2023/07/08/gsoc23-automation-tools-for-libremesh-firmware-build-and-monitoring-part-2/
Volevo approfittare per raccontare due cose su cosa sto facendo, e anche
su come stiamo messi nella nostra piccola wireless community network
quaggiù in italia, nell'appennino a sud di Bologna
nella speranza di ricevere feedback e per lasciare una traccia di come
siamo organizzati che possa essere di ispirazione.
## Come stiamo usando libremesh
Intanto scusate la lungaggine, cerco di dare un po' il quadro per
arrivare meglio al punto dopo
noi siamo questi qua che vedete in foto, (da questa altezza risulta meno
problematico condividere la posizione perché approssimativa)
[0]
https://pic.infini.fr/VKhJx4q1/5rElxbGT.png
Al momento abbiamo soprattutto questi dispositivi per i ponti wireless 5ghz:
- ubnt-lbe-m5 (openwrt-19.07.10 libremesh-2020.1)
- ubnt-nanostation-m-xw (openwrt-19.07.10 libremesh-2020.1)
- ubnt-nanostation-loco-m-xw (openwrt-19.07.10 libremesh-2020.1)
- Powerbeam m5 (openwrt-19.07.10 libremesh-2020.1)
- tp-link-cpe510-v3 (openwrt-22.03.5-libremesh-master)
### Configurazioni di libremesh
Al momento, sulla falsariga degli ultimi cambiamenti di
librerouteros-v1.5 stiamo facendo queste scelte, condensate perlopiù nel
network profile della nostra community:
link_al_network_profile
- usiamo anche noi il setup di default di libremesh ovvero babel/batman-adv
- pirania, non lo stiamo usando, stiamo andando avanti soprattutto per
passaparola e ci aiutiamo con ethercalc/cryptpad
- prometheus/victoria-metrics
stiamo usando prometheus e non victoria-metrics per tenerla più semplice.
come wcn ci piacerebbe fare delle prove, imho credo in effetti avere
le metriche che vengono pushate sul server sembra molto più comodo.
Abbiamo iniziato impostando Prometheus e per ora stiamo continuando
così, e in ogni caso se decidessimo di cambiare sistema vorremmo
mantenere un setup pronto per entrambe le strade.
- tmate: non lo stiamo usando ma ci stiamo arrangiando per fare delle
vpn con wireguard per avere accesso da remoto ad alcuni nodi.
## Come siamo organizzati
Le cose che cerchiamo di mantenere come accordi di community, a parte il
Picopeering Agreement
https://picopeer.net/ sono:
1- Garantire la possibilità al maggior numero di livelli/modalità di
partecipazione, ovvero sapere che ci sono diversi livelli di
consapevolezza del progetto e anche di competenze tecniche.
2- Promuovere l'indipendenza delle persone partecipanti dal singolo
gruppo tecnico di riferimento, e lo sviluppo di diversi livelli di
autonomia.
Questo si traduce per me anche nella scrittura di 'sti ruoli ansible che
cerchiamo di mantenere con una logica del "mi fanno in automatico certe
cose" ma vorremmo non aggiungessero alcun livello di astrazione tale che
un singolo non possa ripeterselo per conto suo senza.
3- Per noi sarebbe molto utile una guida del tipo come posso configurare
openwrt per aggiungersi ad una mesh di dispositivi libremesh.
Gli altri punti riferibili, a ci siamo evoluti nella gestione delle
molteplici build, e del setup del sistema di monitoring li avevo già
sommariamente espressi come casi d'uso e li trovate a questo riferimento
[1]
https://gitlab.com/a-gave/libremesh-ansible-playbooks/-/blob/master/docs/use-cases.md
## Strumenti digitali
Questa una mini lista di scelte che abbiamo fatto, sul cercare di
aiutarci con alcuni strumenti digitali:
- il BuildRoot di Openwrt. La community di cui faccio parte ha iniziato
a usare libremesh v16 a marzo 2017 e dalla versione successiva la v17 è
stato necessario imparare a compilare per evitare i reset e i km di
automobile per rimediare, ed avere delle immagini con le radio impostate
a 10'000m invece che 1000m, il nuovo default.
- uMap, hostato in locale (avere una mappa comune, non pubblica, e
online per sincronizzarla più facilmente è stata una delle primissime
necessità) di recente per rapide prove esiste anche una versione
ufficiale dockerizzata.
- Etherpad, Ethercalc, Cryptpad per conti e magazzino
- Prometheus (node-exporter, blackbox-exporter, alertmanager) + Grafana,
per monitorare peggioramenti nella qualità dei link, o down di
dispositivi (alcune antenne hanno dei montaggi un po' precari)
## Da docker-compose + nginx, a ansible + git
Per coordinarci abbiamo inizialmente installato a mano i componenti che
ci servivano, usando soprattutto docker-compose e avendo poi un setup
semplice con nginx più una certification authority locale.
Ma risultava difficile metterci le mani in più persone, dunque abbiamo
iniziato a usare ansible con git per tenere traccia delle modifiche,
avere una più chiara disposizione delle confgurazioni. E per evitare di
doverci segnare della documentazione per ciascun cambiamento, ma usare
invece git per versionare un sistema in cui inserire sia la
documentazione, sia le operazioni necessarie a riprodurre lo stesso sistema.
Su questo volevo condividere anche questa presentazione fatta
all'HackOrDie 2022 a Bologna, Italy, con considerazioni simili:
https://git.lattuga.net/antennine/hod2022_10m-talk/src/master/slides/index.md
Grazie al google summer of code di quest'anno ho avuto l'occasione di
scrivere i ruoli e i playbook corrispondenti a questo setup che vi ho
illustrato finora.
Spero possa di esere di ispirazione per qualche altra persona.
Sarebbe interessante per me continuare questi discorsi
in particolare su come varie community stanno usando vpn interne, e
sull'opprtunità di scambiarsi dei files yaml di direttive per le build
di openwrt.
Un saluto!
[english]
Hi all!
I'd like to share this post from the blog of freifunk
that I've written for the google summer of code of this year.
https://blog.freifunk.net/2023/07/08/gsoc23-automation-tools-for-libremesh-firmware-build-and-monitoring-part-2/
I'd like to tell two things on what I'm doing, and also on how we are
organized in out community network in Italy, in the countryside/montain
in the south of bologna.
With the hope of receiving feedback and to leave a trace of how we are
organized that can be an inspiration.
## How are we using libremesh
First, sorry for the long email. I try to give the frame to better
understand the point.
We are these that you can see in this pics:
[0]
https://pic.infini.fr/VKhJx4q1/5rElxbGT.png
At the moment we are using mainly these devices to make the 5ghz
wireless links:
- ubnt-lbe-m5 (openwrt-19.07.10 libremesh-2020.1)
- ubnt-nanostation-m-xw (openwrt-19.07.10 libremesh-2020.1)
- ubnt-nanostation-loco-m-xw (openwrt-19.07.10 libremesh-2020.1)
- Powerbeam m5 (openwrt-19.07.10 libremesh-2020.1)
- tp-link-cpe510-v3 (openwrt-22.03.5-libremesh-master)
### Configurations of libremesh
At the moment, along the lines of changements in librerouteros-v1.5 we
are doing these choices, condensed in the network profile of the
community valsamoggia.ninux.org at
https://github.com/libremesh/network-profiles/tree/master/valsamoggia.ninux.org
- we also use the default setup with babeld/batman-adv
- pirania, we are not using it, we are going on mostly by word-of-mouth
and we are helping us with ethercalc/cryptpad.
- prometheus/victoria-metrics.
we are using prometheus and not victoria-metrics to keep it simpler.
as a wcn we would like to do some testing, imho I think actually
having the metrics being pushed to the server seems much more convenient.
We started by setting up Prometheus and are continuing that for now,
and in any case if we decide to change systems we would like to keep a
setup ready for both ways.
- tmate: we are not using it but we are arranging to make vpn's with
wireguard to have remote access to some nodes.
## How we are organized
The things we try to maintain as community agreements, apart from the
Picopeering Agreement
https://picopeer.net/ are:
1- Ensuring that the greatest number of levels/modes of participation
are possible, i.e., knowing that there are different levels of project
awareness and also technical skills.
2- Promoting the independence of participating people from the
individual technical reference group, and the development of different
levels of autonomy.
This also translates for me into writing 'these ansible roles that we
try to keep with a logic of "they automatically do certain things to me"
but we would like them not to add any level of abstraction such that an
individual cannot repeat it on their own without it.
3- A guide like how can I configure openwrt to add itself to a mesh of
libremesh devices would be very useful for us.
The other referable points, to we have evolved in the management of the
multiple builds, and the setup of the monitoring system I had already
summarized as use cases and you can find them at this reference:
[1]
https://gitlab.com/a-gave/libremesh-ansible-playbooks/-/blob/master/docs/use-cases.md
## Digital tools
This a mini list of choices we made, about trying to help us with some
digital tools:
- Openwrt's BuildRoot. The community I am a part of started using
libremesh v16 in March 2017 and by the next version v17 it was necessary
to learn how to compile to avoid resets and car miles to fix it, and
have images with radios set to 10'000m instead of 1000m, the new default.
- uMap, hosted locally (having a common, non-public map and online to
synchronize it more easily was one of the very first needs) recently for
quick tests there is also an official dockerized version.
- Etherpad, Ethercalc, Cryptpad for accounts and storage.
- Prometheus (node-exporter, blackbox-exporter, alertmanager) + Grafana,
to monitor deteriorations in link quality, or down of devices (some
antennas have somewhat precarious mounts)
## From docker-compose + nginx, to ansible + git
To coordinate we initially installed the components we needed by hand,
mostly using docker-compose and then having a simple setup with nginx
plus a local certification authority.
But it was difficult to get our hands on it in multiple people, so we
started using ansible with git to keep track of changes, have a clearer
arrangement of confgurations. And to avoid having to mark up
documentation for each change, but instead use git to version a system
in which to put both the documentation and the operations needed to
reproduce the same system.
About this, I'd like to link also this presentation (in italian) I made
at the HackOrDie 2022, in Bologna, Italy with similar considerations:
https://git.lattuga.net/antennine/hod2022_10m-talk/src/master/slides/index.md
Thanks to this year's google summer of code, I had the opportunity to
write the roles and playbooks corresponding to this setup illustrated so
far.
I hope it could be an inspiration for others people.
It would be interesting to me to continue these speechs, in particular
on how various communities are using internal vpns, and on the
opportunity of exchange yaml files to control the builds of openwrt.
A greeting!
--
gothos
PGP Key ID: 0x6406B32F2CEC0008
PGP Key server:
https://keys.openpgp.org/