搭建IPFS網絡私網教程

前言

項目中需要使用ipfs,所以自己搭建一個。

1. 準備機器

準備幾臺虛擬機,不分主從,我用的是centos7,下面的教程也是基於centos7.

4臺虛擬機

主機名 ip 說明
centos-11 *.*.*.11 不分主從 01
centos-12 *.*.*.12 不分主從 02
centos-13 *.*.*.13 不分主從 03
centos-14 *.*.*.14 不分主從 04

2. 下載與安裝

//各節點都要執行
1.到ipfs官網下載安裝包 (直接使用已編譯版本,也可以自己編譯)

https://ipfs.io/ipns/dist.ipfs.io/go-ipfs/v0.4.22/go-ipfs_v0.4.22_linux-amd64.tar.gz

2.解壓

tar xvfz go-ipfs_v0.4.22_linux-amd64.tar.gz

3.安裝

cd go-ipfs
./install.sh

4.測試

ipfs help

如果測試失敗,檢查/usr/local/bin路徑是否處於PATH中。如無則添加到/etc/profile中

3. 初始化節點

各節點都要執行

  1. 初始化
 ipfs init
    //生成的結果如下:
    initializing IPFS node at /root/.ipfs
    generating 2048-bit RSA keypair...done
    peer identity: QmPMo2L*************zDCGScNN
    to get started, enter:
    ipfs cat /ipfs/QmS4ustL54*******a8nUH4uVv/readme
  1. 記下節點id:
01:Qmee3b4p*********************YniPJynb
02:QmZfJxkA*********************gkm7hzFE
03:QmPaid8k*********************cBBTuU6k
04:QmPMo2LV*********************DfCGScNN
在各個節點的home目錄新增了ipfs的文件夾.ipfs:
cd ~/.ipfs
  1. 修改存儲容量
    修改~/.ipfs/config中"StorageMax"字段即可(目前默認爲10GB)
  2. 修改訪問路徑
    IPFS的API和GATEWAY默認訪問路徑爲127.0.0.1.如需要其他機器訪問,需要修改~/.ipfs/config中API和GATEWAY字段,將127.0.0.1替換爲0.0.0.0
  3. http corps問題
    非本地訪問會產生跨域問題,需要在設置中註明。
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

注意: 開發環境設置中“*”意爲允許所有域名訪問,生產環境下應該將跨域設置爲指定域名或關閉跨域

  1. 查看節點ID
    如果忘記了id,可以通過ipfs id命令查看

4. 創建共享密鑰

私有網絡內所有節點需要共享一套密鑰

在任意一個虛擬機上執行

1.下載密鑰工具
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
2.生成密鑰
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
3.將密鑰分發到各個節點
scp ~/.ipfs/swarm.key root@*.*.*.11:~/.ipfs/
scp ~/.ipfs/swarm.key root@*.*.*.12:~/.ipfs/
scp ~/.ipfs/swarm.key root@*.*.*.13:~/.ipfs/

上面省略的是ip地址

5. 添加啓動節點

所有節點執行

1.刪除默認啓動節點(刪除公網節點)
ipfs bootstrap rm all 
2.各節點分別將其他節點添加到bootstrap列表
ipfs bootstrap add /ip4/被添加節點的ip地址/tcp/4001/ipfs/被添加節點的ID值

//11服務器:
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********gkm7hzE
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********BBTuU6k
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********zDCScNN

//12服務器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********GcBuU6k
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********DCGScNN

//13服務器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********iP7hzFE
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********zFGScNN

//14服務器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********km7hzFE
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********GBTuU6k

3.啓動節點
ipfs deamon
//後臺啓動 nohup ipfs daemon &
4.測試
在14機器上傳文件:
ipfs add a.tar.gz
//輸出:
//added QmUct****************nwwXQQ a.tar.gz
//5.10 MiB / 5.10 MiB [=============================] 100.00%

在其他機器下載:
ipfs get QmUct***************nwwXQQ
//輸出:
//Saving file(s) to QmUct********************nwwXQQ
//5.10 MiB / 5.10 MiB [=============================] 100.00% 0s

注意:

  1. daemon守護進程如果直接運行,關閉會話窗口後就會失效
  2. daemon守護進程前臺運行狀態下,使用CTRL+C退出
  3. daemon後臺啓動後需要使用kill -9命令殺死才能停止
  4. 每一次修改config後都需要重啓daemon

6. 設置ipfs服務

關閉所有daemon後所有節點都需要執行:

cd /lib/systemd/system/
vim ipfs.service 

[Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target

:wq

service ipfs start

7.安裝可視化管理頁面WEBUI

在11服務器內的任意位置執行以下命令:

git clone https://github.com/ipfs/webui
cd webui
npm install
npm start

成功後訪問 http://*.*.*.11:3000即可打開頁面

如果頁面顯示 Failed to connect to the API. 需要在頁面下方的API ADDRESS處配置API地址:

/ip4/*.*.*.11/tcp/5001

8.API

所有命令行支持的命令都有對應的Restful api實現,官方文檔:

https://docs.ipfs.io/reference/api/http/

中文參考:

https://blog.csdn.net/weixin_43132569/article/details/82628570

SDK

有GO語言實現的SDK:

https://github.com/ipfs/go-ipfs-api

錯誤

ipfs id報錯
Error: cannot connect to the api. Is the deamon running? To run as a standalone CLI command remove the api file in $IPFS_PATH/api

解決方法:刪除~/.ipfs/api重試即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章