Bonjour à tous,

Aujourd’hui, nous allons voir comment installer IPFS sur Debian 9. Qu’est-ce qu’IPFS ?

InterPlanetary File System (ou IPFS, système de fichier inter-planétaire), est un protocole pair à pair de distribution de contenu adressable par hypermédia, conçu à l’origine par Juan Benet1. L’implémentation principale d’IPFS est un logiciel libre2 dirigée par l’Interplanetary Networks3.

Source : https://fr.wikipedia.org/wiki/InterPlanetary_File_System

Pré-requis :

Le seul pré-requis est l’installation de Go sur le serveur :

apt update && apt dist-upgrade -y
apt install golang -y

 

Installation de IPFS :

Téléchargez ensuite le binaire de IPFS et installez-le :

cd /tmp
wget https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz
tar xvfz go-ipfs*.tar.gz
cd go-ipfs
./install.sh

 

Ensuite, initialisez le serveur :

ipfs init --profile server

Autorisez la connexion à l’api depuis l’externe :

ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'

 

Créez le service SystemD :

nano /etc/systemd/system/ipfs.service

 

Remplissez-le avec ceci :

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub
User=root

[Install]
WantedBy=multi-user.target

 

Activez le service dans SystemD et lancez-le :

systemctl daemon-reload
systemctl enable ipfs
systemctl start ipfs

 

Vérifiez que vous obtenez des peers après 5 minutes :

ipfs swarm peers

 

Installation de l’outil de mise à jour :

Téléchargez et installez l’outil de gestion des mises à jour :

cd /tmp
wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-amd64.tar.gz
tar xvfz ipfs-update*.tar.gz
cd ipfs-update
./install.sh

 

Pour lancer une mise à jour, vous devez obligatoirement couper le daemon IPFS. Il faudra donc les lancer comme cela à chaque fois :

systemctl stop ipfs
ipfs-update install latest
systemctl start ipfs

Installation du pare-feu et création des règles pour IPFS

On va maintenant installer le pare feu UFW pour sécuriser un peu le bordel et avoir juste le port d’échange avec les peers qui soit ouvert sur internet.

 

Installez UFW avec la commande suivante :

apt-get install ufw -y

 

Si vous utilisez IPV6 sur votre serveur, éditez le fichier suivant :

nano /etc/default/ufw

 

Et vérifiez que la ligne IPV6 soit bien sur Yes :

IPV6=yes

 

Ensuite, désactivez le pare-feu :

ufw disable

 

Autorisez toutes les connexions sortantes et refusez toutes les connexions entrantes :

ufw default deny incoming
ufw default allow outgoing

 

Maintenant, faites pas les bleus, si vous réactivez le pare-feu sans créer une règle d’accès pour SSH votre serveur sera totalement inaccessible depuis Internet.

On va donc créer une règle pour accéder à votre serveur depuis votre adresse ip :

ufw allow from IPV4
ufw allow from IPV6

 

Remplacez IPV4 par votre IPV4 fixe ou VPN le cas échéant, remplacez IPV6 par votre IPV6.

Si vous ne disposez ni d’une ipv4 fixe, ni d’une ipv6, utilisez la règle suivante pour activer au minimum le SSH :

ufw allow 22

 

Activez aussi le port 4001 afin de pouvoir communiquer avec des peers et pouvoir échanger.

ufw allow 4001

 

Maintenant, activez le pare-feu :

ufw enable

 

Redémarrez le daemon IPFS et vérifiez que vous avez des peers :

systemctl restart ipfs
ipfs swarm peers

 

Utilisation du WebUi :

Vous pouvez vous connecter au WebUi depuis l’extérieur avec l’adresse suivante :

http://[IPv4]:5001/webui/

 

S’il vous redemande de spécifier l’adresse de l’API, rentrez la sous la forme suivante :

/ip4/[IPv4]/tcp/5001

 

Vous pourrez voir les peers connectés, managez les fichiers que vous hébergez en local et d’autres petites choses sympa. Cette interface est surtout utile pour le côté statistique.

 

Cloner son premier site :

L’idée de IPFS, c’est de cloner les sites sur des dizaines, centaines, voir des milliers de PC afin que chacun ait une copie et que les sites ne puissent être indisponibles.

 

Lancez la commande suivante en ligne de commande.

Ce qu’il y’a après le add, c’est le CID unique du site en ligne, ici on clone simplement des mêmes qui trainent dans un dépôt de démonstration :

ipfs pin add QmdmQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7RgQm

 

Vous serez ensuite à même de visiter  le site depuis votre serveur :

http://[IPv4]:8080/ipfs/QmdmQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7RgQm/

 

Les commandes de pin doivent se relancer idéalement une fois par jour afin de garder des copies des sites à jour.

 

Au prochain article, on verra comment gérer et automatiser tout ça avec un Ansible afin de maintenir vos pins et votre IPFS à jour automatiquement.

 

Sources :