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

identicon

CrazyPanda

Leave a Reply

Your email address will not be published. Required fields are marked *