Si vous ne consommez pas toute la bande passante d’un serveur allumé 24h/24, pourquoi ne pas envisager de louer cette bande passante ? C’est le service que propose la blockchain Sentinel : un grand marché de la bande passante décentralisé ou les utilisateurs de VPN peuvent louer la bande passante à des serveurs.
Dans cet article, nous allons nous attarder sur la partie permettant la location de la bande passante. Le projet étant encore jeune, le nombre d’utilisateurs est faible et les paiements pour l’utilisation de la bande passante sont encore rares. Toutefois, en attendant que les utilisateurs découvrent cette solution VPN totalement anonyme et décentralisée, l’équipe en charge du projet subventionne les noeuds du réseau qui fonctionne sans interruption.
Ainsi, si vous gardez votre noeud réseau actif durant un mois sans interruption, vous serez récompensé quelques jours après en recevant des dVPN sur l’adresse de votre relais.
Prérequis pour installer un noeud Sentinel
Pour faire fonctionner un noeud sur la blockchain Sentinel, vous devez avoir acheté au préalable quelques unités de la cryptomonnaie dVPN. Cette somme sera utilisée par le noeud pour inscrire des transactions dans la blockchain et indiquer à intervalle régulier que le noeud est disponible.
Vous pouvez consulter la page coingecko de sentinel pour trouver un échangeur où acheter du dVPN en gardant à l’esprit que 100 dVPN seront largement suffisants pour tester et mettre en ligne un noeud en production.
Procédure d’installation
Installation des paquets et images
Pour commencer l’installation des dépendances utiles au noeud.
sudo apt-get install --yes docker curl git openssl
Maintenant, créez un utilisateur dédié à l’exécution du programme.
sudo adduser dvpn
sudo usermod -aG docker dvpn
Téléchargez les dernières images docker disponible.
sudo docker pull ghcr.io/sentinel-official/dvpn-node:latest
sudo docker tag ghcr.io/sentinel-official/dvpn-node:latest sentinel-dvpn-node
Création des fichiers de configurations
Basculez avec l’utilisateur dvpn pour poursuivre l’installation dans son dossier utilisateur.
su dvpn
cd /home/dvpn/
Création d’un certificat SSL où vous pouvez répondre à toutes les questions en laissant la valeur par défaut.
openssl req -new \
-newkey ec \
-pkeyopt ec_paramgen_curve:prime256v1 \
-x509 \
-sha256 \
-days 365 \
-nodes \
-out ${HOME}/tls.crt \
-keyout ${HOME}/tls.key
Initialisez la configuration du noeud avec la commande ci-dessous.
docker run --rm \
--volume ${HOME}/.sentinelnode:/root/.sentinelnode \
sentinel-dvpn-node process config init
Initialisez la configuration de WireGard avec la commande ci-dessous.
docker run --rm \
--volume ${HOME}/.sentinelnode:/root/.sentinelnode \
sentinel-dvpn-node process wireguard config init
Ouvrez le fichier nouvellement créé et notez la valeur du paramètre listen_port.
cat /home/dvpn/.sentinelnode/wireguard.toml
# Name of the network interface
interface = "wg0"
# Port number to accept the incoming connections
listen_port = 6988
# Server private key
private_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="
Maintenant, ouvrez le premier fichier de configuration créé :
nano /home/dvpn/.sentinelnode/config.toml
Et renseignez la configuration suivante en remplaçant les valeurs en gras :
[chain]
# Gas adjustment factor
gas_adjustment = 1.05
# Gas limit to set per transaction
gas = 200000
# Gas prices to determine the transaction fee
gas_prices = "0.1udvpn"
# The network chain ID
id = "sentinelhub-2"
# Tendermint RPC interface for the chain
#rpc_address = "https://rpc.sentinel.co:443"
#rpc_address = "https://rpc-sentinel.keplr.app:443"
#rpc_address = "https://sentinelhub-2.technofractal.com:443"
rpc_address = "https://rpc.sentinel.smartnodes.one:443"
# Calculate the transaction fee by simulating it
simulate_and_execute = true
[handshake]
# Enable Handshake DNS resolver
enable = true
# Number of peers
peers = 8
[keyring]
# Underlying storage mechanism for keys
backend = "file"
# Name of the key with which to sign
from = "dvpn-sentinel-node"
[node]
# Time interval between each set_sessions operation
interval_set_sessions = "2m0s"
# Time interval between each update_sessions transaction
interval_update_sessions = "1h55m0s"
# Time interval between each set_status transaction
interval_update_status = "55m0s"
# API listen-address
listen_on = "0.0.0.0:15999"
# Name of the node
moniker = "NODENAME"
# Per Gigabyte price to charge against the provided bandwidth
price = "10000udvpn"
# Address of the provider the node wants to operate under
provider = ""
# Public URL of the node
remote_url = "https://xx.xx.xx.xx:15999"
[qos]
# Limit max number of concurrent peers
max_peers = 250
Avant de poursuivre, vérifiez bien les éléments suivants :
- Les ports renseignés pour les paramètres listen_on et remote_url sont identiques. Notez ce numéro de port dans un coin, car nous allons devoir l’utiliser lors de la configuration du pare-feu.
- Indiquez l’adresse IP de votre serveur dans le paramètre remote_url en laissant bien la mention https.
- Le paramètre from peut être modifié et sa valeur sera utilisée dans la prochaine étape pour la création du portefeuille de cryptomonnaie.
- Le paramètre Price sert à définir à combien vous souhaitez louer votre bande passante par tranche de 1 Go. Pour effectuer la conversion, notez que 1 DVPN est égale à 1000000 uDVPN.
Génération du portefeuille crypto
Utilisez la commande ci-dessous pour créer un nouveau portefeuille crypto. Dans le cas où vous souhaitez restaurer un portefeuille existant pour lequel vous avez déjà la phrase mnémonique, ajoutez simplement le paramètre –recover à la fin de la commande.
Une passphrase vous sera demandée pour protéger le portefeuille. Notez impérativement cette passphrase quelque part, car elle vous sera demandée à chaque démarrage du noeud !
docker run --rm \
--interactive \
--tty \
--volume ${HOME}/.sentinelnode:/root/.sentinelnode \
sentinel-dvpn-node process keys add
Pensez à noter l’adresse publique générée qui commence par « sent… » et sur laquelle vous pouvez dès maintenant envoyer les DVPN achetés au début de l’installation. Attention, l’adresse commençant par « sentnode… » est également à mettre de côté mais ne doit être utilisée pour l’envoi des DVPN. Cette adresse représente votre noeud et permettra de le retrouver dans la liste à la fin de l’installation.
Stockez également dans un endroit sûr (par exemple un gestionnaire de mot de passe chiffré) la phrase de 12 mots affichée par la commande. Cette phrase permet la restauration du portefeuille en cas de réinstallation du serveur et peut être utilisée pour ajouter l’adresse dans un portefeuille comme Keplr.
Si vous perdez cette phrase, vous perdrez le contrôle de l’adresse et de tous les jetons détenus dessus. Alors, prenez le temps de faire le nécessaire avant de continuer !
Pour valider la création du portefeuille, utilisez la commande suivante :
docker run --rm \
--interactive \
--tty \
--volume ${HOME}/.sentinelnode:/root/.sentinelnode \
sentinel-dvpn-node process keys list
Déplacer le certificat SSL
Déplacez les deux fichiers générés pour le certificat SSL dans le bon dossier et changez les propriétaires en root:root sinon vous aurez des erreurs au démarrage…
mv ${HOME}/tls.crt ${HOME}/.sentinelnode/tls.crt && mv ${HOME}/tls.key ${HOME}/.sentinelnode/tls.key
sudo chown root:root ${HOME}/.sentinelnode/tls.crt && sudo chown root:root ${HOME}/.sentinelnode/tls.key
Configuration du parefeu
Pour la suite de la configuration, nous allons utiliser deux « variables » dont voici les numéros de ports de notre exemple et le fichier où trouver l’information :
- APP_PORT : 15999 (voir config.toml)
- WIREGUARD_PORT : 6988 (voir wireguard.toml)
Vous n’avez plus qu’à remplacer les numéros de port dans les commandes ci-dessous avant de les exécuter pour finaliser la configuration du pare-feu.
ufw allow <API_PORT>/tcp
ufw allow <WIREGUARD_PORT>/udp
ufw allow from any to any port <API_PORT> proto tcp
ufw allow from any to any port <WIREGUARD_PORT> proto udp
ufw route allow proto tcp from any to any port <API_PORT>
ufw route allow proto udp from any to any port <WIREGUARD_PORT>
Démarrage du noeud
Le lancement du noeud se fera avec la commande ci-dessous et comme pour la configuration du pare-feu, les numéros de port sont à renseigner dans la commande docker.
docker run --rm \
--interactive \
--tty \
--volume ${HOME}/.sentinelnode:/root/.sentinelnode \
--volume /lib/modules:/lib/modules \
--cap-drop ALL \
--cap-add NET_ADMIN \
--cap-add NET_BIND_SERVICE \
--cap-add NET_RAW \
--cap-add SYS_MODULE \
--sysctl net.ipv4.ip_forward=1 \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
--sysctl net.ipv6.conf.all.forwarding=1 \
--sysctl net.ipv6.conf.default.forwarding=1 \
--publish API_PORT:API_PORT/tcp \
--publish WIREGUARD_PORT:WIREGUARD_PORT/udp \
sentinel-dvpn-node process start
Au lancement, vous devrez saisir la passphrase utilisée pour protéger le portefeuille puis, une fois saisi, le noeud testera la vitesse de la bande passante avant de devenir accessible.
Pour valider l’installation, vous pouvez au choix utiliser l’application mobile Exidio dVPN pour chercher dans la liste votre serveur ou installer le client et utiliser la requête ci-dessous :
sentinelcli query node --node https://rpc.sentinel.co:443 sentnodexxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Si tout se passe bien vous devriez voir votre serveur avec son adresse IP et le ping. Vous pouvez comparer le résultat obtenu avec d’autres serveurs en affichant la première page de la liste des noeuds disponibles.
sentinelcli query nodes --node https://rpc.sentinel.co:443 --page 1
Une version précompilée du client est proposée dans la documentation officielle :
curl -fsLS https://raw.githubusercontent.com/sentinel-official/cli-client/development/scripts/install.sh | sh
Pour finir, vous pouvez faire un script pour faciliter le lancement du programme et le garder sous surveillance quelque temps dans une screen.
Si tout se passe bien, vous devriez voir apparaître des récompenses pour avoir hébergé un noeud dVPN au début du mois prochain. En revanche, si vous ne l’avez pas laissé fonctionner assez longtemps (car installé en fin de mois) où si des coupures trop importantes ont été constatées, vous devrez attendre le mois suivant…