Toujours dans l’envie de jouer avec le lightning network, je me suis récemment intéressé aux applications de messagerie utilisant le protocole de couche 2 de Bitcoin. C’est à cette occasion que notre ami Grégory Guittard du Journal du Coin m’a parlé de l’application Sphinx (https://sphinx.chat/). 

 

 

Je me précipite donc pour télécharger sur l’application et comme tout le monde, je tombe avec désarroi sur une demande d’invitation.

Contrairement à ce que je pouvais penser, l’application de messagerie ne se connecte pas directement à notre noeud lightning network
Elle nécessite de passer par une interface intermédiaire nommée sphinx relay.

Le repository est hébergé sur github et explique succinctement le processus d’installation. Bien évidemment je me suis précipité dessus et bien évidemment, cela n’a pas fonctionné.

 

Le tuto du pauvre

Après m’être cassé les dents et avoir analysé le fonctionnement de l’application, je vous propose un mini tutoriel qui vous permettra d’héberger votre propre relais de messagerie sphinx.
Cependant, ne vous attendez pas à un pas à pas et il est possible voire probable que malgré mes efforts, cela ne vous permette de faire tourner l’application correctement.

L’application est en effet particulièrement jeune (quelques semaines) et il n’est pas surprenant qu’elle souffre de nombreux bug.

Pour pouvoir aborder sereinement ce tutoriel, il vous faudra vous munir des éléments suivants:

  • Un noeud lightning network tournant sous lnd en version 0.9.0 (pour avoir l’option keysend)
  • Ce nœud devra faire tourner TOR et disposer de nodeJS
  • Un device android avec les applications sphinx et orbot

A vrai dire, plutôt qu’un tuto, il s’agit plutôt d’une astuce.
Le github décrit parfaitement l’installation et il vous faudra configurer correctement le fichier app.json. Voici un exemple de configuration.

 

~~~~


"production": {
"senza_url": "https://staging.senza.us/api/v2/",
"macaroon_location": "/home/MonUser/.lnd/data/chain/bitcoin/mainnet/admin.macaroon",
"tls_location": "/home/MonUser/.lnd/tls.cert",
"lnd_log_location": "/home/MonUser/.lnd/logs/bitcoin/mainnet/lnd.log",
"lncli_location": "/usr/local/bin/",
"node_ip": "127.0.0.1",
"node_http_protocol": "http",
"node_http_port": "3001",
"lnd_port": "10009",
"hub_api_url": "https://hub.sphinx.chat/api/v1",
"hub_url": "https://hub.sphinx.chat/ping",
"hub_invite_url": "https://hub.sphinx.chat/invites",
"hub_check_invite_url": "https://hub.sphinx.chat/check_invite",
"media_host": "memes.sphinx.chat"
}
}

Vous remarquerez que l’application :

  • tentera de se connecter sur l’adresse de votre noeud lnd sur le port 10009
  • exposera son service sur le port non standard 3001

J’utilise ce port car mon serveur à un serveur web occupe déjà le port 80 (qui est configuré par défaut dans le fichier). Vous verrez que ça va nous poser problème

N’oublier de modifier le fichier config.json et de fournir le chemin de la base sqlite3. Vous êtes libre de définir ce chemin. Pensez bien à le sauvegarder régulièrement (c’est on jamais).


"production": {
"dialect": "sqlite",
"storage": "/chemin de ma base/sphinx.db"
}

TOR sauveur du monde

La mise en place du relais n’est pas difficile si vous pouvez vous permettre d’utiliser le port 80 (contrairement à moi). En effet, l’application mobile Sphinx se connecte explicitement sur les ports 80 ou 443 et il n’est pas possible de changer ce comportement.

Dans ce cas, il faudra ruser et utiliser TOR pour permettre à l’application de se connecter au relais sur le port 80.

Editez le fichier /etc/tor/torrc (en sudo) et ajoutez les lignes suivantes à la fin du fichier.


HiddenServiceDir /var/lib/tor/sphinx/
HiddenServicePort 80 127.0.0.1:3001

Relancez tor avec la commande suivante

sudo service tor restart

Allez récupérer le nom TOR du HiddenService dans le fichier /var/lib/tor/sphinx

Avant de lancer le lancer le relais, configurez les variables d’environnements de cette manière


export NODE_IP=azezaeaeazezae.onion

export USE_PASSWORD=true

 Vous êtes bon pour lancer le relais avec la commande 

npm run prod

Si elle a bien accès au noeud LND, vous obtiendrez un QR-Code à scanner.

Lancez l’application mobile Sphinx (cette dernière devra être mise en VPN avec orbot) et scannez le QR-Code. Vous devriez pouvoir accéder à l’interface de la messagerie. 

Si c’est le cas, n’hésitez pas à m’ajouter en scannant ce QR-code.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *