6.3 LUKSO CLI Installation
The LUKSO CLI is a unified command-line tool for installing, configuring, and running all officially supported execution and consensus clients on the LUKSO network with additional utility. It simplifies multi-client management by generating a single working directory with separate configs per network. This section explains, how to install and configure the LUKSO CLI to manage your blockchain clients and validators.
Please ensure you have a basic understanding of blockchain networks before operating a node. If you're not yet familiar with Proof of Stake, Tokenomics, Panelties, Client Types or Client Providers, please refer to the 🧠 Theory section.
The LUKSO CLI is officially supported on Mac, Ubuntu, and Debian with the following architectures:
x86
andx86_64
: Intel and AMD ProcessorsARM
andaarch64
: Silicon or Single-Board Processors
The clients started from the CLI run in the /usr/local/
directory of the operating system:
- All client flags and additional configurations can be passed down to the services.
- The CLI is bound to the operating system, meaning only a single node can be operated on one device.
If you want to use 🐳 Docker or manual configuration, have a look at the Client Setups page in the 🧠 Theory section.
1. Install the LUKSO CLI
Download and run the official installation script.
The following steps are performed on your 📟 node server.
sudo curl https://install.lukso.network | sh
The executable files of the lukso
service will be downloaded to the /usr/local/bin/lukso
directory.
2. Create a Working Directory
Choose a directory to house all node data and configs.
2.1 Access the Home Directory: It's recommended to place all blockchain data in the home environment.
cd
2.2 Create a Node Folder: Choose a directory to house all blockchain, configuration, and node data.
Replace <lukso-working-directory>
with a specific name for your node folder.
mkdir <lukso-working-directory>
2.3 Navigate into the Folder: Move into the working directory to initialize your node clients.
cd ./<lukso-working-directory>
3. Initialize the Working Directory
Using the LUKSO CLI, you can download all dependencies and configuration files for all network types with one initialization.
The init
command generates a cli-config.yaml
file and a config
folder within the node directory, containing the genesis files, network properties, and client-specific configurations for the bootnodes of the related LUKSO networks.
To learn about bootnodes and the architecture, have a look at the Peer Networks page in the 🧠 Theory section.
lukso init
When asked to add your public IP address to the configuration file to improve connectivity, you can decline for now. Your public IP address may change frequently, depending on your internet provider, even if you've previously assigned a static IP on the router level. While adding your IP is a temporary improvement, this setting is overwritten once setting up a dynamic DNS for stable and long-term connectivity without ongoing maintenance.
During setup, a file named jwt.hex
is created at at ./configs/shared/secrets/
. The JSON Web Token key will be used to sign and verify the communication between the execution and consensus client of your node.
The configuration folder will have separate folders for the mainnet and testnet networks.
lukso-node
│
├───configs
│ └───[network]
│ | ├───besu // Config Files for Besu Client
│ | ├───erigon // Config Files for Erigon Client
│ | ├───geth // Config Files for Geth Client
│ | ├───lighthouse // Config Files for Lighthouse Client
│ | ├───nethermind // Config Files for Nethermind Client
│ | ├───nimbus2 // Config Files for Nimbus-Eth2 Client
│ | ├───prysm // Config Files for Prysm Client
│ | ├───teku // Config Files for Teku Client
│ | └───shared
| | ├───config.yaml // Global Client Config
| | ├───deploy_block.txt // Block Deployment Number
| | ├───deploy_contract_block.txt // Contract Deployment Number
| | ├───genesis.json // Genesis JSON Data
| | └───genesis.ssz // Genesis Validator File
│ │
│ └───shared
│ └───secrets
│ └───jwt.hex // Global Communication Secret
|
└───cli-config.yaml // Global CLI Configuration
4. Install Blockchain Clients
After the initialization of the node's working directory, you will be able to select which clients clients to run in the setup.
Clients will be installed globally at /usr/local/bin/
and set as default within your working directory.
Please inform yourself about Client Providers and Client Diversity to ensure your node's and the network stability.
If you want to run a validator and stake funds, choose between the Prysm
, Lighthouse
, or Teku
consensus client.
lukso install
Check if the clients were installed correctly using their version commands:
- Geth
- Erigon
- Nethermind
- Besu
- Nimbus-Eth2
- Lighthouse
- Teku
- Prysm
geth --version
erigon --version
nethermind --version
besu --version
nimbus_beacon_node --version
# Consensus Client
lighthouse --version
# Validator Client
lighthouse vc --version
# Consensus Client
teku --version
# Validator Client
teku validator-client --version
# Consensus Client
prysm --version
# Validator Client
prysm validator --version
If you encounter errors during the download or checkups, re-do the installation process.
5. Node Startup
Controlling the LUKSO CLI to start and stop your node can be done with easy commands and flags.
As the LUKSO networks are running since 2023, synchronizing the full blockchain state of the network can take multiple days. Validators can utilize checkpoints to start staking with the minimum required state proofs, while the full data set is downloaded in the background. Using such checkpoints significantly reduces downtime and penalties when doing maintenance.
Synchronization Mode | Initial Sync Time | Description |
---|---|---|
Regular Synchronization | 4 to 20 Hours | - Dowloads the full data from genesis block using other peers - Must wait for complete download before validator is usable - Ideal for regular or archive nodes without staking |
Automated Checkpoints | 15 to 60 Minutes | - Fetches the recently finalized checkpoint from an service endpoint - Back‑fills historical blocks and data until genesis in the background - Quick start for fresh installs, migrations, or recovery for stakers - Relies on access to the public checkpoint API |
Manual Checkpoints | 15 to 60 Minutes | - Operator inputs flags and entry values manually via client flags - Back‑fills historical blocks and data until genesis in the background - Quick start for fresh installs, migrations, or recovery for stakers - Risk of stale or mistyped checkpoint values |
Automated Checkpoints are only available in the LUKSO CLI from version 0.8
and above.
- Regular Synchronization
- Automated Checkpoints
- Manual Checkpoints
# Starting the Mainnet Node without Staking
lukso start
# Starting the Testnet Node without Staking
lukso start --testnet
# Starting the Mainnet Node without Staking
lukso start --checkpoint-sync
# Starting the Testnet Node without Staking
lukso start --testnet --checkpoint-sync
- Visit the Mainnet Checkpoint Explorer or Testnet Checkpoint Explorer
- Pass the latest Block Root and Epoch values to the consensus client flags
- Lighthouse
- Teku
- Prysm
- Nimbus-Eth2
# Starting the Mainnet Node without Staking
lukso start \
--lighthouse-checkpoint-sync-url=https://checkpoints.mainnet.lukso.network \
--lighthouse-genesis-state-url=https://checkpoints.mainnet.lukso.network \
--lighthouse-wss-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Testnet Node without Staking
lukso start --testnet \
--lighthouse-checkpoint-sync-url=https://checkpoints.testnet.lukso.network \
--lighthouse-genesis-state-url=https://checkpoints.testnet.lukso.network \
--lighthouse-wss-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Mainnet Node without Staking
lukso start \
--teku-checkpoint-sync-url=https://checkpoints.mainnet.lukso.network \
--teku-ws-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Testnet Node without Staking
lukso start --testnet \
--teku-checkpoint-sync-url=https://checkpoints.testnet.lukso.network \
--teku-ws-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Mainnet Node without Staking
lukso start \
--prysm-checkpoint-sync-url=https://checkpoints.mainnet.lukso.network \
--prysm-genesis-beacon-api-url=https://checkpoints.mainnet.lukso.network \
--prysm-weak-subjectivity-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Testnet Node without Staking
lukso start --testnet \
--prysm-checkpoint-sync-url=https://checkpoints.testnet.lukso.network \
--prysm-genesis-beacon-api-url=https://checkpoints.testnet.lukso.network \
--prysm-weak-subjectivity-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Mainnet Node without Staking
lukso start \
--nimbus2-external-beacon-api-url=https://checkpoints.mainnet.lukso.network \
--nimbus2-trusted-block-root=$<BLOCK_ROOT> \
--nimbus2-weak-subjectivity-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
# Starting the Testnet Node without Staking
lukso start --testnet \
--nimbus2-external-beacon-api-url=https://checkpoints.testnet.lukso.network
--nimbus2-trusted-block-root=$<BLOCK_ROOT> \
--nimbus2-weak-subjectivity-checkpoint=$<BLOCK_ROOT>:$<EPOCH>
Replace the <BLOCK_ROOT>
and <EPOCH>
placeholders with the current hash and number while keeping the $
sign.
Details about logging client outputs can be found on the Problem Scanning page of the Maintenance section.
After starting the node once, new folders were added, storing the fetched blockchain data and logs of the related network.
lukso-node
│
├───configs // Configuration Files
├───[network]-logs // Network's Logged Status Messages
├───[network]-data // Network's Blockchain Data
│ ├───consensus // Storage for used Consensus Client
│ ├───execution // Storage for used Execution Client
│ └───validator // Storage for Validator Client
|
└───cli-config.yaml // Global CLI Configuration
6. Node Shutdown
Similar to initializing and starting the node from a working directory, you can stop all running clients at once.
# Stopping the Node
lukso stop
Ensure to stop the node before configuring the validator keys or apply further modifications within the next steps.