使用Docker在Moonbeam上运行节点¶
概览¶
在基于Moonbeam的网络运行一个全节点使您能够连接至网络,与bootnode节点同步,获得RPC端点的本地访问,在平行链上创建区块,以及更多其他不同的功能。
安装指引¶
使用Docker可以快速创建Moonbeam节点。关于安装Docker的更多资讯,请访问此页面。截至本文截稿,所使用的Docker版本为19.03.6。当您连接至Kusama上的Moonriver,或Polkadot上的Moonbeam时,将需要数天的时间同步相应中继链内嵌入的数据。请确认您的系统符合以下要求。
创建一个本地目录以储存链上数据:
mkdir /var/lib/moonbeam-data
mkdir /var/lib/moonriver-data
mkdir /var/lib/alphanet-data
接着,请确认您已经为储存链数据的本地目录设定所有权和权限许可。在本示例中,为特定用户或当前用户设置必要权限许可(为将要运行docker
命令的用户替换为INSERT_DOCKER_USER
):
# chown to a specific user
chown INSERT_DOCKER_USER /var/lib/moonbeam-data
# chown to current user
sudo chown -R $(id -u):$(id -g) /var/lib/moonbeam-data
# chown to a specific user
chown INSERT_DOCKER_USER /var/lib/moonriver-data
# chown to current user
sudo chown -R $(id -u):$(id -g) /var/lib/moonriver-data
# chown to a specific user
chown INSERT_DOCKER_USER /var/lib/alphanet-data
# chown to current user
sudo chown -R $(id -u):$(id -g) /var/lib/alphanet-data
下一步,执行Docker运行的命令。如果您设定的是收集人节点,确认您使用的是收集人代码段。注意,您需要替换:
- 在两处替换
INSERT_YOUR_NODE_NAME
- 用服务器实际RAM的50%替换
<50% RAM in MB>
。例如服务器有32 GB RAM,这里则应配置为16000
. 内存配置最低值为2000
,但这将低于推荐配置
注意事项
对于v0.27.0之前的客户端版本,--state-pruning
标志被命名为--pruning
。
对于v0.30.0之前的客户端版本,--rpc-port
用于指定HTTP连接的端口,--ws-port
用于指定WS连接的端口。从客户端版本v0.30.0开始,--rpc-port
已被弃用,--ws-port
命令行标志同时适用于HTTP连接和WS连接。类似地,--rpc-max-connections
命令行标志已被弃用,现在被硬编码为100。您可以使用--ws-max-connections
来调整HTTP和WS连接的总限制。
全节点¶
Linux snippets
docker run --network="host" -v "/var/lib/moonbeam-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonbeam \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run --network="host" -v "/var/lib/moonriver-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonriver \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run --network="host" -v "/var/lib/alphanet-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain alphanet \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
MacOS snippets
docker run -p 9944:9944 -v "/var/lib/moonbeam-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonbeam \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run -p 9944:9944 -v "/var/lib/moonriver-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonriver \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run -p 9944:9944 -v "/var/lib/alphanet-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain alphanet \
--name="INSERT_YOUR_NODE_NAME" \
--state-pruning archive \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
注意事项
如果您想要运行RPC终端、连接至Polkadot.js Apps或是运行您自己的应用,使用--unsafe-rpc-external
和/或--unsafe-ws-external
标志来运行能够从外部访问RPC端口的全节点。您能够通过执行moonbeam --help
以获得更多细节。我们不建议收集人节点使用此配置。
收集人¶
Linux snippets
docker run --network="host" -v "/var/lib/moonbeam-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonbeam \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run --network="host" -v "/var/lib/moonriver-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonriver \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run --network="host" -v "/var/lib/alphanet-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain alphanet \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
--db-cache <50% RAM in MB> \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
MacOS snippets
docker run -p 9944:9944 -v "/var/lib/moonbeam-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonbeam \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run -p 9944:9944 -v "/var/lib/moonriver-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain moonriver \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
docker run -p 9944:9944 -v "/var/lib/alphanet-data:/data" \
-u $(id -u ${USER}):$(id -g ${USER}) \
moonbeamfoundation/moonbeam:v0.34.0 \
--base-path=/data \
--chain alphanet \
--name="INSERT_YOUR_NODE_NAME" \
--collator \
--trie-cache-size 1073741824 \
-- \
--name="INSERT_YOUR_NODE_NAME (Embedded Relay)"
注意事项
有关上述标志的概述,请参阅开发者文档的标志页面。
在Docker拉取必要的镜像后,您的Moonbeam(或Moonriver)全节点将启动并显示许多信息,如区块链参数、节点名称、作用、创世状态等:
注意事项
您可使用--promethues-port XXXX
标志(将XXXX
替换成真实的端口号)指定自定义Prometheus端口,平行链和嵌入式中继链都可以进行这项操作。
docker run -p 30334:30334 -p 30333:30333 -p 9944:9944 # rest of code goes here
在同步过程中,您将看到嵌入式中继链和平行链的消息(无标签)。这些消息将显示目标区块(实时网络状态)和最佳区块(本地节点同步状态)。
注意事项
同步相应的内嵌中继链需要数天的时间,请注意您的系统符合要求。
如果您按照Moonbase Alpha的节点教程操作,当同步完成,您将获得一个在本地运行的Moonbase Alpha测试网节点!
如果您按照Moonriver或Moonbeam的节点教程操作,当同步完成,您将能够与同类节点连接并且能够看到在Moonriver/Moonbeam网络上生产的区块!请注意,这个部分将会需要数天时间来先同步中继链数据。
客户端升级¶
随着Moonbeam网络不断发展,有时需要升级节点软件。升级版本发布后,我们将通过Discord channel通知节点运营者,并告知这些升级是否为必要升级(一些客户端升级为可选操作)。升级过程简单直接,并且全节点及收集人的升级过程一样。
-
停止Docker容器:
sudo docker stop INSERT_CONTAINER_ID
-
从Moonbeam GitHub Release页面获取Moonbeam的最新版本
当您的节点再次运行时,您将在您的终端看到日志。
清除节点¶
如果您需要Moonbeam节点的新实例,您可以通过删除相关联的数据目录来清除您的节点。
首先,您想需要停止Docker容器:
sudo docker stop INSERT_CONTAINER_ID
如果您在启动节点的时候未使用-v
标志来指定用于存储链数据的本地目录,则数据文件夹会与Docker容器本身相关。因此,移除Docker容器将移除链数据。
如果您使用-v
标志启动节点,则需要清除指定的目录。例如,对于直接关联的数据,您可以运行以下命令来清除您的平行链和中继链数据:
sudo rm -rf /var/lib/moonbeam-data/*
sudo rm -rf /var/lib/moonriver-data/*
sudo rm -rf /var/lib/alphanet-data/*
仅为指定链移除平行链数据,您可运行以下命令:
sudo rm -rf /var/lib/moonbeam-data/chains/*
sudo rm -rf /var/lib/moonriver-data/chains/*
sudo rm -rf /var/lib/alphanet-data/chains/*
同样地,仅移除中继链数据,您可运行以下命令:
sudo rm -rf /var/lib/moonbeam-data/polkadot/*
sudo rm -rf /var/lib/moonriver-data/polkadot/*
sudo rm -rf /var/lib/alphanet-data/polkadot/*
现在您的链数据已被清除,您可以使用新的数据目录启动一个新节点。您可以通过重复安装指引步骤安装最新版本。确保您所使用的是最新可用标签,您可以在Moonbeam GitHub Release 页面上找到该标签。
注意事项
根据需要,Moonbase Alpha可能被会清除和重置。在这些情况下,您需要清除平行链数据和中继链数据。如果需要清除,将通过Discord channel提前通知节点运营商。
| Created: December 2, 2021