搭建IPFS网络私网教程
前言
项目中需要使用ipfs,所以自己搭建一个。
1. 准备机器
准备几台虚拟机,不分主从,我用的是centos7,下面的教程也是基于centos7.
4台虚拟机
主机名 | ip | 说明 |
---|---|---|
centos-11 |
*.*.*.11
|
不分主从 01 |
centos-12 |
*.*.*.12
|
不分主从 02 |
centos-13 |
*.*.*.13
|
不分主从 03 |
centos-14 |
*.*.*.14
|
不分主从 04 |
2. 下载与安装
//各节点都要执行
1.到ipfs官网下载安装包 (直接使用已编译版本,也可以自己编译)
https://ipfs.io/ipns/dist.ipfs.io/go-ipfs/v0.4.22/go-ipfs_v0.4.22_linux-amd64.tar.gz
2.解压
tar xvfz go-ipfs_v0.4.22_linux-amd64.tar.gz
3.安装
cd go-ipfs
./install.sh
4.测试
ipfs help
如果测试失败,检查/usr/local/bin路径是否处于PATH中。如无则添加到/etc/profile中
3. 初始化节点
各节点都要执行
- 初始化
ipfs init//生成的结果如下:initializing IPFS node at /root/.ipfsgenerating 2048-bit RSA keypair...donepeer identity: QmPMo2L*************zDCGScNNto get started, enter:ipfs cat /ipfs/QmS4ustL54*******a8nUH4uVv/readme
- 记下节点id:
01:Qmee3b4p*********************YniPJynb
02:QmZfJxkA*********************gkm7hzFE
03:QmPaid8k*********************cBBTuU6k
04:QmPMo2LV*********************DfCGScNN
在各个节点的home目录新增了ipfs的文件夹.ipfs:
cd ~/.ipfs
- 修改存储容量
修改~/.ipfs/config中"StorageMax"字段即可(目前默认为10GB) - 修改访问路径
IPFS的API和GATEWAY默认访问路径为127.0.0.1.如需要其他机器访问,需要修改~/.ipfs/config中API和GATEWAY字段,将127.0.0.1替换为0.0.0.0 - http corps问题
非本地访问会产生跨域问题,需要在设置中注明。
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
注意: 开发环境设置中“*”意为允许所有域名访问,生产环境下应该将跨域设置为指定域名或关闭跨域
- 查看节点ID
如果忘记了id,可以通过ipfs id命令查看
4. 创建共享密钥
私有网络内所有节点需要共享一套密钥
在任意一个虚拟机上执行
1.下载密钥工具
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
2.生成密钥
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
3.将密钥分发到各个节点
scp ~/.ipfs/swarm.key root@*.*.*.11:~/.ipfs/
scp ~/.ipfs/swarm.key root@*.*.*.12:~/.ipfs/
scp ~/.ipfs/swarm.key root@*.*.*.13:~/.ipfs/
上面省略的是ip地址
5. 添加启动节点
所有节点执行
1.删除默认启动节点(删除公网节点)
ipfs bootstrap rm all
2.各节点分别将其他节点添加到bootstrap列表
ipfs bootstrap add /ip4/被添加节点的ip地址/tcp/4001/ipfs/被添加节点的ID值//11服务器:
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********gkm7hzE
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********BBTuU6k
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********zDCScNN//12服务器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********GcBuU6k
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********DCGScNN//13服务器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********iP7hzFE
ipfs bootstrap add /ip4/*.*.*.14/tcp/4001/ipfs/QmPMo********zFGScNN//14服务器:
ipfs bootstrap add /ip4/*.*.*.11/tcp/4001/ipfs/Qmee3********niPJynb
ipfs bootstrap add /ip4/*.*.*.12/tcp/4001/ipfs/QmZfJ********km7hzFE
ipfs bootstrap add /ip4/*.*.*.13/tcp/4001/ipfs/QmPai********GBTuU6k3.启动节点
ipfs deamon
//后台启动 nohup ipfs daemon &
4.测试
在14机器上传文件:
ipfs add a.tar.gz
//输出:
//added QmUct****************nwwXQQ a.tar.gz
//5.10 MiB / 5.10 MiB [=============================] 100.00%在其他机器下载:
ipfs get QmUct***************nwwXQQ
//输出:
//Saving file(s) to QmUct********************nwwXQQ
//5.10 MiB / 5.10 MiB [=============================] 100.00% 0s
注意:
- daemon守护进程如果直接运行,关闭会话窗口后就会失效
- daemon守护进程前台运行状态下,使用CTRL+C退出
- daemon后台启动后需要使用kill -9命令杀死才能停止
- 每一次修改config后都需要重启daemon
6. 设置ipfs服务
关闭所有daemon后所有节点都需要执行:
cd /lib/systemd/system/
vim ipfs.service [Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target:wqservice ipfs start
7.安装可视化管理页面WEBUI
在11服务器内的任意位置执行以下命令:
git clone https://github.com/ipfs/webui
cd webui
npm install
npm start
成功后访问 http://*.*.*.11:3000
即可打开页面
如果页面显示 Failed to connect to the API. 需要在页面下方的API ADDRESS处配置API地址:
/ip4/*.*.*.11/tcp/5001
8.API
所有命令行支持的命令都有对应的Restful api实现,官方文档:
https://docs.ipfs.io/reference/api/http/
中文参考:
https://blog.csdn.net/weixin_43132569/article/details/82628570
SDK
有GO语言实现的SDK:
https://github.com/ipfs/go-ipfs-api
错误
ipfs id报错
Error: cannot connect to the api. Is the deamon running? To run as a standalone CLI command remove the api file in $IPFS_PATH/api
解决方法:删除~/.ipfs/api重试即可
搭建IPFS网络私网教程相关推荐
- 脱离取源设备的IPTV宽带机房搭建心得(私网汇聚、内网直播源、单播组播模式混合使用、光猫机顶盒的破解、超级路由的组播转发)
上个星期受用户邀请,去美丽的河南做了一个IPTV宽带机房的搭建,过程虽然有点坎坷,但好在最后都达到了用户的需求.在这里做一个记录,希望对我这种小菜日后方便参考使用,还望各位大神多多指教: 一.客户要求 ...
- 阿里云服务器快速搭建网站(官网教程)
1. 登录云服务器 在购买ECS服务器后,系统会创建一个ECS实例.每一个ECS实例对应一台已购买的云服务器.您可以通过电脑上自带的终端工具访问云服务器,进行应用部署和环境搭建. 在ECS实例列表页面 ...
- vpc自建服务器,虚拟私有云VPC搭建IPv6网络教程
本教程将指引您搭建一个IPv6网段的VPC,并在VPC中创建一个带有IPv6地址的ECS,使ECS可以访问Internet上的IPv6服务.配置流程如图1所示. 图1 搭建IPv6网络 说明: 若您已 ...
- 为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;
文章目录 1.百度查到的ip和ipconfig查到的不同 1.1引出问题 1.2不一样的原因 2.IP地址分类 2.1IP类别 2.1 Public IP和Private IP 3.总结 3.1整理上 ...
- 虚拟vpc服务器搭建,虚拟私有云VPC搭建IPv6网络
虚拟私有云VPC搭建IPv6网络 内容精选 换一换 虚拟私有云(Virtual Private Cloud)是用户在华为云上申请的隔离的.私密的虚拟网络环境.用户可以自由配置VPC内的IP地址段.子网 ...
- 【网络】为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;
原文地址 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公 ...
- 阿里云上搭建私网DNS的几种方案
前言: 私网DNS对一些客户来说是非常重要的,因为他们系统API之间一般都是通过私网域名调用的,如果私网DNS出现问题相当于手机失去基站,整个系统会瘫痪.我总结了三种搭建私网DNS的方案 ...
- 为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;
IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公司,学校, ...
- 搭建渗透测试环境选自KaliLinux无线网络渗透测试教程
第1章搭建渗透测试环境 许多提供安全服务的机构会使用一些术语,如安全审计.网络或风险评估.以及渗透测试.这些术语在含义上有一些重叠,从定义上来看,审计是对系统或应用的量化的技术评估.安全评估意为对风险 ...
最新文章
- 除了密钥,公有云还有哪些安全保护方式
- 解锁并设置远程登录尝试次数
- Springboot消除switch-case方法
- @产品部 -- 腾讯策划部是如何培养用户的《王者荣耀》“瘾”的
- SQL SERVER2000教程-第五章 处理数据 第十三节 设定数字日期格式
- scrapy如何指定生成python3的项目_新手学习scrapy的坑(都是泪)
- 数据库迁移_数据库迁移了解一下
- [其它] - 为什么中国的程序员技术偏低
- 2021辽宁高考成绩查询公布,2021辽宁高考成绩什么时候出
- linux下添加定时任务
- 完美解决IE11和补丁安装不上方案
- 花呗的24期利息计算器_花呗24期怎么算利息怎么算(花呗借600024期要还多少利息?)...
- zemax光学设计高阶优化
- 一文了解成分句法分析
- discuz template 模板文件说明
- [读书笔记]《番茄工作法图解:简单易行的时间管理方法》
- JavaScript - V8
- powerdesigner 导入sql文件生成模型
- mysql安全性案例分析_MySQL实例crash的案例分析
- ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)
热门文章
- 学习笔记:IDF 移动端UX设计 1.4 响应式设计vs.适应式设计
- Win10《芒果TV》更新v3.8.50勇敢版:新增短信和扫码登录
- Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源
- 填坑之路——Hadoop分布式缓存
- WMS WCS WFS 区别(转载)
- js图片下载(支持跨域/解决Access-Control-Allow-Origin)
- 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
- video4linux 讲解
- Matlab中各类函数用法
- 博士申请 | 英国华威大学计算机大数据团队招收数据挖掘方向全奖博士生