Configuration des noeuds duniter

Après avoir accumulé 350 blocks de retard en 24h (???) j’ai décidé ce week-end de passer à Duniter 1.6.14 qui a l’air beaucoup plus rapide (en synchronisation au moins). J’ai eu quelques essais infructueux mais finalement j’apparait bien sur Cesium avec les protocoles BMA et WS2P (public donc).
BASIC_MERKLED_API g1.melua.fr 443
WS2P 9d845e0b g1.melua.fr 20901

En revanche mon noeud n’écoute que sur le port 10901 (derrière nginx en 443) et le port 9220 (web local) mais pas du tout le port 20901 !!

Autre chose: je vois parfois le protocole BMAS (BMA over SSL) mais je ne vois pas quelles commandes permettent de le configurer…

1 Like

@Melua dans ce cas ton noeud ne peut faire que du ws2p privé (outcoming), si tu vut pouvoir recevoir des connexions ws2p entrantes sur 443 également , tu peut définir un path /ws2p en configurer ton nginx pour qu’il redirige la location /ws2p sur localhost:20901 :wink:

En fait c’est le même protocole, il te suffit de rajouter l’endpoint manuellement avec la commande :

duniter config --addep "BMAS g1.melua.fr 443"

J’ai du reset les données de mon noeud après que celui-ci ai accusé près de 1500 blocks de retard, mes logs étaient remplis de Unknown reference block of peer et une synchronisation manuelle ne résolvait pas le problème :disappointed_relieved:

J’avais mis en place mon WS2P public depuis presque 2 semaines sans de connexions INCOMING quand je me suis rapellé que c’était du WebSocket :sweat_smile: or il faut une configuration adéquate pour nginx :

upstream duniter-ws2p {
	server 127.0.0.1:20901;
}

location /ws2p {
	proxy_pass http://duniter-ws2p;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "Upgrade";
}

Plus d’info : Using NGINX as a WebSocket Proxy

1 Like

je crois qu’il existe une issue qui signale ce souci mais je ne suis pas sur, ouvre en une au cas ou :wink:

Mettons que je veuille rendre mon noeud disponible en SSL/TLS mais sur les ports 10901 (BMA) et 20901 (WS2P) comment je m’y prend ?

J’ai configuré un stunnel fonctionnel (testé avec curl) mais bien évidemment je ne sais pas si les autre noeuds arrivent à me contacter !

https://g1.melua.fr:10901/network/peering
wss://g1.melua.fr:20901/ws2p

EDIT: mise à jour du lien WS2P suite au commentaire d’Elois

1 Like

@Melua tes endpoint BMA et WS2P sont bien accessibles je viens de tester, pour info WS2P c’est du websocket donc c’est wss://g1.melua.fr:20901/ws2p qu’il fat tester, et ça fonctionne nickel depuis chez moi :wink:

Alors le plus simple c’est de mettre en place un reverse proxy nginx, duniter écouetra en local sur 10901 et 20901 mais décalera comme remoteport 443, après a coup de stunnel comme tu l’a fait ça marche aussi :wink:

C’est mon ancienne configuration mais disons que je veux écouter sur un autre port public mais, dans la mesure où pour Duniter seul 443 = HTTPS, ça n’a pas l’air possible ; je me trompe ?

En réalité duniter ne gère pas tout ce qui est SSL/TLS, il se contente d’ajouter un s au nom du protocole lorsqu’il tente de joindre un endpoint qui a comme remoteport 443.

Oui donc en dehors du port 443 point de SSaLut.

Pour le moment oui, il faudrait un endpoint spécifique qui indique qu’il faut passer par SSL/TLS, rien ne t’empêche d’ouvrir une issue pour demander cette évolution :wink:

Justement je pensais que BMAS était là pour ça et pourquoi pas un hypothétique WS2PS :smirk:

Oui BMAS est la pour ça mais ce n’est pas dans le code les gens le rajoute manuellement. Quand a WS2PS oui c’est facile a faire je peut intégrer ça pour WS2p v2 :wink:

Ayant séparé BMA et WS2P de HTTPS j’ai pu déterminer la part du trafic générée (statistiques iptables) et je m’étonne de la différence entre les deux protocoles: j’ai 200x plus de bytes entrant en BMA. Est-ce que c’est parce que les noeuds et/ou les clients sont majoritairement basés sur BMA ou parce que WS2P est plus optimisé ?

@Melua alors c’est les deux en fait :slight_smile:
WS2P est encore en pré-release, bien que la stable est sur le point de sortir justement, du coup tout les non testeurs de la G1 sont en théorie encore en full BMA

Je loue actuellement un VPS chez un fournisseur de dédié et mes ressources CPU (suffisantes pour faire du Web+Bdd+Mail) sont un peu limitées pour Duniter (un cat /proc/cpuinfo me donne 4787.80 Bogomips).

Lorsque je désactive BMA le load average diminue significativement.
graph

Bon en soi avoir de la charge ce n’est pas gênant, par contre qui dit VPS dit faible entropie, j’ai donc un générateur d’entropie, et là encore BMA a un impact significatif quand bien même SSL/TLS est désactivé pour Duniter.
graph2

Du coup en l’état, pour la sécurité de mes autres services j’envisage de ne laisser que WS2P (public/privé) d’activé pour le calcul des blocs, est-ce gênant ?

Tu aurais une idée de ce qui peut provoquer cette chute d’entropie ?

Tu parles de la courbe en dent de scie ? C’est caractéristique d’un RNG (il génère de l’entropie de façon régulière), BMA n’est pas responsable de toute façons il est coupé. Par contre la courbe totalement plate au début montre que BMA activé consomme probablement toute l’entropie générée (ne laissant que le bruit de fond de base).

NB: je suis conscient que ce n’est pas BMA en soit mais le nombre de noeuds qui utilisent encore BMA vs les noeuds qui communiquent via WS2P.

Qu’est-ce qui peut provoquer cette consommation en général ?

Je suppose que même en miroir le nœud consomme de l’entropie (après tout c’est de la crypto :grin:) et BMA est bien plus sollicité que WS2P.