前言

项目中需要使用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. 初始化节点

各节点都要执行

  1. 初始化
 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
  1. 记下节点id:
01:Qmee3b4p*********************YniPJynb
02:QmZfJxkA*********************gkm7hzFE
03:QmPaid8k*********************cBBTuU6k
04:QmPMo2LV*********************DfCGScNN
在各个节点的home目录新增了ipfs的文件夹.ipfs:
cd ~/.ipfs
  1. 修改存储容量
    修改~/.ipfs/config中"StorageMax"字段即可(目前默认为10GB)
  2. 修改访问路径
    IPFS的API和GATEWAY默认访问路径为127.0.0.1.如需要其他机器访问,需要修改~/.ipfs/config中API和GATEWAY字段,将127.0.0.1替换为0.0.0.0
  3. 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"]'

注意: 开发环境设置中“*”意为允许所有域名访问,生产环境下应该将跨域设置为指定域名或关闭跨域

  1. 查看节点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

注意:

  1. daemon守护进程如果直接运行,关闭会话窗口后就会失效
  2. daemon守护进程前台运行状态下,使用CTRL+C退出
  3. daemon后台启动后需要使用kill -9命令杀死才能停止
  4. 每一次修改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网络私网教程相关推荐

  1. 脱离取源设备的IPTV宽带机房搭建心得(私网汇聚、内网直播源、单播组播模式混合使用、光猫机顶盒的破解、超级路由的组播转发)

    上个星期受用户邀请,去美丽的河南做了一个IPTV宽带机房的搭建,过程虽然有点坎坷,但好在最后都达到了用户的需求.在这里做一个记录,希望对我这种小菜日后方便参考使用,还望各位大神多多指教: 一.客户要求 ...

  2. 阿里云服务器快速搭建网站(官网教程)

    1. 登录云服务器 在购买ECS服务器后,系统会创建一个ECS实例.每一个ECS实例对应一台已购买的云服务器.您可以通过电脑上自带的终端工具访问云服务器,进行应用部署和环境搭建. 在ECS实例列表页面 ...

  3. vpc自建服务器,虚拟私有云VPC搭建IPv6网络教程

    本教程将指引您搭建一个IPv6网段的VPC,并在VPC中创建一个带有IPv6地址的ECS,使ECS可以访问Internet上的IPv6服务.配置流程如图1所示. 图1 搭建IPv6网络 说明: 若您已 ...

  4. 为什么百度查到的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整理上 ...

  5. 虚拟vpc服务器搭建,虚拟私有云VPC搭建IPv6网络

    虚拟私有云VPC搭建IPv6网络 内容精选 换一换 虚拟私有云(Virtual Private Cloud)是用户在华为云上申请的隔离的.私密的虚拟网络环境.用户可以自由配置VPC内的IP地址段.子网 ...

  6. 【网络】为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

    原文地址 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公 ...

  7. 阿里云上搭建私网DNS的几种方案

    前言:        私网DNS对一些客户来说是非常重要的,因为他们系统API之间一般都是通过私网域名调用的,如果私网DNS出现问题相当于手机失去基站,整个系统会瘫痪.我总结了三种搭建私网DNS的方案 ...

  8. 为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

    IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公司,学校, ...

  9. 搭建渗透测试环境选自KaliLinux无线网络渗透测试教程

    第1章搭建渗透测试环境 许多提供安全服务的机构会使用一些术语,如安全审计.网络或风险评估.以及渗透测试.这些术语在含义上有一些重叠,从定义上来看,审计是对系统或应用的量化的技术评估.安全评估意为对风险 ...

最新文章

  1. 除了密钥,公有云还有哪些安全保护方式
  2. 解锁并设置远程登录尝试次数
  3. Springboot消除switch-case方法
  4. @产品部 -- 腾讯策划部是如何培养用户的《王者荣耀》“瘾”的
  5. SQL SERVER2000教程-第五章 处理数据 第十三节 设定数字日期格式
  6. scrapy如何指定生成python3的项目_新手学习scrapy的坑(都是泪)
  7. 数据库迁移_数据库迁移了解一下
  8. [其它] - 为什么中国的程序员技术偏低
  9. 2021辽宁高考成绩查询公布,2021辽宁高考成绩什么时候出
  10. linux下添加定时任务
  11. 完美解决IE11和补丁安装不上方案
  12. 花呗的24期利息计算器_花呗24期怎么算利息怎么算(花呗借600024期要还多少利息?)...
  13. zemax光学设计高阶优化
  14. 一文了解成分句法分析
  15. discuz template 模板文件说明
  16. [读书笔记]《番茄工作法图解:简单易行的时间管理方法》
  17. JavaScript - V8
  18. powerdesigner 导入sql文件生成模型
  19. mysql安全性案例分析_MySQL实例crash的案例分析
  20. ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)

热门文章

  1. 学习笔记:IDF 移动端UX设计 1.4 响应式设计vs.适应式设计
  2. Win10《芒果TV》更新v3.8.50勇敢版:新增短信和扫码登录
  3. Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源
  4. 填坑之路——Hadoop分布式缓存
  5. WMS WCS WFS 区别(转载)
  6. js图片下载(支持跨域/解决Access-Control-Allow-Origin)
  7. 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
  8. video4linux 讲解
  9. Matlab中各类函数用法
  10. 博士申请 | 英国华威大学计算机大数据团队招收数据挖掘方向全奖博士生