快速搭建私有云服務 go-btfs

laocheng發表於2021-12-10

快速搭建私有云服務 go-btfs

1. go-btfs 是什麼?

go-btfs go-btfs 是一個去中心化的檔案儲存平臺,無論圖片、檔案、視訊等等各類檔案。 每個人都可以在自己電腦上安裝部署 BTFS 節點,然後大家的節點相互連線,構成一個整體網路, 網路中某一個節點上傳檔案,其他節點就像訪問本地一樣直接下載使用。同時,它還支援冗餘備份,使用 reed-solomn 方案,這塊更加牛逼。

2. 怎麼使用

2.1 下載 github.com/tron-us/go-btfs,並編譯

由於依賴第三方庫較多,需要 download 一下 然後進入指定目錄,進行編譯

$ git clone git@github.com:TRON-US/go-btfs.git

$ cd go-btfs

$ git checkout release

$ go mod download

$ cd cmd/btfs

$ go build

此處生成 btfs 可執行檔案,可以匯入到 /usr/local/bin 下面處理。

2.2 啟動本地 BTFS 節點

# 設定BTFS節點儲存地址空間,換一個就可以起一個新節點
$export BTFS_PATH=/Users/laocheng.cheng/.btfs.ll

$ btfs init 
Generating TRON key with BIP39 seed phrase...
Master public key:  xpub661MyMwAqRbcFYYeCS183yzjqyHjDAYMAdJ6oQPZNqwu3CyH6SgQ5FgvYYNWQA2v8gZWkZJ25Lr4gKuGHf21izyQ5s7aKjMuHGPRJ7AeGpq
initializing BTFS node at /Users/laocheng.cheng/.btfs.lll
generating btfs node keypair with TRON key...done
peer identity: 16Uiu2HAmCQadnAGfADbwi9DmdjZcHPzFNR3r72hfnMPrCEQKjN2k
to get started, enter:

    btfs cat /btfs/QmZjrLVdUpqVU6Pnc8pBnyQxVdpn9J8tfcsycP84W6N93C/readme

$ btfs daemon
Initializing daemon...
go-btfs version: 1.5.3-17053fc
Repo version: 10
System version: amd64/darwin
Golang version: go1.15.15
Repo location: /Users/laocheng.cheng/.btfs.lll
Peer identity: 16Uiu2HAmCQadnAGfADbwi9DmdjZcHPzFNR3r72hfnMPrCEQKjN2k
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.106.19/tcp/4001
Swarm listening on /ip4/2.0.1.44/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.106.19/tcp/4001
Swarm announcing /ip4/2.0.1.44/tcp/4001
Swarm announcing /ip4/203.12.203.2/tcp/4001
Swarm announcing /ip4/219.143.35.171/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
HostUI: http://127.0.0.1:5001/hostui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Remote API server listening on /ip4/127.0.0.1/tcp/5101
Daemon is ready

# 配置為host儲存模式
$ btfs config profile apply storage-host

btfs daemon啟動後, /Users/laocheng.cheng/.btfs.lll 這個是我們的地址空間, 16Uiu2HAmCQadnAGfADbwi9DmdjZcHPzFNR3r72hfnMPrCEQKjN2k 這個是節點 ID,其他節點就是通過節點 ID 和其溝通。

2.3 再次啟動一個新節點

新起一個終端,過程同上

# 設定BTFS節點儲存地址空間
$export BTFS_PATH=/Users/laocheng.cheng/.btfs.ggg

$ btfs init 
......

$ btfs daemon

# 配置為host儲存模式
$ btfs config profile apply storage-host
......

2.4 組建本地私有網路

特別注意的問題,現在啟動的節點,是和 BTFS 真實網路連線,我們需要一些修改,變成本地網路方式。 此時,選中一個終端,即一個節點;先 bootstrap 設空,然後把自己建立的節點,全部加入(當然,不用加該終端節點)。

btfs config --json  Bootstrap "[]"
btfs bootstrap add /ip4/127.0.0.1/tcp/54001/p2p/16Uiu2HAmCQadnAGfADbwi9DmdjZcHPzFNR3r72hfnMPrCEQKjN2k
btfs bootstrap add /ip4/127.0.0.1/tcp/54001/p2p/16Uiu2HAm3GdbCk6Uwst2t3zoYTrgHbifjqJTpLbHHUUPBcBT8oqC
btfs bootstrap add /ip4/127.0.0.1/tcp/54001/p2p/16Uiu2HAmCQadnAGfADbwi9DmdjZcHPzFNR3r72hfnMPrCEQKjN2k

此時,我們自己的節點,構成了一個私有云儲存網路。

2.5 上傳檔案 及 任意節點可檢視

開啟一個節點(終端),上傳檔案如下

$ btfs add s
added Qmefmseqwa8un9WXEfqb2GY2ncWmmB2BsAqtcjVJaHahL3 s
 31 B / 31 B [================================================================] 100.00%

開啟另外一個節點(終端),下載檔案到本地

$ btfs get QmduujE1EgUajwCj2bxjdp4LWz62aameQJmQc7pcBbeAmC
Saving file(s) to QmduujE1EgUajwCj2bxjdp4LWz62aameQJmQc7pcBbeAmC
 27 B / 27 B [================================================================] 100.00% 0s

如此一來,私有云的上傳下載就搞定了。

3.具體應用

上面我們就私有云的搭建,及上傳、下載操作搞定了。 那麼對應的應用方案就容易理解,比如你開發一個儲存網站。後端資料用我們們的私有云,上傳一個 key(檔名),對應一個 value(檔案 hash)。 然後我們把 key:value 記錄到 mysql or redis。一個儲存類網站的基礎功能就完成啦。

總結

go-btfs go-btfs 是一個去中心化的檔案儲存平臺,各種型別檔案都能上傳,並且安裝方便,經過基本配置,就可以快速搭建自己的私有云服務。 非常推薦大家使用,尤其企業內部雲平臺搭建使用。

以上所有內容均採用最新官方案例做示例

參考資料

更多原創文章乾貨分享,請關注公眾號
  • 快速搭建私有云服務 go-btfs
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章