Ğchange

Installer un nœud

Du conteneur clé en main au service NixOS.

Contenu généré par IA. Cette page a été rédigée avec l’aide d’une IA et n’a pas encore été entièrement relue — elle peut comporter des imprécisions.

Un nœud indexe la donnée Ğchange, la stocke et la sert en pair-à-pair aux autres nœuds et aux apps qui le suivent. Trois façons de l’installer :

🐳 Docker / Podman L’image conteneur clé en main, une seule commande. ❄️ Nix Build reproductible : binaire, image OCI, ou lancement direct. Debian / Yunohost Pour ceux qui préfèrent ces paquets. à venir

Prérequis

Le code est public : https://git.duniter.org/HugoTrentesaux/datapod.

Méthode 1 — Podman (clé en main)

La plus simple : récupérer le dépôt, fournir la clé admin, lancer.

git clone https://git.duniter.org/HugoTrentesaux/datapod
cd datapod

export TRAME_ADMIN=<clé-publique-hex>
podman compose -f compose.turnkey.yaml up --build

Le nœud démarre, imprime son peerId, son root (l’état de l’index) et « prêt ». Il écrit aussi son ticket (sa fiche de pair, à partager pour s’y connecter) dans ./shared/node.ticket.

Données héritées

Pour démarrer avec les données Cesium+/Ğchange déjà reprises, deux voies (cf. --state vs --import-car) :

  1. Adopter un CAR de données publié en release de la forge. On le récupère par hash, puis on l’adopte tel quel :

    trame-noded --state geopod-data.car --admin <clé-publique> --network g1

    La release joint un manifeste précisant la taille de la sélection (root, nombre d’entrées, lignes par table). Ce CAR est data-only : il ne grave ni clé admin ni charte — la gouvernance est injectée par le nœud au démarrage (--admin).

  2. Fusionner des archives *.car de données en les déposant dans ./import/ (chargées au boot, --car-dir).

Sans rien, le nœud démarre vide et se remplit par synchronisation avec ses pairs.

Le CAR de données est produit à partir des dumps v1 par un outil interne au dépôt de travail (non inclus dans cette distribution) ; pour un déploiement, la release ci-dessus est la source à utiliser.

Clé admin modifiable. Changer TRAME_ADMIN et relancer suffit : la gouvernance fine (modérateurs, règles d’admission) se fait ensuite par messages signés de cette clé.

Méthode 2 — Nix

Le flake.nix du dépôt est le point de build unique. Trois usages :

Lancer le binaire directement :

nix run "git+https://git.duniter.org/HugoTrentesaux/datapod#trame-noded" -- \
  --data ./data --wan --network g1 --admin <clé-publique-hex>

Construire l’image OCI (dérivée du même binaire, non-root, certificats embarqués) et la charger dans Podman :

podman load < $(nix build "git+https://git.duniter.org/HugoTrentesaux/datapod#oci-image" --print-out-paths)
# → localhost/trame-noded:latest

Une fois l’image chargée, les fichiers compose.*.yaml peuvent l’utiliser sans recompiler (retirer le bloc build:).

Construire juste le binaire :

nix build "git+https://git.duniter.org/HugoTrentesaux/datapod#trame-noded"
./result/bin/trame-noded --data ./data --wan

Méthode 3 — NixOS (service systemd)

Le flake expose un module : un service systemd durci, en utilisateur dynamique non privilégié, données dans /var/lib/trame-noded.

{
  inputs.trame.url = "git+https://git.duniter.org/HugoTrentesaux/datapod";

  # … dans la configuration de la machine :
  imports = [ inputs.trame.nixosModules.trame-noded ];

  services.trame-noded = {
    enable = true;
    network = "g1";
    admin = "<clé-publique-hex>";
    listenPort = 47811;     # port UDP fixe (optionnel)
    openFirewall = true;    # ouvre ce port
    # stateCar = "/srv/geopod/geopod-base.car";  # données héritées (optionnel)
  };
}

nixos-rebuild switch, et le nœud tourne et redémarre tout seul.

Réglages essentiels

Réglage Drapeau / option À quoi ça sert
Clé admin --admin / TRAME_ADMIN Amorce la gouvernance du nœud (publique).
Données --data DIR Blocs, index et clé du nœud (à conserver : c’est son identité de pair).
Réseau --network g1 Étiquette du réseau (le canal d’annonces partagé).
Port UDP --listen-port PORT / TRAME_LISTEN_PORT Fixe le port d’écoute (sinon aléatoire). À ouvrir si fixé.
Connectivité --wan Passe par les relais iroh (aucun port à ouvrir).
Ticket --ticket-file PATH Écrit la fiche de pair du nœud dans un fichier.

Port fixe vs relais. En --wan, le nœud reste joignable via les relais iroh sans ouvrir de port. Pour de la connectivité directe (meilleures performances, ou plusieurs nœuds sur une même machine), fixer --listen-port et ouvrir ce port UDP (-p 47811:47811/udp en conteneur, openFirewall dans le module NixOS).

Vérifier que ça tourne

Au démarrage, le nœud écrit sur sa sortie d’erreur :

[noded] peerId  : 3afbbba3…
[noded] root    : ad4b108b… (107 entrées)
[noded] filtre  : aucun (admission par défaut — tout kind connu)
[noded] prêt. Ctrl-C / SIGTERM pour arrêter.

peerId est son identité de pair, root l’état courant de l’index (il évolue à mesure qu’il indexe et se synchronise). Le ticket se partage pour qu’un client ou un autre nœud s’y connecte.