IPFS(InterPlanetary File System)点对点的分布式超媒体分发协议.
安装与使用
地址: http://ipfs.io
下载对应平台的安装包, 解压缩后将可执行文件放在一个目录下, 一般为 /usr/local/bin/
.
基础命令 & 环境配置
初始化
ipfs init
文件和配置都在 ~/.ipfs 目录下.
编辑配置
export EDITOR=/usr/bin/vim
ipfs config edit
查看节点信息
ipfs id
启动节点
ipfs daemon
配置跨域
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
webui
http://localhost:5001/webui
注意, 我使用的是 vagrant VirtualBox 虚拟机, 需要在虚拟机做 4001->4001, 5001->5001, 8080->8080 端口映射, 并且在 ~/.ipfs/config 中将对应监听的 127.0.0.1 改为 0.0.0.0.
文件操作 & 网站发布
添加内容
ipfs add index.html
之后会返回一个哈希字符串, 用于访问该内容.
ipfs cat <hash>
添加目录
ipfs add -r public
之后会返回该目录下的每个文件 和 目录的哈希字符串, 用于访问该字符串.
ipfs cat <filehash>
ipfs cat /ipfs/<filehash>
ipfs cat /ipfs/<folderhash>/filename
在线预览
https://ipfs.io/ipfs/<file|folderhash>
此方法可以用于部署分布式的静态网站.
我的网站: https://ipfs.io/ipfs/QmQCN1Y72n7p9T6VJt85oiDJmxYkUo3Dj5F7g1HAdMZK5t
添加网站到 IPNS
ipfs name publish /ipfs/<上面网站的hash地址>
得到一个新的哈希值, 次哈希值用于域名, 在线预览
http://ipfs.io/ipns/<域名哈希值>
我的域名: https://ipfs.io/ipns/QmbznkUEEPTbcZtjqTfaeAxgoRdwzeRP7wkXLmwBzq2aMa
多网站部署的时候, 需要给不同网站生成单独的密钥
ipfs key gen --type=rsa --size=2048 website1
ipfs name publish --key=website1 /ipfs/<上面网站的hash地址>
检查网站是否部署解析成功
ipfs name resolve <域名哈希值>
看看是否解析到了上面配置的地址.
我的问题
通过 5001 页面添加的文件, 可以使用 ipfs files ls 进行查看, 怎么进行访问?
通过 ipfs add 的有对应的内容怎么查看列表?
命令行
USAGE
ipfs - 全球 p2p merkle-dag 文件系统.
SYNOPSIS
ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ...
OPTIONS
-c, --config string - 配置文件地址
-D, --debug bool - 开启 debug 模式
--help bool - 显示帮助 完整版(本文档)
-h bool - 显示帮助 简约版
-L, --local bool - 本地执行命令, 不使用后台运行
--api string - 手动指定 api 地址 (默认 /ip4/127.0.0.1/tcp/5001).
--enc, --encoding string - 编码方式(json, xml, or text). 默认: text.
--stream-channels bool - 是否输出数据流 channel.
--timeout string - 命令执行超时时间.
SUBCOMMANDS
BASIC COMMANDS
init 初始化本地数据库
add <path> 添加文件
cat <ref> 获取 IPFS 中存储的文件元数据
get <ref> 下载 IPFS 对象
ls <ref> List links from an object
refs <ref> List hashes of links from an object
DATA STRUCTURE COMMANDS
block Interact with raw blocks in the datastore
object Interact with raw dag nodes
files 像unix系统一样与数据交互
dag Interact with IPLD documents (experimental)
ADVANCED COMMANDS
daemon 开启不退出的程序
mount Mount an IPFS read-only mountpoint
resolve Resolve any type of name
name Publish and resolve IPNS names
key Create and list IPNS name keypairs
dns Resolve DNS links
pin Pin objects to local storage
repo Manipulate the IPFS repository
stats Various operational stats
p2p Libp2p stream mounting
filestore Manage the filestore (experimental)
NETWORK COMMANDS
id 自己在 IPFS 中的地址信息
bootstrap 添加或删除 bootstrap 连接
swarm 管理 p2p 网络
dht Query the DHT for values or peers
ping <ID> 衡量一个地址的延迟性
diag 分析系统当前执行内容
TOOL COMMANDS
config 管理配置信息(show展示当前配置)
version 当前版本信息
update 更新
commands 列举所有可用命令(父命令+子命令)
使用 'ipfs <command> --help' 了解更多该命令的内容
ipfs 使用本地文件系统存储数据. 默认存储路径为 ~/.ipfs.
自定义路径设置环境变量 $IPFS_PATH, 例如:
export IPFS_PATH=/path/to/ipfsrepo
退出状态:
CLI 命令行退出时的错误号为:
0 正确执行
1 执行失败
使用 'ipfs <subcmd> --help' 了解更多子命令