嘟嘟社区

搭建一个国内高可用的IPFS网关节点,低价打造去中心化无...


简介

先简单说一下IPFS网关的工作原理,IPFS本身是一个P2P的文件传输系统,网关则是其提供的通俗易用的一个功能,可以让人通过http访问IPFS系统上的内容。当我们使用网关访问一个IPFS上的数据时,服务器后台之中的IPFS节点服务首先会在本地搜索是否有该数据,如果没有就去给连接的其他IPFS节点发送该数据的CID数据,其他节点有的话就会先拉取到本地节点然后再通过网关来提供给用户。你可以将IPFS网关看成是BT客户端的提供的Web服务器。

简单了解IPFS网关的功能之后我们来自建一个试试看

## 搭建IPFS网关

### IPFS节点部署

腾讯云轻量服务器活动价:

![](https://jpggod.com/images/2022/09/23/chrome_n8KsajBp0s.png)

购买地址:[腾讯云轻量服务器专场](https://url.cn/pjVo701n)

我准备的是2C4G6M。

镜像选择的是宝塔。

购买完成之后我们需要开放一些IPFS需要用到的端口8080端口(默认网关端口)4001(节点通信端口)5001(API节点)

#### IPFS初始化

官方教程地址:https://docs.ipfs.tech/install/command-line/#official-distributions

##### 1、下载安装服务

1.1、下载压缩包(选择合适的下载源)

“`bash

  1. wget https://dist.ipfs.tech/kubo/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (官网)
  2. wget https://github.com/ipfs/kubo/releases/download/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (GitHub)
  3. wget https://ghproxy.com/https://github.com/ipfs/kubo/releases/download/v0.15.0/kubo_v0.15.0_linux-amd64.tar.gz (GitHub下载加速服务适合国内)

复制代码

“`

1.2、解压

“`bash
tar -xvzf kubo_v0.15.0_linux-amd64.tar.gz
“`

1.3、进入`kubo`文件夹并如下安装脚本

“`bash
cd kubo
bash install.sh
“`

1.4、测试IPFS是否正确安装

ipfs –version

这样就是安装完成了。

2、初始化配置

2.1、设置环境变量并初始化

如果你直接初始化的话IPFS会直接在当前用户文件夹下生成一个`./ipfs`隐藏文件夹。

如果你想初始化在其他指定硬盘/文件夹就需要**先设置环境变量**再初始化

假设我们要设置的目录为`/root/ipfs`

先创建文件夹

“`bash
mkdir /root/ipfs
“`

设置环境变量并初始化

“`bash
export IPFS_PATH=/root/ipfs
ipfs init
“`

这样就是初始化配置成功了。

##### 3、快速开始

3.1、查看说明

“`bash
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme
“`

3.2 基础功能

3.2.1 添加文件/文件夹

“`
ipfs add filename (添加文件至ipfs节点)
ipfs add -r dir (添加文件夹至ipfs节点)
“`

我一共添加了三个文件分别是1.png 1.mp4 1.txt 图片、视频、文档都有,返回的Qm开头的就是文件的CID,我们后面用网关访问就需要用到CID了。

如图所示添加相同文件CID的不变,文件夹内每个文件都有单独的CID,文件夹本身也有个CID并保持了原有的结构。

3.2.2 读取数据

命令行下只能读取文本数据,我们以上面的1.txt为例

“`bash
ipfs cat QmYWAifyw2V5dEq7c5GgdSPffeKoYXQZggnYzw5RbXpig4
“`

3.2.3 长期保存某数据

根据IPFS的设置如果超过设置容量的阈值就会自动删除部分冷门数据,所以如果想长期保存某些数据还需要进行额外操作。

“`
ipfs pin add CID (pin文件至本地存储)
ipfs pin ls [CID] (列出所有文件/有CID参数时列出该文件状态)
“`

3.2.4、删除数据

“`
ipfs pin rm CID
“`

这个没啥好说的。

更多其他的命令可以自行探索

IPFS网关部署

启动IPFS

建议先安装screen ,在screen session里执行,这个命令不能直接后台运行,这也算是比较蛋疼的一点。

  1. # 安装screen
  2. apt install screen -y (ubuntu/debian)
  3. yum install screen -y (centos)
  4. # 用screen新建一个session
  5. screen -R ipfs
  6. # 开启ipfs
  7. ipfs daemon

复制代码

然后Ctrl +A ,Ctrl +D挂起screen即可

#### 公网访问网关

1、反向代理

反向代理也没啥好说的,解析域名到服务器IP,然后先申请SSL证书然后再开启反向代理,把网关地址127.0.0.1:8080反向代理即可。

![]()
然后直接访问域名/ipfs/CID即可

如我想访问上面添加的data文件夹,它的CID为:Qme6r14w9pyGrjMU9UUzkNAuSmCY3d1svZtvNRfyyhNHFL。假设我的域名是ipfs.2demo.top则访问https://ipfs.2demo.top/ipfs/Qme6r14w9pyGrjMU9UUzkNAuSmCY3d1svZtvNRfyyhNHFL

这样你就成功搭建了一个境内可用的IPFS网关了。

2、修改配置

如果你只开放网关的话只要修改配置里的Address.Gateway,如果你要用图形界面(webui)还需要修改Address.API和API.HTTPHeaders

一个修改为0.0.0.0,一个修改为服务器内网IP(没有内网IP就用公网IP)就行

要用webui可以先进入IP:5001/webui会自动弹出来一个修改配置的命令,复制粘贴然后重启ipfs即可

复制2之中的命令到服务器运行一下然后重启ipfs之后就会显示已连接IPFS了

你可以查看ipfs节点状态,文件,节点连接情况等。不过还是不建议公开webui,没有鉴权很容易导致别人乱存东西。

由于字数限制,删减了部分内容,有兴趣的可以前往博客查看全文
全文地址:https://2demo.top/403.html

是不是别人用你的网关下载色色暴恐,你会进去?

Hetzner 发表于 2022-9-29 17:11
是不是别人用你的网关下载色色暴恐,你会进去?

肯定得设置防盗链之类的,也可以限定连接指定节点,这样别人的资源就不能通过你的网关下载了