星际文件系统是一个点对点的分布式文件系统,它以一种类似于 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 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 网络的连接。
第二步:初始化节点02
出于本教程的目的,我们将安装两个节点:一个引导节点和一个客户端节点。引导节点是一个 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'a-f0-9'</ 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/<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
在引导节点和客户端节点上运行您的语句。
第五步:启动网络
已安装了专用网络,因此我们可以测试该网络。我们将使用环境变量来确保如果我们的配置中有错误或专用网络未完全配置,则节点将不会连接到公共 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 网络。在此网络中,所有文档均为该网络参与者的私有和机密信息。