基本信息

IPFS 版本:v0.4.23
WebUI 版本: v2.7.2

服务端设置

WebUI 使用独立仓库管理,最新版直接发布到 IPFS 网络上,在IPFS实现代码中引用相应CID,如在 go-ipfs 中的webui.go所示。

daemon.go

// serveHTTPApi collects options, creates listener, prints status message and starts serving requests
func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error) {...// 定义处理 /ipfs/<cid> 请求// corehttp.WebUIPaths 包含webui的历史版本gatewayOpt := corehttp.GatewayOption(false, corehttp.WebUIPaths...)if unrestricted {gatewayOpt = corehttp.GatewayOption(true, "/ipfs", "/ipns")}var opts = []corehttp.ServeOption{...// 访问 <host>:5001/webui 重定向到最新的webui版本corehttp.WebUIOption,gatewayOpt,...}...

IPFS Web UI

WebUI基于React实现,使用 js-ipfs-http-client 与后端节点交互。

WebUI 使用 Redux Bundler 管理 Redux 状态数据。

IPFS API初始化

index.js

...
import ipfsBundle from 'ipfs-redux-bundle'
...export default composeBundles(...// ipfs api bundleipfsBundle({tryWindow: false,ipfsConnectionTest: async (ipfs) => {// ipfs connection is working if can we fetch the bw stats.// See: https://github.com/ipfs-shipyard/ipfs-webui/issues/835#issuecomment-466966884try {await ipfs.stats.bw()} catch (err) {if (!/bandwidth reporter disabled in config/.test(err)) {throw err}}return true}}),...

ipfs-redux-bundle 主要初始化逻辑如下:

doInitIpfs 在App.js中调用

const root = require('window-or-global')
const httpClient = require('ipfs-http-client')
...
const tryApi = require('./js-ipfs-api')
...const defaultOptions = {tryWindow: true,tryCompanion: true,tryApi: true,tryJsIpfs: false,defaultApiAddress: '/ip4/127.0.0.1/tcp/5001',ipfsConnectionTest: (ipfs) => {// ipfs connection is working if can we fetch the empty directtory.return ipfs.get('QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn')}
}module.exports = (opts) => {opts = Object.assign({}, defaultOptions, opts)const defaultState = {defaultApiAddress: opts.defaultApiAddress,apiAddress: getUserProvidedIpfsApi(),provider: null, // 'window.ipfs' || 'ipfs-companion' || 'js-ipfs-api' || 'js-ipfs'failed: false,ready: false,invalidAddress: false}return {name: 'ipfs',...getExtraArgs () {return { getIpfs: () => ipfs }},...doInitIpfs: () => async (store) => {await getIpfs(opts, store)},...}
}async function getIpfs (opts, { store, getState, dispatch }) {dispatch({ type: 'IPFS_INIT_STARTED' })const { ipfsConnectionTest } = optsif (opts.tryCompanion) {...}if (opts.tryWindow) {...}if (opts.tryApi) {const { apiAddress, defaultApiAddress } = getState().ipfsconst { location } = rootconst res = await tryApi({ apiAddress, defaultApiAddress, location, httpClient, ipfsConnectionTest })if (res) {return dispatch({ type: 'IPFS_INIT_FINISHED', payload: res })}}if (opts.tryJsIpfs) {...}dispatch({ type: 'IPFS_INIT_FAILED' })
}

tryApi定义如下:

const toMultiaddr = require('uri-to-multiaddr')
const { isURL } = require('../utils')
const provider = 'js-ipfs-api'// 1. Try user specified API address
// 2. Try current origin
// 3. Try default origin
async function tryApi ({ httpClient, apiAddress, defaultApiAddress, location, ipfsConnectionTest }) {console.info('												

IPFS WebUI相关推荐

  1. 【IPFS应用开发】--zabbix监控接口配置

    在IPFS应用开发.调试.测试.发布.运行.运维过程中,发现了一个问题--对ipfs节点的数据监控很重要.这些数据可以很直观的判断出是否要扩容,硬件瓶颈在哪,需要如何增加资源. [IPFS应用开发]- ...

  2. 什么是行星际文件系统 (IPFS) 以及如何使用它?

    星际文件系统 (IPFS)是一个分布式的点对点文件共享网络,可以很好地成为新的去中心化网络的基础.以下是它的工作原理,以及如何开始使用它. 去中心化的互联网 尽管它是全球性的,但万维网仍然是一个 集中 ...

  3. 搭建IPFS网络私网教程

    前言 项目中需要使用ipfs,所以自己搭建一个. 1. 准备机器 准备几台虚拟机,不分主从,我用的是centos7,下面的教程也是基于centos7. 4台虚拟机 主机名 ip 说明 centos-1 ...

  4. Linux如何部署私有IPFS(安装、部署、共享key,添加节点,测试)

    一.环境准备 系统要求 至少需要2G内存,2 核 CPU. 实验环境 共计两个节点,192.168.159.102.192.168.159.103,系统采用centos7 环境准备后,按照如下步骤部署 ...

  5. IPFS(星际文件系统)的安装与使用

    本教程系统环境:Windows10 其他系统下的安装教程可以参考IPFS官方文档 Step 1 按下windows键+R,输入powershell,点击运行,打开PS终端. Step 2 在PS中下载 ...

  6. 如何在IPFS里面上传一张图片

    之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...

  7. 利用IPFS构建自己的去中心化分布式Wiki系统

    IPFS全称InterPlanetary File System,中文名:星际文件系统,是一个旨在创建持久且分布式存储和共享文件的网络传输协议. 它是一种内容可寻址的对等超媒体分发协议.在IPFS网络 ...

  8. 【IPFS + 区块链 系列】 入门篇 - IPFS环境配置

    目录 1. IPFS简介 2. IPFS本地环境安装 2.1 下载ipfs压缩包 2.2 安装 3. 项目配置 3.1 创建ipfs节点 3.2 修改节点默认存储空间 3.3 查看节点id 3.4 启 ...

  9. 【问链财经-EOS公开课】 第十九课 EOS存储之IPFS

    编者按:EOS每秒百万的tps如果要实现的话,按照一个交易数据100字节计算,1天的区块数据量为1000000 * 100 * 60 * 60 * 24 = 7.8TB,一年的区块数据量为7.8 * ...

最新文章

  1. Cassandra安装测试
  2. arm linux gnueabi编译,交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
  3. 9、 InnoDB行锁
  4. 防火墙启动被拒绝解决方案
  5. 操作系统复习笔记(四)
  6. mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解
  7. 1075 链表元素分类 (25 分)
  8. CSS3 选择前几个元素 选择后几个元素等问题
  9. 知识工场 | CN-DBpedia 漫游指南
  10. php把数据表格数据,php怎样把数据添加到数据表
  11. 计算机相关专业及本科课程整理
  12. time.c 的Java实现(从timestamp计算年月日时分秒等数值)
  13. python reduce函数怎么用_python内置函数reduce
  14. 软件项目开发过程中应编写的十三类文档
  15. Windows NT/2000/XP下不用驱动的Ring0代码实现
  16. 上位机软件系统开发工具简介
  17. JQuery——横纵向菜单设计
  18. 微信定向流量_使用定向流量包怎么算?微信定向流量包怎样计算流量?
  19. LumaQQ在Linux下的安装和卸载
  20. SELinux之一:SELinux基本概念及基本配置

热门文章

  1. 大数据平台的使用(Hadoop 生态圈、CDH)
  2. 哪个牌子的电视盒子好用?罗鹏数码盘点2023电视盒子排名
  3. 2021年北京旅游行业发展现状分析:接待旅游总人数达2.6亿人次,同比增长41.3%。[图]
  4. 产品经理 - 原型图设计软件
  5. 【高项】各章节知识点概括
  6. 亚马逊云科技和安恒信息,发布云原生SaaS主机安全和云原生堡垒机
  7. catia装服务器不显示不出来,CATIAV5无法显示略缩图怎么办?CATIAV5无法显示略缩图的原因分析和解决方案...
  8. 查找重复出现N次或N次以上的数组项
  9. 计算机无法加载远程访问连接管理器服务,Win7网络无法加载远程访问连接管理器服务怎么办...
  10. FreeBSD 配置经验