The installation time depends on many factors, such as your skills, resources and characteristics of your server, the most important: disk speed, internet connection, server load CPU, RAM, so this value may differ from the one indicated by us.
With the help of a one-line script, all the necessary commands will be executed automatically, you only need to check the operation of your node at the end
📝 Manual installation
📌Step 1: Installation packeges and dependencies
# Install dependencies for building from sourcesudoaptupdatesudoaptinstall-ylz4jqmakegitgccbuild-essentialcurlchronyunzipgzipsnapdtmuxbc# Bash Profile Environment Setup[ !-f~/.bash_profile ] &&touch~/.bash_profileecho"export PATH=$PATH:/usr/local/go/bin:~/go/bin">>~/.bash_profilesource $HOME/.bash_profile[ !-d~/go/bin ] &&mkdir-p~/go/bin# Install Gocd $HOMEVER="1.22.0"wget"https://golang.org/dl/go$VER.linux-amd64.tar.gz"sudorm-rf/usr/local/gosudotar-C/usr/local-xzf"go$VER.linux-amd64.tar.gz"rm"go$VER.linux-amd64.tar.gz"[ !-f~/.bash_profile ] &&touch~/.bash_profileecho"export PATH=$PATH:/usr/local/go/bin:~/go/bin">>~/.bash_profilesource $HOME/.bash_profile
📌Step 2: Set moniker and install node
Give your validator a name by which you can find yourself in explorer, put it in ""
MONIKER=""
After that, insert the following node installation command
# Clone project repositorycd $HOMEwget-Opellcoredhttps://github.com/0xPellNetwork/network-config/releases/download/v1.1.5/pellcored-v1.1.5-linux-amd64chmod+xpellcoredmvpellcored~/go/bin/WASMVM_VERSION=v2.1.2export LD_LIBRARY_PATH=~/.pellcored/libmkdir-p $LD_LIBRARY_PATHwget"https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm.$(uname-m).so"-O"$LD_LIBRARY_PATH/libwasmvm.$(uname-m).so"echo"export LD_LIBRARY_PATH=$HOME/.pellcored/lib:$LD_LIBRARY_PATH">> $HOME/.bash_profilesource~/.bash_profile# Initialize the nodepellcoredconfigkeyring-backendospellcoredconfigchain-idignite_186-1pellcoredinit"$MONIKER"--chain-idignite_186-1# Download genesis and addrbook filescurl-Lshttps://snapshots.unitynodes.com/pell-testnet/genesis.json> $HOME/.pellcored/config/genesis.jsoncurl-Lshttps://snapshots.unitynodes.com/pell-testnet/addrbook.json> $HOME/.pellcored/config/addrbook.json# PeersPEERS="1a7b6f07673a96f3a0391705da32ee184730fb7d@91.205.105.37:26656,2b2932bd000204b75d2675d84e0e6e690fcc9b41@31.165.179.107:26656,d003cb808ae91bad032bb94d19c922fe094d8556@pell-testnet-peer.itrocket.net:58656,f2474b5e49e1399ee933cb28776dd9893941457d@135.181.210.46:57656,a2460ce7888ac53f13aa50ba0b8df9a553bd3332@65.109.84.153:57656,2af565efc9036b85167e3c3c01a2b5ad6db0b8e3@43.157.105.179:26656,d52c32a6a8510bdf0d33909008041b96d95c8408@34.87.39.12:26656,81caef1e38e18974813624aea310722ad68a33dd@65.109.27.148:26656,f1049cc2be2902053bcf5ea1a553414d8a978ef6@[2a01:4f8:110:4265::11]:26656,c9a5d341547e06441e30e07db289fc337ec36f79@152.53.87.97:26656,78d89ac4ef91fd92bd97769891711ca58bd7f512@65.108.226.44:47956"
sed-i-e"/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.pellcored/config/config.toml# Disable indexersed-i-e"s/^indexer *=.*/indexer = \"null\"/" $HOME/.pellcored/config.toml# Change pruningsed-i-e"s/^pruning *=.*/pruning = \"custom\"/" $HOME/.pellcored/config/app.tomlsed-i-e"s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.pellcored/config/app.tomlsed-i-e"s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.pellcored/config/app.toml# Download latest chain data snapshot(Story+Geth)curlhttps://snapshots.unitynodes.com/pell-testnet/pell-testnet_latest.tar.lz4|lz4-dc-|tar-xf--C $HOME/.pellcored# Create a service sudotee/etc/systemd/system/pellcored.service>/dev/null<<EOF[Unit]Description=Pell nodeAfter=network-online.target[Service]User=$USERWorkingDirectory=$HOME/.pellcoredExecStart=$(which pellcored) start --home $HOME/.pellcoredEnvironment=LD_LIBRARY_PATH=$HOME/.pellcored/lib/Restart=on-failureRestartSec=5LimitNOFILE=65535[Install]WantedBy=multi-user.targetEOF# Start the service and check the logssudosystemctldaemon-reloadsudosystemctlenablepellcoredsudosystemctlrestartpellcored
📌Step 3: Node Health Check
Follow the commands to check if your node is working properly
Save all information after entering the command, without this you will not be able to restore data to the wallet. SAVE SEED PHRASE (12 words).
📌Step 2: Request test tokens to your wallet address
To receive test tokens, you will need to request tokens from the project team.
📌Step 3:Create validator
cd $HOME# Create validator.json fileecho"{\"pubkey\":{\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"$(pellcoredcometshow-validator|grep-Po '\"key\":\s*\"\K[^"]*')\"}, \"amount\": \"1000000apell\", \"moniker\": \"$MONIKER\", \"identity\": \"\", \"website\": \"\", \"security\": \"\", \"details\": \"\", \"commission-rate\": \"0.1\", \"commission-max-rate\": \"0.2\", \"commission-max-change-rate\": \"0.01\", \"min-self-delegation\": \"1\"}">validator.json# Create a validator using the JSON configurationpellcoredtxstakingcreate-validatorvalidator.json \--from $WALLET \--chain-idignite_186-1 \--gasauto--gas-adjustment1.5
After entering the command, you will receive hash transactions, check the status in the explorerif the status is successful - you have created a validator.
You can find your validator here: explorerIn the Active / Inactive lists.
📌Step 4: Backup
If you have successfully created a validator, be sure to save your validator.
SAVE YOUR PRIVATE KEY AFTER ENTERING THE COMMAND
The priv_validator_key.json is the key with which you can always restore the operation of your validator, so keep it and in case of reinstallation/transfer of the validator to another server - transfer it too.
Also remember, if you are a validator with a sufficient number of delegated tokens and you are in an active set, signing blocks, always save priv_validator_state.json - this file contains information about the signed blocks of your validators, and in case of restoring the validator after reinstallation or on another server , this file won't give you the old blocks again, otherwise you'll end up in jail with no way out
💡 Hint:
priv_validator_key static
priv_validator_state is updated every signed block, so it is necessary to save and transfer it after stopping