说明:本教程针对熟悉Linux服务器操作的技术人员,将官方发布的xxnetwrok节点的安装说明做了精简,去掉了大量的常识性操作说明。
非专业人员,或者对Linux服务器不熟悉的技术人员,请查看英文版的详细操作手册:https://xxnetwork.wiki/index.php/Operating_System_Installation_and_Configuration
第一部分:环境配置
1. 硬件要求
一个节点由两台服务器组成,其中一台称为cMix Node
(简称Node
),另一台称为网关Gateway
。
硬件要求详见:https://xxnetwork.wiki/index.php/Hardware_Requirements
2. 软件环境
2.1 操作系统
Ubuntu Server 20.04
2.2 网络要求
网络联通性要极佳,延迟极小。
同时需要有固定IP。
2.3 安装Python3和对应版本的pip
sudo apt install -y python3-pip
sudo pip3 install -U pip // 更新python库,可以省略
安装py支持包
pip3 install --user -U boto3 pyOpenSSL substrate-interface packaging requests
3. 配置端口
3.1 默认端口
- cMix Node端口:11420
- Gateway端口:22840
- xx chain端口:15974
3.2 防火墙开启上述端口
sudo ufw disable
sudo ufw allow 15974/tcp comment "xx chain"
sudo ufw allow 11420/tcp comment "xx network cMix"
sudo ufw allow 22840/tcp comment "xx network Gateway"
sudo ufw enable
如果使用云主机,请在云控制台中设置防火墙。
如果Node
和Gateway
分别在不同服务器上的话,开启对应的端口。
4. 配置用户上线
sudo nano /etc/security/limits.conf
在配置文件中添加以下内容:
* soft nofile unlimited
* hard nofile unlimited
* soft nproc unlimited
* hard nproc unlimited
# End of file
5. 配置GPU
注意,GPU
仅限于cMix Node
,Gateway
不需要。
执行一下指令:
sudo apt install -y nvidia-driver-470-server
sudo systemctl set-default multi-user.target
sudo shutdown -r now // 重启服务器,让配置生效
sudo lshw -c display // 验证GPU是否正常安装
nvidia-smi // 查看GPU参数
第二部分 cMix Node安装与配置
1. 下载xxnetwork
的node
安装包
cd /opt/
sudo curl -L -O https://xx.network/protonet-node.tar.gz
sudo tar -xvf protonet-node.tar.gz
cd xxnetwork
sudo chmod +x /opt/xxnetwork/bin/*
2. 配置证书
python3 generate-certs.py
执行上述指令后,在目录cred
目录下,会生成证书文件和.IDF
文件。
将cred
目录以及目录下所有文件传到本地电脑,这些证书将用于Gateway
的配置。
注:可以使用scp
在服务器和本地电脑之间进行文件传输,如使用:
scp -r [Node username]@[Node public IP]:/opt/xxnetwork/cred/ cred/
可以将服务器上文件下载到本地电脑。
最后,为确保安全,将服务器上的cred/gateway-key.key
私钥文件删除。
注:cred目录下的所有文件请务必妥善保管
3. 配置./config/cmix.yaml
如果使用默认配置,并且使用GPU
,则一般不用更改该配置文件。
如果不用GPU,则将配置文件中的useGPU
改为false
。
如果证书文件不在默认安装位置,也请调整相应目录。
4. 配置xxnetwork-cmix.service
打开配置文件,将User
改为服务器的用户帐号。
5. 配置xxnetwork-chain.service
打开配置文件,将User
改为用户帐号。
另外,在ExecStart
执行命令的参数--validator
后面,加上--name 节点名称
,如:
ExecStart=/bin/bash -c "/opt/xxnetwork/bin/xxnetwork-chain --validator --name 自己定一个节点名称 --telemetry-url 'wss://telemetr
y.polkadot.io/submit/ 0' --base-path /opt/xxnetwork/db --port 15974 --ws-port 63007 >> /opt/xxnetwork/log/chain.log
2>&1"
6. 配置数据库
6.1 安装并运行PostgreSQL
sudo apt install -y postgresql-client postgresql postgresql-contrib
sudo update-rc.d postgresql enable
sudo service postgresql start
6.2 创建名为cmix
的数据库用户
sudo -u postgres createuser --createdb --pwprompt cmix
创建时需要输入该用户的密码。
6.3 创建名为cmix_node
的数据库
sudo -u postgres createdb -O cmix cmix_node
6.4 再次编辑./config/cmix.yaml
将database
的password
一项改为5.2
步设定的密码。如果上述步骤中改了数据库用户名或数据库名,也在相应配置中调整。
6.5 验证数据库是否正确配置
sudo su postgres
psql // 进入postgreSQL
\l // 显示数据表,看看是否有cmix_node表
\q // 推出postgreSQL
exit
7. 启动xxnetwork的cMix Node服务
注意,启动服务前,需要确保工作目录的own为当前服务器用户名,执行:
sudo chown [user]:[user] -Rv /opt/xxnetwork
7.1 给cmix
和xxchain
建立软链接
sudo ln -s /opt/xxnetwork/xxnetwork-cmix.service /etc/systemd/system
sudo ln -s /opt/xxnetwork/xxnetwork-chain.service /etc/systemd/system
sudo systemctl daemon-reexec
7.2 激活cmix
和xxchain
服务
sudo systemctl enable xxnetwork-cmix.service
sudo systemctl enable xxnetwork-chain.service
7.3 启动cmix
和xxchain
服务
sudo systemctl start xxnetwork-chain.service
sudo systemctl start xxnetwork-cmix.service
以上命令执行后,两个程序将在后台运行。
7.4 查看服务运行状态
sudo systemctl status xxnetwork-cmix.service
sudo systemctl status xxnetwork-chain.service
7.5 查看进程
ps -A | grep xxnetwork
如果显示进程
? 00:00:12 xxnetwork-chain
则说明cMix Node
已经正常运行
第三部分 Gateway安装与配置
1. 下载xxnetwork
的Gateway
软件包
cd /opt/
sudo curl -L -O https://xx.network/protonet-gateway.tar.gz
sudo tar -xvf protonet-gateway.tar.gz
cd xxnetwork
sudo chmod +x /opt/xxnetwork/bin/*
2. 将安装node时生成的证书和私钥复制到Gateway
节点
需要复制的有以下三个文件到Gateway
的cred
目录下:
gateway-cert.crt
gateway-cert.key
cmix-cert.crt
同样的,使用scp
工具,命令如下:
scp cred/gateway-cert.crt cred/gateway-key.key cred/cmix-cert.crt [Gateway username]@[Gateway public IP]:/opt/xxnetwork/cred/
3. 配置gateway.yaml
编辑config/gateway.yaml
,在cmixAddress: "[Node IP]:11420"
中配置Node IP地址。其他保持默认。
4. 配置xxnetwork-gateway.service
和xxnetwork-chain.service
同配置cMix Node
相同,即将两个文件中的User
都设置为服务器用户名。
另外,在xxnetwork-chain.service
中,将ExecStart
的参数中添加--name
,参考如下:
ExecStart=/bin/bash -c "/opt/xxnetwork/bin/xxnetwork-chain --light --name [自定义一个名字] --telemetry-url 'wss://tele
metry.polkadot.io/submit/ 0' --base-path /opt/xxnetwork/db --port 15974 --ws-port 63007 >> /opt/xxnetwork/log/chain.
log 2>&1"
5. 配置数据库
5.1 安装并运行PostgreSQL
sudo apt install -y postgresql-client postgresql postgresql-contrib
sudo update-rc.d postgresql enable
sudo service postgresql start
5.2 创建名为cmix
的用户
sudo -u postgres createuser --createdb --pwprompt cmix
创建时需要输入该用户的密码。
5.3 创建名为cmix_gateway
的数据库
sudo -u postgres createdb -O cmix cmix_gateway
5.4 再次编辑./config/gateway.yaml
,将database
的password
一项改为设定的密码。如果上述步骤中改了数据库用户名或数据库名,也在相应配置中调整。
5.5 验证数据库是否正确配置
sudo su postgres
psql // 进入postgreSQL
\l // 显示数据表,看看是否有cmix_node表
\q // 推出postgreSQL
exit
6. 启动xxnetwork服务
与配置Node
一样,启动服务前,需要确保工作目录的own为当前服务器用户名,执行:
sudo chown [user]:[user] -Rv /opt/xxnetwork
6.1 给gateway
和xxchain
建立软链接
sudo ln -s /opt/xxnetwork/xxnetwork-gateway.service /etc/systemd/system
sudo ln -s /opt/xxnetwork/xxnetwork-chain.service /etc/systemd/system
sudo systemctl daemon-reexec
6.2 激活gateway
和xxchain
服务
sudo systemctl enable xxnetwork-gateway.service
sudo systemctl enable xxnetwork-chain.service
6.3 启动gateway
和xxchain
服务
sudo systemctl start xxnetwork-gateway.service
sudo systemctl start xxnetwork-chain.service
以上命令执行后,两个程序将在后台运行。
6.4 查看服务运行状态
sudo systemctl status xxnetwork-gateway.service
sudo systemctl status xxnetwork-chain.service
6.5 查看进程
ps -A | grep xxnetwork
应该可以看到两个相关进程
~~~~~ ? 00:00:12 xxnetwork-chain
~~~~~ ? 00:00:18 xxnetwork-gatew
如果看不到xxnetwork-gatew
,说明gateway
还没启动,稍等。
第四部分 质押节点
节点要有质押收益,必须成为验证人节点。
1. 确认节点运行状态良好
进入cMix Node
节点,执行cat /opt/xxnetwork/log/chain.log | grep Syncing
,查看并确认链是否正常运行。
执行tail -2 /opt/xxnetwork/log/cmix-wrapper.log
,查看节点同步与共识情况,如果显示:
[INFO] 09-Jul-21 16:25:07: Waiting on IDF for consensus...
[INFO] 09-Jul-21 16:25:07: Waiting on consensus ready state...
可以继续下一步,否则继续等待。
2. 获得session key
执行以下curl
指令:
curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9933 -o /opt/xxnetwork/cred/session-keys.json
这时,会在cred
目录下生成一个新的文件session-keys.json
。
打开该文件,result
就是需要绑定的session key
。
获得cmix ID
打开cred
目录下的cmix-IDF.json
,hexNodeID
就是cmix ID
第五部分 绑定节点账户
至此,您已经获得了session key
和cmix ID
。接下去,需要在浏览器中打开xx network浏览器网页版,将节点与账户绑定。
本教程为节点配置过程中的技术相关操作,接下去绑定节点账户属于运营相关操作,由另外文章介绍。