通过5个步骤部署专用IPFS网络

IPFS科极星球 · · 133 次点击 · · 开始浏览    

作者:Sander van Laar

IPFS(星际文件系统)是一种点对点分布式文件系统,以类似BitTorrent的方式存储和检索文件。 IPFS的默认安装方式是将您的计算机连接到全局分布式网络。在某些情况下(隐私,机密性),私有IPFS网络优先于连接到公共IPFS网络。

本文介绍在同一网络中的不同Ubuntu计算机上创建专用IPFS网络的步骤。确保他们可以相互联通。

不与公共网络建立连接,因此该专用网络上的所有数据只能由网络上的已知对等方访问。

对于Mac OS,安装步骤几乎相同,只需下载Mac版本的Go和IPFS即可。要在Windows上安装,您可以从Microsoft商店安装Ubuntu并按照以下步骤操作。

第1步 - 安装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的链接(见下图)。在撰写本文时,最新版本为Ubuntu版本v0.4.18。


运行以下命令(使用复制的链接将第三行和第四行更新为最新版本)。

sudo apt-get update

wget https://dist.ipfs.io/go-ipfs/v0.4.18/go-ipfs_v0.4.18_linux-amd64.tar.gz

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

sudo mv go-ipfs / ipfs / usr / local / bin / ipfs


可选清理:

rm go-ipfs_v0.4.18_linux-amd64.tar.gz

rm -R ./go-ipfs

要验证您的安装,请键入

ipfs version

结果如下

安装IPFS不会立即启动IPFS文件系统,因此不会与公共IPFS网络建立连接。

第2步 - 初始化节点

出于本教程的目的,我们将安装两个节点:引导节点和客户机节点。引导节点是其他节点可以连接到的IPFS节点,以便查找其他节点。由于我们正在创建自己的专用网络,我们无法使用公共IPFS网络中的引导节点,因此我们稍后将更改这些设置。选择一台计算机作为引导节点,选择一台作为客户机节点。

IPFS在用户主目录的隐藏目录中初始化:~/ .ipfs。该目录将用于初始化节点。在两台计算机,引导节点和客户机节点上,运行以下命令。

IPFS_PATH =〜/ .ipfs ipfs init

结果:

注意:我们使用IPFS_PATH =〜/ .ipfs强制IPFS将目录与我们的专用网络的配置文件(和swarm文件,参见步骤3)一起使用。如果已在计算机上安装了连接到公共网络的IPFS,则ipfs add语句可能会使用此安装,从而在公共网络上发布文档。如果此安装是第一次安装ipfs,则可以省略IPFS_PATH =〜/ .ipfs。

第3步 - 创建专用网络

我们现在已经安装了两个IPFS节点,可以轻松连接到公共IPFS网络,但这不是我们需要的。要创建专用网络,我们将使用群组密钥。此群组密钥将由此专用网络中的所有节点引用。

swarm密钥生成器仅在引导节点上执行,并在Go编程语言上运行。要安装swarm密钥生成器,我们使用go get,它使用git。如果尚未在引导程序节点上安装git,请执行此操作

sudo apt-get install git

运行以下命令以安装swarm密钥生成器:

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目录中。


第4步 - 引导IPFS节点


客户端节点使用引导节点连接到专用IPFS网络。引导程序将客户端连接到网络上可用的其他节点。在我们的专用网络中,我们不能使用公共IPFS网络的引导程序,因此在本节中,我们将使用引导程序节点的IP地址和对等标识替换现有引导程序。

首先,从引导节点和客户机节点中删除引导节点的默认条目。在两台计算机上使用该命令:

IPFS_PATH =〜/ .ipfs ipfs bootstrap rm --all

检查结果以查看引导程序是否为空:

IPFS_PATH =〜/ .ipfs ipfs config show

结果:

现在将引导节点的IP地址和对等身份(哈希地址)添加到每个节点包括引导节点。

可以使用hostname-I找到引导节点的IP地址。

对等身份是在IPFS初始化期间创建的,可以通过以下语句找到。

IPFS_PATH =〜/ .ipfs ipfs config show | grep“PeerID”

结果:

按如下方式编写add bootstrap语句。

IPFS_PATH=~/.ipfs ipfs bootstrap add /ip4/<ip address of bootnode>/tcp/4001/ipfs/<peer identity hash of bootnode>

例:

IPFS_PATH=~/.ipfs ipfs bootstrap add /ip4/172.25.10.5/tcp/4001/ipfs/QmdbaLZsKA94tsYeKJEPyLThWARFCtWyJWuudBUd4z9KBU

在引导节点和客户机节点上运行语句。

步骤5-启动网络

私有网络已安装,因此我们可以测试此网络。我们将使用环境变量来确保如果我们的配置中存在错误或者未完全配置专用网络,则节点不会连接到公共IPFS网络,并且守护进程会失败。

相同的环境变量是“LIBP2P_FORCE_PNET”,要启动IPFS节点,您只需使用带有以下语句的ipfs daemon程序命令启动守护程序。

export LIBP2P_FORCE_PNET=1

IPFS_PATH=~/.ipfs ipfs daemon &

export LIBP2P_FORCE_PNET = 1表示您强制您的节点是私有的。如果未配置专用网络,则守护程序将无法启动。

在我们的例子中,命令和输出如下所示:

请注意消息日志说明Swarm is limited to private network of peers with the swarm key,这意味着我们的专用网络正常运行。现在在一个节点上将文件添加到我们的专用网络,并尝试从另一个节点访问它。

mkdir ipfstest

cd ipfstest

echo "Hello World!" > file1.txt

IPFS_PATH=~/.ipfs ipfs add file1.txt

IPFS_PATH=~/.ipfs ipfs cat <hash of the file>

结果:

ipfs add语句返回上传文件的哈希码。可以从其他节点使用此哈希码来检索文件。如果在另一个节点上上载相同的文件,则会生成相同的哈希,因此该文件不会在网络上存储两次。

要上载完整目录,请添加目录名称和-r选项(递归)。目录及其中的文件是哈希的:

这些文件也可以通过浏览器访问。打开浏览器并输入:

http://127.0.0.1:8080/ipfs/QmfM2r8seH2GiRaC4esTjeraXEachRt8ZsSeGaWTPLyMoG

结果:



                                                     参与IPFS生态建设——加入我们

                                         加入科极星球,我们为你提供专业级IPFS矿机

                                                让错过BTC, ETH首批矿工福利的你

                                                      不再错过IPFS的挖矿红利 !

                                                         扫码加入IPFS交流社群

本文来自:简书

感谢作者:IPFS科极星球

查看原文:通过5个步骤部署专用IPFS网络

入群交流(该群和以上内容无关):Go中文网 QQ交流群:731990104 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网

133 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传