Mon nœud Duniter est injoignable

Bonjour a tous

Pour commencer, toutes mes excuses si un problème similaire a été résolu. J’ai recherché sur le forum, sans succès.

J’essaie de mettre en ligne mon nœud duniter (duniter.magic23.org).

Ce nœud est sur un raspberry pi 4, derrière une livebox. le port 10901 a été redirigé. Le noeud est up et synchronisé.Il a été installé en version 1.8.5, via le paquet debian armv7. A noter que pour des raisons de simplicité du noeud, de ressources, et autre, je n’ai pas envie d’installer Yunohost.

Il est visible sur Kazou, mais n’a pas les « couleurs » comme les autres nœuds :

Le nœud n’est pas utilisable donc dans Cesium. J’ai le message d’erreur, que je soit dans le LAN ou en dehors :

image

Il me semble donc qu’une chose n’a pas été faite, mais après avoir épluché la doc, je ne vois pas ce que j’ai oublié de faire.

Pouvez vous aiguiller ?

Le noeud semble en effet injoignable via les ports 80 (http) et 443 (https) :

$ nmap -p80,443 duniter.magic23.org
Starting Nmap 7.80 ( https://nmap.org ) at 2022-09-05 16:32 CEST
Nmap scan report for duniter.magic23.org (90.22.7.72)
Host is up (0.018s latency).
rDNS record for 90.22.7.72: lfbn-cae-1-352-72.w90-22.abo.wanadoo.fr

PORT    STATE    SERVICE
80/tcp  filtered http
443/tcp closed   https

Nmap done: 1 IP address (1 host up) scanned in 1.27 seconds

Hum, étrange, car sur le LAN, je n’accède pas non plus à ces ports sur le RPI. Est ce que c’est Duniter qui les ouvre ?

Ou bien il faut nater les ports 80 et 443 wan vers d’autres ports sur le RPI ?

Merci

As-tu suivi une doc pour l’installation de ce noeud ? Si oui, laquelle ?

Et aussi :

Qu’entends-tu par là exactement ?

J’ai fait une règle NAT sur la livebox du port WAN 10901 vers le même port sur le rpi dans le LAN.

J’ai vu que c’était le port utilisé sur le wiki ici : Duniter | Configurer un nœud Duniter, j’ai donc gardé le même.

1 « J'aime »

Donc depuis le monde extérieur il faut utiliser le port 10901 (et non le 443). Mais ce port ne semble pas accessible non plus vu de chez moi :

$ nmap -p10901 duniter.magic23.org
Starting Nmap 7.80 ( https://nmap.org ) at 2022-09-05 17:02 CEST
Nmap scan report for duniter.magic23.org (90.22.7.72)
Host is up (0.027s latency).
rDNS record for 90.22.7.72: lfbn-cae-1-352-72.w90-22.abo.wanadoo.fr

PORT      STATE  SERVICE
10901/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds

Est-ce que vu du LAN le port est bien ouvert ?

@llecoeur

Je constate que le port 10901 est maintenant accessible :

10901/tcp open   unknown

Et on peut voir la configuration réseau de duniter via cet URL : http://duniter.magic23.org:10901/network/peering
Voici ce que ça donne :

{
  "version": 10,
  "currency": "g1",
  "endpoints": [
    "BMAS duniter.magic23.org 443",
    "WS2P 9275ffce 90.17.71.71 20902",
    "BMAS duniter.magic23.org 90.22.7.72 443"
  ],
  "status": "UP",
  "block": "556904-000000263BD9E444B84BFCED176D62297F2576A389A9B950E48176BF20A78CEA",
  "signature": "lOURsY3llKbWJIhS5OqwQkNj8ct3FHaSI3gF5ZLx+8heI9JCQIs4VOySOofaXFqFNfL5rdCkWGfb1J5ISNVgAA==",
  "raw": "Version: 10\nType: Peer\nCurrency: g1\nPublicKey: GF3NLpeswSigmEgsj9Caqb6jaFpAwaYwSCLC4jHpKt7h\nBlock: 556904-000000263BD9E444B84BFCED176D62297F2576A389A9B950E48176BF20A78CEA\nEndpoints:\nBMAS duniter.magic23.org 443\nWS2P 9275ffce 90.17.71.71 20902\nBMAS duniter.magic23.org 90.22.7.72 443\nlOURsY3llKbWJIhS5OqwQkNj8ct3FHaSI3gF5ZLx+8heI9JCQIs4VOySOofaXFqFNfL5rdCkWGfb1J5ISNVgAA==\n",
  "pubkey": "GF3NLpeswSigmEgsj9Caqb6jaFpAwaYwSCLC4jHpKt7h"
}

Les endpoints BMAS ne sont pas corrects car le port 443 n’est pas utilisé. Il faut à la place définir un endpoint BMA (sans le ‹ S › car via HTTP et non HTTPS) sur le port 10901.

Merci Pini pour ces tests et ces conseils.

Je n’ai en effet pas eu le temps de continuer a creuser énormément, mais je compte le faire ce soir. Et je garde cette requête sur l’API pour tester. Je n’ai vu nulle part une documentation de cette API. Est ce qu’elle existe ?

Actuellement, je dois à chaque redémarrage du Rpi faire :

duniter config --port 10901

puis relancer le service, sinon, le port n’est pas ouvert, et aucun autre port ne semble utilisé. Je n’ai pas encore tenté d’éditer le script systemd pour rajouter l’argument fixant le port. Cela devrait résoudre le problème.

Il serait surement mieux d’utiliser le port 443 plutot que le 10901. Par contre, il faudrait un certificat let’s encrypt ? Et dans ce cas, il faut que je mette en place un nginx en reverse proxy ?

Oui : doc/HTTP_API.md · v1.8.5 · nodes / typescript / duniter · GitLab

Intéressant. Peux-tu me transmettre ton ficher duniter_default/conf.json ?

Oui, mais un problème à la fois. Commençons par le faire fonctionner sans certificat.

J’ai réussi a trouver un petit peu de temps pour remettre mon nez dans le noeud, et je crois que tout est ok maintenant !

J’ai donc vérifié la config de Duniter, et tout semble ok. J’ai fixé le port dans le fichier de config, et tout fonctionne parfaitement à chaque reboot. Pourquoi ce paramètre n’était pas pris en compte, mystère !

J’en ai profité pour installer et configurer nginx et mettre un certificat. Et tout semble fonctionner, super, et donc un grand merci pour ton aide.

Reste un truc : Je suis derrière une box qui n’est pas en IP Fixe. J’ai donc mis en place un dyndns. Seulement, dans la config réseau, j’ai une ip fixe qui va changer. Il m’ennuie donc d’avoir une IP en plus de mon domaine sur la page http://duniter.magic23.org/network/peering

Est ce qu’il est possible de n’utiliser que le nom de domaine dans la section endpoints ? SI oui, comment ? Car je ne vois nulle part ces IP dans duniter_default/conf.json .

Merci !

Un redémarrage du service lorsque l’IP a changé ne résoudrait-il pas le problème ?

Possible. Mais c’est une action manuelle dans ce cas.

Ou bien il faudrait que je fasse un script bash executé par cron qui détecte l’adresse ip publique, et redémarre le service duniter a chaque fois qu’elle a changé…

C’est un peu crado, mais bon, pourquoi pas…

Non c’est pas si crado. Y’a pas d’autre solution AHMA.
Pour retrouver ton IP publique il y a ce scriptlet que j’ai récupéré il y a peu :

# retreive current external IP address from Akamai server
MY_IP=$(curl -s http://whatismyip.akamai.com/)  
1 « J'aime »