Installing the Node Client⚓︎
This guide explains how to deploy a NEM node, either manually or using Docker.
Hardware Requirements⚓︎
-
A machine connected to the internet with approximately 30 GB of disk space for database and log files, and 16 GB of RAM as of July 2026.
-
For optimum participation in consensus and harvesting, the node must have a publicly reachable IP address and TCP port 7890 must be open for inbound and outbound connections.
Without a public IP address, your node can still produce new blocks and submit them to the network, but peer nodes will not be able to notify your node about new blocks and transactions they discover. In this case, your node resorts to periodically polling its peers, which is slower.
Additionally, a public IP address is required to participate in the Supernode Program.
-
For applications like wallets to be able to communicate with the network through your node, the following TCP ports should be open:
- 7890 for REST requests.
- 7778 for WebSockets requests.
Manual Installation⚓︎
Prerequisites⚓︎
- Install Java JRE 11 or OpenJDK 11.
The NIS1 client works on any operating system that supports Java, including Linux, Windows, and macOS.
Installation⚓︎
-
Unzip the file in the folder that becomes the NIS1 installation folder.
Configuration⚓︎
Create a new nis/config-user.properties file with the following content, adapted to your case:
nem.folder = %h/nem
nis.bootName = my-server
nis.bootKey = 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
-
Set the
nem.folderproperty to point to the NIS1 home folder. This can be different from the installation folder and will store the program's logs and database files.Do not use
~to refer to your user's home folder, use%hinstead. The default location is%h/nem.Backslashes on Windows need to be doubled:
\\. For example,D:\\NEM\\nis1-home. -
Set
nis.bootNameto the name you want for your server. This is merely informational. Leading and trailing spaces are removed, but the name can contain spaces in the middle. Avoid using characters outside the ASCII range, even though UTF8 is supported via escaping (e.g.\u3053\u3093\u306B\u3061\u306F). -
Set
nis.bootKeyto the private key of the account managing this node. If you do not have an account yet, use a wallet such as NEM NanoWallet to create one.-
When performing delegated harvesting, this is the private key of the remote account. This is the recommended setup.
-
When performing local harvesting, this is directly the private key of your account. This setup is not recommended.
This key must be kept secret at all times
-
-
Set
nis.shouldAutoHarvestOnBoottotrueif you want the node to harvest.
Speed Up the First Run of the Node
You can optionally download a database snapshot to speed up the first run of the node:
- Go to https://bob.nem.ninja/ and download the most recent
nis5_mainnet-*.mv.dbfile. For example, nis5_mainnet-5-565-850.mv.db.gz. - Unzip the file inside a folder named
nis/datainside the NIS1 home folder. Rename the extracted file tonis5_mainnet.mv.db.
Running a Testnet Node
If you want to run a testnet node, add the following properties to your config-user.properties file:
nem.network = testnet
nis.treasuryReissuanceForkHeight = 1
nis.treasuryReissuanceForkTransactionHashes =
nis.treasuryReissuanceForkFallbackTransactionHashes =
nis.multisigMOfNForkHeight = 1
nis.mosaicsForkHeight = 1
nis.firstFeeForkHeight = 1
nis.secondFeeForkHeight = 1
nis.remoteAccountForkHeight = 1
nis.mosaicRedefinitionForkHeight = 1
Launch⚓︎
Open a terminal and locate the appropriate launch script for your operating system:
Out of Memory Issues
If you encounter memory issues, edit the launch script and
increase the -Xmx parameter.
Launch the script. The console output indicates that the node is running.
Using Docker⚓︎
These instructions only work for Linux systems, including the Windows Subsystem for Linux.
Prerequisites⚓︎
Installation⚓︎
Clone the nem-docker repository:
Configuration⚓︎
Upon first run, the client asks for the boot name and boot key properties (described in the manual Configuration section above) and stores them.
If you want to edit these settings manually, before starting the client create a new file called
custom-configs/nis.config-user.properties with the content described above.
Controlling the Node⚓︎
-
To start the node:
-
To stop the node:
For additional commands, read the nem-docker GitHub project.
Synchronization⚓︎
When the node first starts, it downloads the whole blockchain from its peers.
This is a long process that can take up to 48 hours.
If you downloaded the optional database snapshot, the node reads the database first and then downloads the remaining blocks, significantly reducing the synchronization time.
Meanwhile, you can check:
-
If you have a public IP, a few minutes after launching your node it should appear in the public list of nodes at nodewatch.symbol.tools. Its reported chain height increases as the node catches up with the rest of the network.
-
You can also ask your node its current chain height by pointing a browser to localhost:7890/chain/height.
Monitoring the Node⚓︎
NIS listens for queries on port 7890, so the first way to monitor your node is to point a browser to localhost:7890/node/info.
If you get any response, even an error such as NIS_ILLEGAL_STATE_LOADING_CHAIN, the node is running.
For the full list of URLs that can be queried, see the REST API specification.
Updating a Node⚓︎
Updating the NIS1 client to the latest protocol version is straightforward:
Manually⚓︎
-
Stop the server by pressing
Ctrl+Cor killing the process. -
Remove the old package. This means all files in the NIS1 installation folder except the
config-user.properties. Everything in the NIS1 home folder should remain. -
Download the latest binary and extract it in the same folder.
-
Start the server again with the same command used to launch it.
Using Docker⚓︎
-
Stop the server with
./stop.sh -
Update the repository that you cloned in the Installation step with
git pull -
Restart the server with
./boot.sh