Migrate SKALE Node with SGXWallet to New Server
This guide provides instructions for migrating a SKALE node and SGXWallet to a new server following the recommended migration process.
Prerequisites
Section titled “Prerequisites”Before starting the migration, ensure you have:
-
Access to both the current and new servers
-
Administrative privileges on both systems
-
Secure network connection between servers
Migration Steps
Section titled “Migration Steps”Migrate SGX
Section titled “Migrate SGX”-
Setup new server
Prepare a new server with:
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- SGX-enabled Intel processor
- 8 physical cores
- 16 GB RAM
- 200 GB disk mounted as /
- Swap size equals to half (1/2) of RAM size
-
Install packages required for the node
Terminal window sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install -y docker.io docker-compose-pluginsudo apt-get install -y build-essential make cmake gcc g++ yasm python libprotobuf10 flex bison automake libtool texinfo libgcrypt20-dev libgnutls28-devsudo apt-get install -y dockersudo apt-get install -y libelf-dev cpuid -
Verify your processor supports Intel SGX with:
Terminal window cpuid | grep SGX: -
Disable automatic updates
It’s recommended to only update the SGXWallet server if there are critical security fixes. This is because SGXWallet is based on low level technology, and kernel updates may break the system. Currently SGX is tested on 5.15* kernels. It’s best to avoid minor version updates too.
To make sure
apt update
won’t update the kernel you should use apt-mark hold command:Terminal window sudo apt-mark hold linux-generic linux-image-generic linux-headers-genericAlso if you configured unattended upgrades, you should make sure kernel won’t update automatically. To do this, add the following lines to
/etc/apt/apt.conf.d/50unattended-upgrades
file:Terminal window Unattended-Upgrade::Package-Blacklist {"linux-generic";"linux-image-generic";"linux-headers-generic";};Output
Terminal window SGX: Software Guard Extensions supported = true -
Configure firewall between SGX and node servers
-
Download SGXWallet source code
Clone SGX Wallet Repository to your machine:
Terminal window git clone https://github.com/skalenetwork/sgxwallet/cd sgxwalletgit checkout stable -
Enable SGX on the new server SGX Wallet repository includes the sgx_enable utility. To enable SGX run:
Terminal window sudo ./sgx_enableInstall SGX driver:
Terminal window cd scriptssudo ./sgx_linux_x64_driver_2.11.b6f5b4a.bincd ..System Reboot:
Check driver installation: To check that isgx device is properly installed run this command:
Terminal window ls /dev/isgx /dev/sg0If you don’t see the isgx device, you need to troubleshoot your driver installation from here.
-
Copy sgx_data folder to the new server
From your old server, securely transfer the SGX data:
Terminal window # On old server - create backuptar -czf sgx_data_backup.tar.gz -C sgxwallet/run_sgx sgx_data# Transfer to new server (use scp, rsync, or secure method)scp sgx_data_backup.tar.gz user@new-server:/path/to/transfer/# On new server - extract to correct locationcd sgxwallet/run_sgxtar -xzf /path/to/transfer/sgx_data_backup.tar.gz -
Set the version and -b flag in docker-compose.yml Edit the
sgxwallet/run_sgx/docker-compose.yml
file:- Change the image version to:
skalenetwork/sgxwallet:1.9.0-stable.4
- Add
-b
to the existing command section (don’t replace the entire command, just add-b
to it)
- Change the image version to:
-
Run docker-compose up -d
Terminal window cd sgxwallet/run_sgxdocker-compose up -d# Verify SGXWallet is runningdocker-compose psdocker-compose logs
Migrate Node
Section titled “Migrate Node”-
Setup new server
Prepare a new server with:
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- 8 physical cores
- 32 GB RAM
- 16 GB RAM
- 100 GB disk mounted as /
- 2Tb additional disk (not mounted)
-
Install packages required for the node
Terminal window sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install -y docker.io docker-compose-plugin nftables -
Disable automatic updates
Currently SKALE Node is tested on 5.15* kernels. It’s best to avoid minor version updates too.
To make sure
apt update
won’t update the kernel you should use apt-mark hold command:Terminal window sudo apt-mark hold linux-generic linux-image-generic linux-headers-genericAlso if you configured unattended upgrades, you should make sure kernel won’t update automatically. To do this, add the following lines to
/etc/apt/apt.conf.d/50unattended-upgrades
file:Terminal window Unattended-Upgrade::Package-Blacklist {"linux-generic";"linux-image-generic";"linux-headers-generic";}; -
Run node backup on old server
Terminal window # On old serverskale node backup .This will create a backup tarball (e.g.,
skale-node-backup-YYYY-MM-DD-HHMMSS.tar.gz
) -
Copy backup tarball and .env config to the new server
Terminal window # Transfer backup and configuration filesscp skale-node-backup-*.tar.gz user@new-server:/path/to/new/location/scp .env user@new-server:/path/to/new/location/ -
Download node-CLI version
Terminal window curl -L https://github.com/skalenetwork/node-cli/releases/download/2.6.2/skale-2.6.2-Linux-x86_64 > /usr/local/bin/skalechmod +x /usr/local/bin/skale# Verify installationskale --version -
Restore node from backup
Terminal window # Navigate to your working directorycd backup tarball location# Restore node using backup and environment fileskale node restore skale-node-backup-*.tar.gz .env