Première version "stable" de dunipod: v0.10.0

EDIT: Il y a eu de nouvelles versions depuis, vérifiez la dernière version disponible sur le dépot gitlab avant de copier les commandes d’installation.

Je viens de release la première version « stable » de Dunipod : v0.10.0.

J’ai corrigé pas mal de bugs, ajouté le support des blocs non finalisés comme demandé, et peaufiné la documentation ainsi que le script et le compose dans deploy pour faciliter le déploiement.

J’ai stabilisé tout ce que je pouvais avec mes seuls tests de mon côté. Maintenant, pour découvrir d’autres bugs, j’ai besoin que Dunipod soit utilisé plus largement.

J’invite donc tous ceux qui le peuvent à héberger une instance Dunipod sur Ğ1, sur gtest, ou sur les deux.

Je vous recommande très fortement d’utiliser directement le dossier deploy/ officiel.

Ci-dessous, les commandes à utiliser. Cela inclut déjà le nœud Duniter associé, vous n’avez pas besoin de l’installer séparément.

Si votre serveur dispose d’au moins 16 Go de RAM et que vous voulez héberger Dunipod pour le réseau Ğ1 :

git clone https://git.duniter.org/nodes/rust/dunipod.git
cd dunipod
git checkout v0.12.0
cp deploy/compose.env.example deploy/.env
sed -i 's/pod.example.org/YOUR_DOMAINE/' deploy/.env
sudo deploy/dunipodctl install

Si votre serveur dispose de 8 Go de RAM, ajoutez cette variable d’environnement avant de lancer le script d’installation :

...
echo 'DUNIPOD_PROFILE=low-memory' >> deploy/.env
sudo deploy/dunipodctl install

Si vous souhaitez héberger un Dunipod sur gtest :

...
echo 'DUNIPOD_NETWORK=gtest' >> deploy/.env
sudo deploy/dunipodctl install

Super nouvelle !

Certes, mais ce serait pratique que le nœud Duniter miroir puisse aussi servir à Dunipod, pour éviter d’en avoir deux sur la même machine. Pour l’instant j’ai dupliqué chez moi et le noeud squid a encore besoin d’être archive, mais à terme quand je fermerai squid, j’aimerais avoir un seul Duniter pour économiser les ressources.

Il faut qu’on commence à migrer les applis pour utiliser Dunipod à la place de Squid. Pour Ğecko il n’y a pas d’urgence à migrer, mais j’aimerais bien faire une branche pour expérimenter et faire des retours d’expérience. Pour Cesium il faudrait déjà qu’on reprenne en main le développement. Pour G1-companion ça pourrait être intéressant.

tu peux m’expliquer ?

Oui, si tu veux essayer quand Axiom aura à nouveau du quota Claude, il s’agit de remplacer dans Ğecko :

  1. la couche de données hors chaîne Cesium Plus par les Dunipod
  2. la couche d’indexation blockchain Squid par l’indexation Dunipod

Pour le point 2, il y a plusieurs avantages, plus du point de vue écosystème (hébergeurs des services) que utilisateur Ğecko :

  • Dunipod est probablement plus robuste et léger que Squid
  • Dunipod ne nécessite pas de nœud archive, c’est donc plus économe à héberger
  • ça fera un seul endpoint plutôt que deux parce Squid n’intégrera jamais les données hors chaîne

Il y aura peut-être quelques différences entre les API GraphQL de Squid et Dunipod, il faudra arbitrer s’il vaut mieux adapter Dunipod quand ça fait sens ou s’il faut repenser l’utilisation côté app. Je n’ai pas du tout analysé, je peux pas dire grand chose de plus sans creuser.

on peut le faire en Gtest ? avant de tout modifier dans l’appli

Peu importe si c’est gtest ou g1, il y a des noeuds Dunipod à jour sur les deux. Par contre, je me rends compte que ce qu’il fallait que j’explique c’est “branche”. Tu peux avoir deux versions du logiciel qui évoluent chacun de leur côté. Isoler la migration Squid→Dunipod dans une “branche” permet de travailler dessus en parallèle d’autres modifs de l’app sans se marcher dessus et même avant que tout soit fonctionnel. Une fois l’expérience concluante, il faudra fusionner les branches pour que la migration soit faite sur une version à jour de l’app. On fait souvent ça en développement logiciel : une branche pour expérimenter avec des versions “test” de l’app non publiées sur les store. Une fois que c’est validé on peut intégrer à la version officielle.

merci pour cette explication , cela me rassure :rofl:

@elois j’ai deux questions :

  • quels ports faut-il ouvrir pour rendre dunipod accessible depuis l’extérieur
  • y a-t-il un inconvénient à faire tourner dunipod sur le même environnement qu’un noeud smith

Pour un Dunipod public avec le déploiement officiel, il faut ouvrir en entrée :

  • TCP 443 pour les API en HTTPS.
  • TCP 80 pour la redirection HTTPS et la gestion des certificats avec la configuration fournie.
  • UDP 9946 pour la réplication entre pods.

Les ports internes des services, PostgreSQL et la supervision doivent rester privés. Le reverse proxy expose les routes publiques. Le Duniter inclus utilise aussi TCP 30333 pour son réseau P2P, à ouvrir pour accepter ses connexions entrantes.

Faire tourner Dunipod sur la même machine qu’un nœud smith est possible, mais je le déconseille si la machine est juste dimensionnée pour le smith. Dunipod partage son CPU, sa RAM, ses accès disque et sa bande passante, notamment pendant la synchronisation initiale. Une saturation peut donc perturber le smith.

Le profil standard prévoit 4 CPU, 16 Gio de RAM et 200 Gio de SSD pour la pile Dunipod, Duniter miroir inclus. Il faut conserver des ressources supplémentaires pour le smith et isoler les services, leurs données et leurs secrets. Attention aussi au conflit sur le port 30333 : le port du noeud Duniter intégré à Dunipod est configurable via DUNIPOD_DUNITER_P2P_PORT à ajouter dans deploy/.env.

Pour un smith, ma préférence reste une machine séparée. Des conteneurs seuls n’isolent pas les ressources ni les pannes du serveur.

@HugoTrentesaux @Chiara07

J’ai créé deux issues avec un plan détaillé pour le support de Dunipod dans Ğecko. Elles sont basées sur une analyse du code actuel de Ğecko et de Dunipod réalisée par une IA (GPT6 Astra) sous ma supervision :

Support des données on-chain (équivalent de Squid) :

Support des profils, pour remplacer le server Cs+ legacy:

Je vais créer des issues pour Cesium2 également

EDIT: j’ai créé des issues similaires pour cesium (#235 et #236 cc @kimamila) et pour tikka (#44 et #45 cc @vit).

Ces issues proposent un plan détaillé en deux étapes pour la migration vers Dunipod : la migration de Squid dans un premier temps, puis la migration des profils/avatars dans un second temps.

Les plans ont été co-rédigés avec une IA (GPT 6 Astra), qui a analysé les codebases de Cesium2 et Tikka sous ma supervision.

ok j’ai noté cela

pour le moment on corrige les 3 issues précédentes dont une #250 était en partie vue !158 et en attente de fusion , donc on y ajoute les points relevés

restera la #249 apparemment plus lourd a traiter

c’etait la “Claudette” en direct de l’italie avec vue sur mer ! :beach_with_umbrella:

C’es désormais le cas avec Dunipod v0.12: Dunipod v0.12 : correction de plusieurs bugs et personnalisation du nœud Duniter associé

Ce n’es toutefois pas le comportement pas défaut car je souhaite que la configuration par défaut ne conserve que le strict nécessaire.

La nouvelle version v0.12 permet désormais de configurer le nœud Duniter associé à Dunipod.

Vous pouvez, par exemple, lui demander de conserver tous les blocs pour en faire un noeud mirroir:

echo 'DUNITER_BLOCKS_PRUNING=archive' >> deploy/.env
sudo deploy/dunipodctl start

la commande dunipodctl start commande recharge la config .env, recrée les conteneurs concernés et vérifie leur santé.

Vous pouvez désormais personnaliser toutes les options CLI de Duniter avec les variables d’environnement DUNITER_*. La liste exhaustive est disponible ici : https://git.duniter.org/nodes/rust/dunipod/-/blob/main/deploy/duniter-cli/env.example.

Hello, j’ai enfin repris après un temps d’arrêt pour gérer les affaires familiales…

Voilà le résultat de ma contribution avec Claude :

Merci @BulmAnanaBelle pour tes tests ! J’ai corrigé le bug trouvé par ton Claude, pas besoin de faire une MR :slight_smile:

Peux-tu m’indiquer l’URL de ton Dunipod pour que je puisse vérifier qu’il fonctionne comme attendu ?

dunipod.gtest.bulma.sleoconnect.fr

comme on a quasi fini le travail en cours sur Gecko , j’ai donné a lire tes 2 issues a @Claude
au passage j’ai eu un gros bug en reinstallant la derniere version pour tester, cesium+ etant en panne j’ai perdu sur mon telephone tous mes contacts et file de certification d’ou certaines reponses de Claude

Je suis d’accord pour conserver la priorité du nom d’identité on-chain et un contrôle centralisé par adresse. En revanche, la migration doit intégrer les protections supplémentaires de Dunipod : détection des noms ressemblants, classification des conflits, antériorité par ancrage et modération, y compris pour les profils importés de Cesium+.

Durt devrait donc transmettre la provenance et la classification à Gecko. La règle deviendrait : nom on-chain prioritaire ; sinon, nom de profil autorisé selon sa classification et sa modération. On conserve ainsi la règle stricte de Gecko tout en utilisant les protections de Dunipod pour les comptes sans nom on-chain. Un nom « légitime » reste un nom de profil et ne doit jamais être présenté comme une identité on-chain.

Je viens d’ajouter un commentaire à l’issue liée :

Dunipod #2 à déjà été implémenté et livré dans dunipod v0.12. Tout les pod sont déjà sur cette version ou supérieur.

Un truc qui était pratique dans Squid était la gestion des runtime upgrade. Comment est-ce géré par Dunipod ? Est-ce automatique ou faut-il implémenter “manuellement” des changements en prévision d’un runtime upgrade ?

on attaque #252 avec mon pote @Claude

il a ecrit le jalon 1 et va debloquer durt#1

@poka
@elois

C"'est corrigé tu es chargée de maintenance sur durt2.