Zencash 安全节点搭建指南(主网测试)

最新消息:

安全节点beta版将于11月30日(12月1日)迁移至zencash主网

安全节点目前已经正式在zencash主网运行。

英文版安全节点搭建指南(最新完整版)

搭建过的旧版本的需要做一些升级操作,或者删除secnodetracker文件夹,重新clone最新版本。

运行安全节点的必要条件:

  • 1个域名
  • 1台租用的VPS服务器
  • 43个ZEN
本教程是用Ubuntu 16.04 64bit 进行搭建。
域名:

任何后缀的域名都可以,不仅限于com, net这种贵的域名,可以是非常便宜的 .top, .cc, .xyz 之类。

域名解析:

每个安全节点需要一个二级域名,用A记录指向VPS服务器。


配置域名解析:

我使用的dnspod.cn。


在自己的电脑上试一下能否解析成功:

ping znode2.bidb.io

域名解析生效需要等一会儿,可以先进行下一步。


VPS服务器可以选择linode的10美元方案。

(测试期间选择的5美元配置,但在正式网中挑战应答总是超时,所以现在推荐10美元的配置)


配置VPS服务器

登录VPS服务器:
ssh root@45.79.90.93
更新系统和软件:
apt-get -o Acquire::ForceIPv4=true update  && apt-get -y upgrade

更新过程如果出现下图中的提示,选第二个选项后按Tab建切换到Ok,回车继续。

修改主机名:
hostnamectl set-hostname znode2
向hosts文件中添加一个域名映射:
vi /etc/hosts

45.79.66.111 znode2 znode2.bidb.io

znode2 是你的主机名,znode2.bidb.io改成你的二级域名。

设定时区
timedatectl set-timezone 'Asia/Shanghai'
添加管理员用户:

新建一个拥有管理权限的用户

adduser znuser && adduser znuser sudo

根据提示,重复输入两次新用户的密码。


退出root账户,今后只使用新用户znuser登录。

exit
使用新用户名重新登录服务器。
ssh znuser@45.79.66.111
为了服务器更加安全,需要禁用root登录。
sudo vim /etc/ssh/sshd_config

移动到第28行,修改配置文件,将PermitRootLogin设置为no,然后保存退出。
修改之后如下所示:

重启sshd服务使修改生效:
sudo systemctl restart sshd.service
安装一些常用工具:
sudo apt-get -o Acquire::ForceIPv4=true update
sudo apt -y install git screen vim nmap ncdu busybox inxi links unzip python
配置防火墙

为了服务器更加安全,必须配置防火墙。

查看防火墙是否正常运行:

sudo ufw status
防火墙未开启
配置防火墙:
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh/tcp
sudo ufw limit ssh/tcp
sudo ufw allow http/tcp
sudo ufw allow https/tcp
sudo ufw allow 9033/tcp
sudo ufw logging on
开启防火墙:
sudo ufw enable

配置完成后,检查一次防火墙状态。

sudo ufw status
ssh安全防护:

使用Fail2Ban防止黑客非法登录你的服务器。(fail2ban会限制ssh重试登录次数,10次密码错误后,请求登录的IP地址会被加入黑名单,10分钟之后才可以再次登录。)

sudo apt -y install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

可以通过如下命令,查看非法登录的拦截记录:

sudo tail -f /var/log/fail2ban.log
增大虚拟内存。

我们租用的VPS内存比较少,通过增大SWAP交换空间(虚拟内存),可以避免一些内存不足的情况。

查看当前的内存使用信息:
free -h
配置4G大小的交换空间:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
再次查看内存:
free -h

优化交换空间的参数:

sudo vi /etc/sysctl.conf
将如下配置添加到文件末尾:
vm.swappiness=10
配置重启后自动挂载交换空间:
sudo vi /etc/fstab
将如下配置添加到文件末尾:
/swapfile none swap sw 0 0

安装zencash

为了避免一些错误,我们先要禁用ipv6:
sudo vi /etc/sysctl.conf
在文件末尾添加如下内容:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

执行如下命令使配置生效
sudo sysctl -p 

安装常用工具:
sudo apt -y install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python zlib1g-dev wget bsdmainutils automake
下载zencash代码:
mkdir zencash
cd zencash
git clone https://github.com/ZencashOfficial/zen.git
下载zkSNARK 数据包:
cd zen
./zcutil/fetch-params.sh
下载编译好的zen客户端
cd ~
wget https://github.com/ZencashOfficial/zen/releases/download/v2.0.10-1/zen-2.0.10-1-amd64.deb
开始安装
sudo dpkg -i zen-2.0.10-1-amd64.deb
sudo apt-get -f -y install
运行zend:
zend

第一次运行zend会生成一个配置文件 ~/.zen/zen.conf

编辑zen.conf
vim ~/.zen/zen.conf

把如下内容粘贴进文件,将 rpcpassword 换成你自己的密码。

addnode=zen.suprnova.cc
addnode=zpool.blockoperations.com
addnode=zen.bitfire.one
addnode=zenmine.pro
addnode=minez.zone
addnode=zennodes.network
rpcuser=znodeuser
rpcpassword=63Qa5VybvCTPppBpVmn8HpjrKgxqaaEAqfYVrHjk9WtBG738
rpcport=18231
rpcallowip=127.0.0.1
server=1
daemon=1
listen=1
txindex=1
logtimestamps=1

可以使用如下命令随机密码生成:

sudo tr -dc A-Za-z0-9 < /dev/urandom | head -c 48 | xargs
配置开机自动运行:
crontab -e

第一次运行会提示选择编辑器.


把如下内容添加到文件末尾:

@reboot /usr/bin/zend
再次运行zend:
zend

如果你已经开启了,先关闭再重新执行:

cd ~
zen-cli stop
zend
查看信息:

第一次运行会同步一段时间,当两次查看blocks数值没有变化,说明区块数据同步完成了。

zen-cli getinfo

生成SSL证书

sudo ufw status numbered
检查防火墙,确保80, 443端口开启:
检查80和443端口是否被占用:
netstat -tan
执行如下命令,下载安装acme.sh脚本。
cd
sudo apt install socat
mkdir acme
cd acme
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install
生成证书:
cd ~
sudo .acme.sh/acme.sh --issue --standalone -d znode2.bidb.io
证书的完整路径
添加定时任务,自动更新证书:
sudo crontab -e
在文件末尾添加如下内容:

6 0 * * * "/home/znuser/.acme.sh"/acme.sh --cron --home "/home/znuser/.acme.sh" > /dev/null

将两处 znuser 替换成你自己的用户名。

配置证书

在 /usr/share/ca-certificates/ 目录下创建letsencrypt目录来保存CA证书。

sudo mkdir /usr/share/ca-certificates/letsencrypt/
sudo cp /home/znuser/.acme.sh/znode2.bidb.io/ca.cer /usr/share/ca-certificates/letsencrypt/ca.crt
sudo dpkg-reconfigure ca-certificates

出现如下窗口,选yes(用键盘方向键选择),按Tab键切换到Ok, 回车进入下一步。

按下空格键选中第一项[*],然后Tab到Ok,回车。

zend开启TLS支持

修改zen.conf配置,添加证书路径开启TLS支持。

vim ~/.zen/zen.conf
将如下内容添加到文件末尾:

tlscertpath=/home/znuser/.acme.sh/znode2.bidb.io/znode2.bidb.io.cer
tlskeypath=/home/znuser/.acme.sh/znode2.bidb.io/znode2.bidb.io.key

将znuser替换成你的用户名,后面的文件夹和文件名都要换成你自己的。

停止安全节点,重新启动:
zen-cli stop
zend
测试TLS是否正常:

正式网络使用9033端口

openssl s_client -connect znode2.bidb.io:9033
正常状态如下图:
安装Node.js:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
安装secnodetracker :
cd ~/zencash
git clone https://github.com/ZencashOfficial/secnodetracker.git
安装node modules:
cd secnodetracker
npm install
运行安全节点需要至少43个ZEN,其中42放在一个T地址钱包,1个ZEN放在安全节点的Z地址中。
新建一个Z地址:
zen-cli z_getnewaddress
查看钱包余额:
zen-cli z_gettotalbalance

使用Swing Wallet 向这个z地址转入至少1个ZEN(拆分成4-5个小订单转过去推荐每次转0.2个)

最好是1.1个,每次挑战应答都需要耗费0.0001 交易费。

在Windows下面转账ZEN会更容易一些

转账确认需要3分钟左右,在服务器上用如下命令来查询余额(private 是Z地址的余额):
zen-cli z_gettotalbalance

等ZEN到账后再进行下一步。

配置secnodetracker:
cd ~/zencash/secnodetracker
node setup.js
node setup
  • Stake transparent address: 填写余额大于42个ZEN的T地址
  • Alert email address: 用来接收信息的邮箱地址。
  • Full hostname (FQDN) 填写二级域名
  • Region code: 区域代码, 北美(na)欧洲(eu)东南亚(sea) 填写服务器所在地的对应代码。如果也是Fremont 机房,填写na 。

运行secnodetracker:

node app.js

显示内容可能略有不同,不过只要显示Authenticated 就说明运行正常了.

收到一次挑战
收到一次挑战(完成挑战后会有相应奖励)。

ctrl+c 结束这次执行,接下来配置pm2守护进程。

设置开机自动运行:
安装pm2:
sudo npm install pm2 -g
配置开机自动运行:
pm2 start app.js --watch
pm2 save
pm2 startup
执行提示中的内容。
查看secnodetracker的运行状态:
pm2 list
查看你的安全节点状态:
通过这个网站可以查询安全节点运行状态

安全节点划分为3个区域,根据填写的Region code访问对应的查询页面。

北美: https://securenodes.na.zensystem.io/
欧洲: https://securenodes.eu.zensystem.io/
东南亚: https://securenodes.sea.zensystem.io/

正式网的安全节点。

本篇教程参考英文版搭建教程,并做了一定修改。以下是英文版教程:

https://blockoperations.com/how-to-build-and-operate-a-zencash-secure-node/


007邀请函
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,747评论 6 342
  • 我妈非常喜欢和陌生人聊天,这一点上,我挺佩服,能和陌生人聊起来。 所谓陌生,也不是完全没交集,很多是日常接触到的…...
    尚涛易捷北京阅读 473评论 0 0
  • 要做什么? 休息日的时候,突然有了大把自由支配的时间,要干点什么好呢?没有时间的却让人紧张,时间太多又很不...
    Mtrestm阅读 365评论 0 0