美文网首页
Zencash 安全节点搭建指南(主网测试)

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

作者: dashuo | 来源:发表于2018-06-03 12:20 被阅读0次

    最新消息:

    安全节点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邀请函

    相关文章

      网友评论

          本文标题:Zencash 安全节点搭建指南(主网测试)

          本文链接:https://www.haomeiwen.com/subject/lgljsftx.html