How to setup your own node in a blink of an eye (Now support multi-nodes per host)

As this is now the official way of installing/updating a node can the devs please update the app to reflect this? It’s still having you look for eth_mainnet and Also can OP add in some details that were in the old post that this one doesn’t have. Such as recommended CPU/RAM/Storage/Bandwidth and how to add the vnode to the app.

1 Like

Hi @Rocky, Thanks again for building out this script. This has made things a lot simpler for newbies to Linux (like myself).

I’m planning to adding another vNode in a few weeks as I want to expand my support for this important project.

Just so I’m clear on the process, please confirm the following steps:

  1. I need to run your script with the “Uninstall” command. I’m lead to believe this removes everything including beacon and shard blockchain data.

  2. Download your script from

  3. Modify the script to add in my additional vNode Validator Key etc.

  4. Run your script and then wait for all vNodes to re-sync.

Have I missed any important steps?


  1. I believe we no longer have to open any ports on my firewall, right?

  2. Is there a way to retain the “/mainnet/block/” beacon and shard chains to reduce the amount of bandwidth and time needed to re-sync my previously active vNode or is this not advisable/possible?

Hello @Linnovations,

In order to add more vNodes at a later time all you would need to do is edit the and added your additional validator key and then save and re-run the script.

The script will automatically make another folder for the next node and use the next port so 8334 -> 8335 (which is what you would use in the app to add another node).

1 Like

Hey @Jared, Thanks for the prompt reply. So if I hear you correct, I do not need to stop any docker processes nor do I need to run the “uninstall” command.

All I need to do is modify the script file by adding in my vNode Validator Key and then re-run the script?

Wow, if that’s the case, that’s awesome!

Follow-up Question:

  1. Let’s say I want to decommission one of my vNodes, is the reverse true - I.E.
    All I need to do is remove the vNode Validator Key from the script and then re-run the script?

Yes, this is correct. The script will automatically stop your containers prior to checking for new ones so you don’t need to stop them yourself.

That is correct. However, you will need to stop the container of that node and delete the data. Then remove the key from the script and re-run it.

1 Like

You still have to open the RPC port to be able to add the node to your incognito app and stake. Not sure if the incoming mainnet port is also needed for validators or just full nodes? Maybe someone else can answer that?

I’ve done a lot of experimenting with data sharing between nodes. Every node will create its unique data. You can however copy a node and change the validator keys and continue running, which means that “bootstrapping” is possible.

If your previous vNode is working as intended, you can copy all data to your new nodes.


Thanks for the guide and the script. Although, I’ve got some questions.

I’m trying to set up my very first virtual node. May I only know what value I have to type for VALIDATOR_K? It seems to me that it should be an alphanumeric string of some sort that I can retrieve somewhere.

Do I have to also run it as a full node to take rewards?

Do I have to change the INDEXER_ACCESS_TOKEN generating an hash from a random string?

Thanks in advance.

Hello @GGolov

Yes, you will need a validator key in order to run your vNode. This key can be found in your app under the wallet you plan on using for your vNode. Select Keychain from the home screen of the app. Next tap the key icon on the wallet you’d like to use. Here you will find the validator key (you can copy with the far right button).

No, a full node is not a validator and will not earn you rewards.

See below:

Please keep in mind that vNodes require 1750 PRV to be staked. Once you have acquired 1750 PRV simply transfer it to the wallet in the app you plan on using for your vNode.

While these instructions are outdated the steps to follow are not. Please read over this article to get an understanding of how setting up a vNode works.


I can’t seem to get the indexer working. When accessing the RPC I get the error

-13001: -13001: enhanced caching not supported by this node configuration

Looking at the file inside the container it says

--numindexerworkers=0 --indexeraccesstoken=$INDEXER_ACCESS_TOKEN 

Which means that it is always disabled?

In this example they set --numindexerworkers=100

When --numindexerworkers is set to 0 it will operate in basic mode only.

Read more here:

Thank you, yes I saw that setting 0 workers would disable the enhanced mode. But how do I do this with the docker container and the scripts from this thread? Does it require an updated docker image where reads the environment variable? Or is there something I can do?

Change this part of Rocky’s install script.

After you have changed those two lines just rerun your setup/install script.

If this doesn’t work let me know.

Nah, Rocky’s script passes on options by using environment variables when starting the docker container (-e flags). These are then read and used by the script inside the container. The problem is that in my docker container, the NUM_INDEXER_WORKERS and ENABLE_COIN_INDEXER are not used for anything.

As you can see here --numindexerworkers is hardcoded to 0


Ah, I see the issue now. I escalated this with the devs and they are having the code changed. This was changed prior and never changed back. Please note to use this environment variable you will have to be running a fullnode.


Hey guys @Rocky @Jared, if I have two vNodes on one server, and one of them with status latest and the second with status stall.

Should I restart the second one? If so can I do it separately, or do I have to restart both (they both are on the same server)?


Hello @andrey,

I have a handy guide for vNode operators helping with troubleshooting:

I would first try to restarting that stalled node with:

docker container stop inc_mainnet_#

(replace the # with the problematic node number. check docker ps for this)

To start just this node use:

docker container start inc_mainnet_#

(again change the # to your node number)

If restarting does not work follow the troubleshooting guide to stop the node. Delete stalled data (shard or beacon) and then restart the node.




Thanks @Jared, gonna try tonight )

@JG20 :wave:



Alright, thanks for the reply.

I’ve changed everything accordingly and waited for my 1750 PRVs to be withdrawn from the Provide. They are in my wallet now.

Now I’m the step 6 (Adding your node) of the guide How to host a Virtual Node (out dated)

I’ve added the node with the IP of the server + “:9433” but it shows that the node is not active, that I have to import a keychain and the name of the node in the list is only a dash. I’ve tried to import a keychain but it fairly states that it has already been imported into the app. I have no option to stake and pass to step 7.

I checked at and the node is online with only the Beacon synced at the current block height (and still syncing) meanwhile it is blocked at block 1 for the 8 shards and it is not syncing; it also has, rightly, no stake.

What am I doing wrong?

1 Like