星際檔案系統是一個點對點的分散式檔案系統,它以一種類似於 Bittorrent 的方式儲存和檢索檔案。IPFS 的預設安裝將您的計算機連線到全域性分散式網路。在某些情況下(隱私、機密性),私有 IPFS 網路優於連線到公共 IPFS 網路。
本文介紹在同一網路中的不同 Ubuntu 機器上建立私有 IPFS 網路的步驟。確保機器之間能互相發出聲音。
將不連線到公共網路,因此這個私有網路上的所有資料將只能被網路上的已知節點訪問。
對於 Mac OS,安裝步驟幾乎相同,只需下載 Mac 版本的 Go 和 IPFS 即可。要在 Windows 上安裝,你可以從微軟商店安裝 Ubuntu,並遵循以下步驟。
第一步:安裝 IPFS
安裝
要安裝最新版本的 IPFS,首先需要從 https://golang.org/doc/install 安裝 Go。
將存檔下載到磁碟。然後將檔案提取到中/usr/local,/usr/local/go並使用以下示例語句建立 Go。將以下語句中的檔名更改為本地檔案的名稱。
sudo tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz
/usr/local/go/bin透過執行以下命令,新增到 PATH 環境變數中:
export PATH=$PATH:/usr/local/go/bin
並應用更改
source $HOME/.profile
IPFS 安裝
要安裝 IPFS,請訪問 https://dist.ipfs。io/#Go-IPFS 並複製最新的 Go 實現 IPFS 的連結(見下圖)。
執行以下命令(使用複製的連結將第 3 行和第 4 行更新為最新版本)。
sudo apt-get updatewget https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gztar xvfz go-ipfs_v0.4.18_linux-amd64.tar.gzsudo mv go-ipfs/ipfs /usr/local/bin/ipfs
可選清理:
rm go-ipfs_v0.4.18_linux-amd64.tar.gzrm -R ./go-ipfs
要驗證您的安裝,請鍵入
ipfs version
結果如下
安裝 IPFS 不會立即啟動 IPFS 檔案系統,因此不會建立到公共 IPFS 網路的連線。
第二步:初始化節點
出於本教程的目的,我們將安裝兩個節點:一個引導節點和一個客戶端節點。引導節點是一個 IPFS 節點,其他節點可以連線到這個節點,以便找到其他節點。
因為我們正在建立自己的私有網路,所以我們不能使用來自公共 IPFS 網路的引導節點,所以我們將在稍後更改這些設定。選擇一臺機器作為引導節點,另一臺機器作為客戶端節點。
IPFS 在使用者主目錄中的隱藏目錄中初始化:〜/ .ipfs。該目錄將用於初始化節點。在引導節點和客戶端節點的兩臺計算機上,執行以下命令。
IPFS_PATH=~/.ipfs ipfs init
結果:
注意:我們用於IPFS_PATH=~/.ipfs強制 IPFS 將目錄與我們專用網路的配置檔案(和 swarm 檔案,請參閱第三步)一起使用。如果您已經在連線到公用網路的計算機上安裝了IPFS,則該ipfs add語句可能會使用此安裝,從而在公用網路上釋出文件。如果此安裝是 ipfs 的首次安裝,IPFS_PATH=~/.ipfs則可以省略。
第三步:建立一個專用網路
現在,我們已經安裝了兩個 IPFS 節點,可以輕鬆連線到公共 IPFS 網路,但這不是我們所需要的。要建立專用網路,我們將使用群集金鑰。該群金鑰將被此專用網路中的所有節點引用。
要生成群金鑰,有兩種選擇:使用 bash 指令碼或安裝金鑰生成器。
選項 1:Bash 指令碼
在 bootnode 上執行以下程式碼,並將生成的 swarm 檔案複製到所有客戶端節點的.ipfs 目錄。(注意:這適用於 Ubuntu,在 MacOS 上使用選項 2。)
echo -e“ /key/swarm/psk/1.0.0/\n/base16/\n`tr -dc</ dev / urandom | head -c64`”>〜/ .ipfs / swarm.key
選項 2:安裝金鑰生成器
第二種選擇是安裝群金鑰生成器。如果您使用了上面的 bash 指令碼,則可以跳過本節,並繼續執行“第四步:引導 IPFS 節點”。群金鑰生成器僅在引導節點上執行。要安裝群體金鑰生成器,我們使用go get,它使用 git。如果尚未在引導節點上安裝 git,那麼可以使用。
sudo apt-get install git
執行以下命令以安裝群金鑰生成器:
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
執行swarm金鑰生成器以在.ipfs目錄中建立swarm檔案:
./go/bin/ipfs-swarm-key-gen > ~/.ipfs/swarm.key
將生成的swarm檔案複製到所有客戶端節點的.ipfs目錄。
第四步:引導 IPFS 節點04
客戶端節點使用引導節點來連線到專用 IPFS 網路。載入程式將客戶端連線到網路上可用的其他節點。在我們的專用網路中,我們無法使用公共 IPFS 網路的載入程式,因此在本節中,我們將使用載入程式節點的 ip 地址和對等身份替換現有的載入程式。
首先,從引導節點和客戶端節點中刪除載入程式節點的預設條目。在兩臺計算機上使用命令:
IPFS_PATH=~/.ipfs ipfs bootstrap rm --all
檢查結果以檢視載入程式是否為空:
IPFS_PATH=~/.ipfs ipfs config show
結果:
現在,將您的引導節點的 ip 地址和對等身份(雜湊地址)新增到每個節點(包括引導節點)。
可以使用找到引導節點的 ip 地址hostname -I。
對等身份是在 IPFS 初始化期間建立的,可以透過以下語句找到。
IPFS_PATH=~/.ipfs ipfs config show | grep "PeerID"
結果:
add bootstrap如下彙編語句。
IPFS_PATH=~/.ipfs ipfs bootstrap add /ip4//tcp/4001/ipfs/
例:
IPFS_PATH=~/.ipfs ipfs bootstrap add /ip4/172.25.10.5/tcp/4001/ipfs/QmdbaLZsKA94tsYeKJEPyLThWARFCtWyJWuudBUd4z9KBU
在引導節點和客戶端節點上執行您的語句。
第五步:啟動網路
已安裝了專用網路,因此我們可以測試該網路。我們將使用環境變數來確保如果我們的配置中有錯誤或專用網路未完全配置,則節點將不會連線到公共 IPFS 網路,並且守護程序會失敗。
相同的環境變數是“LIBP2P_FORCE_PNET”,要啟動 IPFS 節點,您只需使用 ipfs daemon 帶有以下語句的命令來啟動守護程式。
export LIBP2P_FORCE_PNET=1IPFS_PATH=~/.ipfs ipfs daemon &
export LIBP2P_FORCE_PNET=1表示您將節點強制為私有。如果未配置專用網路,則守護程式將無法啟動。
在我們的例子中,命令和輸出如下所示:
請注意訊息日誌說明 Swarm is limited to private network of peers with the swarm key,這表示我們的專用網路執行正常。現在,在一個節點上將檔案新增到我們的專用網路,然後嘗試從另一節點訪問該檔案。
mkdir ipfstestcd ipfstestecho "Hello World!" > file1.txtIPFS_PATH=~/.ipfs ipfs add file1.txtIPFS_PATH=~/.ipfs ipfs cat
結果:
該ipfs add語句返回上載檔案的雜湊碼。可以從其他節點使用此雜湊碼來檢索檔案。如果將同一檔案上載到另一個節點,則會生成相同的雜湊,因此該檔案不會在網路上儲存兩次。
要上傳完整目錄,請新增目錄名稱和-r選項(遞迴)。目錄及其中的檔案被雜湊:
也可以透過瀏覽器訪問檔案。開啟瀏覽器並輸入:
http://127.0.0.1:8080/ipfs/QmfM2r8seH2GiRaC4esTjeraXEachRt8ZsSeGaWTPLyMoG
結果:
本教程到此結束,以構建專用的對等 IPFS 網路。在此網路中,所有文件均為該網路參與者的私有和機密資訊。