Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
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.
Merci pour la présentation, je ne connaissais pas IPFS et ça a l’air prometteur sur le papier. J’ai juste une petite question sécurité… Je vois que les pages sont en http sans aucun certificats ni chiffrement TLS. ce n’est pas un peu risqué niveau confidentialité ? même question point de vue DNS… L’IP externe est utilisé dans l’adresse pointant vers la gateway IPFS… Est-il possible de renforcer tout cela ? ou est-ce qu’une alternative est implémentée dans le protocole IPFS via les tags/hash ?
[…] Vous pouvez monter un serveur vous-même avec cet article : https://www.abyssproject.net/2019/01/installation-dun-serveur-ipfs-sous-debian-9-et-mise-a-jour/ […]
Lancer le service en tant que root, c’est vraiment nécessaire ?
[…] Installation d’un Serveur IPFS sous Debian 9 et mise à jour […]