ICT est un projet en cours de développement par CfB (Come_From_Beyond, aka Sergey Ivancheglo), co-fondateur et co-directeur de IOTA. C’est également le principal inventeur du concept de Qubic et il travaille actuellement sur les projets futurs qui s’articuleront autour de IOTA, tel les groupements économiques.
À l’heure actuelle, il existe peu d’informations sur la nature exacte de l’ICT et son rôle dans l’écosystème IOTA. Une caractéristique principale est qu’il repose sur le sharding. C’est à dire qu’il est en réalité constitué de plusieurs mini serveurs de faibles capacités (comme des Raspberry Pi) qui s’associent et se répartissent les tâches pour former ensemble un serveur complet. ICT est donc une entité agissant comme un seul full node, mais de manière totalement distribuée.
Quoi qu’il en soit, des explications détaillées seront fournies par CfB une fois le système finalisé. À l’heure actuelle, ICT est toujours en phase de test. CfB a donc besoin d’autant de Raspberry que possible pour réaliser ces essais, c’est pourquoi il propose à la communauté d’installer la version en développement et de faire tourner leurs Raspberrys.
Préparation de la Raspberry
Installer Raspbian sur la carte SD avec Etcher
Avant d'allumer la Raspberry pour la première fois, il faut lui installer un OS. L'OS le plus utilisé pour cette fonction est Rapsbian. Téléchargez donc l'archive de Raspbian sur votre ordinateur. Téléchargez également Etcher, qui servira à installer Raspbian sur la carte SD. Il ne vous reste alors qu'à insérer la carte dans votre lecteur et lancer Etcher. Dans Etcher, sélectionnez l'image Raspbian que vous venez de télécharger et appuyez sur "flash" pour l'installer sur la carte SD.
Si votre Pi est branchée à un clavier, une souris et un écran, vous pouvez insérer la carte SD et démarrer l'appareil directement. Il vous suffira alors d'ouvrir le terminal pour poursuivre le tuto.
Si par contre vous voulez vous connecter en SSH (depuis un autre ordinateur du réseau), vous devez compléter l'étape suivante.
Se connecter à la Raspberry en SSH (option)
La connexion via SSH permet d'accéder à la Raspberry via n'importe quel ordinateur du réseau sans devoir y connecter de périphériques. Pour ce faire, créez simplement un fichier appelé ssh
(sans extension) dans la partition boot
de la carte SD. Notez qu'Etcher éjecte parfois automatiquement la carte de votre ordinateur. Il est donc nécessaire de la ré-introduire pour accéder à la partition boot.
Une fois le fichier ssh créé, insérez la carte dans votre pi et branchez la. Vous pouvez maintenant vous y connecter.
Si vous utilisez linux et mac, vous pouvez directement vous connecter à la Raspberry en tapant
ssh [email protected]
Pour les utilisateurs Windows, il est nécessaire d'installer l'utilitaire putty et de connaître l'IP de sa Raspberry. Pour connaître cet IP, rendez vous simplement sur la page de configuration de votre routeur à l'aide de votre navigateur web préféré. Les informations vous permettant de vous connecter au routeur sont en général reprise sur une étiquette collée à celui-ci (par exemple 192.168.1.1
). Trouvez y l'adresse relative à votre pi. Une fois cela fait, ouvrez Putty et introduisez l'adresse de votre pi dans la case "Host Name (or IP address)" puis cliquez sur "Open".
Acceptez le message de sécurité et connectez vous. Le login par défaut est pi
et le mot de passe raspberry
.
Obtenir une IP statique avec No-IP
Pour utilisez ICT correctement il vous faut une adresse IP publique statique. Malheureusement la plus part des fournisseurs d'accès vous donnent une adresse IP de manière dynamique (qui change fréquemment). Il faut donc utiliser un service de DNS dynamique qui va lier un nom de domaine à votre IP publique. À chaque changement de votre IP, un script enverra la nouvelle adresse aux serveurs afin que le nom de domaine pointe bien toujours sur votre pi.
Commencez par vous rendre sur le site noip.com. Au bas de la page, vous pouvez choisir un nom de domaine pour accéder à votre pi plu facilement. Cliquez ensuite sur sign up pour créer votre compte. Pensez à bien valider le questionnaire avec "Free Sign Up" et non "Get Enhanced" si vous voulez avoir un nom de domaine gratuit. Notez que dans le cas d’un nom gratuit, sa durée n’est que de 30 jours. Vous devrez donc tous les mois reconfirmer sur le site ne No-IP que vous souhaitez prolonger la durée du nom de domaine. Sans cela, ICT ne pourra plus fonctionner correctement.
Il vous faut maintenant installer No-IP sur la Raspberry. Connectez vous à la Pi et exécutez les lignes suivantes dans le terminal, en appuyant sur Enter
à la fin de chaque ligne (attendez que chaque opération se finisse avant de lancer la suivante).
mkdir /home/pi/noip
cd /home/pi/noip
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar vzxf noip-duc-linux.tar.gz
cd noip-2.1.9-1
sudo make
sudo make install
Le terminal vous demande alors votre login et mot de passe. Indiquez ceux de votre compte No-IP.
Le terminal vous demandera alors à quel intervalle vous désirez que votre adresse soit mise à jour. Entrez 10
puis appuyez sur Enter
. A la question suivante, tapez N
puis Enter
Finalement, lancez le programme noip avec
sudo /usr/local/bin/noip2
Pour plus de détails sur les lignes de commandes entrées précédemment, rendez-vous sur la documentation de No-IP .
Faire suivre le port du routeur vers votre Raspberry
Pour que la connexion s’effectue correctement à votre ICT, il est nécessaire de rediriger un port de votre routeur vers votre Raspberry. Rendez vous donc encore une fois dans l’interface de gestion de votre routeur. Identifiez la section dénommée Port-Forwarding (ou portmapping) et complétez les champs afin que l’entrée 14265
redirige vers l’IP locale de votre pi et vers son port 14265
également.
Installation de l'ICT
Installer ICT
L’installation d’ICT est très simple. L’utilisateur ixus de discord a compilé les commandes sous forme de différents scripts pour plus de facilité. Le premier script permet l’installation de l’ICT. Vous pouvez le créer à l’aide de la commande
sudo nano setup-ict.sh
Copiez-collez ensuite ce qui suit dans l'éditeur
#!/bin/bash
apt-get --assume-yes install git oracle-java8-jdk
git clone https://github.com/Come-from-beyond/Ict.git
cd Ict
javac src/cfb/ict/*.java
PROPERTIES_FILE="ict.properties"
echo "host = 0.0.0.0" > $PROPERTIES_FILE
echo "port = 14265" >> $PROPERTIES_FILE
echo "" >> $PROPERTIES_FILE
echo "//Discord neighbor: <username>#<userid>" >> $PROPERTIES_FILE
echo "neighborAHost = ?.?.?.?" >> $PROPERTIES_FILE
echo "neighborAPort = 14265" >> $PROPERTIES_FILE
echo "" >> $PROPERTIES_FILE
echo "//Discord neighbor: <username>#<userid>" >> $PROPERTIES_FILE
echo "neighborBHost = ?.?.?.?" >> $PROPERTIES_FILE
echo "neighborBPort = 14265" >> $PROPERTIES_FILE
echo "" >> $PROPERTIES_FILE
echo "//Discord neighbor: <username>#<userid>" >> $PROPERTIES_FILE
echo "neighborCHost = ?.?.?.?" >> $PROPERTIES_FILE
echo "neighborCPort = 14265" >> $PROPERTIES_FILE
echo "ICT app installed!"
echo "Open 'ict.properties' and add three neighbor ip-addresses"
echo "Extra note: You may need to ensure that your firewall doesn't block UDP-traffic on port 14265."
echo "Start ICT with command: './run-ict.sh'"
Sauvez le script tapant ctrl+X
puis confirmez en appuyant successivement sur y
puis Enter
.
Lancez alors le script d'installation en tapant simplement
sudo bash setup-ict.sh
Trouver des voisins pour ICT
Pour fonctionner votre ICT aura besoin de trois voisins. Rendez vous sur le channel #ICT
du Discord IOTA et demandez qui veut être votre voisin. Entamez une conversation privée avec trois répondants et échangez vos adresses en utilisant directement votre IP publique, ou le nom de domaine choisi avec No-IP.
Ajoutez maintenant ces voisins en éditant le fichier ict.properties à l'aide de la commande
sudo nano Ict/ict.properties
Copiez les IP ou nom de domaines de vos voisins à la place de ?. ?. ?. ?
. Vous devriez donc avoir soit quelque chose de la forme 74.345.234.21
, soit quelque chose comme MonVoisin.SonDomaine.net
. Vous pouvez également remplacer les <username>#<userID>
par le nom d’utilisateur discord du voisin pour mieux vous y retrouver plus tard.
Une fois les trois voisins ajoutés, sauvegardez puis confirmez à l’aide de ctrl+X
puis y
, puis Enter
.
Démarrer ICT
Il faut à présent créer un script qui lancera automatiquement ICT. Pour cela
sudo nano run-ict.sh
Copiez alors ce qui suit
#!/bin/bash
cd Ict/src
java cfb.ict.Ict ../ict.properties
Comme toujours, sauvegardez à l’aide de ctrl+X
, puis y
puis Enter
.
Techniquement, vous pouvez dès à présent lancer ICT avec sudo bash run-ict.sh
. Notez qu'avec cette méthode, ICT s'arrêtera automatiquement si vous quittez putty (ou coupez la liaison ssh). Pour plus de simplicité, nous allons créer un service qui fera tourner le code en tâche de fond. Avant cela, il faut identifier le répertoire dans lequel les scripts ont été crées jusqu'à présent. Tapez donc pwd
et notez la réponse que renvoit le temrinal (probablement quelque chose comme /home/pi
. Gardez ce chemin en tête, on va en avoir besoin très bientôt.
Pour créer le service, tapez alors
sudo nano /lib/systemd/system/ict.service
Copiez/collez alors ce qui suit et remplacez <LE_CHEMIN_TROUVE_AVEC_PWD>
par ce que vous a retourné la fonction pwd
. Cette ligne devrait alors ressembler à WorkingDirectory=/home/pi
.
[Unit]
Description=IOTA ICT
After=network.target
[Service]
ExecStart=/bin/bash -u run-ict.sh
WorkingDirectory=<LE_CHEMIN_TROUVE_AVEC_PWD>
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
Entrez alors ce qui suit (attention encore une fois a mettre a jour la ligne 2 avec votre répertoire de travail)
sudo chmod 644 /lib/systemd/system/ict.service
sudo chmod +x <LE_CHEMIN_TROUVE_AVEC_PWD>/run-ict.sh
sudo systemctl daemon-reload
sudo systemctl enable ict.service
Pour activer le service et lui permettre d'exécuter ICT
Vous pouvez maintenant faire démarrer ICT avec
sudo systemctl start ict.service
La commande suivante vous permet d'afficher le status du serice
sudo systemctl status ict.service
Si vous voulez arrêter ICT, tapez
sudo systemctl stop ict.service
Et pour afficher les logs et vérifier que tout va bien
sudo journalctl -f -u ict.service
(tapez ctrl+C pour quitter et revenir au terminal)
Mettre à jour ICT
Pour plus de simplicité, il est également possible de créer un script qui mettra à jour ICT.
sudo nano update-ict.sh
Copiez coller alors
#!/bin/bash
cd Ict
git pull
javac src/cfb/ict/*.java
echo "ICT app updated!"
echo "Start ICT with command: './run-ict.sh'"
Comme toujours, sauvegardez à l’aide de ctrl+X
, puis y
puis Enter
.
Pour mettre à jour ICT, il suffit alors de lancer le script avec sudo bash update-ict.sh
. Et puis de redémarrer ICT une fois l’update terminée, à l’aide de bash run-ict.sh
ou sudo systemctl restart ict.service
.
Pour plus de détails concernant IOTA en général, n’hésitez pas à faire un tour sur mon site
www.iota-guide.com
Et si vous trouvez ce guide utile, un petit tip en IOTA est toujours bienvenu à l’adresse suivante :wink: :
XSTZVGRXPDEBVHL9ZFDBUBCZOAPNRSWZBMNACARQFMFXMLTEVCHHZHSLSH9FGYJIOZOXMNULGNNLJYEIDURJRDHN9W
Congratulations @lambtho! You received a personal award!
Click here to view your Board
Congratulations @lambtho! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!