1. Inventaire du nouveau peer
Hostname
- Node-ipfsp3 : IP = 192.168.1.73 (peer)
HDD
- Disque SCSI0 : Système
- Disque SCSI1 & SCSI2 : RAID1
2. Installation des prérequis
Ajout des clefs SSH sur le client
[root@node-ipfsl ~]# ssh-keygen [root@node-ipfsl ~]# ssh-copy-id root@192.168.1.73
Modifier le hostname client
[root@node-ipfsl ~]# ssh root@192.168.1.73 'hostnamectl hostname node-ipfsp3' [root@node-ipfsl ~]# ssh root@192.168.1.73 'hostnamectl'
Update machine cliente
[root@node-ipfsl ~]# ssh root@192.168.1.73 'dnf update -y'
Desactiver SELinux
[root@node-ipfsl ~]# ssh root@192.168.1.73 'sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config' [root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /etc/selinux/config |grep SELINUX'
Paramétrage ntp
[root@node-ipfsl ~]# ssh root@192.168.1.73 'timedatectl set-timezone Europe/Paris'
Installation paquets utils
[root@node-ipfsl ~]# ssh root@192.168.1.73 'dnf install epel-release net-tools nmap wget tar git -y'
3. Installation du RAID1
Prédisposition du RAID Logiciel
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "modprobe linear" >> /etc/rc.local' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "modprobe raid1" >> /etc/rc.local' [root@node-ipfsl ~]# ssh root@192.168.1.73 'chmod +x /etc/rc.local' [root@node-ipfsl ~]# ssh root@192.168.1.73 'source /etc/rc.local' [root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /proc/mdstat'
Partitionnement des disques en mode RAID
[root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb mklabel msdos' [root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc mklabel msdos' [root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb mkpart primary 1MiB 100%' [root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc mkpart primary 1MiB 100%' [root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdb set 1 raid on' [root@node-ipfsl ~]# ssh root@192.168.1.73 'parted -s /dev/sdc set 1 raid on' [root@node-ipfsl ~]# ssh root@192.168.1.73 'fdisk -l /dev/sd[b-c] |grep RAID' /dev/sdb1 2048 104857599 104855552 50G fd RAID Linux autodétecté /dev/sdc1 2048 104857599 104855552 50G fd RAID Linux autodétecté
Création du RAID 1
[root@node-ipfsl ~]# ssh root@192.168.1.73 'mdadm -E /dev/sd[b-c]'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cat /proc/mdstat'
Attendre la fin de la création du raid1
4. Préparation du volume RAID1
[root@node-ipfsl ~]# ssh root@192.168.1.73 'mkfs.ext4 /dev/md0' [root@node-ipfsl ~]# ssh root@192.168.1.73 'mkdir -p /mnt/ipfs-data' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "/dev/md0 /mnt/ipfs-data ext4 defaults 0 2" >> /etc/fstab' [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reload' [root@node-ipfsl ~]# ssh root@192.168.1.73 'mount -a' [root@node-ipfsl ~]# ssh root@192.168.1.73 'df -Th |grep ipfs' /dev/md0 ext4 49G 24K 47G 1% /mnt/ipfs-data
5. Règle Firewall
[root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --add-port={4001,5001,9094,9095,9096,8080}/tcp --permanent' [root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --add-port=4001/udp --permanent' [root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --remove-service={cockpit,dhcpv6-client} --permanent' [root@node-ipfsl ~]# ssh root@192.168.1.73 'firewall-cmd --reload'
6. Installation langage GO
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xvf go1.24.4.linux-amd64.tar.gz && mv go /usr/local' [root@node-ipfsl ~]# ssh root@192.168.1.73 'mkdir $HOME/gopath' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export GOROOT=/usr/local/go" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export GOPATH=$HOME/gopath" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's/export PATH/#export PATH/g' $HOME/.bashrc" [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export PATH=$PATH:$GOROOT/bin:$GOPATH/bin" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'source ~/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'go version' go version go1.24.4 linux/amd64
7. Installation des paquets nécessaires
Installation du paquet IPFS KUBO
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/kubo/v0.35.0/kubo_v0.35.0_linux-amd64.tar.gz'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf kubo_v0.35.0_linux-amd64.tar.gz kubo/'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home/kubo && bash install.sh' Moved ./ipfs to /usr/local/bin [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs --version' ipfs version 0.35.0
Installation du paquet cluster ipfs service
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/ipfs-cluster-service/v1.1.4/ipfs-cluster-service_v1.1.4_linux-amd64.tar.gz'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf ipfs-cluster-service_v1.1.4_linux-amd64.tar.gz ipfs-cluster-service/'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && mv ipfs-cluster-service/ipfs-cluster-service /usr/local/bin/' [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-service --version' ipfs-cluster-service version 1.1.4
Installation du paquet cluster ipfs ctl
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && wget https://dist.ipfs.tech/ipfs-cluster-ctl/v1.1.4/ipfs-cluster-ctl_v1.1.4_linux-amd64.tar.gz'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && tar -xzvf ipfs-cluster-ctl_v1.1.4_linux-amd64.tar.gz ipfs-cluster-ctl/'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'cd /home && mv ipfs-cluster-ctl/ipfs-cluster-ctl /usr/local/bin/' [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-ctl --version' ipfs-cluster-ctl version 1.1.4
Variables d’environnements
[root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export IPFS_PATH=/mnt/ipfs-data/ipfs" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export IPFS_CLUSTER_PATH=/mnt/ipfs-data/ipfs-cluster" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'echo "export LIBP2P_FORCE_PNET=1" >> $HOME/.bashrc' [root@node-ipfsl ~]# ssh root@192.168.1.73 'source $HOME/.bashrc'
8. Initialisation et service IPFS Peer node-ipfsp3
Initialisation nœud IPFS
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs init'
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Datastore.StorageMax \"40GB\"' [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001' [root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"*\"]'" [root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '[\"PUT\", \"POST\"]'" [root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '[\"http://192.168.1.73:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://node-ipfsp3.house.cp\"]'"
Mode privé du noeud
[root@node-ipfsl ~]# scp /mnt/ipfs-data/ipfs/swarm.key root@192.168.1.73:/mnt/ipfs-data/ipfs/swarm.key [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs bootstrap rm --all' removed /dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN removed /dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa removed /dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb removed /dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt removed /dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8 removed /ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ removed /ip4/104.131.131.82/udp/4001/quic-v1/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config Routing.Type dht' [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config --json AutoTLS.Enabled false' [root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs config --json Swarm.Transports.Network.WebTransport false' [root@node-ipfsl ~]# ssh root@192.168.1.73 "ipfs config --json Swarm.Transports.Network '{\"TCP\": true, \"QUIC\": false, \"Websocket\": false, \"Relay\": false, \"WebTransport\": false, \"WebRTCDirect\": false}'"
Service daemon ipfs
[root@node-ipfsl ~]# scp /etc/systemd/system/ipfs-peer.service root@192.168.1.73:/etc/systemd/system/ipfs-peer.service [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reexec && systemctl daemon-reload' [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl enable ipfs-peer && systemctl start ipfs-peer' [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl status ipfs-peer'
[root@node-ipfsl ~]# ipfs swarm peers /ip4/192.168.1.71/tcp/4001/p2p/12D3KooWJb4HwVbXFuxZSeFAUjocurt7gPw14G6CsZRwTpVgMNdP /ip4/192.168.1.72/tcp/4001/p2p/12D3KooWQ4VuBLMjVvmW4F4fhKxbArFG4Y9SQ3coVBo1PL29qrJx
9. Initialisation et service Cluster IPFS Peer node-ipfsp3
Initialisation nœud cluster IPFS
[root@node-ipfsl ~]# ssh root@192.168.1.73 'ipfs-cluster-service init'
Récupération la clef secrète du leader
[root@node-ipfsl home]# cat /mnt/ipfs-data/ipfs-cluster/service.json |grep -i secret "secret": "9dc28eb1c943ec508cc9f5a8b4c4726a5398be979c62521dd93252d62cb72196", [root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's/\"secret\": \".*\"/\"secret\": \"9dc28eb1c943ec508cc9f5a8b4c4726a5398be979c62521dd93252d62cb72196\"/' /mnt/ipfs-data/ipfs-cluster/service.json"
Copie du service Peers Cluster avec bootstrap leader
[root@node-ipfsl ~]# scp root@192.168.1.71:/etc/systemd/system/ipfs-cluster-peer.service root@192.168.1.73:/etc/systemd/system/ipfs-cluster-peer.service
Autoriser les accès Cluster API et Web URL
[root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's|"/ip4/127.0.0.1/tcp/9094"|"/ip4/0.0.0.0/tcp/9094"|' /mnt/ipfs-data/ipfs-cluster/service.json" [root@node-ipfsl ~]# ssh root@192.168.1.73 "sed -i 's|"/ip4/127.0.0.1/tcp/8080"|"/ip4/0.0.0.0/tcp/8080"|' /mnt/ipfs-data/ipfs/config"
10. Démarrer tous les services node-ipfsp3
Redémarrage peer IPFS
[root@node-ipfsl ~]# ssh root@192.168.1.73 "systemctl stop ipfs-peer && systemctl start ipfs-peer" [root@node-ipfsl ~]# ssh root@192.168.1.73 "systemctl status ipfs-peer"
Démarrage Cluster service IPFS
[root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl daemon-reexec && systemctl daemon-reload' [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl enable ipfs-cluster-peer.service && systemctl start ipfs-cluster-peer.service' [root@node-ipfsl ~]# ssh root@192.168.1.73 'systemctl status ipfs-cluster-peer.service'
11. Check du nouveau nœud
Liste les nœuds peers du cluster
[root@node-ipfsl ~]# ipfs-cluster-ctl peers ls |grep "192.168.1.7"
[root@node-ipfsl ~]# ipfs-cluster-ctl peers ls
Accès du fichier «Bob_l_eponge.jpg » répliqué précédemment
- http://192.168.1.73:8080/ipfs/QmP5rxgZxYjit96NnKqLB7KduPA79nmBwEJAAuxpcqefnm
Views: 0