Skip to content
Snippets Groups Projects
Commit 695bd5e8 authored by Matograine's avatar Matograine Committed by Hugo Trentesaux
Browse files

documenter l'installation d'un noeud forgeron

parent cbf860b2
No related branches found
No related tags found
1 merge request!26MR de relecture de documentation
+++
title="Introduction sur les nœuds forgerons"
# date = 2024-06-28
weight = 20
sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["JossRendall",]
+++
{% note(type="warning", markdown="true") %}
**Document de travail.** Ce document n'a pas été validé et ne doit pas être diffusé en dehors du groupe des forgerons et des développeurs
{% end %}
## Monter un Noeud Forgeron
Dans le [vocabulaire de Duniter](@/wiki/doc-v2/glossaire.md), le terme "smith" est attribué à une personne autorisée à ajouter des blocs dans la blockchain. Contrairement à Duniter v1, le rôle de forgeron est principalement technique, la gouvernance étant effectuée *sur la chaîne*. Les compétences nécessaires pour devenir forgeron sont moins techniques qu'humaines, c'est-à-dire que l'installation et le maintien d'un noeud sont relativement faciles à mettre en place pour qui est à l'aise en informatique, mais que l'appartenance aux forgerons implique de veiller aux évolutions des recommandations de sécurité et de répondre aux sollicitations d'apprentis forgerons.
Un forgeron doit :
- suivre de bonnes pratiques de sécurité pour ses clés et son nœud
- être capable de réagir rapidement en cas de défaillance (ou de mise hors ligne)
- contribuer au réseau de confiance des smiths en invitant d'autres smiths à se joindre à lui.
Voici les étapes à suivre pour devenir "smith":
1. [installer un nœud forgeron](@wiki/doc-v2/installer/miroir/installer.md)
4. Devenir un [membre de la Toile de Confiance Forgeron](@wiki/doc-v2/installer/forgeron/toile-de-confiance.md), ce qui implique de maintenir son noeud dans la durée.
5. [Configurer son noeud Forgeron](@wiki/doc-v2/installer/forgeron/configurer.md)
6. [Maintenir le statut forgeron de son noeud](@wiki/doc-v2/installer/forgeron/operations-forgeron.md)
<!--7. en option : [créer un Oracle de Distance](@/wiki/doc-v2/tmp.md) (qui calcul et vérifie les règles de distance de la toile de confiance) -->
+++
title="Temp"
# date = 2024-06-28
weight = 20
sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["Matograine",]
+++
{% note(type="warning", markdown="true") %}
**Document de travail.** Ce document n'a pas été validé et ne doit pas être diffusé en dehors du groupe des forgerons et des développeurs
{% end %}
# Installer et configurer un noeud miroir avec Docker
Docker est une plateforme permettant de lancer certaines applications dans des conteneurs, ce qui permet une exécution plus sécurisée. [pour en savoir plus](@/wiki/doc-v2/installer/0_docker-kesako.md)
Ce document vous indique les différentes étapes pour installer un noeud miroir avec Docker.
Certaines étapes sont documentées sur des pages annexes : les prérequis et la mise en place du reverse-proxy.
Nous vous conseillons de prendre votre temps et de bien faire chaque étape.
[TOC]
## Prérequis
Ce tutoriel suppose que :
- vous savez utiliser la [ligne de commande](@/wiki/doc-v2/installer/prerequis.md#utiliser-la-ligne-de-commande)
- vous avez [un serveur installé sous Debian](@/wiki/doc-v2/installer/prerequis.md#louer-un-serveur)
- vous pouvez vous y connecter en [ssh](@/wiki/doc-v2/installer/prerequis.md#se-connecter-en-SSH-a-son-serveur)
- vous avez fait une [sécurisation de base du serveur](@/wiki/doc-v2/installer/prerequis.md#la-securite-de-base-du-serveur)
Connectez-vous à votre serveur en SSH.
## Installation de Docker
Nous allons commencer par installer Docker. Cette partie est basée sur [la documentation Docker](https://docs.docker.com/engine/install/debian/).
Mettre à jour le système :
```bash
sudo apt-get update ; sudo aptèget upgrade
```
Supprimer les paquets Docker éventuellement déjà installés :
```bash
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
```
Configurer les dépôts Apt de docker :
```bash
# Ajouter la clef PGP officielle de Docker:
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Ajouter le dépôt Docker à notre liste de dépôts :
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
Installer les paquets :
```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
Vérifier l'installation en lançant l'image `hello-world` :
```bash
sudo docker run hello-world
```
## Création du dockerfile
Les images Docker utilisent une série de paramètres au lancement, qu'on configure dans un fichier *docker-compose*. Ce fichier doit se trouver dans un dossier spécifique.
Créer le dossier et le docker-compose :
```bash
cd ~
mkdir duniter
cd duniter
nano docker-compose.yml
```
La commande `nano` a ouvert un éditeur de texte. Copiez-y la configuration suivante :
```
version: "3.5"
# Duniter smith node
services:
duniter-smith:
image: duniter/duniter-v2s-gdev-800 # <--- image Docker
restart: unless-stopped
ports:
# prometheus endpoint for monitoring
- 127.0.0.1:9615:9615
# private rpc endpoint (do not expose publicly)
- 127.0.0.1:9944:9944
# public p2p endpoint
- 30333:30333 # <--- port p2p public
volumes:
- duniter-data:/var/lib/duniter/
environment:
- DUNITER_CHAIN_NAME=gdev # <--- réseau où se connecter
- DUNITER_NODE_NAME=YOUR_NAME-smith # <--- le nom de votre noeud
- DUNITER_VALIDATOR=true # <--- activer le noeud validateur
- DUNITER_PRUNING_PROFILE=light # <--- conserver 256 blocs d'historique
- DUNITER_PUBLIC_ADDR=/dns/gdev.example.org/tcp/30333 # <--- endpoint p2p public
- DUNITER_LISTEN_ADDR=/ip4/0.0.0.0/tcp/30333 # <--- adresse d'écoute p2p
volumes:
duniter-data:
```
Remplacez `<my-node-name>` par le nom que vous souhaitez donner au noeud, et `gdev` par le réseau qu vous voulez rejoindre.
Cette configuration est minimale. Elle implique que le 30333 du serveur soit ouvert. Si vous souhaitez l'adapter (par exemple en modifiant des ports), reportez-vous aux [variables d'environnement disponibles](https://git.duniter.org/nodes/rust/duniter-v2s/-/blob/master/docker/README.md)
## Lancement du service
Pour lancer le service, placez-vous dans le dossier qui contient le `docker-compose.yml` et lancez la commande suivante :
```bash
docker compose up -d
```
Pour voir les logs en temps réel :
```bash
docker compose logs -f
```
Pour avoir des informations sur le conteneur :
```bash
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86bf09f0bd24 duniter/duniter-v2s-gdev:latest "docker-entrypoint" 22 seconds ago Up 6 seconds 0.0.0.0:9615->9615/tcp, :::9616->9615/tcp, 0.0.0.0:9944->9944/tcp, :::9944->9944/tcp, 0.0.0.0:30333->30333/tcp, :::30333->30333/tcp node_duniter-smith_1
```
## Vérifier le bon fonctionnement du noeud
Si vous ne l'avez pas déjà fait, [installez Ğcli](@/wiki/doc-v2/installer/gcli) sur votre serveur.
Puis regardez si le noeud est accessible en local :
```bash
gcli -u ws://localhost:9944 blockchain current-block
```
on doit obtenir :
```
on ws://localhost:9944
finalized block 2208389
current block 2295714
```
+++
title="Forgeron Debian"
# date = 2024-06-28
weight = 20
sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["Matograine",]
+++
{% note(type="warning", markdown="true") %}
**Document de travail.** Ce document n'a pas été validé et ne doit pas être diffusé en dehors du groupe des forgerons et des développeurs
{% end %}
# Installer et configurer un noeud miroir sous Debian
<!-- source : https://git.duniter.org/nodes/rust/duniter-v2s/-/blob/master/docs/user/installation_debian.md?ref_type=heads -->
Ce tutoriel indique les étapes à suivre pour mettre en place un noeud forgeron Duniter2.
Un noeud forgeron va calculer des blocs. Il est lié en pair-à-pair avec tous les autres noeuds (forgerons et miroirs) mais, contrairement à un noeud miroir, il ne doit pas recevoir de requêtes utilisateurs. La raison est simple : l'API permettant d'exécuter des requêtes sur un noeud permet de modifier ses clefs de calcul. Il suffit de mettre en place de fausses clefs de calcul pour que le noeud cesse de produire des blocs.
Mettre en place un noeud forgeron implique de pouvoir intervenir rapidement si un problème est détecté (par exemple pour relancer son noeud). Cela implique également que le serveur en place soit continuellement connecté à Internet.
Ce document vous indique les différentes étapes pour installer un noeud forgeron sous Debian.
Certaines étapes sont documentées sur des pages annexes, en particulier les prérequis et l'installation du logiciel Duniter2.
Nous vous conseillons de prendre votre temps et de bien faire chaque étape.
[TOC]
## Prérequis
Ce tutoriel suppose que :
- vous savez utiliser la [ligne de commande](@/wiki/doc-v2/installer/prerequis.md#utiliser-la-ligne-de-commande)
- vous avez [un serveur installé sous Debian](@/wiki/doc-v2/installer/prerequis.md#louer-un-serveur)
- vous pouvez vous y connecter en [ssh](@/wiki/doc-v2/installer/prerequis.md#se-connecter-en-SSH-a-son-serveur)
- vous avez fait une [sécurisation de base du serveur](@/wiki/doc-v2/installer/prerequis.md#la-securite-de-base-du-serveur)
Les paquets que nous allons télécharger sont pour des serveurs ayant une architecture amd64. Ceci fonctionnera pour les serveurs loués, et pour un serveur à la maison s'il a une architecture amd64. Mais pour des serveurs ARM (typiquement un raspberry pi), ces fichiers ne fonctionneront pas, il vous faudra compiler Duniter.
## Installation et configuration
L'installation se déroule de la même façon que pour un noeud miroir, avec des changements lors de la configuration :
- la constante de configuration `DUNITER_RPC_CORS` doit être égale à 'http://localhost:*,http://127.0.0.1:*', car nous voulons que le noeud ne soit accessible qu'en local sur l'API RPC.
### Avec Debian
Sous **Debian**, Vous pouvez donc suivre le même mode opératoire que pour [installer et configurer un noeud miroir](@wiki/doc-v2/installer/miroir/debian.md), à cette unique différence près. Arrétez-vous à 'Lancer le service Duniter'.
#### Lancer le service Duniter
Duniter fournit une commande pour être lancé comme noeud miroir :
```bash
## démarrer le service
sudo systemctl start duniter-smith.service
## activer le service au démarrage
sudo systemctl enable duniter-smith.service
```
### Avec Docker
Avec **Docker**, vous devrez suivre [cette documentation](@wiki/doc-v2/installer/forgeron/docker.md) spécifique aux forgerons (même si le mode opératoire est très proche d'un noeud miroir).
## Configuration du parefeu
Suivez la documentation pour la [mise en place du parefeu]([documentation](@/wiki/doc-v2/installer/memo/configurer-parefeu.md)) en ouvrant les ports :
- SSH (22 par défaut, mais vous l'avez peut-être changé)
- 30333 (ou le port P2P que vous avez configuré)
Les autres ports doivent être fermés si vous n'avez que le noeud forgeron sur votre serveur.
## Génération des clefs de noeud
Il faut ensuite générer les clefs du noeud, la méthode change si vous êtes sous Docker ou Debian :
```bash
# <BASE_PATH> doit être remplacé par la valeur de BASE_PATH dans /etc/duniter/env_file
# <DUNITER_CHAIN_NAME> doit être remplacé par la valeur de DUNITER_CHAIN_NAME dans /etc/duniter/env_file
duniter2 key generate-node-key --base-path <BASE_PATH> --chain <DUNITER_CHAIN_NAME>
# ou avec Docker
# ici node_duniter-smith_1 est le NAME du conteneur, que vous pouvez obtenir avec `docker container ls`
docker exec -it node_duniter-smith_1 duniter2 key generate-node-key --base-path <BASE_PATH> --chain <DUNITER_CHAIN_NAME>
```
Si vous rencontrez l'erreur `Skip generation, a key already exists` c'est que tout va bien, une clef existe déjà.
## Activer le calcul de blocs sur son noeud
### Génération des clefs du noeud (bis)
On suppose que vous avez [installé Ğcli](@/wiki/doc-v2/installer/gcli) sur votre serveur.
vérifions d'abord que vous pouvez utiliser gcli sur votre serveur :
```bash
## On passe le paramètre -u ws://localhost:9944 pour accéder au noeud local. Modifiez le port si besoin.
$ gcli -u ws://localhost:9944 blockchain current-block
> on ws://localhost:9944
> finalized block 3477672
> current block 3477674
```
On va configurer gcli pour un usage sur le noeud forgeron.
On va créer un fichier de configuration local :
```bash
## où se trouve le fichier de config ?
$ gcli config where
> /home/toto/.config/gcli/default-config.toml
## Copier le fichier de config
$ cp /home/toto/.config/gcli/default-config.toml /home/toto/.config/gcli/default-config.toml.OLD
## sauvegarder la nouvelle configuration
## il est essentiel d'avoir son paramètre -u en localhost, sauf configurations très exotiques. Vous pouvez modifier le port vers le port RPC de votre noeud si ce n'est pas 9944.
## l'indexeur peu être choisi à votre convenance. Mettes bien le chemin d'API /v1/graphql
## l'adresse est votre adresse membre
$ gcli -u ws://localhost:9944 -i https://squid.gdev.coinduf.eu/v1/graphql -a <VOTRE_ADRESSE_G1> config save
```
Puis on modifie les clefs du noeud :
```bash
$ gcli smith update-keys
> Mnemonic:
> transaction submitted to the network, waiting 6 seconds...
```
### Passer en ligne
Il faut déclarer que votre noeud est prêt à calculer avec la commande `go-online` :
```bash
$ gcli smith go-online
> Mnemonic:
> transaction submitted to the network, waiting 6 seconds...
> smith went online MemberGoOnline { member: 1047 }
```
Ceci sera pris en compte au début de la session suivante (les sessions durent une heure), donc votre noeud ne va pas calculer tout de suite.
Si vous devez déconnecter votre noeud, anticipez la chose et faites `gcli smith go-offline`. Votre noeud sera considéré offline à partir de la fin de la session courante.
+++
title="Toile de confiance Forgeron"
# date = 2024-06-28
weight = 20
sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["Matograine",]
+++
{% note(type="warning", markdown="true") %}
**Document de travail.** Ce document n'a pas été validé et ne doit pas être diffusé en dehors du groupe des forgerons et des développeurs
{% end %}
# Entrer dans la toile de confiance forgerons
La toile de confiance forgerons est un groupe de membres de Ğ1 qui ont les compétences informatiques suffisantes pour faire tourner un noeud calculant de façon sécurisée. Contrairement à la toile de confiance membre, la certification forgeron n'implique pas que la personne qui vous certifie vous connaît bien. La personne qui vous certifie doit évaluer que vous avez mis des mesures de sécurité en place et être en mesure de vous joindre rapidement. Il est donc tout à fait légitime de demander par internet à d'autres forgerons s'ils peuvent vous y faire entrer.
En tant que membre forgeron, vous pourrez faire entrer d'autres personnes dans la toile de confiance forgeron. Mais ceci n'implique pas que vous devez répondre aux demandes si vous ne vous sentez pas les capacités à évaluer ce qu'ont fait les candidates.
## Licence forgerons
La charte de la toile de confiance forgeron peut être trouvée [ici](https://git.duniter.org/1000i100/g1_charter/-/blob/master/smith_charter/g1_smith_charter_fr.adoc). Voici les points que vos certifiants devront valider, en résumé :
- [ ] Vous joindre rapidement et pas plusieurs moyens
- [ ] Vérifier avec votre configuration (ceci implique que vous lui envoyiez le fichiers de configuration de votre noeud)
- [ ] Vérifier que vous avez un noeud à jour et synchronisé (votre noeud doit apparaître dans l'écran de [télémétrie](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fgdev.coinduf.eu%2Fws#/explorer) Si vous n'avez pas activé la télémétrie, une autre option doit être trouvée.)
{% note(type="warning", markdown="true") %}
Trouver une option alternative à la télémétrie
{% end %}
- [ ] Evaluer que vos pratiques de sécurité sont suffisantes. Ceci peut couvrir la configuration du serveur sur lequel se trouve le noeud s'il héberge d'autres services, ou les modalités de sauvegarde et de stockage de vos clefs privées.
Lorsque vous certifiez, reportez-vous à la charte et non au présent document.
## Demander à entrer dans la toile forgeron
Pour entrer dans la toile forgerons, il vous faut donc :
1. faire la demande auprès d'au moins 5 forgerons
1. répondre à leurs questions
1. recevoir et confirmer votre invitation
2. recevoir les certifications
Les points 1 et 2 se font hors blockchain. Contactez des forgerons que vous connaissez, demandez sur les forums, etc. Votre premier certifiant va vous envoyer une invitation.
## Recevoir et confirmer votre invitation
Nous allons faire ceci avec `gcli`. Si vous ne l'avez pas installé, [faites-le maintenant](@/wiki/doc-v2/installer/gcli).
On va accepter l'invitation :
```bash
## <NETWORK> : gtest, gdev ou g1
## <MEMBER_ADDRESS> : votre adresse de compte membre
gcli -n <NETWORK> -a <MEMBER_ADDRESS> smith accept
> Enter password to unlock account XXX...
> Password:
> transaction submitted to the network, waiting 6 seconds...
```
NB: comme vous vous authentifiez pour votre compte membre, vous devez utiliser votre mnémonique **suivi du [chemin de dérivation](@/wiki/doc-v2/comprendre/compte.md#derivation)** `//2`
Ensuite, prévenez les certifiants qui doivent *tous* vous certifier (y compris celui qui vous a invité). Une fois vos <span class="blockchain-param">5</span> certifications reçues, vous êtes membre de la toile forgeron : votre noeud a le droit de forger des blocs.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment