Running the nodes

Prepare topology files

This is a basic setup with x.x.x.x and y.y.y.y representing the IP addresses of the stake pool operator's relays:

  • The Valency parameter determines the total number of connections to local roots. For instance, if you want a hot connection with both x.x.x.x and y.y.y.y relays, set Valency to 2.

  • Avoid using public roots in the block producer setup.

  • UseLedgerAfterSlot is configured to be -1 to ensure that ledger peers are never utilized on the block producer.

{
   "localRoots":[
      {
         "accessPoints":[
            {
               "address":"x.x.x.x",
               "port":3000
            },
            {
               "address":"y.y.y.y",
               "port":3000
            }
         ],
         "advertise":false,
         "valency":2
      }
   ],
   "publicRoots":[
      {
         "accessPoints":[
            
         ],
         "advertise":false
      }
   ],
   "useLedgerAfterSlot":-1
}

Relays

  • Your relays will connect to the block producer z.z.z.z and to your other relay y.y.y.y.

  • Use Valency 2 to tell the node to maintain a hot connection with both nodes.

  • Here, you can use IOG relays (or any other trusted peer) under public roots

  • Set useLedgerAfterSlot: 1000000. Make sure that the target slot is not too old, in particular, if syncing the chain for the first time.

Prepare startup scripts

For the block producer:

For the relays:

If you get an error about VRF keys: **** VRF private key file /keylocation/vrf.skey has 'other' file permissions. Please remove all 'other' file permissions. `` Fix it with:

``

chmod 0400 vrf.skey

OR

chmod og-rwx vrf.skey

Set up the Cardano node to run as systemd service

It will be useful to set your time zone to UTC:

Create the cardano-node.service file. The example saves it on /etc/systemd/system/:

Useful systemctl commands:

For example:

Use journalctl to inspect your node logs:

Follow the logs in real-time:

Show only the actual message (pure node logs) without any metadata from journalctl:

Filter logs from a specific date:

Delete old logs:

Last updated

Was this helpful?