Duniter – Configurer un noeud derrière un reverse proxy Nginx
Afin de soutenir le projet Duniter et la monnaie libre Ğ1 j’ai décidé de faire tourner un noeud Duniter sur une de mes machine.
Voici un guide d’installation sur Debian 8.
Avant toute chose on met à jour notre machine :
apt update && apt full-upgrade
Installation de Duniter Serveur
On installe le paquet Debian :
(Dernière version disponible sur le Git de Duniter : git.duniter.org)
wget https://git.duniter.org/nodes/typescript/duniter/-/jobs/2205/artifacts/raw/work/bin/duniter-server-v1.6.18-linux-x64.deb sudo dpkg -i duniter-server-v1.6.18-linux-x64.deb
On génère la clef du Noeud :
duniter wizard key
Il faut ensuite renseigner les champs demandés :
-Modify you keypair? (y/N) y -Key's salt : renseignez une passphrase -Key's password : renseignez ici un mot de passe
On passe ensuite à la configuration du réseau :
duniter wizard network
De la même manière il faut renseigner les champs (utiliser les flèches du clavier quand il faut choisir parmi plusieurs propositions)
-IPv4 interface : Sélectionner lo 127.0.0.1 -IPv6 interface : Sélectionner l'adresse et validez. Sélectionner "none" si comme moi vous n'avez pas d'IPv6. -Port : 10901 -Remote IPv4 : Indiquer ici votre IP publique. Si elle n'apparait pas, ajouter la en sélectionnant "Enter new one" -Remote port : 443 -Does this server has a DNS name? y ou n (répondez "y" si vous voulez héberger le nœud sur un serveur possédant un nom de domaine. Exemple : duniter.crazypanda.fr) -(si "y") DNS name : Renseignez votre domaine.
Dans le cas de l’utilisation d’un domaine il faut penser à activer la redirection dans les réglages de votre fournisseur de domaine.
Configuration du endpoint BMAS :
duniter config --addep "BMAS domaine.tld 443"
N’oubliez pas de remplacer domaine.tld par votre propre domaine.
Configuration du remotehost WS2P :
duniter config --ws2p-remote-host domaine.tld
N’oubliez pas de remplacer domaine.tld par votre propre domaine.
Installation du reverse proxy Nginx
On installe Nginx stable depuis les dépôts officiels :
wget -O - https://nginx.org/keys/nginx_signing.key | apt-key add - echo "deb http://nginx.org/packages/debian/ $(lsb_release -sc) nginx" > /etc/apt/sources.list.d/nginx.list apt update apt install nginx
On ajoute la configuration :
nano /etc/nginx/conf.d/duniter.conf
Et on y met (à adapter, ici c’est pour duniter.crazypanda.fr) :
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name domaine.tld; # Ne s'applique pas si vous utilisez un sous-domaine if ($host = www.domaine.tld) { return 301 https://domaine.tld$request_uri; } access_log /var/log/nginx/duniter-access.log; error_log /var/log/nginx/duniter-error.log; location / { proxy_pass http://127.0.0.1:10901; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } location /ws2p { proxy_pass http://127.0.0.1:10901; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } # HTTPS ssl_certificate /etc/letsencrypt/live/domaine.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domaine.tld/privkey.pem; ssl_protocols TLSv1.2; ssl_ecdh_curve prime256v1; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_prefer_server_ciphers on; resolver 80.67.169.12 80.67.169.40 valid=300s; resolver_timeout 5s; ssl_session_cache shared:SSL:10m; add_header Strict-Transport-Security "max-age=15768000"; add_header Referrer-Policy "strict-origin-when-cross-origin";
N’oubliez ps de remplacer domaine.tld par votre propre domaine.
Génération des certificats Let’s Encrypt
On installe Letsencrypt depuis les backports :
echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list apt update && apt full-upgrade -y apt install -t jessie-backports letsencrypt
On arrête Nginx pour libérer le port 80 :
service nginx stop
On génère le certificat :
letsencrypt certonly -d domaine.tld --agree-tos -m contact@domaine.tld --rsa-key-size 4096 --standalone
N’oubliez pas de remplacer domaine.tld par votre propre domaine.
Et on démarre Nginx :
service nginx start
Synchronisation et lancement de Duniter Serveur
Synchronisation du Noeud :
duniter sync g1.duniter.org:443
L’on demande à Duniter de se synchroniser avec un noeud déjà existant sur le réseau.
Lancement du Noeud Duniter :
duniter start
Si tout c’est bien passé vous devriez voir votre Noeud sur la page Network de Césium : https://g1.duniter.fr/#/app/network
Bonus
Il existe une interface web de duniter, elle est desactivé par défaut mais vous pouvez y acceder en lancant Duniter avec la commande suivante :
duniter webstart --webmhost 127.0.0.1
Puis, si vous n’avez pas d’accès local à la machine, je vous conseille de vous connecter en SSH comme ceci:
ssh -L 9999:127.0.0.1:9220 user@domaine.tld
Vous pourrez ensuite, via votre navigateur, accéder à l’interface à l’adresse http://127.0.0.1:9999 et accéder aux logs ici : http://127.0.0.1:9999/#/logs
Vous pouvez également vérifier si tout est ok de ce côté : https://domaine.tld/network/peering
Merci !
Merci à Angristan chez qui j’ai pompé les infos pour Nginx et Letsencrypt sur le Tuto Mastodon
Merci à CitizenZ pour son tuto d’installation d’un noeud Duniter
Et merci aux membres du forum Duniter.org et de gentilles personnes sur Mastodon (@vincentux, @inso, et d’autres)
Si tu vois un soucis sur ce tuto, contact moi sur Mastodon directement : @LemoineArthur
A faire : config ws2p
2 thoughts on “Duniter – Configurer un noeud derrière un reverse proxy Nginx”
salut, chouette tuto!
cependant il y a une coquille pour la syncro, tel que marqué ça ne fera que syncroniser jusqu’au bloc 443, au lieu de spécifier le port du serveur de syncro, il faut donc écrire avec deux points comme ceci pour avoir l’intégralité de la blockchain
duniter sync g1.duniter.org:443
Ah oui c’est possible en effet ! je corrige ça 🙂