Ergo Node FAQ & Guidelines#
General#
What benefits are there for running a node?#
There is no direct financial incentive to run a node. However, doing so contributes to increasing the security of the network.
Can nodes be viewed anywhere?#
Yes, public nodes can be viewed at ergonodes. However, unless your node is hosted on a publicly accessible web-server, your node should be protected by your router.
- To run a public node, refer to this nginx.conf example.
- Be cautious when using a remote node as it can be insecure.
Minimum Requirements#
Java#
An Ergo node requires a JDK/JRE version >= 9 installed on your system. We recommend using Oracle Java SE or SDKMAN for Unix-based systems:
curl -s "https://get.sdkman.io" | bash
sdk install java 11.0.13.8.1-amzn
Hardware#
The only hardware requirements are ~20GB of storage for the blockchain and ~8GB of RAM for handling the sync. The node utilizes Java, so it should work across all operating systems. You can even run it on a Raspberry Pi.
Note: Due to the intensive disk I/O, we recommend having 4-6GB of RAM with a fast SSD, running with the
-Xmx4G
flag on JVM9/11.
Running the Node#
API Commands#
/node/shutdown#
Use the following command to safely shut down your node
curl -X POST "http://127.0.0.1:9053/node/shutdown" -H "api_key: hello"
If a safe shutdown is not possible, you can terminate the ports:
kill -9 $(lsof -t -i:9053)
kill -9 $(lsof -t -i:9030)
Please refer to the section on swagger for more information.
Security#
Your node should be protected by your router unless it's running on a publicly accessible web-server. If you wish to host a public node, consider the following:
- The
ergo.conf
file must never be made public. - Sensitive API methods require a security token that should not be transmitted over untrusted channels.
- Restrict access to the Ergo REST API to known hosts only. Specifically, the API should not be accessible from the Internet.
Compiling from Source#
Instead of downloading the precompiled Ergo jar, you can clone the repository and compile the jar from source using the sbt assembly
command.
Running as a Service#
Create a service file:
vi /etc/systemd/system/node.service
And enter the following content:
[Unit]
Description=ErgoNode Service
[Service]
User=user
WorkingDirectory=/mnt/HC_Volume_19304500/ergo
ExecStart=/mnt/HC_Volume_19304500/run_node.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Next, create the sh
file:
echo "#!/bin/sh
sudo /usr/bin/java -jar -Xmx4G ergo.jar --mainnet -c ergo.conf" > run_node.sh
chmod +x run_node.sh
Finally, enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable node.service
sudo systemctl start node
sudo systemctl status node