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

推荐订阅源

月光博客
月光博客
V
Visual Studio Blog
C
Check Point Blog
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
博客园 - 聂微东
量子位
T
Tailwind CSS Blog
罗磊的独立博客
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
L
LangChain Blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Know Your Adversary
Know Your Adversary
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
有赞技术团队
有赞技术团队
V
Vulnerabilities – Threatpost
Martin Fowler
Martin Fowler
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
Cyberwarzone
Cyberwarzone
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
GbyAI
GbyAI
Latest news
Latest news
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
AWS News Blog
AWS News Blog
aimingoo的专栏
aimingoo的专栏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
博客园 - Franky
S
Securelist
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
美团技术团队

王小嗨的不老歌

網路受限下部署Fediverse實例GoToSocial 香橙派3B:丐版HomeLab之良品 我的博客方案:靜態網站與 IPFS 《三體》與 iPhone 產線:國朝的工業與科幻的黃金時代 「簡中互聯網」:長城內愛國者的鏡花水月 LH汽車站宛若疫情前的三和 matters.news:一个故弄玄虚的伪去中心化站点 《区块链实战:从技术创新到商业模式》读书笔记 關於《一个农民工思考海德格尔是再正常不过的事》的一點點想法
Planet:一款IPFS静态站点生成器
王小嗨 · 2022-09-03 · via 王小嗨的不老歌

对于不少人来说,搭建一个自己的网站是件不好入手的事情。抛开一系列眼花缭乱的技术术语,还需搞定服务器、域名、建站工具等等,这些都要气力去认知与实践。况且随着互联网寡头横行霸道,似乎发布或拥有一个网志站点已变为画蛇添足的笨蛋行为。

万幸,分布式网路虽英雄末路,但还未乘鹤西去,已有开发者将发布分布式网站做成了一件用户操作友好的事情。妳只需在macOS上安装Planet,就可将IPFS作为托管服务器,几下点击就可发布一个网志站点。

Planet的创始人Livid也是大型程序员交友网站v2ex的创始人,在Planet发布前的一档播客访谈 中,Livid称维护v2ex的服务器与数据库是一件漫长且痛苦的事情,并表示如果再开发一款程序,自己不会选择再托管用户的数据。

星际文件系统(Interplanetary File System,缩写为IPFS)是一个旨在实现文件的分布式存储、共享和持久化的网络传输协议。[2]它是一种内容可寻址(英语:Content-addressable storage)的对等超媒体分发协议。在IPFS网络中的节点构成一个分布式文件系统。

——维基百科「星际文件系统」词条

IPFS作为分布式网路技术,并且可实现用户自己托管自己的数据,这让Livid看到了光亮,遂有了开发Planet的想法。西元2022年07月11日,Livid在v2ex发帖,「如果你之前用过 IPFS 或者 ENS,你可能会想要试试我们在做的这个App」,Planet正式上线。

Livid在访谈中表示,底层协议的迭代已经成熟,分布式站点完全可能,Planet会做一个用户友好的进入分布式的入口。

在开始使用Planet部署自己的分布式站点之前,我们有必要有了解一下访问一个万维网站点的过程。

浏览器访问万维网过程的简易示意图

在访问传统万维网站点的过程中,首先浏览器要跟DNS服务器请求服务器地址,我们可以把这个过程想象成在手机地图中输入商家名称,获得商家地址;然后,有服务器地址,浏览器就可以与服务器建立连接,我们可以把这个过程想象成有商家地址,我们就可以乘坐共同交通前往与返回;最后,当建立了连接,客户浏览器就可以发送需要的文件,服务器收到了这个请求,就会将相应的文件返回给浏览器,浏览器得到文件就可以将内容显示给用户,我们可以将这个过程想象成我们在外送app上点了一个红烧肉,商家收到了订单,做好后就发送给用户。

世界上第一台服务器

也许有人会问,什么是服务器呢?事实上,服务器就是一台电脑,任何联网的设备都可以成为一台服务器,妳的手机或电脑都可以作为服务器供她人访问。被提姆·柏内兹-李在CERN所使用的这台NeXT计算机成为了世界上第一台网页服务器,上面写着「这台机器是服务器,不要关闭电源」。

然而,时至今日,互联网寡头大行其道,加之国内糟糕的联网环境,已经很少人在家中自行搭建站点服务器了。我们平时所访问站点更多是托管在云服务器商(阿里云、亚马逊云等等)之上,这与万维网的理念完全背离,回滚到电台广播的时代。「偷听敌台」,「私建电台」,已然成为抗命行为。

那么,Planet生成的IPFS站点有什么不同?

浏览器通过ENS域名访问IPFS站点的简易示意图

我们可以简单地认为IPNS代替了传统域名和DNS服务器,IPFS代替了服务器。

一个网站主要使用由域名与服务器构成,与传统站点不同,IPFS的域名与服务器可完全实现分布式。IPNS是IPFS生态中的一个重要组件,全称是 Interplanetary Name System,一个去中心化的类似域名的系统。IPNS可绑定在一些去中心域名,也可绑定在传统域名域名中。而由于IPFS是一个分布式文件存储系统,所以使用IPFS作为站点服务器,也就实现了服务器的分布式。

点击「Download for Mac」下载

Planet是一个开源的macOS原生App,我们通过它的官網GitHub进行下载。

下载安装完成后,打开Planet,它会自动follow这两个站点:

  • vitalik.eth - Ethereum 的创始人之一
  • Planetable.eth - Planet 项目的博客

点击主界面下方的加号

写入名字与简介,选择模版,创建自己的Planet

点击撰写按钮

写入网志内容,并点击发布

发布完第一个篇文章之后,妳的 Planet 就会被发布为一个 IPNS。右键点击侧栏里你的站点,选择 Copy IPNS。然后你就会在剪贴板中获得像这样的一串东西:

Copy IPNS

k51qzi5uqu5dhxd50115dn1hfvuwiqwej3dki72uyopetqua71i6lp96pem0a6

然后妳把这串IPNS发给其它Planet用户,她们就可以收到来自妳的更新了。

妳用Planet发布的网站,也可能可以通过各种 Public Gateway 访问,比如这是你当前正在阅读的这篇文章在各个 Gateway 上的地址(URL 拼接规则是 Public Gateway 域名 + /ipns/ + Planet.ipns + / + Article.UUID):

  • ipfs.io
  • dweb.link
  • cf-ipfs.com

绑定传统域名,需要使用的是DNSlink服务,大概的意思就是在DNS上写入txt记录,以供读取。因为使用到传统的DNS服务,所以IPNS关联到传统域名,并非是一个去中心的解决方案。

例如,绑定Planet到sogola.com主域名,

IPNS的地址:

k51qzi5uqu5dhxd50115dn1hfvuwiqwej3dki72uyopetqua71i6lp96pem0a6

则到域名DNS管理页上创建一个txt记录

设置name值为:

  • _dnslink

设置Content值为:

  • dnslink=/ipns/k51qzi5uqu5dhxd50115dn1hfvuwiqwej3dki72uyopetqua71i6lp96pem0a6

例如,绑定Planet到www.sogola.com二级域名,

设置name值为:

  • _dnslink.www

设置Content值为:

  • dnslink=/ipns/k51qzi5uqu5dhxd50115dn1hfvuwiqwej3dki72uyopetqua71i6lp96pem0a6

等待DNS生效,使用原生支持IPFS的Brave浏览器就可以直接访问 ipns://sogola.com/ 。

如果在DNS中添加cloudflare的IPFS gateway,也可以使用普通浏览器的访问。

使用ENS绑定IPNS,就是利用Ethereum账本作为DNS账本。在ENS合约之中,将IPNS地址记录到Content Hash,这样任何人都可以访问Ethereum账本,查询相应的ENS绑定的IPNS。

因为设定Content Hash会是一个 ENS 合约上的操作,所以这一步会有gas fee。但是之后妳在 Planet里发布新的内容,妳的IPNS不会发生改变,也不会再有gas fee的问题。

首先,打开ENS管理页面 https://app.ens.domains/

ipns://k51qzi5uqu5dhxd50115dn1hfvuwiqwej3dki72uyopetqua71i6lp96pem0a6

然后,将IPNS写入Content Hash,并确定上链。

这里有一个小tip,如果妳并不着急解析立刻失效,可自定义Max base fee和Priority fee。在metamask中打开gas fee的高级管理选项,在确认操作的时候,编辑gas fee选项即可。

在完成了ENS绑定之后,也可以直接用类似下面这样的地址通过Public Gateway打开妳的 ENS:

在原生支持IPFS的Brave浏览器里,你甚至可以用 ipns://sogola.eth 这样的地址直接打开妳的IPFS站点。

阅读器用自己的格式渲染原文,可以让体验更一致,及对离线阅读更友好。但对于网站的原作者,会丢失原始网站的设计及影响源网站的利益。

—— Livid在Planet中的发言

使用Planet订阅Planet、IPFS站点或RSS,会自动加载站点的原生样式,这样的做法无疑是在开发一款浏览器,而非阅读器。对于读者用户来讲,这不是一个好的体验,比较kindle这样的电纸书也不会不允许读者自定义图书的样式。至于创作者的收益与读者的便利,我想肯定应该会有一个平衡点,但将阅读器重新发明为浏览器,无疑不是一种好的选择。

因为IPFS的特性,Planet站点使用普通域名往往访问过慢,这时候每个用户要尽可能地获得更多follower。

对于这一点,Livid在用户聊天群中表示:将来可以成立一个数据DAO来提供托管服务,但目前的主要工作还是完善软件、扩大用户数量。

Planet目前只支援macOS,至于使用更为普遍的Windows,开发者好像并没有支援计划。桌面操作系统的份额,Windows是最大,分布式网路依靠用户数量壮大才能取胜,只支援macOS与扩大节点数量是存在矛盾的,我们只能寄希望于有其它开发者会开发一款兼容Windows的客户端。

如果使用过程中遇到什么问题,可进入Planet的中文用户群,Livid是一位热心的开发者,他很乐意与用户交流。

https://t.me/+5bl7FIsxeChlOWIz

最后,衷心地祝福Planet做强做大,分布式永垂不朽。