这是一个快速教程,教你:

  • 在IPFS上托管一个简单的静态网站

  • 更改网站内容时,使用IPNS保留一个id(地址)

  • 使用DNSLink将IPNS id替换为可读的地址

首先你需要安装、初始化(https://ipfser.org/2019/09/06/ipfs-related-hand-in-hand-to-create-a-dedicated-ipfs-network-teaching/),并将IPFS连接到公共网络。

创建一个简单静态网站

你只需要一个简单静态的HTML页面,并且所有链接都是相对的。出于教学的目的,我在gist上放置了一个简单的hello world。并将这些文件放置在一个名叫“site”的文件夹中。

index.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Hello IPFS!</title>

<link rel="stylesheet" href="./style.css" />

</head>

<body>

<h1>Hello IPFS!</h1>

<span>Hosting on IPFS is SimpleAsWater</span>

</body>

</html>

style.css

h1 {

color: #3f51b5;

}

加入IPFS

接下来,你需要将这个网站加入IPFS。

$ ipfs add -r site/

你需要看到这样的:

added QmaL9R8Mxpgn7gxiqYytccM3BWX1FZfSRNGPJChu62Xe2B site/index.html

added QmazEzEvcnQ6QRdMCMYPMFphen85G93x7qKpxgeCH2FFmu site/style.css

added QmQToNGFsGMkQe76mRirCvRykJSiRB1JPpRLumyMN7N67T site

最后一行的哈希就是你网站的根,你可以通过打开http://localhost:8080/ipfs/<你的哈希>来访问它。

你也可以从公共的IPFS网关来看这个网站,但这可能需要花费你几分钟,甚至几个小时来获取公共网关。

https://gateway.ipfs.io/ipfs/QmQToNGFsGMkQe76mRirCvRykJSiRB1JPpRLumyMN7N67T

发布到IPNS

现在你已经获得了一个在IPFS上托管的简单静态的网站。那么问题来了,一旦你更新网站,这个哈希值就会改变,并且你已经分享的所有连接都只能指向旧版本。

因此,你需要找到一个总是分享最新哈希值的方法。这里就需要IPNS了。它允许你将IPFS的哈希存储在你peerID(你公钥的哈希)的名称空间中。

$ ipfs name publish <your site hash>

这可能需要花费几分钟时间,下面我们会看到如何利用DNSLink让它变得更快。

当你的网站使用IPNS发布以后,你会看到类似下面的一些链接:

Published to QmdZZgjYoh9sQUonNyefkMyXhEMXFC2rGvhXsJAbAPsF55: /ipfs/QmQToNGFsGMkQe76mRirCvRykJSiRB1JPpRLumyMN7N67T

这将返还你peerID和要向其发布的哈希。你可以通过运行以下命令进行确认:

$ ipfs name resolve <peerId>

这也需要几分钟。执行此操作后,你将看到以下内容:

/ipfs/QmQToNGFsGMkQe76mRirCvRykJSiRB1JPpRLumyMN7N67T

或者,你可以查看https://gateway.ipfs.io/ipns/ <peerID>(注意目录是IPNS而不是IPFS)。

几分钟后,你将能够看到你的网站(示例):

https://gateway.ipfs.io/ipns/QmdZZgjYoh9sQUonNyefkMyXhEMXFC2rGvhXsJAbAPsF55

大约12个小时后,IPNS会忘记(Time to Live System)发布的名称。你需要运行定时任务以在12小时内重新发布。

使用DNSLink

你需要使用一个托管服务,比如 AWS、GoDaddy ,来托管你的网站,以继续剩下的教程。或者你可以在这里就结束

IPNS并不是在IPFS上创建可变地址的唯一方法。你也可以使用DNSLink,这个在最近比IPNS更加迅速,也使用了更多易读的名称。

DNSLink地址看起来就像是IPNS地址,但它使用域名代替哈希公钥:

/ipns/simpleaswater.com

非常可爱不是么~让我们看看它是怎么实现的↓↓

我使用的是GoDaddy来托管我们的静态网站。当然你也可以使用任何其它的托管服务。

你需要增加一个DNS TXT记录,就像下面的这个。

NAME

RECORD TYPE

VALUE

simpleaswater.com

TXT

“dnslink=/ipns/[peerID]”

如果你不知道如何增加一个TXT记录,只需要搜索“add DNS txt record to <your hosting service name>”。

现在,就可以等待几分钟,让这些更改产生效果了。

看!现在我们可以使用一个可爱的链接进入我们可爱的网站啦~

https://gateway.ipfs.io/ipns/simpleaswater.com

—END—

本文由IPFS原力区编译,原文链接:https://simpleaswater.com/hosting-website-using-ipfs/

关注我们网站:https://ipfser.org

【IPFS原力区】

价值观:价值 共建 共享 荣耀

总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。

每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。

操作指南丨利用IPFS相关技术/工具托管网站相关推荐

  1. Python后端相关技术/工具栈

    Python后端相关技术/工具栈 转载http://python.jobbole.com/83486/ 整理下目前涉及到的python的技术栈和工具栈(用过或了解的, 其他的后续用到再补充) 编辑器 ...

  2. 云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...

    IPFS是一种用于文件存储的对等网络协议,采用的是基于内容的寻址,而非基于位置.这意味着要查找文件,我们不需要知道它在哪里(abc.com/cat.png),而是它包含的内容(QmSNssW5a9S3 ...

  3. 开学网络舆情信息搜集方法与技术工具详解

    开学时间舆情产生后,若不能及时进行舆情监测,做好舆情前置风险研判,舆情很容易快速传播发酵升级,触发舆情危机.因此,为了有效做好舆情风险防范工作,当前校方亟需做好开学时间舆情搜集工作. 由于网络信息数据 ...

  4. 如何利用Google关键字工具获取网站关键字

    Google Adwords关键字工具通过基于搜索的关键字建议,可以按字词.词组.网站或类别获取关键字提示.是站长朋友们,尤其是做英文Google Adsense的英文站站长在网站关键字选择上必不可少 ...

  5. 【Pingtunnel工具教程】利用ICMP隧道技术进行ICMP封装穿透防火墙

    文章目录 前言 一.ICMP隧道概念 二.复现前的准备工作&相关环境介绍 三.复现步骤 三.总结 前言 web搞太多了,发现csdn上面很少内网的内容,所以今天来整点内网的隧道技术,ICMP隧 ...

  6. 大力呼吁国内Fil厂商利用IPFS技术赋能实体经济,实现数据安全存储,已十分重要且紧迫了

    ​重大:<数据安全法>颁布,国家支持数据开发利用和数据安全技术研究:"数据"已成为和土地.资本.劳动力并列的"生产要素",具有重大价值,数据安全成为 ...

  7. Frida-Dexdump 脱壳工具下载使用以及相关技术介绍

    Frida-Dexdump 脱壳工具下载使用以及相关技术介绍 文章目录 Frida-Dexdump 脱壳工具下载使用以及相关技术介绍 前言 一.查壳.反编译.APK工具推荐 二.查壳 1.方式1 2. ...

  8. RBOHD丨呼吸爆发氧化酶同源蛋白D相关研究工具介绍

    RBOHD(呼吸爆发氧化酶同源蛋白D)是一种钙依赖性NADPH氧化酶,可产生超氧化物.参与与病原体不相容相互作用期间活性氧物种(ROS)的产生以及UV-B和脱落酸ROS依赖性信号传导. 艾美捷 RBO ...

  9. 利用IPFS构建自己的去中心化分布式Wiki系统

    IPFS全称InterPlanetary File System,中文名:星际文件系统,是一个旨在创建持久且分布式存储和共享文件的网络传输协议. 它是一种内容可寻址的对等超媒体分发协议.在IPFS网络 ...

最新文章

  1. 【Dlib】dlib和opencv的互转
  2. mysql知识总结体会博客_可能是全网最好的MySQL重要知识点/面试题总结||CSDN博客精选...
  3. java的输出的例子_Java例子:万年历的输出
  4. oracle执行减法,oracle时间的加法和减法
  5. Java 包及访问权限
  6. html等待图片全部加载,imgLoad等待图片资源加载完成后执行函数(图片预加载)...
  7. 华为P30系列高清渲染图曝光:后置三摄拍照要上天
  8. 安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
  9. nfc读写软件 android手机,手机nfc万能读写软件
  10. python比对excel表数据_【转】用python比对数据库表数据的脚本
  11. What is Drilldown configuration
  12. shell编程三大神器之awk
  13. R语言--rep函数
  14. 关于kali Linux缺少pyrit或者pyrit无法定位的问题
  15. C语言动态申请内存空间之malloc(),calloc(),realloc()函数
  16. 介绍Jackson JsonNode和ObjectNode(*)
  17. php爬取flash的交互数据库,flash用php连接数据库的代码
  18. 《刷新》读书笔记(一)
  19. B2C电商项目(第十四天、秒杀前端、秒杀商品存入缓存、秒首页实现、时间菜单、倒计时、加载商品列表、抢购按钮 )
  20. vi文本编辑器中复制,剪切,黏贴与删除及字符的查找与替换

热门文章

  1. 日增进:Oracle dump文件的导入导出
  2. iOS-打开本地或下载的Excel文件
  3. 【C语言入门简单程序】三子棋——新手轻松学
  4. 机器人教育对孩子们的作用
  5. css —— 文字添加白色描边
  6. 推荐一款实用的用户画像工具--快鲸scrm
  7. Unity3d游戏中实现阿拉伯语文字正常显示
  8. python 爬虫课程推荐_关于递归抓取的课程推荐
  9. printf中%p的输出应用
  10. Python教程 - Django