「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 s31 B / 31 B [================================================================] 100.00%
打开另外一个节点(终端),下载文件到本地
$ btfs get QmduujE1EgUajwCj2bxjdp4LWz62aameQJmQc7pcBbeAmC
Saving file(s) to QmduujE1EgUajwCj2bxjdp4LWz62aameQJmQc7pcBbeAmC27 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 的大家族哟~
「GoCN酷Go推荐」快速搭建私有云服务 go-btfs相关推荐
- 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...
PairMesh是什么? Pairmesh是一款先进的虚拟局域网(VPN)工具,用来搭建与访问安全,易用,高性能的点对点的软件定义虚拟局域网,为远程办公的网络连接问题提供了开箱即用的解决方案. 拥抱开 ...
- 「GoCN酷Go推荐」JSON 数据获取器 JID
01 推荐理由 JSON 格式数据适用范围非常广泛,一个内容丰富的json数据可能很大,使用 JID 可以让你非常舒服的获取到想要到数据. 02 简介 JID 是一个过滤JSON格式数据 cli ...
- 「GoCN酷Go推荐」Golang轻量级桌面程序wails2教学
01 推荐理由 不依赖cgo!不依赖cgo!不依赖cgo!真的不依赖cgo,且跨平台,原生渲染 无嵌入式浏览器,轻量级,生成的文件很小,而且只有一个可执行文件就可运行. 02 功能介绍 后端使用标准 ...
- 「GoCN酷Go推荐」Go 语言高性能图像处理神器 h2non/bimg
0 推荐背景 日常业务开发中常会遇到各种图像处理需求,如,图片大小调整.翻转.旋转.提取大小.加水印.图片模糊化,格式转换,修剪等等:图像处理根据业务需求一部分图像处理需求在前端完成,如,用户裁剪编辑 ...
- 「GoCN酷Go推荐」OBS连接器go-obs-websocket
推荐理由 互联网的兴起带动了直播行业的火热,除了少数直播网站有自己的推流工具之外,OBS是主流的推流工具,广泛应用在直转播技术之上. 简介 go-obs-websocket是一个与OBS进行webso ...
- 「GoCN酷Go推荐」交互式命令行工具库survey
☆ 什么是 survey? ☆ survey 可以让你方便的在终端上构建交互式和可访问提示的应用,支持ANSI ☆ 安装 ☆ go get github.com/AlecAivazis/survey/ ...
- 「GoCN酷Go推荐」QQ机器人 go-cqhttp
什么是 go-cqhttp?✦ QQ机器人,可以做的事儿太多了,比如一个UP主需要群发多个QQ群,以便通知粉丝们开播:再比如可以检测群内或发给自己的消息,而通过代码直接回复做的简单回复.比如检测群内有 ...
- 「GoCN酷Go推荐」go语言位操作库 — bitset
bitset库实现了bitsets数据结构,这是一种正整数和布尔值映射关系的结构,它比map[uint]bool更高效 什么是bitsets✦ bitsets基本思想是用一个bit位来标记某个元素对应 ...
- 「GoCN酷Go推荐」高性能内存缓存 ristretto
背景 ristretto 是 dgraph 团队开源的一款高性能内存缓存库,旨在解决高并发场景下的缓存性能和吞吐瓶颈.dgraph 专攻的方向是高性能图数据库,ristretto 就是其图数据库和 K ...
最新文章
- 如果可以,我想给这本书打十星!
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数011,ocr,字符识别
- Python+Selenium练习篇之11-浏览器上前进和后退操作
- php设计模式的六大原则(六):迪米特法则
- java zoneoffset,java - 如何在java8中获取默认的ZoneOffset? - SO中文参考 - www.soinside.com...
- Mysql 无法插入中文,中文乱码解决
- 控制元素显示和隐藏的方式及区别、内容溢出处理(区域滚动)、透明性、字体图标、常见字体、自定义字体设计、网站图标、CSS代码分析
- macos 下 vmware fusion 安装 vmware tools教程
- P1099 树网的核
- Docker 快速安装教程
- [Hadoop] - SSH免密码登录
- Web前端开发最常见的八种编程软件
- 处理minidump文件用到的“工具”的分享
- 算术平均值c语言函数名称,求算术平均数和集合平均数的源代码
- PCL-ICP(IterativeClosestPoint)源码解析
- 视频格式转换器下载哪个好?分享:3种TS到MP4的转换器
- 求解Ax=0:主变量、自由变量、特殊解
- 基于IP-PBX的VoIP系统解决方案
- iOS开发 --- 开发工具
- RedisDesktopManager源码编译windows版(基于2022.1版本)