CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

ZeroHello

ZeroNet的主页

  • 列出所有添加的站点:名称,节点数,修改时间
  • 站点操作:更新,暂停,继续,删除
  • 克隆站点转换成你的博客或者论坛
  • 一键更新

    地址:1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D
    源码

ZeroBorad

消息公告示例

  • 通过授权码动态生成用户
  • 实时消息更新

工作原理

  • 你发送消息给站点所有者的机器人
  • 机器人修改message.json文件,然后签名并发布给其他节点
  • 如果网站的更新到达你的客户端,他就会显示在你的浏览器上。

    地址:1Gfey7wVXXg1rxk751TBTxLJwhddDNfcdp
    源码

ZeroBlog

个人博客示例

  • 内置内容编辑器
  • Markdown语法
  • 代码高亮
  • 只要网页就可以签名和发布网站

    工作原理?

  • 你可以通过页面修改data.json
  • 点击Sign & Publsh new conent按钮时会要求私钥(创建新站点时生成
  • 你的ZeroNet客户端签名新的,修改的文件并把文件发布到其他节点。
  • 只要还有一个节点是活动的,你的站点就可以访问。

    地址:1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8
    或者blog.zeronetwork.bit
    源码

ZeroTalk

去中心化的,P2P论坛示例

  • 创建,修改,删除主题和消息
  • 主题和消息投票
  • 仅有一次和站点所有者的联系,就是在请求修改网站授权的时候。
  • 留言和内容修改直接会推送给其他节点
  • 只有你可以签名和修改你的文件。
  • 实时的消息显示

    工作原理

  • 要参与网站的互动,你需要从ZeroID提供者那里注册一个证书(一个加密签名)
  • 有了证书之后,你就可以发布内容(消息,主题,投票)给其他节点了。

    地址:1TaLkFrMwvbNsooF4ioKAY9EuxTBTjipT 或者talk.zeronetwork.bit

源码

ZeroMail

端到端加密,分布式,点对点消息站点。为了提高隐私安全使用了与比特消息类似的解决方案,这样就不会暴露收件人信息。

  • 使用ECISE用于私密传输,采用AES256进行消息编码。
  • 当你第一次访问网站的时候,你的公钥会添加到你的数据文件中,这样其他人就可以给你发消息了。
  • 每个人都尝试解密消息,这使得要找出消息接收人成为不可能,从而提高了隐私性。
  • 为了减少消息负载和加快消息解密速度,我们重用了AES密钥,但是每次都会生成一个新的IV。

    地址:1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27或者mail.zeronetwork.bit
    源码

ZeroChat

一个完整的网站用于演示如何使用ZeroNet在不到用不到时100行的代码创建一个server-less,SQL后台,实时更新的P2P聊天应用。

ZeroMe

去中心化的,类Twitter的P2P社交网络。

  • 在ZeroMe的用户注册表中存储用户信息
  • 将发布和留言存储在叫Hub的MergeSite中
  • 通过选择文件来上传图片。
  • 实时显示活动订阅

    地址:1MeFqFfFFGQfa1J3gJyYYUvb5Lksczq7nH
    源码

ReactionGIFs

选择文件示例,视频文件只有浏览器请求时才会下载。

地址1Gif7PqWTzVWDQ42Mo7np3zXmGAo3DXc7h
源码

安装ZeroNet

  • 下载ZeroNet安装包:Microsoft Windows,Apple macOS, Linux 64bit,Linux 32bit
  • 解压
  • 运行 ZeroNet.exe (win), ZeroNet(.app) (macOS), ZeroNet.sh(linux)

    Debian Linux手动安装

  • sudo apt-get update
  • sudo apt-get install msgpack-python python-gevent
  • wget https://github.com/HelloZeroNet/ZeroNet/archive/master.tar.gz
  • tar xvpfz master.tar.gz
  • cd ZeroNet-Master
  • 运行python zeronet.py
  • 浏览器中打开http://127.0.0.1:43110

Vagrant

  • vagrant up
  • 访问VMvagrant sh
  • cd /vagrant
  • 运行python zeronet.py --ui_ip 0.0.0.0
  • 浏览器中打开http://127.0.0.1:43110

Docker

  • docker run -d -v <local_data_folder>:/root/data -p 15441:15441 -p 43110:43110 nofish/zeronet
  • 这个Docker镜像包含了Tor代理,默认是关闭的。注意有些节点不允许在你运行Tor。如果你需要开启,将环境变量ENABLE_TOR设置为true(默认是false)。比如:
    docker run -d -e "ENABLE_TOR=true" -v <local_data_folder>:/root/data -p 15441:15441 -p 127.0.0.1:43110:43110 nofish/zeronet
  • 浏览器中打开http://127.0.0.1:43110

Virtualenv

  • virtualenv env
  • source env/bin/activate
  • pip install msgpack-python gevent
  • python zeronet.py
  • 浏览器中打开http://127.0.0.1:43110

我需要开放端口么?

这个是可选的,如果你只是浏览和使用ZeroNet,你可以不需要开放端口。如果你要创建一个站点,强烈推荐你要开放一个端口。
ZeroNet在启动时会尝试用UPnP来打开一个端口,如果失败了,你需要手动开启:

  • 通过http://192.168.1.1 或者 http://192.168.0.1来访问你的路由器页面。
  • 查找开启UPnP支持的类似选项,然后重启ZeroNet。
    如果还是不起作用,查看端口转发章节。不同的路由器各有不同。转发端口是15441。

ZeroNet是匿名的么?

ZeroNet没有比BitTorrent提供更多的匿名性,但随着节点的增加,隐私(找到评论或站点所有者)会变得严峻。
ZeroNet在匿名网络中也做了一些工作:你可以使用Tor网络轻松的隐藏你的IP。

在Tor浏览器中如何使用ZeroNet?

推荐使用Tor浏览器来使用ZeroNet:

  • 启动Tor Browser
  • 打开abaut:perferences#advanced
  • 点击设置
  • 在不需要代理的输入框中填入127.0.0.1
  • 在浏览器中打开http://127.0.0.1:43110
    如果你看到的是空白页面,点击工具栏上的无脚本按钮,选择临时允许所有页面,重新加载页面。

在ZeroNet中如何使用Tor?

如果你希望隐藏你的IP,安装ZeroNet的最新版本然后点南Tor>每个连接都启动Tor。

在Windows上Tor和ZeroNet是打包在一起的,ZeroNet在第一次运行的时启尝试下载和解压Tor。如果因为某些情况安装失败了,可以根据core\tools\tor\manual_install.txt的说明来安装。

其他操作系统根据安装说明进行安装,修改你的torrc的配置文件,把# ControlPort 9051#去掉,然后重启你的Tor服务和ZeroNet。

提示:你可以通过ZeroNet的状态页来验证你的IP。
提示:如果你连接时发生错误,请检查你是否安装了最新版本的Tor(需要0.2.7.5以上版本)

Linux系统中ZeroNet如何使用Tor?

更新最新版本的Tor(我们需要0.2.7.5+版本),执行这些操作。以Debian为例:

1
echo 'deb http://deb.torproject.org/torproject.org jessie main'>> /etc/apt/sources.list.d/tor.list
1
gpg --keyserver keys.gnupg.net --recv 886DDD89
1
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
1
apt-get update
1
apt-get install tor

修改配置文件开启控制协议:

1
mcedit /etc/tor/torrc

删除ControlPort 9051CookieAuthentication 1(大概在57行)的#字符。

1
/etc/init.d/tor restart

通过usermod -a -G debian-tor [yourlinuxuser]来授权访问cookie。(如果不是使用Debian通过ls -al /var/run/tor/control.authcookie的查看文件的用户组)。
注销/登录来使修改生效。

提示:可以通过echo 'PROTOCALINFO' | nc 127.0.0.1 9051来验证Tor是否正常运行。
提示:你可以不修改Tor的配置,仅通过zeronet.py --tor disabe --proxy 127.0.0.1:9050 --disable_udp来使用Tor,但这样你会失去与其他.onion地址通话的能力。

能否使用一个配置文件?

你可以把选项配置在zeronet.conf文件中。比如:

1
2
3
4
5
6
[global]
data_dir = my-data-dir
log_dir = my-log-dir
ui_restrict =
1.2.3.4
2.3.4.5

使用zeronet.py --help命令查看所有的选项。

如果ISP和政府屏蔽了Tor如何使它工作?

ZeroNet暂时未包含Tor pluggable transports。访问Tor网络的最简单的方法就是使用Tor浏览器。修改它的配置开启可拨插传输,然后修改ZeroNet的配置,使用Tor浏览器代理和控制端口。
通过--tor_controller 127.0.0.1:9151 --tor-proxy 127.0.0.1:9150来启动ZeroNet或者在zeronet.conf中添加如下参数:

1
2
3
[global]
tor_controller = 127.0.0.1:9151
tor_proxy = 127.0.0.1:9150

不同机器可以使用相同用户名么?

可以,只要你把data/user.json文件拷贝到时你的新机器就可以了。

如何创建一个“特殊”的网站地址?

通过vanitygen来生成。一旦你生成了你的key,创建data/你的key目录。在这个目录下放一些文件。
然后访问http://127.0.0.1:43110/你的key/.将0按钮拖到左边,然后用侧边栏来注册你的网站。

如何注册一个.bit的域名。

你可以通过Namacoin来注册一个.bit域名。通过GUI客户端或者命令行接口来管理你的域名。
一旦你注册完成,你需需增加一个zeronet节点来记录它。比如:

1
2
3
4
5
6
7
8
9
10
{
...
"zeronet": {
"": "1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr",
"blog": "1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8",
"talk": "1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ"
},
...
}

“”是顶级域名,其他的是子域名。

提示:你可以通过shapeshift.io来购买比特币或者其他加密货币的Namecoin。
提示:一些可以注册.bit域名的站点:domaincoin.net, peername.com, dotbit.me
提示:你可以在namecha.in中验证你的域名。比如:zeorid.bit
提示:在域名中只能使用小写字母,数字和-。
提示:要让ZeroHello显示你的域名而不是比特币网址,你需要在content.json中增加domain键.比如:

1
2
3
4
5
6
7
{
"address": "1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8",
"background-color": "white",
"cloneable": true,
"description": "Blogging platform Demo",
"domain": "Blog.ZeroNetwork.bit",
}

我是否可以通过生成的网站地址/私钥来接收比特币支付?

是的,这个地址是一个标准的比特币地址。私钥也是WIF格式的,因此你可以把它导到大部分的客户端里。

提示:建议不要在你的网站地址中放太多钱,因为每次更新你的网站的时候就需要使用你的私钥。

当有人托管恶意内容时会发生什么?

Zeronet的网站是沙箱化的,他们的拥有权限和你在互联网上访问的其他站点一样。你可以完全控制托管理的内容。如果你发现可疑内容,你随时都可以停止托管。

能否通过远程的方式来安装ZeroNet?

有什么方式可以跟踪ZeroNet使用的带宽?

ZeroNet的侧边栏会展示发送和接收的字节(将0按钮拖到左边打开侧边栏)。

提示:所有连接的统计http://127.0.0.1:43110/Stats

当两个人用相同的key来更新网站时会发生什么?

每个content.json是有时间戳的,所有的客户端只接收最新的那个。

ZeroNet是否使用了比特币的区块链?

没有,Zeronet只是使用了比特币的加密算法用于网站地址和内容签名和验证。用户的标识是基于比特币的BIP32格式

Namecoin的区块链用于域名注册。

ZeroNet是否只支持HTML和CSS的网站?

ZeroNet is built for dynamic, real-time updated websites, but you can serve any kind of files using it. (VCS repositories, your own thin-client, database, etc.)

ZeroNet用于构建动态和实时更新的站,或者任何的文件类型(VCS仓库,瘦客户端,数据库等等)

如何创建一个ZeroNet网站?

操作说明

运行的原理是什么?

  • 当你打开一个新的站点,需要访问者在BitTorrent网络的IP地址。
  • 首先下载content.json文件,这个文件包含了所有的文件名,散列和网站所有者的加密签名。
  • 通过网站地址和文件中的网站所有者的签名来验证下载的content.json文件。
  • 下载其他文件(html,css,js……)并通过content.json中的SHA512散列值进行验证。
  • 你会托管所有你访问过的网站。
  • 如果网站的所有者(拥有网站私钥的人)修改了网站,然后他签名一个新的content.json并发布到各个节点。当节点验证了content.json的真实性(通过签名),下载修改的文件并发布给其他节点。
    更多信息:ZeroNet简单网站介绍ZeroNet工作原理幻灯片

ZeroNet是什么?

ZeroNet是使用比特币加密技术和BitTorrent网络协议构建的一个去中心化的无审查网络。

用户可以在ZeroNet上发布静态或者动态的站点。访问者可以决定是否成为服务节点。只要还有一个服务节点站点就会在线。

当站点的所有者更新站点的时候,所有服务的节点(以前的访问者)就会增量更新站点内容。

ZeroNet comes with a built-in SQL database. This makes content-heavy site development easy. The DB is also synced with hosting nodes with incremental updates.

ZeroNet自带内置数据库,这使得重内容的站点的开发更容易。数据库也会在节点增量更新。

为什么?

  • 我们相信开放的,自由的,无审查的网络。
  • 去中心化:只要一发布就无法删除。
  • 无单点故障:只要还有一个服务节点,内容就会一直在线。
  • 不法关闭:无处不在。内容会被访问者进行托管。
  • 高速:ZeroNet使用BitTorrent技术比中心化服务器快。
  • 离线访问:在没有互联网连接的情况下也可以浏览保存过的站点。
  • 安全:使用与比特币钱包相同的加密方法来保护内容所有权。

特性

  • 简单,零配置。
  • 基于BIP32的无密码授权,使用与比特币钱包相同的加密方法来保护你的账户。
  • 实时更新
  • 支持Namecoin的.bit域名
  • 数据库支持:更简单的站点开发和更快的页面加载速度。
  • 匿名:全面支持Tor网络,支持通过.onion隐藏服务相互连接,而不是通过IPv4地址。
  • TLS加密连接
  • 自动打开uPnP端口。
  • 插件和多用户 (开放式代理) 支持
  • 跨平台,支持任何浏览器和系统

原理

  • 在你运行ZeroNet后,你可以通过http://127.0.0.1:43110/{zeronet_site_address} (比如:http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D)来访问网站。
  • ZeroNet会通过BitTorrent网络来查找可用的节点,并下载需要的文件 (html, css, js…)。
  • 你会托管理每一个你访问过的网站。
  • 每个网站都有一个列表文件,存储了网站所有文件的SHA512哈希值和网站所有者的私钥生成的签名。
  • 如果站点的所有者 (拥有私钥的那个人) 修改了站点, 并且他/她签名了新的列表文件,然后推送给其他节点, 那么所有节点将会在验证列表的真实性(使用签名)后, 下载修改后的文件并推送给其他节点。

限制

  • 不支持大文件拆分
  • 文件传输未压缩
  • 不支持私有站点

赞助

Bitcoin: 1QDhxQ6PraUZa21ET5fYUCPgdrwBomnFgX

谢谢!

说明

主要是测试封面和图片的使用,图片内编辑使用OneNote,目前来看就是对代码的支持不够。

说明

主要是测试封面和图片的使用,图片内编辑使用OneNote,看着也不错。
需要注意创建同名的文件夹,或者使用hexo new命令

本文是自己在使用Github Pages和Hexo搭建个人博客时的一些经验记录和总结,并非手把手搭建的过程。

为什么

之前在博客大巴上是有写一些博客的,不过因为己写作能力的一些原因,实际上写的也不多,后面也基本上就断了。最近跳槽到一家互联网公司,语言也转了Java,又学习了一些Web知识,所以也就想多试一些东西。

选Github Pages呢,是因为自己在搜索一些资料时时常会到Github上,当时也不知道这是Github Pages,虽然有使用Github,是有点Out了。后面又机缘巧合的看到了一些使用Github Pages搭建个人博客的文章,也就来了兴趣。

GitHub Pages sites are subject to the following usage limits:

GitHub Pages source repositories have a recommended limit of 1GB .
Published GitHub Pages sites may be no larger than 1 GB.

GitHub Pages sites have a bandwidth limit of 100GB or 100,000 requests per month.

GitHub Pages sites have a limit of 10 builds per hour.

这些限制对我来说,都不是大问题,没有这么大的访问量。

创建Github Pages仓库

因为本身有使用过Github,所以直接从创建仓库开始,如果是完全的新手建议看这篇如何搭建一个独立博客——简明Github Pages与Hexo教程,我也基本上是参考这篇来搭建的。创建以<username>.github.io为名的仓库,对于我来说是enderjo.github.io。一开始看博文是没看懂,以为是用户名的仓库。后面也多搜了几篇,多看了几遍才明白,也可以直接看Configuring a publishing source for GitHub Pages
除了仓库名,也就没有什么特别的注意点了,从推荐的几个模板中选择一个模板。要不了几分钟,就可以使用https://enderjo.github.io来访问页面了。

注意如果用户名包含大小写时,需要按用户名的全部小写来创建仓库名。

绑定域名

在没有配置CNAME之前可以之接填写enderjo.github.io的域名,会自动解析。
对于Github来说,绑定域名是非常简单的。创建一个CNAME的文件,写上域名,上传就可以了。可以在blogsource放置该文件,生成发布时会被生成到pubic目录下,避免因hexo clean重新生成文件时引起域名不可解析问题。

1
l4qiang.me

域名解析

我是在阿里云买的l4qiang.me域名,也就可以使用阿里云的域名解析服务。
简要的说,就是自定义域名解析增加如下4条A记录中的一个就自动开启了。参考文档Managing a custom domain for your GitHub Pages site

  • 185.199.108.153
  • 185.199.109.153
  • 185.199.110.153
  • 185.199.111.153

开启HTTPS

参考这里,[Securing your GitHub Pages site with HTTPS](https://docs.github.com/en/github/working-with-github-pages/securing-your-github-pages-site-with-https开启HTTPS。

以上已经能通过域名正常访问博客了。

使用Hexo

Github推荐使用的是Jekyll做为静态网站生成器,但是因为用的是Ruby,没怎么接触,就找到了Hexo做为替代。

安装Nodejs

下载Nodejs 6.7,默认安装就可以了。

安装hexo

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

Hexo配置

在blog的根目录可以看到Hexo配置文件_config.yml,基本上的配置都是修改这个文件。

需要修改内容如下,其他内容可以不修改:

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
# Site
title: CrazyAirhead
subtitle: 疯狂的傻瓜,傻瓜也疯狂————傻方能执著,疯狂才专注!
description: 记录点滴,注重积累。
author: L4qiang
email: [email protected]
language: zh-CN
timezone:

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://l4qiang.me
root: /

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: gstyle

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/enderjo/enderjo.github.io.git
branch: master

选择模板与配置

根据选择的模板,修改配置。我选择了gstyle,下载后解压到themes文件夹下(一般文件名比较长,需重命名)。

需要修改Hexo_config.yml的内容有:

1
2
3
4
5
6
7
8
9
10
# add caption for iamges
image_caption:
enable: true
class_name:

prism_plugin:
mode: 'preprocess' # realtime/preprocess
theme: 'default'

active_nav: false

需要修改themes配置文件,在对应的模板目录下,也是_config.yml

修改评论

这里使用了多说,需要修改配置

1
duoshuo_shortname: enderjo

需要注册并创建站点duoshuo_shortname中填写的就是多说站点的二级域名需要填写的部分。

因为多说停服务,所以这部分内容需要更新,暂时未更新。

hexo基本操作

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
hexo help
Usage: hexo <command>

Commands:
clean Removed generated files and cache.
config Get or set configurations.
deploy Deploy your website.
generate Generate static files.
help Get help on a command.
init Create a new Hexo folder.
list List the information of the site
migrate Migrate your site from other system to Hexo.
new Create a new post.
publish Moves a draft post from _drafts to _posts folder.
render Render files with renderer plugins.
server Start the server.
version Display version information.

Global Options:
--config Specify config file instead of using _config.yml
--cwd Specify the CWD
--debug Display all verbose messages in the terminal
--draft Display draft posts
--safe Disable all plugins and scripts
--silent Hide output on console

For more help, you can use 'hexo help [command]' for the detailed information
or you can check the docs: http://hexo.io/docs/

写作

1
$ hexo new [layout] <title>

如果需要更好的进行写作的管理可以使用-p参数

1
$ hexo new -p zeronet/zernet-1 zeronet-1

分类

1
$ hexo new page categroies

在生成的index.md文件下增加type: categroies

标签

1
$ hexo new page tags

在生成的index.md文件下增加

1
2
type: tags
comments: false

测试

1
2
$ hexo server
$ hexo s

如果运行时浏览器无法打开,可能是默认端口(4000)被占用了,换个端口试试。

1
$ hexo s -p 5000

可以通过netstat -ano来查看占用端口的进程。本机是被Foxit Service给占用了,禁用该进程。

生成与发布

1
2
$ hexo generate --deploy
$ hexo deploy --generate

简写

1
2
$ hexo g -d
$ hexo d -g

生成发布时可能会出现找不到用户名的问题,可以修改git配置

1
git config --global credential.helper wincred

图床

使用了七牛的空间,使用qrsbox进行同步。

源码托管

使用了Gitee的私有库,Gitee个人开发者可免费创建 1000 个项目(不限公有、私有),提供最多5G的免费代码存储空间。这样将整个博客的源码按版本管理起来。

总结

对于使用Github Pages和Hexo搭建个人博客,整体配置下来是难度不会大,主要是因为有些东西没有接触过会多花一些时间来理解。另外就是一些博文不一定会有及时的更新,一些操作也是会不一样的,所有对自己来说,能找到原始出处的就尽量用原始内容。