Node Operator / Validator Checklist
Before reaching out for support, here are some steps to check your installation.
Start with a quick diagnosis script
We distribute a stand-alone diagnosis script. Drop this into your Unix-based system, and run:
/path/to/node-diagnostic.sh -d /var/beacond/ -p /opt/bin/beacond
Substitute the respectively the path to your Beacon Kit data directory (containing config
and data
directories), and the path to beacond
binary (if not in your $PATH).
This script will produce clearly marked recommendations. Provide the output of this script when communicating with us for support.
Beacon Kit version check
Ensure you are running the latest version of Beacon Kit
Execution client version check
Check that you are running a supported version of your execution client. Note we don't always support the latest version of a given client.
Peering
There are several ingredients to successful peering. If you are running in a containerized envrionment, it's important to ensure your services are properly advertising their real network address, and that traffic is being directed into the container, both for Beacon Kit and your execution client.
- Check bootnodes for initial chain sync: Check that you have a current list of bootnodes. Both
geth
andreth
accept--bootnodes
option.beacond
has the boot node list baked into our distributed config. - Check Execution Layer peering: The execution layer needs excellent peering in order to ensure that transactions flow to your validator for sealing in blocks. Ensure port 30303 TCP (for transactions) and UDP (for peer exchange) is open. Check that you have a current list of peers. It's a good idea to use these as "trusted peers" or "static peers" in your execution client. Here's how:
- Reth: Use
trusted_nodes
in the[peers]
section ofreth.toml
or the --trusted-peers option. - Geth: Use the
StaticNodes
field of the[Node.P2P]
section inconfig.toml
. This config file isn't generated for you, and you must make one withgeth dumpconfig
and refer to it withgeth --config <configfile>
. - Nethermind: Use the
Network.StaticPeers
key innethermind.cfg
.
- Reth: Use
- Indicate your Execution Layer's external IP address. In order to advertise their address for peering, execution clients need to know the publicly routable IP address they can be reached at. Most execution clients try to determine your public IP with UPnP, which is not available in cloud computing environments. Therefore, you must tell your execution client what your external IP address is. For
reth
andgeth
, this is done with the--nat extip:<IP>
option. - Check beacond peering:
beacond
needs good peering to organize and perform consensus actions. This is carried out over TCP port 26656, typically. Also, correctly advertise your node's external IP withp2p.external_address
inconfig.toml
. Further, to limit beacond's memory consumption we recommend 40 inbound + 10 outbound peers, by applying the settings inconfig.toml
for healthy peering with reasonable resource usage:max_num_inbound_peers = 40 max_num_outbound_peers = 10
Let us know who you are
If you have launched a validator on the chain, it's in your interest to let us know who you are, so we know who to contact in case there's trouble with on-chain performance or actions.
Steps to do that:
- (Optional) Formulate a pull request to the Validator Metadata repository with a public handle for your validator. You can use an anon if you want. Provide a logo attached to the pull request if you would like it posted on your validator profile.
- Reach out to us on the
#node-support
channel on our Discord. We will set you up with dedicated support, chat, and announcement channels for validators.
Hygiene
Make sure Beacon Kit and your execution client are configured to start when your operating system starts.
Cause your operating system to rotate logs, and slim the log output.
- Read the
beacond
config files to find log verbosity settings. - Consult the instructions for your chosen chain node to adjust logging settings.
- Set up the
logrotate
service to rotate logs.
Monitor your node's disk space, memory consumption, and service availability. You can add --metrics=<ip>:6060
to the reth invocation to enable prometheus metrics collection. Specify an internal IP address accessible only to your prometheus server, or ensure this port is firewalled off from the internet. Particularly if you are a validator, consult the guide to Becoming an Awesome Validator for references to other monitoring tools.