IPFSify 文档

2021-08-02 14:25:17

所以最近我花了大量时间离线或使用不可靠的互联网(旅行:叹息:)。所以,我一直在 IPFSing 一些有助于离线访问的代码文档。 IPFS 的 TLDR 是一个内容寻址系统,这意味着它不关心内容的托管位置;只是什么托管。这使得备份最新版本的网站以供离线访问非常容易,还有许多其他优点。离线时,直到 http://github.com/ipfs/go-ipfs/issues/8245 被弄清楚,这些 URL 中的任何一个的域都必须设置为最新的 CID(内容 ID(有点像哈希) )) 在 /ipfs/<CID> 而不是 /ipns/<domain>,除非您的 DNS 脱机工作。以下所有网站暂时由我手动更新,因此,它们可能会滞后(每隔几天),直到我能找到自动化来做到这一点。我也想 IPFS https://cht.sh,但它似乎是一个我还没有接触过的更复杂的系统。如果我早点意识到我的情况,我会下载所有的 cheat.sh,但我没有 :( IETF - 最常见的 RFCs /ipns/ietf.karmanyaah.malhotra.cc,也在 Gemini 上我只是 rsynced rfc -editor.org 并且格式相同。我有一些更好的想法,例如,URL 不是 /bcp/bcp1234.html,而是 /html/bcp/1234,但我还没有开始编写所有脚本TLDR - 手册页但更简单将整个 repo 缓存在本地 IPFS 节点上的另一个优点是新的查找速度更快。以下可以添加到您的 shell 初始化文件(例如 ~/.bashrc)中。这会将 TLDR URL 设置为您的本地 IPFS 实例;同时禁用缓存,因为 IPFS 无论如何都是完美的*缓存。

Arch Wiki - 最好的 GNU/Linux Wiki(最好的发行版/社区(有争议?下面的评论部分))/ipns/archwiki.karmanyaah.malhotra.cc 在调试系统设置和 Linuxy 方面总是有用的,不仅适用于 Arch,还适用于其他系统。我正在使用 Arch Wiki Docs,它与用于生成 Arch 包 arch-wiki-docs 的脚本相同。这个过程有一些问题——最明显的是链接不起作用——但如果有人有更好的下载脚本,我愿意尝试一下。这些文档不是我作为该项目的一部分托管的,而是在 IPFS 上的,这非常好。 Unifiedpush.org - 尊重推送通知的自由规范(和实现) /ipns/unifiedpush.org + F-Droid Repo /ipns/repo.unifiedpush.org 这由我托管在同一台服务器上,但它是 S1m( @sim_g:matrix.org)(UnifiedPush 的主要开发者)在我第一次帮助建立这个网站时向我介绍了 IPFS;在这个文档项目之前很长一段时间。这本机托管在 IPFS 上。 jargon.karmanyaah.malhotra.cc - “行话文件,黑客俚语的综合纲要,阐明了黑客传统、民间传说和幽默的许多方面。”您可能已经注意到,其中许多站点也通过 HTTP 或 Gemini 提供服务。这和固定到服务器上的 IPFS 是由检查 IPNS 地址上最新 CID 的 cron 作业完成的。如果 CID 不同,它会将站点添加到 MFS(稍后会详细介绍)并替换 /srv/ 目录中此数据的副本。然后,这些文件由 Caddy 和 gmnisrv 提供。所有这一切都由这个 Ansible playbook 使用这里的主脚本模板部署。当我在 Mastodon 上吹嘘要设置单个镜像时,@[email protected] 回应了有关将 IETF 镜像固定在 Estuary 的建议。 Estuary 是一项 Filecoin 服务,目前只接受邀请,似乎对公共数据集是免费的。 [email protected] 也收到了我的邀请。使用现有的 IPFS 资源很容易,我只是编写了一个脚本来调用 add-ipfs api 端点,最终将 CID 保存到 Filecoin 上,通过 IPFS 检索它。该脚本可以在 repo 中找到。虽然没有太多切线,但我认为 Filecoin 是一个非常有趣的想法,具有很大的潜力,我希望它能够像其他一些愚蠢的加密货币一样传播开来,这些加密货币会无缘无故地浪费资源并抬高价格。

在以下解决方案之前,对于我的个人网站,我尝试将 DNSLink 指向 IPNS,然后指向 IPFS;虽然它确保内容非常容易更新,但解析速度非常慢。当发布者离开时,这可能是完全 p2p 命名方案的本质的基础;也许只是缺乏实施;我不知道,我对这个领域的了解还不够,无法提供帮助。所以,我切换到另一个选项。我基本上使用以下脚本来发布我的 IPFS DNSLink。请注意,以下内容被修剪为具有教育意义,真实版本可以在 repo 中找到。 DOMAIN 和 DIR 是这里的输入。前提是该 DNSLink 记录应该已经存在。 cloudflare 访问令牌和区域 ID 存储在 Bitwarden 中并使用 rbw 访问。 BW_ENTRY =cloudflare_malhotra.cc_token LOC = "/website/ $DOMAIN " # 在 MFS 中存储的位置 CID = $(ipfs add $DIR -rpQ --pin = false --cid-version =1 $CUSTOM_IPFS_ADD_OPTIONS ) if ipfs files ls - l " $LOC " | grep -q $CID ;然后 echo 已经将 $CID 添加到 $LOC else echo 添加 $CID 到 $LOC ipfs files cp /ipfs/ $CID " $LOC / $( date +%F_%T ) " fi RECORD_DOMAIN = "_dnslink. $DOMAIN " # password是令牌,自定义字段用于区域 SECRETS = " $(rbw get $BW_ENTRY --full ) " CLOUDFLARE_TOKEN = " $( echo " $SECRETS " | head -n 1 ) " ZONE_ID = " $( echo " $SECRETS " | grep -i zone | cut -d ' ' -f 2 ) " function curl { curl -s -H "Authorization: Bearer $CLOUDFLARE_TOKEN " -w '\n' -H "Content-Type:application/json" $@ } RECORD_ID = $(curl "https://api.cloudflare.com/client/v4/zones/ $ZONE_ID /dns_records?name= $RECORD_DOMAIN " | jq ".result[0].id" -r )curl "https ://api.cloudflare.com/client/v4/zones/ $ZONE_ID /dns_records/ $RECORD_ID " -X PATCH --data "{ \" content \" : \" dnslink=/ipfs/ $CID \" }"这些 CID 也被添加到 MFS(go-ipfs 的可变文件系统)中,但没有固定。将它们放在 MFS 中可以确保它们不会被垃圾收集,但可以让我可以人类可读地删除非常旧的版本,而使用未命名的引脚可能会困难得多。但是,ATM,自 2021 年 5 月 22 日以来我网站的所有版本都使用不到 7 MB 的空间,因为 IPFS 对未更改的文件进行了重复数据删除。此外,多个版本的 IETF 文档(其中文件保持 99.9% 相同)仅消耗几兆字节的空间。从我的网站的角度来看,IPFS 提供了完美的方式来缓存 bust URL,并为 CSS 和 JS 资产提供完美的(即不可变的)浏览器缓存。它还为开发人员重新思考静态资产和 API 之间的区别提供了独特的机会;以及在很大程度上静态 API(对于多个用户相同)实际上可以无限地水平扩展。在 IPFS 上设置静态站点的开销目前远不止 rsync 或将文件 scping 到服务器,但我认为扩展潜​​力弥补了这一点(尽管不可否认,在个人博客的规模上,它甚至没有问题,但理想:叹:)。从互联网状况不佳的人的角度来看(我只能在这里推测,因为我家里有良好的互联网),随着 IPFS 的开销正在减少,希望它为人们提供了连接到其他方式无法拥有的资源的可能性。这对于实际的星际物质也可能有用(概念不是当前的实现)。如果公共站点(新闻、电影等)在 IPFS 上具有只读模式,那么一名宇航员或太空游客应该可以请求某事物,然后该事物在本地缓存,供以后可能需要它的另一个人使用,而不是而不是每次都必须从地球上一路请求。此外,随着最近的元素 - 协议实验室的事情,MSC2706 将根据他们的博客文章受到关注,这非常好。