# Yanic installieren. Wie?

**URL:** <https://forum.freifunk.net/t/yanic-installieren-wie/24169>\
**Category:** Technik\
**Created:** [31. Juli 2024 um 11:42 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169 "2024-07-31T11:42:54Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![kevinq](https://forum.freifunk.net/user_avatar/forum.freifunk.net/kevinq/32/1653_2.png) [@kevinq](https://forum.freifunk.net/u/kevinq)\
**Post date:** [31. Juli 2024 um 11:42 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/1 "2024-07-31T11:42:54Z")

</div>

Ich wollte unsere Knotenkarte mal modernisieren, und dafür von ffmap-backend auf yanic umsteigen. Ich habe versucht der [Anleitung](https://github.com/FreifunkBremen/yanic/blob/cc71150d537e0261d8017863fb94c56edb536455/INSTALL.md) zu folgen,  
aber entweder bin ich zu blöd Yanic zu installieren, oder die Anleitung ist falsch.

```bash
go install github.com/FreifunkBremen/yanic@latest

```

endet mit

```go
go: downloading github.com/aymerick/douceur v0.2.0
go: downloading github.com/vmihailenco/tagparser/v2 v2.0.0
go: downloading github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53
go: downloading github.com/sirupsen/logrus v1.9.3
go: downloading github.com/russross/blackfriday/v2 v2.1.0
go: downloading github.com/josharian/intern v1.0.0
go: downloading github.com/gorilla/css v1.0.0
# github.com/kataras/iris/v12/context
/root/go/pkg/mod/github.com/kataras/iris/v12@v12.2.6-0.20230908161203-24ba4e8933b9/context/context.go:4185:29: undefined: unsafe.StringData
note: module requires Go 1.20

```

Nun weiß ich nicht ob das nur eine Info oder ein Fehler ist. Ich habe noch nie zuvor irgendwas mit go gemacht.

als nächstes scheitere ich an `cp /opt/go/src/github.com/FreifunkBremen/yanic/config_example.toml /etc/yanic.conf` da es in /opt/go/ gar kein src gibt.  
Ich habe die Ordner dann selbst angelegt und ein git clone da rein gemacht.

Danach scheitere ich aber daran das in der `/opt/hopglass/server/hopglass-server@.service` ein Pfad zu /opt/go/bin angeben ist, aber es gibt dort kein `bin`. Da liegt nur ein `pkg` Verzeichnis.

---

<div class="post-metadata">

**Author:** ![TomH](https://forum.freifunk.net/letter_avatar_proxy/v4/letter/t/90db22/32.png) [@TomH](https://forum.freifunk.net/u/TomH)\
**Post date:** [31. Juli 2024 um 15:44 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/2 "2024-07-31T15:44:04Z")

</div>

Du hast Glück:

Seit der vor ein paar Tagen erschienen 1.6.2 kannst du dir auch einfach eine fertige gebaute executable für x86-64 von GitHub herunterladen: [Release v1.6.2 · FreifunkBremen/yanic · GitHub](https://github.com/FreifunkBremen/yanic/releases/latest)

Ansonsten ist yanic auch in nixpkgs paketiert. Ich vermute das hilft dir aber weniger 😅 🙈

Beim selber bauen sieht das für mich nach falscher go version aus. Ggf. musst du da noch irgendwie eine passende installieren oder mit Ungebungsvariablen setzten welche du nutzen willst oder dergleichen. Aber so genau weiß ich es auch gerade nicht.

---

<div class="post-metadata">

**Author:** ![kevinq](https://forum.freifunk.net/user_avatar/forum.freifunk.net/kevinq/32/1653_2.png) [@kevinq](https://forum.freifunk.net/u/kevinq)\
**Post date:** [7. August 2024 um 15:28 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/3 "2024-08-07T15:28:06Z")

</div>

Das x86-64 bin hat mein Installations Problem gelöst.  
Wenn es jetzt noch möglich wäre irgendwie nach Domäne zu filtern bin ich glücklich. Ich habe nur eine Option zum filtern nach site gefunden.

---

<div class="post-metadata">

**Author:** ![TomH](https://forum.freifunk.net/letter_avatar_proxy/v4/letter/t/90db22/32.png) [@TomH](https://forum.freifunk.net/u/TomH)\
**Post date:** [7. August 2024 um 17:57 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/4 "2024-08-07T17:57:17Z")

</div>

Es gibt im Output Context eine `domain_as_site` (boolean) Option. Wie genau du das dann machen würdest weiß ich gerade auch nicht auswendig. Am besten experimentierst du einfach etwas rum und wenn du nicht weiter kommst wäre eine möglichst ausführliche Beschreibung des Problems sicherlich hilfreich.

* * *

Nur als Nebenbemerkung:

Du kannst im übrigen bei den Outputs auch mehrere des gleichen Typs mit unterschiedlichen Filtern anlegen:

[https://gist.github.com/herbetom/f8eae6fde7a00c59f4333b49c189c784](https://gist.github.com/herbetom/f8eae6fde7a00c59f4333b49c189c784)

---

<div class="post-metadata">

**Author:** ![kevinq](https://forum.freifunk.net/user_avatar/forum.freifunk.net/kevinq/32/1653_2.png) [@kevinq](https://forum.freifunk.net/u/kevinq)\
**Post date:** [12. August 2024 um 13:34 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/5 "2024-08-12T13:34:11Z")

</div>

> [@TomH](#):
>
> eine `domain_as_site` (boolean) Option

Damit scheint es zu funktionieren. Aber insgesamt eine unverständliche Konfiguration. Schade das es keine richtige Doku dazu gibt.

Diese Konfiguration scheint soweit zu funktionieren.

```auto
[[nodes.output.meshviewer]]
enable = true
version = 2
nodes_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/nodes.json"
graph_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/graph.json"
no_owner = false
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.meshviewer.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

```

Das interesante/merkwürdige. Lasse ich `domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]` weg, wird gar nichts ausgegeben. Lasse ich statdessen den Filter weg werden auch Domains ausgegeben die nicht mit in der Liste stehen.  
Für die Gateways die keine Domain haben, musste ich das ffpi mit einem vorangestellten Punkt angeben.

Schön wäre noch wenn es eine Möglichkeit gäbe Knoten die lange offline sind ganz auszublenden, ohne deren Historie zu löschen.

Und ich vermisse im Meshviewer die Airtime. Hatte ich schon öfters bei anderen Communities gesehen, konnte die angaben hier aber nicht in den json Daten finden.

Im gesamten sieht meine config bisher so aus.

```auto
# outputs all nodes as points into nodes.geojson
[[nodes.output.geojson]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/nodes.geojson"

# definition for the new more compressed meshviewer.json
[[nodes.output.meshviewer-ffrgb]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/meshviewer.json"

# definition for nodes.json
[[nodes.output.meshviewer]]
enable = true
# The structure version of the output which should be generated (i.e. nodes.json)
# version 1 is accepted by the legacy meshviewer (which is the master branch)
# i.e. https://github.com/ffnord/meshviewer/tree/master
# version 2 is accepted by the new versions of meshviewer (which are in the legacy develop branch or newer)
# i.e. https://github.com/ffnord/meshviewer/tree/dev
# https://github.com/ffrgb/meshviewer/tree/develop
version = 2
# path where to store nodes.json
nodes_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/nodes.json"
# path where to store graph.json
graph_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/graph.json"

no_owner = false

# definition for nodelist.json
[[nodes.output.nodelist]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/nodelist.json"

# definition for prometheus-sd.json
[[nodes.output.prometheus-sd]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/prometheus-sd.json"
# ip = lates recieved ip, node_id = node id from host
target_address = "ip"

# definition for raw.json
[[nodes.output.raw]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data.global/raw.json"

################
# PINNEBERG
# ##############
[[nodes.output.meshviewer]]
enable = true
version = 2
nodes_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/nodes.json"
graph_path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/graph.json"
no_owner = false
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.meshviewer.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

[[nodes.output.meshviewer-ffrgb]]
enable = true
no_owner = false
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/meshviewer.json"
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.meshviewer-ffrgb.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

[[nodes.output.geojson]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/nodes.geojson"
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.geojson.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

# definition for nodelist.json
[[nodes.output.nodelist]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/nodelist.json"
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.nodelist.filter]
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

[[nodes.output.raw]]
enable = true
path = "/var/www/vhosts/meshviewer.pinneberg.freifunk.net/data/raw.json"
domains = ["ffpi_ibss", "ffpi_80211s", "ffpi"]

[nodes.output.raw.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.ffpi_ibss", "ffpi.ffpi_80211s", ".ffpi"]

###############
# HELGOLAND
###############
[[nodes.output.meshviewer]]
enable = true
version = 2
nodes_path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/nodes.json"
graph_path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/graph.json"
no_owner = false

[nodes.output.meshviewer.filter]
domain_append_site = true
sites = ["ffpi.helgoland", "ffpi.helgoland_old", ".ffpi"]

[[nodes.output.meshviewer-ffrgb]]
enable = true
no_owner = false
path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/meshviewer.json"

[nodes.output.meshviewer-ffrgb.filter]
# Filtern nach den spezifischen Domains
domain_append_site = true
sites = ["ffpi.helgoland", "ffpi.helgoland_old", ".ffpi"]

[[nodes.output.geojson]]
enable = true
path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/nodes.geojson"

[nodes.output.geojson.filter]
domain_append_site = true
sites = ["ffpi.helgoland", "ffpi.helgoland_old", ".ffpi"]

[[nodes.output.nodelist]]
enable = true
path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/nodelist.json"

[nodes.output.nodelist.filter]
domain_append_site = true
sites = ["ffpi.helgoland", "ffpi.helgoland_old", ".ffpi"]

[[nodes.output.raw]]
enable = true
path = "/var/www/vhosts/meshviewer.helgoland.freifunk.net/data/raw.json"

[nodes.output.raw.filter]
domain_append_site = true
sites = ["ffpi.helgoland", "ffpi.helgoland_old", ".ffpi"]

```

---

<div class="post-metadata">

**Author:** ![TomH](https://forum.freifunk.net/letter_avatar_proxy/v4/letter/t/90db22/32.png) [@TomH](https://forum.freifunk.net/u/TomH)\
**Post date:** [12. August 2024 um 18:35 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/6 "2024-08-12T18:35:36Z")

</div>

> [@kevinq](#):
>
> Und ich vermisse im Meshviewer die Airtime. Hatte ich schon öfters bei anderen Communities gesehen, konnte die angaben hier aber nicht in den json Daten finden.

Airtime braucht das `respondd-module-airtime` Package in der Firmware: [packages/net/respondd-module-airtime at main · freifunk-gluon/packages · GitHub](https://github.com/freifunk-gluon/packages/tree/main/net/respondd-module-airtime).

Sofern die gluon Version neu genug ist einfach das folgende in die `image-customization.lua` in der site einfügen:

```lua
packages({'respondd-module-airtime'})

```

Falls das was älteres ist über die `site.mk` hinzufügen.

---

<div class="post-metadata">

**Author:** ![kevinq](https://forum.freifunk.net/user_avatar/forum.freifunk.net/kevinq/32/1653_2.png) [@kevinq](https://forum.freifunk.net/u/kevinq)\
**Post date:** [12. August 2024 um 18:48 UTC](https://forum.freifunk.net/t/yanic-installieren-wie/24169/7 "2024-08-12T18:48:22Z")

</div>

ein paar wenige Knoten gibt es bereits in freier Wildbahn die das Paket installiert haben. z.b. dieser.  
[https://2.meshviewer.pinneberg.freifunk.net/#!/de/map/6466b32f1a40](https://2.meshviewer.pinneberg.freifunk.net/#!/de/map/6466b32f1a40)
