While you can run a Nano node by downloading a binary or building from source, it is recommended to use a Docker container. When using the official Docker images, your node will be much easier to upgrade and maintain.
Although Docker is a great choice for many setups, there are some limitations to be aware of:
- Due to the startup script built into the Docker containers, Launch Options for the
nano_nodeservice run inside the container cannot be easily used. This may change in future versions, but is currently a limitation as of V18.
- It is not recommended to run a *nix container, such as the officially provided one, on a Windows host - there are known issues with handling ports which prevent proper communication with peers.
The guides found on this site make some basic assumptions that should be understood before continuing:
- You have a basic understanding of Docker.
- You are using Nano's official Docker images to manage your node. If you decide to use a different method, you will need to be able to fill in the gaps when following along.
Beta Network Setup
The details below are focused on running a node on the main network. The beta network is also available for testing and is a great place to learn about node management. Beta nodes also help improve our network, so please consider running one!
See the Beta Network page for details on how to setup a node on this test network.
Principal Representative Node¶
The following are minimum recommended specifications for nodes with 0.1% or greater voting weight (Principal Representatives):
- 4GB RAM
- Quad-Core CPU
- 250 MB/s bandwidth (2TB of available monthly bandwidth)
- SSD-based hard drive
The following are minimum recommended specifications for nodes with less than 0.1% voting weight (regular Representatives):
- 2GB RAM
- Dual-Core CPU
- 100 MB/s bandwidth (1TB of available monthly bandwidth)
- SSD-based hard drive
Various factors affect resource usage including how often RPC calls are made, other applications running on the machine, etc. These recommendations should be evaluated along with other considerations.
For nodes being used with services requiring regular or high volume sending and receiving of transactions, special considerations must be made for handling Proof-of-Work generation activities.
GPUs provide much higher throughput than CPUs. Work peers can also be configured for generating work outside the node.
The nano_node will use two configurable ports throughout its lifecycle. The default values suggested by the network details are below:
Network Ports Overview
Docker must be installed on the host machine and instructions can be found here: https://docs.docker.com/install/. We recommend installing the latest stable version available.
Pulling the Docker Image¶
The Docker image can be downloaded via
docker pull. We can either grab the
latest or a specific version/tag. Not specifying a tag defaults to
latest. An example of each is found below.
Pulls the latest release of the Nano Node:
docker pull nanocurrency/nano
Pulls a specific version of the Nano node:
docker pull nanocurrency/nano:V18.0
If you are running in an enterprise environment, it is recommended that you explicitly specify the latest stable version to ensure deterministic containers. A list of tags can be found at the official Nano Currency Docker Hub.
Warning - Multiple Node Setups
Never use the same seed on multiple running nano_node instances at the same time.
- Multiple nano_nodes using the same seed can result in network race conditions that degrade performance for your personal accounts.
- In addition, Publishing transactions from two nodes with the same account at the same time may cause an account fork which requires a slower representative voting process.
- Similarly, if you are running a representative account on multiple nodes, they may publish conflicting votes, causing your representative to be ignored by the network.
- Performance degradation in enterprise environments may be significant.
Starting the Node¶
With Docker there are basic commands for managing containers. To properly bring the node up, learn these commands beginning with starting the container.
For additional options around building the node to run on various platforms, head over to the Integration Guides Build Options.