我们用IPFS与他人共享文件最好的方法是自己也运行一个IPFS节点,通常我们可以在自己的电脑上运行这样一个节点。
但要保持这个节点中的内容能够尽量有效,我们就得24小时不关机。然而我们常用的家用电脑在性能方面是有限的,并且我们家用电脑所处的网络环境的带宽也是有限的,这使得我们运行的这种节点性能并不好。
更好的办法是在数据中心运行IPFS节点,将我们希望与人共享的文件放到在数据中心运行的节点中。这就能保证我们的文件能24小时在线并且他人能随时访问。
而在数据中心部署IPFS我们就需要用到VPS服务。所谓的VPS就是Virtual Private Server—-虚拟专用服务器,这是将一台服务器分割成多个虚拟专享服务器的服务。通常数据中心资源的租用就是由VPS提供商提供。
VPS提供商提供的服务能让我们在数据中心快速搭建我们自己的Linux服务器。
接下来我将分享如何在一个VPS搭建专属的IPFS节点。在这里我们使用的系统是Ubuntu 14.04LTS 64位系统。
第一步:安装IPFS
首先我们下载所需的工具文件包,运行下列命令:
> apt-get update
> apt-get install tar wget
接下来,我们下载IPFS最新的安装包,我们要选x86_64这个安装包,运行下列命令:
> wget https://dist.ipfs.io/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz
> tar xfv go-ipfs_v0.4.14_linux-amd64.tar.gz
# Move it into your bin. This requires root permissions.
> sudo cp go-ipfs/ipfs /usr/local/bin/
通常,运行一个公共服务,我们不建议以root权限来操作,因此我们专门为IPFS创建一个账户。
> adduser ipfs
> su ipfs
第二步:向IPFS存储文件
在这一步,我们首先初始化IPFS的配置:
> ipfs init
initializing ipfs node at ~/.ipfs
generating 2048-bit RSA keypair…done
peer identity: QmSyPpT59gPundixtnLRZePQBthJd934iy17bmQesgHUAw25pB
to get started, enter:
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Pundif2nemtYgPpHdWEz79ojWnPbdG/readme
注意,我们得到的peer ID会不同,我们搭建的这个节点的init文件会在我们默认的用户目录。
IPFS在工作时会搜索附近的节点。有些VPS提供商会把IPFS的这种搜索行为视为可疑而拒绝这种行为。为了防止这种现象的发生,我们在配置文件config文件中增加下列内容:
# 1. disable mDNS discovery
ipfs config –json Discovery.MDNS.Enabled false
# 2. filter out local network addresses
ipfs config –json Swarm.AddrFilters ‘[
"/ip4/10.0.0.0/ipcidr/8",
"/ip4/100.64.0.0/ipcidr/10",
"/ip4/169.254.0.0/ipcidr/16",
"/ip4/172.16.0.0/ipcidr/12",
"/ip4/192.0.0.0/ipcidr/24",
"/ip4/192.0.0.0/ipcidr/29",
"/ip4/192.0.0.8/ipcidr/32",
"/ip4/192.0.0.170/ipcidr/32",
"/ip4/192.0.0.171/ipcidr/32",
"/ip4/192.0.2.0/ipcidr/24",
"/ip4/192.168.0.0/ipcidr/16",
"/ip4/198.18.0.0/ipcidr/15",
"/ip4/198.51.100.0/ipcidr/24",
"/ip4/203.0.113.0/ipcidr/24",
"/ip4/240.0.0.0/ipcidr/4"
]’
现在我们可以启动自己的IPFS服务了。运行下列命令:
> ipfs daemon &
[1] 16252
Initializing daemon…
Adjusting current ulimit to 1024.
> Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.20.20.20/tcp/4001
Swarm listening on /ip4/73.114.34.208/tcp/37131
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
命令运行后,IPFS的daemon进程就会在后台运行。我们让它运行一段时间以便我们的节点能连接到其它IPFS节点。一段时间后,我们可以运行下列命令测试一下看它是否已经开始工作了:
> echo "hello world" | ipfs add
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
接着我们运行下列命令以确保IPFS节点已经有了我们的文件:
> ipfs refs local | grep QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
接着我们运行下列命令确保我们的文件已经被系统“Pin”了:
> ipfs pin ls | grep QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o recursive
在这个示例中,“ipfs add”会默认“Pin”一个文件,并返回它的哈希值。如果没有哈希值返回,则该文件会被垃圾清理器清除。为了防止垃圾清理器清除我们希望长期保留的文件,我们需要“Pin”它,运行下列命令:
> ipfs pin add QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
pinned QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o recursively
如果我们希望VPS服务在一启动时就启动IPFS,我们可以在“/etc/rc.local”文件中加上IPFS的条目。我们要以root权限运行下列命令:
sed -i -e ‘$i /bin/su ipfs -c "/usr/local/bin/ipfs daemon &"n’ /etc/rc.local
这样我们就在VPS上搭建了一个完整的IPFS节点。
我是IPFS/FIL社区发起人晓熙(加入社区,联系v号: liandaoxixi),IPFS/FIL是全球共识最大的去中心化存储项目,我会定期在社区分享专业的资讯,为IPFS/FIL爱好者建设一个共赢的学习社区。
参考链接:https://blog.ipfs.io/22-run-ipfs-on-a-vps/