带你去星际

这年头,不搞点云计算分布式大数据区块链,就没法和人正常交流了。在上一篇,实现了Hexo的全站双语,兴奋之余,不妨再进一步,让你飞,带你去星际。

准备工作

这一章,在英文页面里是不存在的

任何去中心化的东东,都是要反对要消灭的,所以对个人而言,首先需要具备科学上网的能力。如果连这个基础都不具备,下面的内容就不需要再看了,星际系统网站已被墙,你是访问不了的。

注:本站不提供科学上网教程,也是为了你不用科学上网就能访问本站,见谅!

何为星际

星际文件系统(InterPlanetary FileSystem),简称星际。突然间,一口霸气涌上心头,这已经把未来第一次接触后的宇宙合作考虑进去了。的确,咱地球有这么多好片,怎能光顾着自己享受呢?就是不知量子纠缠通信什么时候普及,否则两颗星球之间共享个片,浩叹会耗费多少光年。

星际使用内容寻址代替域名寻址,但是后面章节可以看见,要用传统方式访问星际系统里的网站文件,还是离不开域名配置。而去获取内容哈希得到的地址,也要访问星际节点服务器。某种意义上,去中心化文件存储的起点,还是离不开中心化的服务器。

而分布式的数据存储,必然造成浪费。有些持续升级的文件,之前存储的内容不再有效,使用pin后却永久保留在星际内部,无法剔除。甚至连文件的主人都没有保留之前的内容地址,死文件成了游荡在星际系统里的孤魂野鬼。

安装星际

  • 下载最新安装包
    • 打开 官方网站,点击 Download IPFS for your platform
    • 选择对应自己操作系统的压缩包,下载,解压缩
  • 安装星际系统
    • 以MacOS为例,进入 go-ipfs 目录,输入 ./install.sh
    • 权限不够请在前面加 sudo,其实就是把可执行文件拷贝至运行路径里
    • 输入命令 ipfs help 测试安装是否成功
  • 创建星际节点

    • 输入命令 ipfs init,初始化会在用户目录下生成 .ipfs 目录和配置文件
    • 把生成的 peer identity 拷贝留用,或者在 ~/.ipfs/config 里可见
    • 修改配置,选择合适自己的存储空间容量 vi ~/.ipfs/config

      "Datastore": {
        "StorageMax": "6GB"
      }
      
  • 开启守护进程
    • 输入命令 ipfs daemon > ipfs.log &,以后台进程方式启动守护进程
    • 输入命令 ps ax|grep ipfs,检查守护进程是否启动成功
    • 注:想要和星际网络连接,需要全局科学上网,甚至最好在墙外操作

发布网站

  • 发布至星际

    • 输入命令 ipfs add -r public 将public目录发布至星际
    • 将public目录生成的哈希拷贝留用
    • 持久保存 ipfs pin add -r QmUmVuqD8RdLjeuqKZC8dAaKkcRedPsGtDFbwPyKrR278K

      added QmUmVuqD8RdLjeuqKZC8dAaKkcRedPsGtDFbwPyKrR278K public

      可以通过https://ipfs.io/ipfs/QmUmVuqD8RdLjeuqKZC8dAaKkcRedPsGtDFbwPyKrR278K 直接访问

  • 绑定代名

    • 输入命令,将public目录哈希值绑定当前节点代名

      ipfs name publish QmUmVuqD8RdLjeuqKZC8dAaKkcRedPsGtDFbwPyKrR278K

    • 绑定成功,该代名就是在上一章init时生成的peer值

      Published to Qmdn4vrHjbmsQvHPXAiJvWFHQRqGd5fP33HJqd9AE4EjMH: /ipfs/QmUmVuqD8RdLjeuqKZC8dAaKkcRedPsGtDFbwPyKrR278K

      可以通过https://ipfs.io/ipns/Qmdn4vrHjbmsQvHPXAiJvWFHQRqGd5fP33HJqd9AE4EjMH 代名访问

    • 注:代名是不变的,文件哈希一直在变,所以绑定代名,才能在传统域名里解析,代名就是星际系统里的固定IP

配置域名

  • 获取域名
    可以前往 Godaddy或各大域名商处注册
  • 修改DNS Server
    这里,推荐使用 CloudFlare 作为域名解析商,原因是:

    • 免费解析
    • 免费支持https,加密传输更快(天朝你懂的)
    • 官方支持ipfs域名解析

    将DNS Server改成下列即可

    dahlia.ns.cloudflare.com
    sid.ns.cloudflare.com

  • 修改解析

    • DNS菜单,添加CNAME记录,指向cloudflare-ipfs.com

    • DNS菜单,添加TXT记录_dnslink,使用刚刚的代名

      dnslink=/ipns/Qmdn4vrHjbmsQvHPXAiJvWFHQRqGd5fP33HJqd9AE4EjMH

    • 申请数字证书网址
      输入域名

  • 静静等待

搭建网关

希望提供自己gateway服务的,再参考下面步骤(非必须)

  • 安装Nginx
    • apt install nginx-full
  • 配置Nginx

    • vi /etc/nginx/sites-available/example_com

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      upstream ipfs-server {
      server 127.0.0.1:8080;
      }

      map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
      }

      server {
      listen 80;
      server_name example.com;

      location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      proxy_pass http://ipfs-server/;
      }
      }
    • 运行 nsite -e service nginx reload

使用体验

本站的 克隆站 使用了星际系统,你可以访问体验。

实际使用效果,和想象中有点差别。第一次连接会花很长时间,经常出现Timeout,但连接成功一次后就飞快了。这是为什么呢?IPFS官方承认,这是他们IPNS服务不完善造成的。前面,我们把ipfs用代名转成ipns,是为了文件升级时,不用再次修改DNS。

然而,ipns寻址需要非常耗时,一般都超过20秒。这和ipfs寻址几乎秒开,形成鲜明对比。IPFS官方网站 因为内容固定,首页地址基本不变,用的是ipfs寻址,所以打开飞快。

所以,如果星际系统不能改善IPNS寻址性能,第一次打开网页会遇到超时,谁愿意等待呢?

Mac下使用iTerm2连接水木BBS 用Minos搭建Hexo全站多语言站点

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×