IPFS_私网搭建

本文详细介绍了如何搭建IPFS私网,包括安装Go环境、下载并安装IPFS客户端、解决跨域问题、创建和分发共享密钥、删除默认节点、添加节点、启动节点以及文件上传与读取的步骤。适合需要进行IPFS私网部署的读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPFS 私网搭建

1 安装go环境

1.1 下载go安装包

​ 打开 链接 选择并下载合适的安装包

在这里插入图片描述

1.2 解压安装包

将go安装包解压至 /usr/local/ 目录下

tar -zxvf go1.18.2.linux-amd64.tar.gz -C /usr/local/

在这里插入图片描述

1.3 添加环境变量

1 在控制台键进入vim /etc/profile

2 在最后一行添加

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

3 键入 source/etc/profile

4 键入 go -version查看go的版本,控制台正常输出go版本号,则说明go安装成功

2 安装IPFS客户端

2.1 下载客户端

打开 官网链接 选择并下载合适的客户端版本

ipfs官网和客户端下载需要科学上网才可下载,可使用 百度网盘下载 ,提取码 xr7s,目前百度网盘提供的是0.12.2版本

2.2 安装ipfs

1 解压ipfs安装包,解压到当前目录即可

2 解压后,会在当前目录生成一个 go-ipfs 的文件夹

3 cd进入 go-ipfs文件夹

4 执行 install.sh 文件

tar -zxvf go-ipfs_v0.12.2_linux-amd64.tar.gz

cd go-ipfs 

./install.sh	

5 执行 ipfs help 检查ipfs安装是否成功,控制台输出ipfs相关命令,则说明ipfs安装成功

3 搭建私网

3.1 节点初始化

3.1.1 节点初始化

每个节点都要执行

键入 ipfs init ,控制台会输出节点的相关信息

信息主要包含节点的id和节点的初始化目录
在这里插入图片描述

用root账户登录的话,会在root目录下生成一个 .ipfs 文件夹,如果使用其他账户登录,则会在 /home/目录下生成 .ipfs文件夹

如果忘记节点id,可以通过 ipfs id 查看

在这里插入图片描述

3.1.2 跨域问题

每个节点都要执行

节点初始化完成后,非本地访问会产生跨域问题,分别键入以下命令解决跨域

本次搭建只是为了测试,”*” 表示允许所有域名访问,实际生产环境应该指定域名或关闭跨域

1 Linux

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT","GET","POST","OPTIONS"]'

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'

ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

2 Windows

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "[\"PUT\",\"GET\",\"POST\",\"OPTIONS\"]"
 
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers "[\"Authorization\"]"

ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers "[\"Location\"]"
3.1.3创建共享密钥

任意一个节点执行

克隆密钥生成工具
git clone https://github.com/Kubuxu/go-ipfs-swarm-key-gen.git
编译
go build -o ipfs-swarm-key-gen go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/main.go

编译时如果控制台输出 go.mod file not found in current directory or any parent directory 的错误的话,只需要暂时将 GO111MODULE 暂时关闭即可,键入

go env -w GO111MODULE=off

生成密钥
./ipfs-swarm-key-gen > swarm.key	

密钥生成后,将密钥复制到 .ipfs 文件夹中

cp swarm.key /root/.ipfs

若忘记 .ipfs 的路径,可通过 find / -name ".ipfs" 找到

3.1.4 分发密钥

将生成的密钥分发到各个节点

要确保密钥分发到每一个节点上

scp swarm.key user@ip:.ipfs_path

eg. scp swarm.key root@172.24.7.101:/root/.ipfs/

如果要发送到windows节点,windows需要打开ssh服务,

windows开启ssh服务步骤:

a. 设置–>更新和安全–>开发者选项–>开启‘开发人员模式’

b. 设置–>应用–>应用和功能–> 可选功能–>安装‘OpenSSH客户端’

c. 重启电脑

d. 管理员启动控制台–> 键入ssh

在这里插入图片描述

e. 管理员启动控制台–> net start sshd

3.1.5 删除默认节点

每个节点执行

删除公网节点

ipfs bootstrap rm all
3.1.6 添加节点

各个节点分别添加其他节点

ipfs bootstrap add /ip4/ip地址/tcp/4001/ipfs/另一个节点id

eg

ipfs bootstrap add /ip4/172.24.7.101/tcp/4001/ipfs/12D3KooWK1ivQRSyL3aSS6TLx4YkvB3diiiVckerUAs6MK5aA9q9
3.1.7 启动节点

每个节点执行

键入 ipfs daemon 节点即可启动

windows节点启动 ipfs daemon 可能会报 Only one usage of each socket address (protocol/network address/port) is normally permitted. 这个错误;可以通过修改注册表解决:

在注册表中找到下图的目录,然后添加红色框的四个参数和对应的值,重启电脑

在这里插入图片描述

3.1.8 文件上传与读取

新增一个test.txt的文件,文件内容是‘this is a test file’
在一个节点上上传一个文件

在这里插入图片描述

新增成功后,会返回该文件的cid

在另一个节点上键入 ipfs cat QmShXqLJmGrTgkq3BFZgvBiz1HnWtH2fGMMn8ierCvQyLL

就可以看到文件内容

在这里插入图片描述

### IPFS客户端软件概述 IPFS(InterPlanetary File System)是一种分布式文件系统,旨在创建持久且可验证的内容存储络[^1]。IPFS客户端软件作为访问和操作该系统的工具,允许用户上传、下载、管理和共享文件。 #### 主要功能 1. **文件管理** IPFS客户端支持文件的上传、检索和删除操作。它通过哈希值唯一标识每个文件,从而实现去中心化的高效存储和分发。 2. **节点通信** 客户端实现了点对点(P2P)络协议,使设备能够直接与其他参与节点交换数据,而无需依赖中央服务器[^2]。 3. **内容寻址** 使用基于内容的地址机制代替传统的位置寻址方法,确保即使原始位置发生变化,也能找到所需资源。 4. **版本控制** 自动记录文件的历史变更并提供时间旅行查询能力,方便追溯不同状态下的文档副本。 5. **离线可用性** 即便在络连接中断的情况下,已缓存的数据仍然可以被本地访问,增强了用户体验连续性。 6. **隐与安全增强** 结合加密技术和权限管理系统来保障敏感资料的安全性和密程度[^4]。 7. **灵活配置选项** 不同于某些应用固定写死式的设定模式,IPFS-Wormhole这类扩展方案更多采用动态调整策略——即借助命令行参数或者环境变量完成定制化需求满足工作流程优化目标达成效果更好一些[^5]。 #### 用途场景分析 - 数据备份与恢复解决方案构建; - 去中介化媒体分享平台搭建基础架构支撑角色扮演; - 科学研究领域海量公开数据库镜像维护技术支持方向探索实践尝试意义重大价值体现充分展现出来; - 数字版权资产管理框架设计思路启发引导作用不可忽视忽略不得轻视丝毫之处所在明显可见一斑而已罢了而已耳矣焉哉乎也欤耶兮兮然者也夫子曰云尔等等诸如此类表达形式皆可用于描述强调重要性的语境当中去运用自如恰到好处为止足矣够矣罢了而已耳矣焉哉乎也欤耶兮兮然者也夫子曰云尔等等诸如此类表达形式皆可用于描述强调重要性的语境当中去运用自如恰到好处为止足矣够矣罢了而已耳矣焉哉乎也欤耶兮兮然者也夫子曰云尔。 ```python import ipfshttpclient def connect_to_ipfs(): try: client = ipfshttpclient.connect('/ip4/127.0.0.1/tcp/5001/http') print(f'Connected to IPFS daemon with version {client.version()}') except Exception as e: print(f'Failed to connect: {e}') connect_to_ipfs() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值