Guide: Moving a Validator to a New Server

Here is my guide to moving a validator from its current server to a new one. The process is fairly simple but the consequences if you get it wrong are massive. If you know what you are doing, you could probably skip, fast track or script the some/all of my steps.
I’ve tried to make it as verbose, safe and simple to follow as possible.

Please provide any edits, corrections or suggestions and I will update my original post.

Note: Avoid double signing at all costs. Double signing will result in your validator getting jailed. You can not un-jail if you are jailed for double signing. DO NOT run more than 1 validator using the same private key. Missing some blocks is acceptable, DO NOT RUSH THIS. Even if you end up getting jailed for missing blocks you can un-jail. AGAIN: you CAN NOT un-jail for double signing!!

Disclaimer: do this at your own risk. These are the instructions I follow, your installation might differ. Make sure you know what you are doing.

  1. Commission hardware for the new server and install a Regen Node as per the standard instructions. Wait for it to sync. No need to create a validator, just run a regen node.
    See: https://github.com/regen-network/mainnet and https://docs.regen.network/getting-started/running-a-validator.html
  2. Check new node is fully synced with the network.
    1. Check Status
      regen status
    2. Status should return: “catching_up”:false and “latest_block_height”:X where X is close to last block here: https://www.mintscan.io/regen/blocks

Note: you can speed up this process by using a snapshot - out of scope for this guide.

  1. Stop your current validator and make sure it won’t start again.
    1. Stop the Service for your currently running validator
      sudo systemctl stop regen.service
    2. Stop the Service from starting
      sudo systemctl disable regen.service
    3. Rename the regen folder to ensure the service can’t start.
      mv .regen/ .regen_disabled
    4. Check the service doesn’t start
      • Start the service
        sudo systemctl start regen.service
      • check running “regen status” returns an error
        regen status
      • check your validator IS still missing blocks
        https://www.mintscan.io/regen/validators
      • Stop the service
        sudo systemctl stop regen.service
    5. Take a copy of the config folder, store safely, copy to home dir on new server.
      • I use tar cvf config.tar .regen_disabled/config
      • Then ftp/rsync/usb etc the tar to the new server
    6. Shutdown the current validator
      sudo shutdown now
  2. Prepare the new server
    1. Stop the service on the new server.
      sudo systemctl stop regen.service
    2. Replace the config folder with the backed up one from the old machine
      • Remove the existing config folder
        rm -rf ~/.regen/config
      • Copy in the config folder from the old server
        If using a tar, copy it into the home directory, untar and rename.
        tar xvf ~/config.tar
        mv ~/.regen/config_disabled ~/.regen/config
  3. Double check that your validator is missing blocks
    1. https://www.mintscan.io/regen/validators
  4. Start the service on the new server
    sudo systemctl start regen.service
    1. follow the logs
      journalctl -u regen.service -f
    2. check the status
      regen status
    3. once it has caught up, check your validator is not missing blocks
  5. Clean up
    1. Remove the old config folder from the new server
      rm -rf .regen/config_old
    2. Destroy/Delete the old server

Read through all the steps, understand the process, take a copy and adapt for your setup. TEST TEST TEST - do this on a testnet until you are happy and confident to run this on a mainnet validator.