What's new
  • Thank you for your input for the last few days regarding the list of exchanges you want to see DSTRA in.
    These are our targets for fundraising going forward. Learn more

用vps搭建主节点的简明指南

tehzoca

Junior Member
#1
因为dstra后续空投中持币奖的取消,大家都开始集币搭建属于自己的主节点。

对各种节点币,大家一般可以在在钱包github文档中、或其他单独发布的地方找到各个系统下的节点搭建指南。这样按照每一步操作下来,一般能够成功启动节点,但这类指南往往是根据模板改写,新手尤其是没接触过linux系统的朋友,往往都需要自己摸索一番,费时费力。

这篇指南不仅会从vps选择、linux系统配置、本地钱包操作等几个方面,来指导大家完成节点搭建步骤,还会解释相关的linux命令、conf文件中各字段的含义等等。让大家不仅学会怎样建节点,还能明白为什么要这样做。

一、建立节点需要从哪几个方面做准备

1.1 VPS

主节点币与纯pow/pos币的最大区别在于,能够通过持币人各自搭建的节点来支持区块网络,而不需要完全依靠开发团队自有的节点资源。但也需要用户建立的节点要有固定的ip地址,并且24小时在线,这就是为什么我们需要用到vps。vps能够以较低的价格提供稳定的平台系统,并且为你节省电费开支,让你无需为硬件担心。vps供应商一般能够提供预装windows或linux两类系统的服务器。为什么我们推荐大家选择linux服务器?因为ubuntu等linux平台有纯命令行的非图形化版本,这样相比windows系统或图形化的linux系统能够节省很多系统资源,有利于降低服务器运行成本,这也就是为什么vps供应商提供的linux服务器一般比windows的租金要便宜很多。

1.2 VPS钱包

有了VPS,我们就需要在VPS的linux系统中安装钱包并运行。这个钱包起的作用,是把自己标识为区块网络中的节点之一,并向全网广播自己的ip地址,让其他钱包同步区块数据的时候,能够通过自身下载数据,这也就是主节点存在的意义。

因为仅仅是起到同步区块网络的作用,VPS上这个钱包的地址(wallet.dat)可以是任意,为了安全起见,我们一般采用随机创建的、里面没有币的空钱包。而为了把这个钱包表示为主节点,我们通过2个关键标志进行识别:节点私钥(masternodeprivkey)和节点ip(externalip)。这两个字段储存在VPS钱包目录的币名.conf文件中,钱包程序运行的时候,通过读取这个配置文件中的节点私钥和节点ip,将节点私钥作为这个节点的唯一识别码、并与节点ip同步向区块网络广播。

1.3 本地钱包

本地钱包起到的作用,一方面是在创建并启动节点的过程中,生成节点地址和节点私钥、完成节点保证金的发送并获取交易编号。另一方面是在节点运行中,监控节点的状态并接收节点奖励。在本地钱包中,是通过masternode.conf文件起到复数主节点的管理作用。这个配置文件中存有各个节点的地址 (externalip)、私钥(masternodeprivkey)、保证金交易号(tx id)、保证金指数(index)。和VPS上钱包中的配置文件相似,通过本地钱包启动节点的时候,各几点私钥作为节点的唯一识别码、与节点ip同步向区块网络广播。而保证金交易号和指数,则作为该节点保证金支付的凭证,在本地钱包中通过区块网络进行验证,如果日后这个交易号支付的保证金被解锁并转出,该节点会因无法验证而自动失效。
 

tehzoca

Junior Member
#2
二、节点搭建步骤(以dstra为例)

2.1 VPS端准备工作

这里推荐选用Vultr的vps:
Vultr: High Performance SSD Cloud. https://www.vultr.com/?ref=7339582
美国的一家云服务器供应商,无论从规模和服务,说世界第一应该不为过。

首先是费用,Vultr采用较为自由的账户余额支付类型,即先充值再建立服务器,然后按小时计费消耗余额中的费用。

然后开始选择服务器物理位置、操作系统和配置等信息。物理位置这里仅作为中国大陆推荐,美国国内的西雅图、迈阿密、硅谷,连线速度尚可接受且不易被墙。服务器类型选择Ubuntu 16.04 x64。配置推荐选择$3.5或$5一个月的服务器,当然如果你只作dstra节点(ipv6),$2.5的也可以。附加选项中,如果计划用ipv6作为节点地址就请勾选enable ipv6。服务器hostname和label可以自由输入,hostname就是你每次登陆vps时候显示的用户名,label只作为识别标签在Vultr的管理页面中出现。服务器选好之后等待安装完成,就可以点进vps的详细页面查看ip地址、用户名和密码。

接下来可以通过xshell、putty等ssh软件登陆服务器进行操作。其中putty是免费软件,xshell绿色版破解版之类的很多,大家自行下载即可,我自己用的是xshell。当然Vultr自己也会提供一个网页形式的登陆页面,但操作较为不便,不能进行复制粘贴等等,这里还是推荐采用ssh访问你的vps。这通过ssh访问vps的操作就不再具体介绍,大家通过xshell或putty、输入上面获取的ip地址、用户名、密码连接vps即可。

进入系统后,在我们介入dstra节点及钱包操作前,还有2项准备工作要做。

2.1.1 建立swap虚拟内存

因为$5服务器只提供1g的物理内存,我们要适量的增加一些虚拟内存来满足节点钱包的运行需求。这里1g物理内存vps的推荐虚拟内存至少设置为2g以上。如果运行多个钱包程序可以适量增加虚拟内存量,推荐最多不超过8g。虚拟内存的设置步骤大家可以参考digital ocean(也是位于北美的一家不错的vps供应商)的这篇指南:
How To Add Swap Space on Ubuntu 16.04 | DigitalOcean https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04
一步一步复制粘贴敲命令就好,原文里建的是1g swap,如果大家要建8g就1改成8。

2.1.2 启用ipv6地址(用ipv4的可跳过)

在Vultr管理页面的settings→ipv6查看自己的ipv6地址段。这里大家会看到2个地址名,network是属于你的网段(4段),address是给出的ipv6地址样例(8段),也就是说在这个网段下任意的地址都可以选用,也就是后4段你可以随意输入。这里给大家科普下,ipv6地址是以冒号分隔,一般为8段,每段4个字符,如果有两个冒号连续出现,就说名这两个冒号之间的段都为0,被省略掉了。举例来说,我的网段是2001:19f0:8001:1bf9::,那么我的ipv6地址可以命名为2001:19f0:8001:1bf9::1001、2001:19f0:8001:1bf9::1002类似这样。

决定好你的ipv6地址之后,我们在根目录下用这个命令进入到linux系统的网卡配置文件中添加地址信息。
nano /etc/network/interfaces
这里你可以直接在ipv6管理页面的configuration examples中参考Vultr为你给出的配置格式。也可以参照我下面给出的(这里我配置了1个ipv4、2个ipv6),并把你的ipv4、ipv6、网关、掩码、dns服务器地址等更改为自己的。

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet static
address 144.202.84.33
netmask 255.255.254.0
gateway 144.202.84.1
dns-nameservers 108.61.10.10
post-up ip route add 169.254.0.0/16 dev ens3

iface ens3 inet6 static
address 2001:19f0:8001:1bf9::1001
netmask 64
dns-nameservers 2001:19f0:300:1704::6

iface ens3 inet6 static
address 2001:19f0:8001:1bf9::1002
netmask 64
dns-nameservers 2001:19f0:300:1704::6

2.2 本地钱包中的准备工作

在将节点钱包安装在vps上之前,我们要在本地钱包中新建一个地址,并在控制台中输入masternode genkey命令,生成一个主节点私钥。然后向这个新建的地址发送30000个币,注意是扣除手续费整30000,不要多也不要少。等待交易确认(至少1个确认),在控制台中输入masternode outputs,获得交易id(很长的一段字符)和index(0或1)。
然后在钱包目录dstra2/masternode.conf中分别将节点名称(随便写例如mn01)、节点地址:端口、节点私钥、交易id、index按顺序填入。每个字段中间有一个英文空格,具体可参照masternode.conf中的模板。注意ipv6地址要用尖括号[]括起来:如[2001:19f0:8001:1bf9::1001]:5269

2.3 VPS端开启节点钱包

1)首先进入执行文件目录
cd /usr/local/bin

2)从dstra的github页面下载linux钱包
wget https://github.com/DSTRACoin/dstra/releases/download/v1.0.0/dstra2-v1.0.0-linux-amd64.tar.xz

3)解压钱包
tar -zxvf dstra2-v1.0.0-linux-amd64.tar.xz

4)将钱包程序设置为可读
chmod +x dstra-cli dstrad dstra-tx

5)建立钱包目录
dstrad -daemon
killall dstrad

6)进入钱包目录编辑配置文件
cd
nano .dstra2/ dstra.conf
编辑好之后按ctrl+x保存,y确认并退出

这个配置文件是节点能否成功启动的关键,要仔细编辑。
下面是我的dstra.conf文件,大家可以参考

rpcuser=user
rpcpassword=password
rpcallowip=127.0.0.1
rpcport=5271

daemon=1
server=1
promode=1
listen=1
masternode=1
staking=0

masternodeprivkey=key
externalip=[2001:19f0:8001:1bf9::1001]:5269
bind=[2001:19f0:8001:1bf9::1001]
logtimestamps=1

为了方便大家理解配置文件,每一行的含义我都解释一下。

rpcuser、rpcpassword:用户名密码可以随便写,没什么用。
rpcallowip:固定为127.0.0.1,这个没商量。
rpcport:本地端口。这个基本上也是随意,但是如果有多钱包运行的情况,就要用不同的。
daemon:钱包进程是否后台运行
server:是否作为服务器
promode:这个啥意思我忘了,不加这句也可以
listen:是否开启外部侦听,做节点填1
mastenode:是否为节点,做节点填1
staking:是否开启pos,做节点填0
masternodeprivkey:你的主节点私钥,注意是在本地钱包masternode genkey生成的那个,不是节点地址。
externalip:外部ip及端口,如果采用ipv6的话,记得加尖括号。外部端口的话每个币种是固定的,dstra固定为5269。注意与前面提到的rpcport本地端口区别。
bind:节点绑定的地址,这句可以不写
logtimestamps:在log文件中记录时间标签,也可以不写。

7)启动钱包
dstrad -datadir=.dstra2
这里的-datadi=是通过读取这个目录中的conf文件来运行钱包,如果只有一个钱包的话,也可以不加后面的条件,只通过
dstrad
来启动节点

8)查询钱包区块运行状态
dstra-cli getinfo
查看钱包是否同步好区块

9)查询钱包主节点信息同步状态
dstra-cli mnsync status
等待RequestedMasternodeAssets显示为999,,说明钱包已经同步好全网的主节点信息,可以在本地钱包上启动了。

2.4 本地钱包启动主节点

重启本地钱包,等待同步完成。在主节点页面已经可以看到我们刚才在本地钱包目录中masternode.conf输入的节点信息,现在节点的状态是missing。点击这个节点,选择启动,节点状态会显示为pre-enable或enable。

2.5 在vps上查看节点状态

dstra-cli masternode status
查看节点状态,如message显示为Masternode successfully started则说明节点启动成功了

2.6 在本地钱包监控节点状态

正常情况下本地钱包的节点页面会显示节点状态为enable,以及激活的时间,最后一次的通讯时间,在交易页面会显示节点地址的收益交易。如果vps钱包断线时间较长的话,本地钱包的状态会变成new start required或missing。如果这种弄情况发生,就要和第一次启动节点的步骤相同,先确保vps钱包正常运行,节点信息同步为999,再从本地钱包重新启动一次节点。
 
Last edited:

tehzoca

Junior Member
#3
三、linux常用命令

这里列举一些linux系统操作的常用命令,以Ubuntu为例

df -h:查看磁盘空间

free -h:查看swap虚拟内存空间

du -h abc:查看所在目录下abc目录或文件的大小。如abc为根目录下的文件夹,需用.abc表示


cd abc/xyz:进入当前目录的子目录abc下的子目录xyz。直接cd为返回根目录

ls -a:列出所在目录下的所有文件

nano abc:用文本编辑器nano编辑abc文档。在nano中,ctrl+x为退出,选y保存,n不保存。

rm -r abc:删除文件或目录abc

ps -ef:查看进程

killall abc:关闭名为abc的所有进程。如killall dstrad,则关闭所有运行中的dstra钱包

kill -9 123:关闭进程id为123的进程

wget abc:下载链接为abc的文件并保存到当前目录

tar -zxvf abc:用tar解压缩abc文件

chmod +x abc:给当前目录下的abc文件读写权限

四、其他想说的话

这篇指南限于时间有限,只是非常概括地对linux下节点搭建步骤做了说明,可能存在错误或没有涉及的问题,欢迎大家来批评指正。在建节点的时候遇到的各种问题都欢迎来discord群讨论。关于节点币这个话题,后面我还会针对一机多开、内网ip等问题继续开几个专题,以供大家交流。

此外,在这里还要感谢把我带来dstra世界的meliodas、jwky,教我学会开pos的dumh,日夜不休陪我聊天的lucky、mako、ray、baobao、ccyy,熊猫sai、台湾大佬pwchangame、好久没见的貂爷和猫总,vagrom、ericz、forestgunman等等各路朋友(排名不分先后)。能够和大家聊天非常开心,有你们的世界真的精彩了很多。

币市无情人有情,守得云开见月明。

祝dstra一飞冲天,所有人早日实现财富自由 :giggle:
 
Last edited:

vagrom

Junior Member
#5
大佬早点出就好了,我就不用自己瞎折腾了,不过,有这个指南还是可以给后面的人帮助的,基本上按这个指南就可以搭建MN了。
没想到大佬写这么长,辛苦了。
 

08848

Junior Member
#10
这个好东西啊,虽然没建DSTRA节点,但文档中详细列出建节点过程,简单明了。小白就需要这样的教程。
 

dumh

Junior Member
#18
大佬这篇文档很不错啊, 特别是"建立swap虚拟内存"这个觉得很有用.
有几个地方帮着再说明一下.
rpcuser、rpcpassword:用户名密码可以随便写,没什么用。
---这两个如果没有在下面的rpcallowip填, 还是尽量复杂一些, 不过一般钱包自己生成的都是随机的, 也是够别人破解一段时间了, 这两个的作用主要是在别的机器上来运行本机的钱包的命令的用户验证的.
rpcallowip:固定为127.0.0.1,这个没商量。
staking:是否开启pos,做节点填0,
---做节点这个选项也可以填1的, 如果想让钱包即PoS,又做主节点的话, 但是需要在做主节点的钱包里配置masternode.conf文件, 否则会把用来做主节点的币拿去PoS
 

08848

Junior Member
#19
大佬这篇文档很不错啊, 特别是"建立swap虚拟内存"这个觉得很有用.
有几个地方帮着再说明一下.
rpcuser、rpcpassword:用户名密码可以随便写,没什么用。
---这两个如果没有在下面的rpcallowip填, 还是尽量复杂一些, 不过一般钱包自己生成的都是随机的, 也是够别人破解一段时间了, 这两个的作用主要是在别的机器上来运行本机的钱包的命令的用户验证的.
rpcallowip:固定为127.0.0.1,这个没商量。
staking:是否开启pos,做节点填0,
---做节点这个选项也可以填1的, 如果想让钱包即PoS,又做主节点的话, 但是需要在做主节点的钱包里配置masternode.conf文件, 否则会把用来做主节点的币拿去PoS
大佬们都是高手啊,学习了。
 

tehzoca

Junior Member
#23
大佬这篇文档很不错啊, 特别是"建立swap虚拟内存"这个觉得很有用.
有几个地方帮着再说明一下.
rpcuser、rpcpassword:用户名密码可以随便写,没什么用。
---这两个如果没有在下面的rpcallowip填, 还是尽量复杂一些, 不过一般钱包自己生成的都是随机的, 也是够别人破解一段时间了, 这两个的作用主要是在别的机器上来运行本机的钱包的命令的用户验证的.
rpcallowip:固定为127.0.0.1,这个没商量。
staking:是否开启pos,做节点填0,
---做节点这个选项也可以填1的, 如果想让钱包即PoS,又做主节点的话, 但是需要在做主节点的钱包里配置masternode.conf文件, 否则会把用来做主节点的币拿去PoS
感谢大佬补充
 

vagrom

Junior Member
#29
如果不是因为工作需要或者太能折腾的人,一般人不太可能用Linux,我曾多次尝试将主力系统转移到Fedora或Ubuntu Desktop,但都未成功。桌面系统windows还是太方便了。但Linux做服务器这个没得说。我在阿里云有台VPS,初始设置好后,一二年都没管。
 

tehzoca

Junior Member
#30
如果不是因为工作需要或者太能折腾的人,一般人不太可能用Linux,我曾多次尝试将主力系统转移到Fedora或Ubuntu Desktop,但都未成功。桌面系统windows还是太方便了。但Linux做服务器这个没得说。我在阿里云有台VPS,初始设置好后,一二年都没管。
是啊,没人逼着用,一般都不会以linux为主。