「GoCN酷Go推荐」快速搭建私有云服务 go-btfs

1. 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 官方文档参考(https://docs.btfs.io/docs)

《酷Go推荐》招募:

各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到

新的库,并且知道怎么用。

大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名

扫码也可以加入 GoCN 的大家族哟~

d2274f6c04b412d0ba2ef21f3b8ee243.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值