现在大家可以直接输入域名访问到这个去中心化博客了:

使用支持 ipfs:// 或者 ipns:// 协议的浏览器可以直接输入域名访问,使用现代浏览器的 https:// 协议也可以直接访问。

https://dblog.weclont.icu

这样的将 IPFS/IPNS 内容绑定到传统域名的方案已经存在很多年了。但是,其中的一个关键部分,之前的主要提供者是 Cloudflare 的 IPFS Gateway。不知为何,这个 Gateway 在过去一年的时间里,大部分时候都是非常不可用的状态,即使是在 Cloudflare 将这个 Web3 Gateway 以付费服务的方式提供之后。

而 ENS 之外的生态系统里,目前又暂时不存在像 ETH.LIMO 这样的高可用的项目。所以,目前大概只能自建了。不过也不复杂,如果你之前有 Linux 和 NGINX 的使用经验,那个原理和过程还挺简单的。大概就是以下 3 个步骤:

  1. 为域名增加 DNSLink 记录。
  2. 在 Linux 服务器上安装 Kubo 并进行一些必要的设置。
  3. 为域名搭建一个源站给 CDN。

为域名增加 DNSLink 记录:

以本博客为例,第一步是从 Planet 里 Copy IPNS 获得这样的一个 k51 开头的字符串:

k51qzi5uqu5dgkfawgtbdvr5aigv1dlkz4362tkmusdpxo0u5s3qg6aztpfg5w

假设我们要绑定到 dblog.weclont.icu 这个域名,那么我们需要为 _dnslink.dblog.weclont.icu 增加这样一条 TXT 类型的 DNS 记录:

dnslink=/ipns/k51qzi5uqu5dgkfawgtbdvr5aigv1dlkz4362tkmusdpxo0u5s3qg6aztpfg5w

在完成这步之后,其实所有的公网上的 IPFS Gateway 就已经可以找到这个博客了,比如:

https://cf-ipfs.com/ipns/dblog.weclont.icu

或者在 Brave 浏览器里直接用 ipns://dblog.weclont.icu 也可以打开。

这种在浏览器地址栏里看到新协议的感觉。😊

我们的目标是让这个 IPNS 通过传统域名和传统浏览器也可以访问,所以我们还需要继续为它搭建一个源站。

在 Linux 服务器上安装 Kubo 并进行一些必要的设置
Kubo,也就是 Go 版本的 IPFS 实现的最新版本,可以从这里下载:

https://github.com/ipfs/kubo/releases

第一次运行前,需要初始化,我们选择以 server 配置进行初始化:

1
ipfs init --profile=server

然后就可以启动了,这里我们打开了和 PubSub 有关的两个试验选项。推荐用 supervisor 或者 systemd 做成常驻服务。

1
ipfs daemon --enable-pubsub-experiment --enable-namesys-pubsub

为域名搭建一个源站给 CDN

Kubo 启动之后,在 localhost 上就会多一个神奇的 8080 端口。这个端口是可以响应 HTTP 的 Host header 的,也就是说,如果你运行下面的这条指令,就可以拿到这个博客的首页:

1
curl -H "Host: dblog.weclont.icu" http://127.0.0.1:8080/

所以,借助 Kubo 对虚拟主机头的支持,我们可以这样配置一个 NGINX 源站:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
upstream ipfs_backend {
server 127.0.0.1:8080;
keepalive 4;
}

server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;

# SSL
include /etc/nginx/ssl/dblog.weclont.icu.conf;

server_name dblog.weclont.icu;
access_log /var/log/nginx/dblog.weclont.icu.log;

location / {
proxy_pass_header Server;
proxy_http_version 1.1;
proxy_set_header Host "dblog.weclont.icu";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Via "Planetable";
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504 http_403 http_404;
proxy_cache_valid 200 60s;
proxy_pass http://ipfs_backend;
}
}

这样我们就获得了一个可以给 CDN,比如 Cloudflare 使用的,能够响应 dblog.weclont.icu 请求的 http/https 源站。


原文来自:v2ex

参考:medium