IPFS搭建HTTPS去中心化网站,真实可用

首先,我们需要知道IPFS是什么?

其实IPFS是一种协议,全称为Inter-Planetary File System,是一种点对点超媒体协议,旨在取代旧的HTTP,使网络更快,更安全,更开放。

我们平常都通过HTTP协议去访问一个网站,我们都知道在我们敲出一个网站后,我们实际上通过这个网址找了了服务器的IP,然后通过IP我们和服务器建立通信。而这种通信的稳定性它取决于对方服务是否可靠,万一挂了,我们肯定无法访问。同时还取决于我们的主干网络是不是通畅,如果那个地方主干网的光纤一不小心被挖断了,那可能导致某个服务就得挂一段时间了。

这也就是我们所说的HTTP趋于超中心化可能存在的隐患。而IPFS就是用来解决这些问题。IPFS让每一个人都可以成为一个服务节点,一旦你上传一个文件到IPFS,你的文件将会被存储在不同的节点,然后你会得到一个由文件内容计算出的加密哈希值。当你通过该哈希值下载你的文件时,IPFS会会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。这样,就实现了一个分布式的服务节点,既是你自己的节点挂了,你的文件依然可以正常访问。

这篇文章,我们一起通过IPFS搭建一个简单页面。

安装IPFS

首先,我们需要安装IPFS。

在这里找到适合你的平台的安装文件,下载。

然后解压,安装。

1
2
3
$ tar -zxvf go-ipfs_v0.4.18_darwin-amd64.tar.gz
$ cd go-ipfs
$ ./install.sh

查看是否安装完成。

1
2
3
4
$ ipfs --help
USAGE:ipfs - Global p2p merkle-dag filesystem.

这样,们就安装好了ipfs命令。之后,我们初始化一下。

1
2
3
4
5
6
7
$ ipfs init
initializing IPFS node at /Users/jin/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmQfPXYpcKWim9yQRhbZxxrgUve5VzHJD7h4miu2oQ6Ubj
to get started, enter:ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

初始化的过程中,生成了一个公私钥对,正是通过该公钥来标识我们的身份。

看看readme都写了些啥。

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
$ ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
Hello and Welcome to IPFS!██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!-------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |-------------------------------------------------------Check out some of the other files in this directory:./about./help./quick-start     <-- usage examples./readme          <-- this file./security-notes

这里有一些帮助文档,你可以先了解一下。

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/quick-start就可以查看quick-start

准备一个简单的网页

接下来,我们准备一个简单的页面。

  • 文件 ipfs_file/index.html
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<link rel="stylesheet" type="text/css" href="styles.css">
<html><body><h1>Hello World</h1><p> 我的IPFS</p><a href="https://razeen.me/post/start-ipfs-gateway.html#toc_0"> Back </a> </body>
</html>
  • 文件 ipfs_file/styles.css
1
2
3
4
5
body {background-color: #ccc;text-align: center;margin-top: 88px;
}

启动IPFS服务

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ipfs daemon
Initializing daemon...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.3.16/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit/ipfs/QmQfPXYpcKWim9yQRhbZxxrgUve5VzHJD7h4miu2oQ6Ubj
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.3.16/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

如果你查看了quick-start你应该知道,我们可以通过浏览器来查看一些UI界面,视频等。

如,通过http://localhost:5001/webui,我们可以查看我们刚刚启动的这个IPFS的一些节点情况。

​编辑

我们还可以看到我们连接了多少节点以及大概分布。

​编辑

当然还可以查找文件等,这里就不一一说了。

上传文件

然后我们可以通过add将文件上传。

1
2
3
4
5
$ ipfs add -r ipfs_file
added QmYN1vzHWT4U61R6GnnJ2H3N76DpZ4JU4xa3r8paDfDdEB ipfs_file/index.html
added Qmea1q1nEPxCsB8y5so2ppNVuKy2kMtFCiBnngiK7A4PY3 ipfs_file/styles.css
added QmSwtxZ5NzJ4cLEm9SX1oeAwcBYevfvb6nhYweXYNSXnNC ipfs_file333 B / 333 B [==============================================   ] 100.00

然后,我们通过IPFS网关访问https://gateway.ipfs.io/ipfs/QmSwtxZ5NzJ4cLEm9SX1oeAwcBYevfvb6nhYweXYNSXnNC/ 就可以访问刚刚的文件了。

​编辑

由于防火墙的关系,这里需要用梯子才能访问到==

Cloudflare IPFS gateway

最近发现Cloudflare也推出了ipfs网关,而且我们可以将自己的域名解析到该地址,通过TXT记录来关联你的IPFS文件。

访问

首先,我们可以通过https://cloudflare-ipfs.com/ipfs/QmSwtxZ5NzJ4cLEm9SX1oeAwcBYevfvb6nhYweXYNSXnNC/ 访问刚刚上传的文件。

添加DNS记录

然后,我么在我们的DNS服务商中添加两条记录,如下。

我希望将ipfs.razeen.me指向该文件,然后我需要添加如下记录:

​编辑

也就是,将ipfs.razeen.me CNAME到cloudflare-ipfs.com;
添加_dnslink.ipfsTXT值your_ipfs_hash_here 如:QmSwtxZ5NzJ4cLEm9SX1oeAwcBYevfvb6nhYweXYNSXnNC

提交

然后,在这里填上你的域名,提交即可。

之后,cloudflare会为你的域名申请一张证书,并完成转发, 整个过程可能需要10分钟左右。

当你看到Certificate is live.提示,域名配置就完成了。

访问一下,我们可以看到。

​编辑

到这里我们就完成该网页配置了。一个IPFS站点就搭建完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初次接触GWT,知识点总括

初次接触GWT&#xff0c;知识点概括 前言 本人最近开始研究 GWT(Google Web Toolkit) &#xff0c;现将个人的一点心得贴出来&#xff0c;希望对刚开始接触 GWT的程序员们有所帮助&#xff0c;也欢迎讨论&#xff0c;共同进步。 先说说本人的硬件环境&#xff0c;机器是 dell i…

Ubuntu 18.04.1 搭建Java环境和HelloWorld

一、搭建Java环境 系统环境 Ubuntu 18.04.1JDK 8IDEA 2018.2 1.下载JDK 官网地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本&#xff0c;点击jdk&#xff0c;进入下载页面&#xff0c;选择“Linux x64”版本的后缀为…

Python openpyxl打开有公式的excel表取值错误的解决办法,Python openpyxl获取excel有公式的单元格的数值错误,Python操作excel(.xlsx)封装类

Python openpyxl打开有公式的表格&#xff0c;如果直接读取&#xff0c;会出现有公式的单元格为空或零的情况。 参见&#xff1a; https://blog.csdn.net/weixin_45903952/article/details/105073611?utm_mediumdistribute.wap_relevant.none-task-blog-title-3 wb openpyxl…

Python实现GCS bucket断点续传功能,分块上传文件

Python实现GCS bucket断点续传功能&#xff0c;分块上传文件 环境&#xff1a;Python 3.6 我有一个关于使用断点续传到Google Cloud Storage的上传速度的问题。我已经编写了一个Python客户端&#xff0c;用于将大文件上传到GCS&#xff08;它具有一些特殊功能&#xff0c;这…

Spring Boot 最佳实践(一)快速入门

一、关于Spring Boot 在开始了解Spring Boot之前&#xff0c;我们需要先了解一下Spring&#xff0c;因为Spring Boot的诞生和Spring是息息相关的&#xff0c;Spring Boot是Spring发展到一定程度的一个产物&#xff0c;但并不是Spring的替代品&#xff0c;Spring Boot是为了让程…

Wo Cloud CentOS 挂载磁盘小计

为什么80%的码农都做不了架构师&#xff1f;>>> 涉及到的命令&#xff1a;fdisk/mkfs/mount 列出当前磁盘[rootvity ~]# fdisk -lDisk /dev/vda: 21.5 GB, 21474836480 bytes 16 heads, 63 sectors/track, 41610 cylinders Units cylinders of 1008 * 512 516096…

PC通过IE浏览器对华为S5700交换机进行WEB管理

1.PC和交换机通过网线连接,通过CONSOLE线缆连接华为S5700交换机,使用如下命令查看是否有web.7z文件 <Quidway>dir2.新建VLAN和配置VLAN的IP <Quidway>system-view [Quidway]<

最邻近插值、双线性插值、三次卷积插值最通俗入门理论解析,论文材料

如有任何问题&#xff0c;请联系VX&#xff1a;1755337994 前言 图像处理中有三种常用的插值算法&#xff1a; 最邻近插值 双线性插值 双立方&#xff08;三次卷积&#xff09;插值 其中效果最好的是双立方&#xff08;三次卷积&#xff09;插值&#xff0c;本文介绍它的原…

Spring Boot 最佳实践(二)集成Jsp与生产环境部署

一、简介 提起Java不得不说的一个开发场景就是Web开发&#xff0c;也是Java最热门的开发场景之一&#xff0c;说到Web开发绕不开的一个技术就是JSP&#xff0c;因为目前市面上仍有很多的公司在使用JSP&#xff0c;所以本文就来介绍一下Spring Boot 怎么集成JSP开发&#xff0c…

Linux网络编程之TCP/IP实现高并发网络服务器设计指南

目录 引言&#xff1a; 多进程服务器 例程分享&#xff1a; 多线程服务器 例程分享&#xff1a; I/O多路复用服务器 select 例程分享&#xff1a; poll 例程分享&#xff1a; epoll 例程分享&#xff1a; 总结建议 引言&#xff1a; 随着互联网的迅猛发展&#xff…

C#自动实现Dll(OCX)控件注册的两种方法

尽管MS为我们提供了丰富的.net framework库&#xff0c;我们的程序C#开发带来了极大的便利&#xff0c;但是有时候&#xff0c;一些特定功能的控件库还是需要由第三方提供或是自己编写。当需要用到Dll引用的时候&#xff0c;我们通常会通过“添加引用”的方式将它们纳入到项目中…

PyCharm+Python3转换xls文件为xlsx文件格式

import os import os.path import win32com.client as win32"""主函数功能测试""" if __name__ __main__:xlsFilePath os.path.join(os.getcwd() "\\" "通知单.xls")# 文件存在就加载&#xff0c;不存在就提示检查。if …

全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容

在医学图像处理中&#xff0c;我们经常使用一种NIFTI格式图像&#xff08;.nii文件&#xff09;&#xff0c;现在我们来看看 什么是.nii文件&#xff1f;该如何读取.nii文件&#xff1f; 1. NIFTI格式图像 什么是NIFTI&#xff08;Neuroimaging Informatics Technology Initia…

十三、PyQt5的QFileDialog文件打开、文件保存、文件夹选择对话框

import PyQt5.QtCore,PyQt5.QtGui # 获取文件路径对话框 file_name = QFileDialog.getOpenFileName(self,"打开文件","C:\\Users\\Administrator\\Desktop","Txt files(*.txt)") ##"open file Dialog "为文件对话框的标题,第三个是打…

Spring Boot 最佳实践(三)模板引擎FreeMarker集成

一、FreeMaker介绍 FreeMarker是一款免费的Java模板引擎&#xff0c;是一种基于模板和数据生成文本&#xff08;HMLT、电子邮件、配置文件、源代码等&#xff09;的工具&#xff0c;它不是面向最终用户的&#xff0c;而是一款程序员使用的组件。 FreeMarker最初设计是用来在M…

Android开发之通过浏览器链接打开任意app页面

老套路先上图&#xff1a; 先说下上面的流程&#xff0c;第一张图是模拟浏览器的网页点击链接打开app,第二张图系统弹框提示是否打开app,第三张图已打开APP&#xff0c;弹出的吐司是打开APP携带的数据 具体实现分为两步&#xff0c;第一步配置你要打开的activity页面如下&…

windows2008C盘清理

因为原来的设计&#xff0c;现在C盘的空间只有2G了&#xff0c;今天在网上看到了清理的方法&#xff0c;居然清理出4G出来&#xff0c;先把方法记录下来&#xff0c;以备以后使用。我们建议您通过以下方法来清理C盘空间&#xff1a;1.尽量不要在C盘安装应用软件&#xff0c;在软…

DVWA下载、安装、使用(漏洞测试环境搭建)教程

DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用&#xff0c;旨在为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;帮助web开发者更好的理解web应用安全防范的过程。 一共有十个模块&#xf…

Spring Boot 最佳实践(四)模板引擎Thymeleaf集成

## 一、Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎&#xff0c;可以在Web和非Web环境中使用。它更适合在基于MVC的Web应用程序的视图层提供XHTML / HTML5&#xff0c;但即使在脱机环境中&#xff0c;它也可以处理任何XML文件。它提供了完整的Spring Fram…

Centos7安装Postgresql 13 详细步骤(远程连接)

版本信息 CentOS &#xff1a; 7.6 postgresql&#xff1a; 10.012 安装 可以参考官网PostgreSQL: Linux downloads (Red Hat family) &#xff03;安装存储库RPM&#xff1a; sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgd…