最新消息:
安全節(jié)點(diǎn)beta版將于11月30日(12月1日)遷移至zencash主網(wǎng)
安全節(jié)點(diǎn)目前已經(jīng)正式在zencash主網(wǎng)運(yùn)行。
搭建過的舊版本的需要做一些升級(jí)操作旧乞,或者刪除secnodetracker文件夾离福,重新clone最新版本堤撵。
運(yùn)行安全節(jié)點(diǎn)的必要條件:
- 1個(gè)域名
- 1臺(tái)租用的VPS服務(wù)器
- 43個(gè)ZEN
本教程是用Ubuntu 16.04 64bit 進(jìn)行搭建推汽。
域名:
任何后綴的域名都可以亭罪,不僅限于com, net這種貴的域名复哆,可以是非常便宜的 .top, .cc, .xyz 之類欣喧。
域名解析:
每個(gè)安全節(jié)點(diǎn)需要一個(gè)二級(jí)域名,用A記錄指向VPS服務(wù)器梯找。
配置域名解析:
我使用的dnspod.cn唆阿。
在自己的電腦上試一下能否解析成功:
ping znode2.bidb.io
域名解析生效需要等一會(huì)兒,可以先進(jìn)行下一步锈锤。
VPS服務(wù)器可以選擇linode的10美元方案驯鳖。
(測試期間選擇的5美元配置闲询,但在正式網(wǎng)中挑戰(zhàn)應(yīng)答總是超時(shí),所以現(xiàn)在推薦10美元的配置)
配置VPS服務(wù)器
登錄VPS服務(wù)器:
ssh root@45.79.90.93
更新系統(tǒng)和軟件:
apt-get -o Acquire::ForceIPv4=true update && apt-get -y upgrade
更新過程如果出現(xiàn)下圖中的提示臼隔,選第二個(gè)選項(xiàng)后按Tab建切換到Ok嘹裂,回車?yán)^續(xù)。
修改主機(jī)名:
hostnamectl set-hostname znode2
向hosts文件中添加一個(gè)域名映射:
vi /etc/hosts
45.79.66.111 znode2 znode2.bidb.io
znode2 是你的主機(jī)名摔握,znode2.bidb.io改成你的二級(jí)域名寄狼。
設(shè)定時(shí)區(qū)
timedatectl set-timezone 'Asia/Shanghai'
添加管理員用戶:
新建一個(gè)擁有管理權(quán)限的用戶
adduser znuser && adduser znuser sudo
根據(jù)提示,重復(fù)輸入兩次新用戶的密碼氨淌。
退出root賬戶泊愧,今后只使用新用戶znuser登錄。
exit
使用新用戶名重新登錄服務(wù)器盛正。
ssh znuser@45.79.66.111
為了服務(wù)器更加安全删咱,需要禁用root登錄。
sudo vim /etc/ssh/sshd_config
移動(dòng)到第28行豪筝,修改配置文件痰滋,將PermitRootLogin設(shè)置為no,然后保存退出续崖。
修改之后如下所示:
重啟sshd服務(wù)使修改生效:
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
配置防火墻
為了服務(wù)器更加安全敲街,必須配置防火墻。
查看防火墻是否正常運(yùn)行:
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
配置完成后严望,檢查一次防火墻狀態(tài)多艇。
sudo ufw status
ssh安全防護(hù):
使用Fail2Ban防止黑客非法登錄你的服務(wù)器。(fail2ban會(huì)限制ssh重試登錄次數(shù)像吻,10次密碼錯(cuò)誤后峻黍,請(qǐng)求登錄的IP地址會(huì)被加入黑名單,10分鐘之后才可以再次登錄拨匆。)
sudo apt -y install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
可以通過如下命令姆涩,查看非法登錄的攔截記錄:
sudo tail -f /var/log/fail2ban.log
增大虛擬內(nèi)存。
我們租用的VPS內(nèi)存比較少涮雷,通過增大SWAP交換空間(虛擬內(nèi)存)阵面,可以避免一些內(nèi)存不足的情況。
查看當(dāng)前的內(nèi)存使用信息:
free -h
配置4G大小的交換空間:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
再次查看內(nèi)存:
free -h
優(yōu)化交換空間的參數(shù):
sudo vi /etc/sysctl.conf
將如下配置添加到文件末尾:
vm.swappiness=10
配置重啟后自動(dòng)掛載交換空間:
sudo vi /etc/fstab
將如下配置添加到文件末尾:
/swapfile none swap sw 0 0
安裝zencash
為了避免一些錯(cuò)誤洪鸭,我們先要禁用ipv6:
sudo vi /etc/sysctl.conf
在文件末尾添加如下內(nèi)容:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
執(zhí)行如下命令使配置生效
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 數(shù)據(jù)包:
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
運(yùn)行zend:
zend
第一次運(yùn)行zend會(huì)生成一個(gè)配置文件 ~/.zen/zen.conf
編輯zen.conf
vim ~/.zen/zen.conf
把如下內(nèi)容粘貼進(jìn)文件样刷,將 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
可以使用如下命令隨機(jī)密碼生成:
sudo tr -dc A-Za-z0-9 < /dev/urandom | head -c 48 | xargs
配置開機(jī)自動(dòng)運(yùn)行:
crontab -e
第一次運(yùn)行會(huì)提示選擇編輯器.
把如下內(nèi)容添加到文件末尾:
@reboot /usr/bin/zend
再次運(yùn)行zend:
zend
如果你已經(jīng)開啟了览爵,先關(guān)閉再重新執(zhí)行:
cd ~
zen-cli stop
zend
查看信息:
第一次運(yùn)行會(huì)同步一段時(shí)間置鼻,當(dāng)兩次查看blocks數(shù)值沒有變化,說明區(qū)塊數(shù)據(jù)同步完成了蜓竹。
zen-cli getinfo
生成SSL證書
sudo ufw status numbered
檢查防火墻箕母,確保80, 443端口開啟:
檢查80和443端口是否被占用:
netstat -tan
執(zhí)行如下命令储藐,下載安裝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
添加定時(shí)任務(wù)嘶是,自動(dòng)更新證書:
sudo crontab -e
在文件末尾添加如下內(nèi)容:
6 0 * * * "/home/znuser/.acme.sh"/acme.sh --cron --home "/home/znuser/.acme.sh" > /dev/null
將兩處 znuser 替換成你自己的用戶名钙勃。
配置證書
在 /usr/share/ca-certificates/ 目錄下創(chuàng)建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
出現(xiàn)如下窗口聂喇,選yes(用鍵盤方向鍵選擇)辖源,按Tab鍵切換到Ok, 回車進(jìn)入下一步希太。
按下空格鍵選中第一項(xiàng)[*]克饶,然后Tab到Ok,回車誊辉。
zend開啟TLS支持
修改zen.conf配置矾湃,添加證書路徑開啟TLS支持。
vim ~/.zen/zen.conf
將如下內(nèi)容添加到文件末尾:
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替換成你的用戶名堕澄,后面的文件夾和文件名都要換成你自己的邀跃。
停止安全節(jié)點(diǎn),重新啟動(dòng):
zen-cli stop
zend
測試TLS是否正常:
正式網(wǎng)絡(luò)使用9033端口
openssl s_client -connect znode2.bidb.io:9033
正常狀態(tài)如下圖:
安裝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
運(yùn)行安全節(jié)點(diǎn)需要至少43個(gè)ZEN蛙紫,其中42放在一個(gè)T地址錢包坞嘀,1個(gè)ZEN放在安全節(jié)點(diǎn)的Z地址中。
新建一個(gè)Z地址:
zen-cli z_getnewaddress
查看錢包余額:
zen-cli z_gettotalbalance
使用Swing Wallet 向這個(gè)z地址轉(zhuǎn)入至少1個(gè)ZEN(拆分成4-5個(gè)小訂單轉(zhuǎn)過去推薦每次轉(zhuǎn)0.2個(gè))
最好是1.1個(gè)惊来,每次挑戰(zhàn)應(yīng)答都需要耗費(fèi)0.0001 交易費(fèi)。
在Windows下面轉(zhuǎn)賬ZEN會(huì)更容易一些
轉(zhuǎn)賬確認(rèn)需要3分鐘左右棺滞,在服務(wù)器上用如下命令來查詢余額(private 是Z地址的余額):
zen-cli z_gettotalbalance
等ZEN到賬后再進(jìn)行下一步裁蚁。
配置secnodetracker:
cd ~/zencash/secnodetracker
node setup.js
- Stake transparent address: 填寫余額大于42個(gè)ZEN的T地址
- Alert email address: 用來接收信息的郵箱地址。
- Full hostname (FQDN) 填寫二級(jí)域名
- Region code: 區(qū)域代碼, 北美(na)歐洲(eu)東南亞(sea) 填寫服務(wù)器所在地的對(duì)應(yīng)代碼继准。如果也是Fremont 機(jī)房枉证,填寫na 。
運(yùn)行secnodetracker:
node app.js
顯示內(nèi)容可能略有不同移必,不過只要顯示Authenticated 就說明運(yùn)行正常了.
收到一次挑戰(zhàn)(完成挑戰(zhàn)后會(huì)有相應(yīng)獎(jiǎng)勵(lì))室谚。
ctrl+c 結(jié)束這次執(zhí)行,接下來配置pm2守護(hù)進(jìn)程崔泵。
設(shè)置開機(jī)自動(dòng)運(yùn)行:
安裝pm2:
sudo npm install pm2 -g
配置開機(jī)自動(dòng)運(yùn)行:
pm2 start app.js --watch
pm2 save
pm2 startup
執(zhí)行提示中的內(nèi)容秒赤。
查看secnodetracker的運(yùn)行狀態(tài):
pm2 list
查看你的安全節(jié)點(diǎn)狀態(tài):
通過這個(gè)網(wǎng)站可以查詢安全節(jié)點(diǎn)運(yùn)行狀態(tài)
安全節(jié)點(diǎn)劃分為3個(gè)區(qū)域,根據(jù)填寫的Region code訪問對(duì)應(yīng)的查詢頁面憎瘸。
北美: https://securenodes.na.zensystem.io/
歐洲: https://securenodes.eu.zensystem.io/
東南亞: https://securenodes.sea.zensystem.io/
正式網(wǎng)的安全節(jié)點(diǎn)入篮。
本篇教程參考英文版搭建教程,并做了一定修改幌甘。以下是英文版教程:
https://blockoperations.com/how-to-build-and-operate-a-zencash-secure-node/