Skip to content
Snippets Groups Projects
Commit 6f97c254 authored by matograine's avatar matograine Committed by Hugo Trentesaux
Browse files

wiki : prerequis à l'installation - quasi fini

parent 8926d8af
No related branches found
No related tags found
1 merge request!26MR de relecture de documentation
+++
title="Configurer un nom de domaine pour son serveur"
# 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 %}
\ No newline at end of file
+++
title="Vérifier l'accessibilité du noeud"
# 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 %}
# Vérifier l'accessibilité du noeud depuis l'extérieur
Il y a trois façons complémentaires de vérifier l'accessibilité du noeud.
Utilisez au moins l'une des trois, et si possible les trois.
[TOC]
## La télémétrie Polkadot
Rendez vous sur la page de [télémétrie Polkadot](https://telemetry.polkadot.io/#list/0xc184c4ccde8e771483bba7a01533d007a3e19a66d3537c7fd59c5d9e3550b6c3).
Le nom de votre noeud doit apparaître dans la liste.
Vous pouvez taper `Ctrl + F` pour ouvrir la recherche, et chercher le nom du noeud.
## Avec Gcli
Sur votre poste, installez [gcli](https://git.duniter.org/clients/rust/gcli-v2s/-/releases).
Il n'y a pas à ma connaissance de paquet Windows, donc si votre poste est sous Windows, vous pouvez passer cette partie.
Puis contactez votre noeud.
Par exemple, si votre noeud est sur `g1.mondomaine.net` :
```bash
gcli -u wss://g1.mondomaine.fr/
```
ou s'il n'a pas de nom de domaine et pas de certificat TLS (il est par exemple sur l'IP 42.42.42.42) :
```bash
gcli -u ws://42.42.42.42:9944
```
On doit obtenir quelque chose comme ça :
```
on wss://g1.mondomaine.fr/
finalized block 2208389
current block 2295714
```
## Avec Polkadot.js
Vous pouvez [inspecter votre noeud avec Polkadot.js](@/wiki/doc-v2/installer/inspecter-polkadotjs.md), la connexion doit se faire.
......@@ -17,12 +17,275 @@ insert_anchor_links = "right"
# Document en cours de rédaction
[TOC]
## Pourquoi NginX
NginX (prononcer N-jean-X) et Apache sont deux logiciels qui font serveur web + reverse proxy qui dominent le marché.
Les deux sont très utilisés, avec des fonctionnalités similaires.
Nginx est plus récent et est moins consommateur en ressources sur l'ordinateur.
Je le recommande si vous débutez dans ce domaine.
Si vous avez vos habitudes avec Apache, ou si vous installez votre noeud où Apache est déjà utilisé, utilisez la documentation concernant Apache. Apache et NginX ne peuvent pas être utilisés en même temps.
## Ouvrir les ports
## Installer Nginx
Les "ports" sont des interfaces numérotées qui permettent de communiquer avec l'ordinateur.
Par analogie, c'est comme si votre ordinateur avait des milliers de portes pour y entrer.
Il peut aller contacter d'autres ordinateurs en ouvrant des portes (*ports sortants*) pour envoyer des messagers.
Mais on ne veut pas que des messagers extérieurs entrent dans l'ordinateur sans contrôle.
Donc toutes les portes doivent être fermées par défaut, sauf celles derrière lesquelles il y a un gardien (*ports entrants*) (les "gardiens" étant des logiciels qui utilisent les demandes qui entrent par un certain port).
Fin de l'analogie.
Les ports sont ouverts ou fermés grâce à un logiciel qu'on appelle un *pare-feu* (ou *firewall*). Nous allons utiliser `ufw`, qui est un des plus faciles d'utilisation.
Nous allons configurer votre ordinateur pour :
- Fermer tous les ports par défaut
- ouvrir le port SSH (22 par défaut, mais vous l'avez peut-être changé)
- ouvrir les ports 80 et 443, qui correspondent aux communications http et https, et qui sont gérés par NginX
- ouvrir le port 30333, qui est le port nécessaire à la communiation peer-to-peer de votre noeud (vous avez peut-être modifié cette valeur)
Cette partie trouve sa source dans [cet article](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04-fr) plus complet, mais avec beaucoup d'informations inutiles pour nous.
Commençons par installer ufw :
```bash
sudo apt-get update ; sudo apt-get install ufw
```
Puis bloquons tous les ports entrants, et autorisons les ports sortants :
```bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
```
Puis ouvrons le port SSH:
```bash
## port par défaut
sudo ufw allow 22
## ou port personnalisé (ici 49999 en exemple)
sudo ufw allow 49999
```
Maintenant que le port SSH est ouvert, on peut activer ufw.
**Ne faites pas ceci avant d'avoir ouvert votre port SSH, sinon vous perdrez tout accès à votre serveur et vous devrez demander une réinstallation à votre fournisseur, puis recommencer depuis le début.**
```bash
sudo ufw enable
```
Enfin, ouvrons les autres ports :
```bash
## Les ports web
sudo ufw allow 80
sudo ufw allow 443
## La communication entre noeuds (vous avez peut-être une valeur personnalisée)
sudo ufw allow 30333
```
Pour vérifier les règles, utilisez `ufw status` :
```bash
sudo ufw status
```
On doit obtenir :
```bash
Status: active
To Action From
-- ------ ----
49999 ALLOW Anywhere
30333 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
49999 (v6) ALLOW Anywhere (v6)
30333 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
```
Si vous souhaitez supprimer une règle, par exemple pour fermer le port 80, vous allez dire à ufw de supprimer la règle 'allow 80'. Ceci se fait ainsi :
```bash
sudo ufw delete allow 80
```
## Installer et démarrer Nginx
[source](https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-fr)
L'installation est très facile. On va d'abord s'asurer que Apache est désinstallé.
```bash
sudo apt update
sudo apt remove apache2
sudo apt install nginx
```
NginX devrait démarrer tout seul.
Pour le vérifier, si vous connaissez l'adresse IP de votre serveur (votre hébergeur devrait vous l'avoir fournie), rendez-vous via un navigateur sur `http://<adresse-ip>`. Vous devriez tomber sur une page qui vous dit "Welcome to Nginx".
On peut manipuler le service NginX de la façon suivante :
```bash
## Arréter le service
sudo systemctl stop nginx
## démarrer le service
sudo systemctl start nginx
## redémarrer le service
sudo systemctl restart nginx
## recharger la configuration
sudo systemctl reload nginx
## Connaître l'état du service
sudo systemctl status nginx
```
Par sécurité, on fait une sauvegarde de la configuration par défaut :
```bash
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.BACKUP
```
## Vérifier que le nom de domaine pointe bien vers votre IP
Maintenant que votre serveur web est installé et fonctionne, vérifions que votre nom de domaine pointe bien sur votre serveur.
Si vous avez par exemple le nom de domaine g1.mondomaine.net, rendez-vous sur la page `http://g1.mondomaine.net`.
Vous devez voir apparaître la même page qui vous dit "Welcome to Nginx".
Si ce n'est pas le cas, il vous faut modifier la zone DNS de votre nom de domaine pour la faire pointer vers votre IP.
Utilisez ce [tutoriel pour cela](@/wiki/doc-v2/installer/memo/configurer-nom-de-domaine.md).
{% note(type="warning", markdown="true") %}
**TODO** documenter comment modifier la zone DNS. Indiquer quel est le principe, quels sont les éléments à chercher dans l'interface web du fournisseur, et donner un exemple. Ceci devrait être mis dans un fichier à part, car c'est transversal à tous les tutos.
{% end %}
## Mettre en place un certificat TLS Let's Encrypt
Le certificat TLS est ce qui permet de chiffrer la communication de votre serveur avec l'extérieur.
Il se voit quand vous naviguez sur le web, certaines adresses sont en `http` (non chiffré) et d'autres en `https` (chiffré).
Ce certificat vient d'une 'autorité', et la plupart des autorités vendent les certificats.
Fort heureusement pour nous, la fondation Mozilla a mis en place le programme *Let's Encrypt*, qui fournit des certificats gratuitement. Ce certificat a une durée de vie limitée et doit être renouvelé à intervalles réguliers, nous allons donc utiliser `certbot`, un outil pour le renouveler automatiquement.
Tout d'abord installer certbot :
```bash
sudo apt update
sudo apt install certbot
```
Puis, on va demander à certbot de générer un certificat (ici pour le domaine `g1.mondomaine.net`) :
```bash
certbot --nginx --cert-only g1.mondomaine.net
```
Si c'est la première fois que vous utilisez certbot, il va vous demander d'entrer votre adresse email et d'accepter les conditions d'utilisation.
certbot va vous indiquer quel est le chemin des fichiers `fullchain.pem` et `privkey.pem`, qui vont ressembler à ca. Notez-les bien.
```
/etc/letsencrypt/live/g1.mondomaine.net/fullchain.pem
/etc/letsencrypt/live/g1.mondomaine.net/privkey.pem
```
## Configurer le https pour WebSocket (wss)
## Vérifier que le noeud est accessible
\ No newline at end of file
Pour faire ceci, on va se placer en administrateur :
```bash
sudo -i
```
### Créer le fichier de configuration
Pour configurer le https pouv l'accès WebSocket à votre noeud, il faut nous placer dans `/etc/nginx/sites-available` :
```bash
cd /etc/nginx/sites-available
```
Ce répertoire contient toutes les configurations que vous *pourriez activer*.
Les conditions réellement actives sont dans `/etc/nginx/sites-enabled`.
Nous allons d'abord créer le fichier de configuration, puis créer un *lien* pour le faire apparaître dans `sites-enabled`.
Créons donc le fichier de configuration :
```bash
nano g1.mondomaine.net
```
l'éditeur de texte `nano` va s'ouvrir, vous pouvez y coller cette configuration :
```
# see http://nginx.org/en/docs/http/websocket.html
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name VOTRE_DOMAINE;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate CHEMIN/VERS/fullchain.pem;
ssl_certificate_key CHEMIN/VERS/privkey.pem;
root /nowhere;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_read_timeout 90;
location / {
proxy_pass http://localhost:9944;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
proxy_read_timeout 1200s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
```
Plusieurs valeurs sont à modifier :
- `VOTRE_DOMAINE` est à remplacer par votre nom de domaine (dans cet exemple `g1.mondomaine.net`)
- `CHEMIN/VERS/fullchain.pem` est à remplacer par le chemin vers fullchain.pem, que vous a donne certbot (dans cet exemple `/etc/letsencrypt/live/g1.mondomaine.net/fullchain.pem`)
- `CHEMIN/VERS/privkey.pem` est à remplacer par le chemin vers privkey.pem, que vous a donne certbot (dans cet exemple `/etc/letsencrypt/live/g1.mondomaine.net/privkey.pem`)
- `http://localhost:9944` est à laisser tel quel dans la plupart des cas. Si vous avez installé le noeud par Docker et que vous avez mappé le port 9944 de Docker avec un port spécifique sur le système, il faut remplacer `9944` par votre port spécifique.
Ensuite vous sauvegardez le fichier avec `Ctrl + O`, et vous quittez avec `Ctrl + X`.
### Activer la configuration
Nous allons maintenant créer un lien pour faitre apparaître notre fichier de configuration dans `/etc/nginx/sites-enabled`, grâce à la commande `ln` :
```bash
ln /etc/nginx/sites-available/g1.mondomaine.net /etc/nginx/sites-enabled/g1.mondomaine.net
```
On vérifie ensuite que le lien est bien créé :
```bash
ls /etc/nginx/sites-enabled/
```
On peut maintenant demander à NginX de vérifier que la configuration est bonne :
```bash
nginx -t
```
on doit obtenir :
```bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```
Puis on active réellement la configuration :
```bash
systemctl reload nginx.service
```
## Vérifier que le noeud est accessible
Normalement, votre noeud est accessible depuis l'extérieur, avec l'utilisation du chiffrement TLS.
Nous vous invitons à utiliser [cette page](@/wiki/doc-v2/installer/memo/verifier-noeud-accessible.md) pour vérifier ceci.
\ No newline at end of file
......@@ -6,7 +6,7 @@ sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["JossRendall",]
# authors = ["matograine",]
+++
{% note(type="warning", markdown="true") %}
......@@ -21,22 +21,24 @@ Ce document vous indique les différentes étapes pour installer un noeud miroir
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#mettre-en-place-un-serveur)
- 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.
Vous êtes connecté à votre serveur en SSH.
Connectez-vous à votre serveur en SSH.
## Mise en place
On va créer un utilisateur pour Duniter, puis se placer dans son home
On va créer un utilisateur pour Duniter, puis se placer dans son dossier home
```bash
sudo adduser duniter
cd /home/duniter
......@@ -54,25 +56,25 @@ cd duniter
Vous allez télécharger la dernière version du paquet Debian pour Duniter :
> NB - ce lien de téléchargement est le seul que j'ai trouvé pour le moment.
> Un lien de téléchargement correspondant à la dernière release devrait être mis en place plus tard.
> **TODO** Un lien de téléchargement correspondant à la dernière publication devrait être mis en place plus tard.
```bash
# télécharger avec Curl
## télécharger avec Curl
curl https://git.duniter.org/nodes/rust/duniter-v2s/-/jobs/134331/artifacts/download?file_type=archive -o artifacts.zip
# télécharger avec wget
## OU télécharger avec wget
wget https://git.duniter.org/nodes/rust/duniter-v2s/-/jobs/134331/artifacts/download?file_type=archive
```
ensuite on ouvre ce qu'on a téléchargé :
```bash
# dézipper
## dézipper
unzip artifacts.zip
# se placer dans le bon dossier
## se placer dans le bon dossier
cd target/debian
ls
# La commande ls doit nous donner le nom du paquet Debian, par exemple : `duniter_0.8.0-1_amd64.deb`
## La commande ls doit nous donner le nom du paquet Debian, par exemple : `duniter_0.8.0-1_amd64.deb`
```
enfin on installe le paquet.
......@@ -81,6 +83,8 @@ La commande est précédée de *sudo* car elle nécessite les droits administrat
Votre mot de passe devrait vous être demandé (si ça n'est pas le cas, c'est que vous êtes déjà administrateur, c'est normal)
```bash
## ici on utilise le caractère * qui veut dire 'joker'.
## Si vous avez plusieurs fichiers d'installation Duniter .deb, précisez lequel vous voulez installer.
sudo dpkg -i duniter_*_amd64.deb
```
......@@ -98,7 +102,7 @@ On y trouve plusieurs paramètres :
- `DUNITER_NODE_NAME` : Le nom de votre noeud.
Nommez-le comme vous voulez, mais sans caractères spéciaux ou accents, et sans espace.
Il doit être unique sur le réseau, donc si vous avez plusieurs noeuds, nommez les par exemple martin-1, martin-2, etc
- `DUNITER_NODE_NAME` : Le nom du réseau que vous rejoignez. Utilisez `gdev` ou `gtest` pour un des réseaux de test, ou `g1` pour le réseau de production.
- `DUNITER_CHAIN_NAME` : Le nom du réseau que vous rejoignez. Utilisez `gdev` ou `gtest` pour un des réseaux de test, ou `g1` pour le réseau de production.
- `DUNITER_LISTEN_ADDR` : L'adresse à laquelle les autres noeuds vont communiquer avec le vôtre. Vous pouvez la laisser à `/ip4/0.0.0.0/tcp/30333`.
- NB : si vous modifiez le port (la valeur 30333), notez bien la valeur que vous utilisez car il faudra ouvrir ce port sur le parefeu
- NB : ne modifiez pas l'adresse IP (la valeur 0.0.0.0)
......@@ -106,7 +110,6 @@ On y trouve plusieurs paramètres :
- `DUNITER_RPC_CORS` : Ce paramètre définit quelle page web peut faire des requêtes vers votre noeud. Pour créer un noeud miroir public, sa valeur doit être `all`. Si vous hébergez un service sur le site https://monservice.net et que vous voulez avoir un noeud réservé à ce service, la valeur doit être `https://monservice.net*`. Plusieurs valeurs peuvent être associées, séparées par des virgules (voir l'exemple donné dans le document)
- `DUNITER_PRUNING_PROFILE` : Ce paramètre indique après combien de blocs finalisés votre noeud 'oublie' les blocs précédents. Pour un noeud mirois normal, la valeur par défaut `256` est suffisante. Pour un noeud d'archive (nécessaire pour un datapod), il faut mettre la valeur `archive`. Ceci consommera beaucoup d'espace disque, car il stockera tout l'historique de la blockchain.
- `BASE_PATH`: L'emplacement où Duniter stockera ses données. La valeur par défaut convient. Si vous mettez en place un noeud archive, il faudrait que cet emplacement soit sur une partition large et séparée du système, pour éviter que Duniter prenne toute la place et ne vous crée des problèmes.
- `BASE_PATH`
- `ORACLE_RPC_URL` : ce paramètre ne sert pas pour un noeud miroir.
- `ORACLE_LOG_LEVEL` : ce paramètre ne sert pas pour un noeud miroir.
......@@ -119,20 +122,20 @@ A la fin, sortez de nano avec `Ctrl + X`.
Votre noeud est prêt à être lancé !
Pour cela, on va indiquer à Debian de le lancer en tant que service, pour qu'il le redémarre automatiquement :
```bash
# démarrer le service
## démarrer le service
sudo systemctl start duniter-mirror.service
# activer le service au démarrage
## activer le service au démarrage
sudo systemctl enable duniter-mirror.service
```
vous pouvez voir les logs de votre noeud avec journalctl :
```bash
# en différé
# Par exemple pour les envoyer à quelqu'un qui vous les demande, pour diagnostiquer un problème
## en différé
## Par exemple pour les envoyer à quelqu'un qui vous les demande, pour diagnostiquer un problème
journalctl -u duniter-mirror
# en direct
# Faites Ctrl + X pour sortir
## en direct
## Faites Ctrl + X pour sortir
journalctl -ef -u duniter-mirror
```
......@@ -161,7 +164,7 @@ duniter-mirror_1 | 2024-06-30 09:29:44 📦 Highest known block at #0
duniter-mirror_1 | 2024-06-30 09:29:44 〽️ Prometheus exporter started at 127.0.0.1:9615
duniter-mirror_1 | 2024-06-30 09:29:44 Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]
duniter-mirror_1 | 2024-06-30 09:29:44 ***** Duniter has fully started *****
# ... Puis les lignes indiquant que le noeud sync
## ... Puis les lignes indiquant que le noeud sync
duniter-mirror_1 | 2024-07-14 07:59:36 ⚙️ Syncing, target=#2227610 (1 peers), best: #1002 (0xfc43…7938), finalized #512 (0x64a6…1fbb), ⬇ 204.1kiB/s ⬆ 0.4kiB/s
duniter-mirror_1 | 2024-07-14 07:59:41 ⚙️ Syncing 323.8 bps, target=#2227610 (7 peers), best: #2621 (0x186b…95a2), finalized #2560 (0x927d…63ed), ⬇ 110.8kiB/s ⬆ 1.9kiB/s
duniter-mirror_1 | 2024-07-14 07:59:46 ⚙️ Syncing 397.4 bps, target=#2227611 (7 peers), best: #4608 (0x081a…e9cc), finalized #4096 (0x6f24…586b), ⬇ 132.0kiB/s ⬆ 0.1kiB/s
......@@ -185,19 +188,19 @@ On va installer gcli, dans sa dernière version. Pour cela :
Ensuite, on le télécharge et on l'installe :
```bash
# télécharger
## télécharger
wget <votre lien>
# vérifier qu'il n'y a qu'un fichier
## vérifier qu'il n'y a qu'un fichier
ls gcli_*_amd64.deb
# installer
# s'il y a plusieurs fichiers, indiquez à dpkg le nom exact du fichier à installer (la dernière version)
## installer
## s'il y a plusieurs fichiers, indiquez à dpkg le nom exact du fichier à installer (la dernière version)
sudo dpkg -i gcli_*_amd64.deb
```
Et on regarde si le noeud est accessible en local :
```bash
gcli -u ws://localhost:9944 blockchain
gcli -u wss://g1.mondomaine.net blockchain current-block
```
on doit obtenir :
```
......@@ -210,47 +213,14 @@ current block 2295714
## Configurer le reverse-proxy
Maintenant que le noeud est fonctionel, il faut le rendre accessible depuis l'extérieur.
Pour cela, on met en place un *reverse proxy*, c'est-à-dire un logiciel qui va
Pour cela, on met en place un *reverse proxy*, c'est-à-dire un logiciel qui va filtrer les requêtes transmises au noeud Duniter, mais qui va surtout chiffrer la communication du noeud avec les applications.
- [avec Nginx](@/wiki/doc-v2/installer/miroir/configurer-nginx.md)
- [avec Apache](@/wiki/doc-v2/installer/miroir/configurer-apache.md)
## Vérifier l'accessibilité du noeud depuis l'extérieur
trois façons complémentaires de vérifier l'accessibilité du noeud.
Utilisez au moins l'une des trois, et si possible les trois.
### La télémétrie Polkadot
Rendez vous sur la page de [télémétrie Polkadot](https://telemetry.polkadot.io/#list/0xc184c4ccde8e771483bba7a01533d007a3e19a66d3537c7fd59c5d9e3550b6c3).
Le nom de votre noeud doit apparaître dans la liste.
Vous pouvez taper `Ctrl + F` pour ouvrir la recherche, et chercher le nom du noeud.
### Avec Gcli
Sur votre poste, installez [gcli](https://git.duniter.org/clients/rust/gcli-v2s/-/releases).
Il n'y a pas à ma connaissance de paquet Windows, donc si votre poste est sous Windows, vous pouvez passer cette partie.
Puis contactez votre noeud.
Par exemple, si votre noeud est sur `g1.mondomaine.net` :
```bash
gcli -u wss://g1.mondomaine.fr/
```
ou s'il n'a pas de nom de domaine et pas de certificat TLS (il est par exemple sur l'IP 42.42.42.42) :
```bash
gcli -u ws://42.42.42.42:9944
```
On doit obtenir quelque chose comme ça :
```
on wss://g1.mondomaine.fr/
finalized block 2208389
current block 2295714
```
### Avec Polkadot.js
Vous pouvez [inspecter votre noeud avec Polkadot.js](@/wiki/doc-v2/installer/inspecter-polkadotjs.md), la connexion doit se faire.
Votre noeud est désormais installé et accessible de l'extérieur.
Si vous ne l'avez pas déjà fait, il faut [vérifier ce dernier point](@/wiki/doc-v2/installer/memo/verifier-noeud-accessible.md).
......@@ -6,7 +6,7 @@ sort_by = "weight"
insert_anchor_links = "right"
# [taxonomies]
# authors = ["JossRendall",]
# authors = ["JossRendall","matograine"]
+++
{% note(type="warning", markdown="true") %}
......@@ -22,13 +22,137 @@ Il pointe vers des ressources, parfois externes, qui pourront vous guider.
Si vous débutez, vous devrez faire toutes ces étapes avant d'iinstaller un noeud à proprement parler.
Vous apprendrez beaucoup au passage !
[TOC]
## Utiliser la ligne de commande
La ligne de commande est le moyen privilégié pour administrer un serveur.
Au lieu d'avoir une interface graphique où on peut cliquer, on a une interface où il faut entrer du texte pour dire à l'ordinateur de faire une chose (lancer un logiciel, faire un calcul, afficher une information, etc.).
C'est une façon d'interagir avec un ordinateur qui est plus polyvalente qu'une interface graphique, plus puissante (on peut effacer tout son système si on ne fait pas attention), et plus standard. C'est parce qu'elle est plus standard que la plupart des tutoriels que vous trouverez concernant l'administration d'un serveur GNU/Linux donnent des instructions pour la ligne de commande.
Les postes sous GNU/Linux ou MacOS ont un terminal intégré, sur lequel vous pouvez faire des essais sans accéder à votre serveur.
Sous Windows, il y a également un terminal, mais sa syntaxe est totalement différente, donc c'est mieux pour vous de travailler directement sur le serveur. Il est possible d'[activer la même ligne de commande](https://www.eugenetoons.fr/utiliser-le-shell-bash-de-linux-sous-windows-10/) que sous GNU/Linux, mais cela nous éloigne du sujet et rajoute des étapes inutiles.
Si vous débutez, la ligne de commande fait peur, car elle fait l'effet d'une page blanche.
Mais en étant bien guidé, on apprend vite à utiliser cet outil.
Plutôt que de réinventer la roue, nous avons choisi deux introductions à la ligne de commande. Vous pouvez choisir celle qui vous convient le mieux ou lire les deux, comme vous voulez. Vous pouvez faire des essais sur [cette page web](https://webvm.io/) (il faut laisser passer quelques secondes avant de commencer à écrire).
- Sur [doc.ubuntu-fr.org](https://doc.ubuntu-fr.org/tutoriel/console_ligne_de_commande)
- Sur [code-garage.fr](https://code-garage.fr/blog/faire-ses-debuts-sur-la-ligne-de-commande-linux/)
Une petite remarque sur un point qui pourrait vous déstabiliser : sur la plupart des systèmes GNU/Linux, quand un mot de passe est demandé, la ligne de commande n'affiche **rien** quand vous tapez les caractères.
## Louer un serveur
## Mettre en place un serveur
{% note(type="warning", markdown="true") %}
**Question** Un VPS fait-il l'affaire, ou faut-il absolument du bare metal pour le reseau de prod ?
{% end %}
Nous recommandons de louer un serveur pour installer votre noeud.
Ceci vous coûtera une somme modique mensuelle.
Il est également possible d'en [installer un chez soi](@/wiki/doc-v2/installer/mettre-en-place-serveur.md).
Cette seconde option a l'avantage d'être moins coûteuse en monnaie, mais elle nécessitera plus de matériel et d'action de votre part, tout en étant plus sujette à des arrêts (ex. pannes de courant).
Il n'y a aucun problème à installer un serveur chez vous si vous savez ce que vous faites, mais ce n'est pas la voie que nous recommandons pour des débutants.
Ci-dessous une liste non exhaustive, donnée à titre d'exemple, chez lesquels vous pouvez louer un serveur VPS.
(NB - si un fournisseur existe en Ğ1, merci de nous le faire savoir ;-) )
|Fournisseur|Lien|
|:----:|:---:|
|OVH|[Kimsufi (serveurs dédiés)](https://eco.ovhcloud.com/)|
|OVH|[VPS](https://www.ovhcloud.com/fr/vps/)|
|GANDI|[VPS](https://www.gandi.net/fr/cloud/vps)|
|INFOMANIAK|[VPS](https://www.infomaniak.com/fr/hebergement/vps-lite)|
|PULSEHEBERG|[VPS Standard](https://pulseheberg.com/cloud/vps-linux)|
|PULSEHEBERG|[VPS Performance](https://pulseheberg.com/cloud/vps-performance)|
Le serveur doit avoir les caractéristiques minimum suivantes pour le réseau de prod (ça peut être inférieur pour les réseaux de test):
- 4Go de RAM
- **XXX TODO** Go de stockage
Comme pour la plupart des services payants accessibles par Internet, il faudra vous créer un compte chez le fournisseur.
Lors de la location, votre fournisseur va vous proposer de pré-installer une distribution sur votre serveur. Nous recommandons d'installer **debian** ou **ubuntu** car ce sont deux distributions très répandues pour lesquelles vous trouverez facilement des réponses à vos questions.
Votre fournisseur peut également vous proposer un lieu où héberger votre noeud. Ceci n'a pas d'incidence sur la connexion de votre noeud au réseau Blockchain, mais ça aura une inidence sur la rapidité de réponse de votre noeud. Si vous installez un noeud miroir, nous vous recommandons de choisir une localisation proche de vous.
Les fournisseurs proposent souvent des options supplémentaires (sauvegarde automatisée, stockage supplémentaire, etc.). Ces options ne nous sont pas utilez pour le moment, vous pourrez les activer par la suite si vous en avez besoin.
Après votre paiement, votre fournisseur va vous envoyer les informations pour accéder à votre serveur :
- une adresse IP
- un nom d'utilisateur
- un mot de passe temporaire
- parfois un nom de serveur
Gardez ces informations bien précieusement.
## Se connecter en SSH à son serveur
## La sécurité de base du serveur
SSH est un protocole utilisé pour communiquer avec un ordinateur distant, *comme si vous étiez directement sur cet ordinateur*. Une fois connecté en SSH à votre serveur, vous pourrez y faire tout ce que vous voulez.
La connexion se fait de deux façons différentes, suivant si votre poste est sous Windows ou sous Mac / GNU/Linux.
### Sous Mac et GNU/Linux
Il vous faut d'abord ouvrir un terminal.
- Sous GNU/Linux, cette application est souvent directement accessible. Ouvrez le menu, cherchez "term", vous devriez trouver.
- Sous Mac, elle se trouve dans les 'utilitaires'. Vous pouvez aussi la trouver par la recherche d'applications.
Pour mon exemple, j'ai les informations suivantes :
|||
|:---|:---|
|adresse IP|51.75.18.228|
|Nom d'utilisateur|debian|
|Mot de passe|mot_de_passe
|nom de serveur|vps-b540a2aa.vps.ovh.net|
On va ensuite utiliser la commande SSH. La structure est `ssh <utilisateur>@<adresse serveur>`.
En prenant mon exemple, on tape dans le terminal :
```bash
# en utilisant l'adresse IP
ssh debian@51.75.18.228
# en utilisant le nom de serveur
ssh debian@vps-b540a2aa.vps.ovh.net
```
La réponse doit être presque instantanée.
Si vous n'avez rien au bout de quelques secondes, vous pouvez faire `Ctrl + X` et essayer l'autre méthode (IP ou nom du serveur). Si ça ne fonctionne toujours pas, il y a un problème. Relisez bien ce que vous avez tapé, puis contactez le support de votre fournisseur.
SSH va vous demander votre mot de passe.
Une fois le mot de passe entré, votre invite de commande change légèrement. Chez moi par exemple :
```bash
## avant la connexion
matograine@monordi:~$
## connexion
matograine@monordi:~$ ssh debian@vps-b540a2aa.vps.ovh.net
debian@vps-b540a2aa.vps.ovh.net password:
## Après la connexion
debian@vps-b540a2aa:~$
```
Ca y est, vous êtes connecté!
### Windows
Sous windows, nous allons utiliser le logiciel Putty que je vous invite à installer.
Rendez-vous sur [portableApps](https://portableapps.com/apps/internet/putty_portable) et cliquez sur 'Download'.
Vous téléchargez une version *portable* de Putty, c'est-à-dire que vous pouvez la mettre sur clef USB et la lancer depuis n'importe quel poste Windows.
Une fois que vous avez téléchargé le .exe, double-cliquez dessus pour le lancer.
Windows va sans doute vous indiquer un risque, vous pouvez ne pas en tenir compte.
{% note(type="warning", markdown="true") %}
**TODO** Utiliser Putty pour se connecter. Le rédacteur initial de cet article travaille sous LinuxMint, et Putty n'y fonctionne pas. A voir avec un utilisateur de Windose.
NB - ne pas oublier (après sécurisation du serveur) l'aspect 'utilisation de clef SSH' et 'changement du port'.
{% end %}
### Configurer un tunnel SSH
......@@ -44,11 +168,52 @@ Les options :
- [USER @] SERVER_IP – L’utilisateur SSH distant et l’adresse IP du serveur.
## La sécurité de base du serveur
## Utiliser la ligne de commande
On trouve plusieurs tutoriels indiquant comment configurer le serveur pour une sécurité de base.
Nous vous invitons à appliquer les conseils de [cet article](https://mindsers.blog/fr/post/comment-securiser-un-serveur-web-vps/).
En particulier, nous vous recommandons d'utiliser `ufw` pour le parefeu (et non `iptables`) car `ufw` est bien plus facile à utiliser.
La ligne de commande est le moyen privilégié pour administrer un serveur.
## Modification de la connexion par SSH
Après avoir sécurisé votre serveur, deux choses auront changé dans la façon de vous connecter par SSH :
- le port SSH a changé
- vous avez peut-être un nouvel utilisateur pour vous connecter par SSH
- vous vous connectez par une clef SSH au lieu d'un mot de passe.
Les paramètres de connexion SSH vont changer :
### GNU/Linux et Mac
La commande devient `ssh -p <port> <utilisateur>@<adresse du noeud>`. En reprenant l'exemple au-dessus :
```bash
ssh -p 49999 debian@vps-b540a2aa.vps.ovh.net
```
Et si vous avez enregistré votre clef SSH dans un endroit particulier, la commande devient `ssh -o "IdentitiesOnly=yes" -i <chemin/vers/la/clef/privee/ssh> -p <port> <utilisateur>@<adresse du noeud>`. En reprenant l'exemple au-dessus :
```bash
ssh -o "IdentitiesOnly=yes" -i /home/matograine/.ssh/id_rsa_2 -p 49999 debian@vps-b540a2aa.vps.ovh.net
```
Un mot de passe peut vous être demandé pour déverrouiller votre clef SSH.
### Windows avec Putty
{% note(type="warning", markdown="true") %}
**TODO** Utiliser Putty pour se connecter. Le rédacteur initial de cet article travaille sous LinuxMint, et Putty n'y fonctionne pas. A voir avec un utilisateur de Windose.
{% end %}
## Mise à jour régulière
Pour rester sécurisé, vous devez mettre votre système à jour régulièrement.
Sous Debian ou Ubuntu, ceci se fait avec la double commande `sudo apt update ; sudo apt upgrade`.
On peut faciliter ceci en lançant un ensemble de commandes à chaque fois que vous vous connectez par SSH.
{% note(type="warning", markdown="true") %}
**TODO** documenter comment définir ce jeu de commandes, pour les systèmes UNIX et pour Putty.
{% end %}
## Extension Duniter-Connect
\ No newline at end of file
## Extension Duniter-Connect
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