惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
The Register - Security
The Register - Security
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
博客园 - 司徒正美
罗磊的独立博客
U
Unit 42
S
SegmentFault 最新的问题
Y
Y Combinator Blog
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
S
Securelist
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
Scott Helme
Scott Helme
博客园 - 聂微东
博客园 - 【当耐特】
T
Tenable Blog
I
Intezer
D
DataBreaches.Net
B
Blog RSS Feed
Security Latest
Security Latest
C
Cisco Blogs
T
Tor Project blog
N
Netflix TechBlog - Medium

流动

对口型视频合成方案对比:Wav2Lip、VideoReTalking 与 MuseTalk 2026 音色克隆方案对比:IndexTTS-2、CosyVoice、GPT-SoVITS、Fish Speech、VoxCPM 部署与实测 AI Agent折腾记(OpenClaw / Hermes Agent) 我的2025年 大连之行 回家收麦 六一儿童节爬长城 Golang database/sql 数据库断线自动重连机制解析 Golang默认Http Client导致的cannot assign requested address错误 清明踏春,爬山看海 购入小牛G400T电动车 北京的三月飞雪 wrenAI本地LLM模型部署 天津一日游 2024年终总结 停止使用staticfile.org服务 使用 ImageMagick 自动添加水印,保护图片版权 如何注册一个.sol域名 奥森公园半日游 昌平42公里骑行绿道打卡 十月一日爬慕田峪长城 当Hugo遇上AVIF,优化图片加载 博客被恶意镜像 Github Pages 部署流程解析 搭建个人锻炼页面 你好 Follow 中秋爬山 Google Adsense的审核之旅 一次简短的青岛之行 解决 "undeclared name: any (requires version go1.18 or later)" 编译错误 搭建自托管IPFS Gateway服务,替代Cloudflare的IPFS Gateway 302跳转的跨域问题(CORS) GORM增加sqlcommenter特性 源码分析:GORM是如何生成sql的 工银亚洲网银密码重置 加速Cloudflare访问 2023年终总结 2023年12月北京暴雪记录 使用Hugo实现响应式和优化的图片 加速Google Analytics 使用Google Indexing API加速博客收录 在Netlify上部署Twikoo评论系统 利用Github Actions定时抓取微博 北大口腔牙周刮治记录 故乡回忆之旅 解决Golang使用go get安装包后找不到可执行文件的问题 修正Hugo的JSON Feed格式 我的学车之路 将博客部署到星际文件系统(IPFS) 新冠疫情后的第一个春节 第一次清理键盘 2022年终总结 去掉Cloudflare烦人的email-decode.min.js请求 累计布局偏移修复方案改进 —— 自动生成图片宽高 优化博客的累计布局偏移(CLS)问题 将博客部署到Cloudflare Pages 奥林匹克公园向日葵之旅 记第二次洗牙 记录2022年海淀幼升小 Golang解析json的一个问题 疫情下的生活 整理下博客的一些调整 疫情下的五一假期 自己动手,更换thinkpad x1硬盘 二刷百望山 带娃游颐和园 博客架构说明 难得的清明假期 十一年的等待,终于拿到了liudon.com域名 被隔离的一周 mysql中字符串和整型自动转换的问题 一次惊心动魄的Mysql更新操作 如何在北京公积金网站上修改婚姻状况 PHP7.2编译安装后没有php.ini文件的问题 检测网站支持的SSL/TLS协议版本 记一次难忘的手术经历 十一假期经历 Swoft 框架运行分析(五) —— ConsoleProcessor模块分析 Swoft 框架运行分析(四) —— EventProcessor模块分析 一个git submodule update引发的问题 一个Curl的耗时长的问题 Swoft 框架运行分析(三) —— BeanProcessor模块分析 Swoft 框架运行分析(二) —— AnnotationProcessor模块分析 Swoft 框架运行分析(一) BCMath 与 科学计数 Flink Could Not Resolve Resourcemanager Address 解决Sublime Text安装包时"There Are No Packages Available for Installation"的报错 关于本站 2019,新开始
让你的IPFS站点持久在线:接入Filebase的Names(IPNS)服务
Liudon · 2024-09-04 · via 流动

本文会介绍如何接入filebase的Names(IPNS)服务,使你的IPFS站点持久在线。

背景

周末更新博客时,发现workflow的上传IPFS任务执行失败了。

Run aquiladev/ipfs-action@master
Error: RequestInit: duplex option is required when sending a body.
node:internal/deps/undici/undici:12502
      Error.captureStackTrace(err, this);
            ^

TypeError: RequestInit: duplex option is required when sending a body.
    at node:internal/deps/undici/undici:12502:13
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v20.13.1

查了一下,应该是Github更新了NodeJS版本导致的。

The following actions use a deprecated Node.js version and will be forced to run on node20: actions/checkout@v2, peaceiris/actions-hugo@v2, peaceiris/actions-gh-pages@v3, aquiladev/ipfs-action@master. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/

研究了一下,问题在于js-ipfs包的fetch方法没有传duplex参数导致。

Github文档,官方已经不再更新了。

DEPRECATED: js-IPFS has been superseded by Helia

搜索一番,发现了两个包heliajs-kubo-rpc-client

helia调用方法有变化js-kubo-rpc-client和原来的js-ipfs使用一致。

捣鼓了一番,没调通,不懂前端的锅,只能放弃,顺便给作者提了个issue,还是作者来适配吧。

隔天看的时候,在Pull requests里发现已经有升级后的提交了。

哈哈,原来filebase官方早就升级适配了,filebase/ipfs-action,顺带发现居然还支持了IPNS更新,太完美了!!!

折腾记录

关于IPNS的作用,可以参考zu1k大佬的IPFS 新手指北

关于IPFS的部署,可以参考我的将博客部署到星际文件系统(IPFS)

生成密钥

因为我在云主机上部署了ipfs服务,已经有在更新IPNS

这里引入filebase后,相当于多个节点来更新,需要保证IPNS地址上一致的。

所以需要将云主机的密钥导出后,导入到filebase

之前使用的是ipfs默认密钥,这个是无法导出的,所以只能重新生成一个密钥, ipfs-action为密钥名字,改成你自己的:

ipfs key gen ipfs-action

> k51qzi5uqu5dh5kbbff1ucw3ksphpy3vxx4en4dbtfh90pvw4mzd8nfm5r5fnl

注意:filebase还不支持type/size参数,这里必须使用默认方式创建,否则在filebase导入已有密钥会报错。

chat

查看已有密钥:

ipfs key list -l
> k51qzi5uqu5djx9olgjcibdiurrr09w75v6rdfx0cvwye295k787sssssf0d9d self        
> k51qzi5uqu5dktnw0vc8j9ci42e8gk741ici7ofpv40mo4f6e1ossssnc7uwg ipfs-action

导出密钥:

ipfs key export ipfs-action

执行后,当前目录下会生成一个ipfs-action.key文件,内容为二进制。

filebase导入key要求为base64编码,将其转为base64编码:

cat ipfs-action.key | base64
> 5oiR5piv5rWL6K+V

记住这里的base64内容,下面会用到。

创建NAME

进入filebase控制台,点击Create Name

input

Label: 备注,可以随便填
CID: 填入IPFS的cid地址
Name Network: 固定选IPNS
Enabled:固定选Yes
Import Existing Private Key (Optional):填入第一步的base64内容

确定提交。

修改workflow
- name: IPFS upload to filebase
uses: filebase/ipfs-action@master
with:
    path: ./public
    service: filebase
    pinName: ipfs-action
    filebaseBucket: ${{ secrets.FILEBASE_BUCKET }}
    filebaseKey: ${{ secrets.FILEBASE_KEY }}
    filebaseSecret: ${{ secrets.FILEBASE_SECRET }}
    key: ipfs-action

新增key参数,值为第二步Label填入的内容。

提交后,执行workflow,在执行结果里找到IPNS地址。

Run filebase/ipfs-action@master
Parsing options...
Parsed Options: {"path":"/home/runner/work/***.github.io/***.github.io/public","service":"filebase","host":"ipfs.io","port":"5001","protocol":"https","headers":{},"key":"ipfs-action","pinName":"ipfs-action","pinataKey":"","pinataSecret":"","pinataPinName":"","filebaseBucket":"***","filebaseKey":"***","filebaseSecret":"***","infuraProjectId":"","infuraProjectSecret":"","timeout":"60000","verbose":false,"pattern":"public/**/*"}
Adding files...
Starting filebase client
Started filebase client
Storing files...
Stored files...
CID: bafybeihagzsdupyrecky7bnstzckgf5flxbrdz542jmfaep4xtbj6aa2ea
Updating name...
Updated name...
Done
Upload to IPFS finished successfully {
  cid: 'bafybeihagzsdupyrecky7bnstzckgf5flxbrdz542jmfaep4xtbj6aa2ea',
  ipfs: 'bafybeihagzsdupyrecky7bnstzckgf5flxbrdz542jmfaep4xtbj6aa2ea',
  ipns: 'k51qzi5uqu5dktnw0vc8j9ci42e8gk741ici7ofpv40mo4f6e1ovj1isnc7uwg'
}

更新域名的dnslink值:

普通域名

dns

eth域名

eth

第一次和外国人在线沟通,时差原因搞了两天才把filebase导入报错的问题解决。 😂😂😂

另外吐槽一下filebase服务,sdk已经有相关实现了,文档都还没更新。