Harmony
Support ForumGithubTelegramDiscord
  • Welcome
  • šŸŽ¶General
    • Introduction
      • What is Harmony?ā€Œ
      • Roadmap
      • Strategy & Architecture
      • Study Materials
      • FAQ
    • Technology
      • Key Features
      • Randomness
      • Sharding
      • Consensus
      • Effective Proof-of-Stake
      • Tokenomics
      • Transactions
    • LayerZero Bridge
      • Important Notice
      • Bridge tutorial
      • FAQ
        • What token will I get after the bridge
        • How to find a bridged token address
    • Ecosystem
      • Wallets
        • 1Wallet
        • Gnosis Safe
        • Hardware Wallets
          • Trezor
          • Ledger Nano
            • Ledger with Metamask
            • Download & Setup
            • Ledger with HMY CLI
            • Ledger with Staking Dashboard
              • Sign In With Ledger
              • Sending transactions via Ledger
              • Staking Transactions via Ledger
          • Safepal
            • Download & setup
            • Create/import account
            • Send transaction
        • Browser Extension Wallets
          • Metamask
            • Installing MetaMask
            • Adding Harmony
            • Create a New Account
            • Sending & Receiving
            • Adding Custom Harmony Tokens
            • Import an Account
          • Math Wallet
            • Download & Setup
            • Create/Import/Export Wallet
            • Sending Transactions
            • Staking
            • Collecting Rewards
            • Undelegating
          • Harmony Chrome Extension Wallet
        • Desktop Wallets
          • Guarda Wallet
          • Staking4All Wallet
        • Mobile Wallets
          • Metamask Wallet
          • Blits Wallet
          • Cobo Wallet
          • Frontier Wallet
          • Guarda Wallet
          • Infinity Wallet
          • ONTO Wallet
          • Sef Wallet
          • Trust Wallet
          • Trustee Wallet
        • Web Wallets
          • Guarda Wallet
        • HMY CLI (Harmony Command Line Interface)
          • Download & Setup
          • Create or Import Wallet
          • Sending Transactions
          • Staking Transactions
          • Querying Balances
          • Querying the Blockchain
          • List of Transaction Error Messages
          • Cookbook
          • Other CLI References
      • DApps
        • User Guide
        • DeFi
          • Sushi
          • Onsen
        • CLI 1Wallet User Guide
        • Media
          • Timeless
        • FAQ
        • NFTs
      • Partners
        • Exchanges
        • Fiat Gateways
        • DeFi Protocols
      • Integrations
      • Cross-Border Finance
      • DAOs
        • Components & Tools
          • Snapshot
        • Community DAO
        • Validator DAO
        • Developer DAO
    • Community
  • šŸ—ļøDevelopers
    • Getting Started
      • Network & Faucets
      • List of RPC Providers
      • Remix IDE
      • Dev Environment Setup
      • Ethereum Compatibility
    • Deploying on Harmony
      • Using Remix
        • Ethereum Remix
        • Harmony Remix
      • Using Truffle
      • Using Hardhat
      • Using Web3
      • Using Harmony-JS
        • Setup
        • Compile & Deploy
        • Demo: Deploying an Ethereum Smart Contract on Harmony
      • Deploy HRC20
      • Smart Contract Verification
    • SDK
      • Web3.js
        • Using Web3.js to Send Transactions on Harmony
        • Find the last transaction
      • JavaScript SDK
      • Go CLI
      • Java SDK
      • Python SDK
      • Harmony Ethers.js Wrapper
    • API
      • Methods
        • Account Methods
          • hmy_getBalanceByBlockNumber
          • hmy_getTransactionCount
          • hmy_getBalance
        • Filter Methods
          • hmy_getFilterLogs
          • hmy_newFilter
          • hmy_newPendingTransactionFilter
          • hmy_newBlockFilter
          • hmy_getFilterChanges
          • hmy_getLogs
        • Transaction Related Methods
          • hmy_getStakingTransactionByBlockHashAndIndex
          • hmy_getStakingTransactionByBlockNumberAndIndex
          • hmy_getStakingTransactionByHash
          • hmy_getCurrentTransactionErrorSink
          • hmy_getPendingCrossLinks
          • hmy_getPendingCXReceipts
          • hmy_getCXReceiptByHash
          • hmy_pendingTransactions
          • hmy_sendRawStakingTransaction
          • hmy_getTransactionsHistory
          • hmy_sendRawTransaction
          • hmy_getTransactionReceipt
          • hmy_getBlockTransactionCountByHash
          • hmy_getBlockTransactionCountByNumber
          • hmy_getTransactionByHash
          • hmy_getTransactionByBlockNumberAndIndex
          • hmy_getTransactionByBlockHashAndIndex
          • hmy_getBlockByNumber
          • hmy_getBlockByHash
          • hmy_getBlocks
        • Contract Related Methods
          • hmy_estimateGas
          • hmy_getStorageAt
          • hmy_call
          • hmy_getCode
        • Protocol Related Methods
          • hmy_isLastBlock
          • hmy_epochLastBlock
          • hmy_latestHeader
          • hmy_getShardingStructure
          • hmy_blockNumber
          • hmy_syncing
          • hmy_gasPrice
          • net_peerCount
          • hmy_getEpoch
          • hmy_getLeader
        • Staking Related Methods
          • hmy_getCirculatingSupply
          • hmy_getTotalSupply
          • hmy_getStakingNetworkInfo
          • hmy_getAllValidatorInformation
          • hmy_getAllValidatorInformationByBlockNumber
          • hmy_getCurrentUtilityMetrics
          • hmy_getDelegationsByValidator
          • hmy_getDelegationsByDelegatorAndValidator
          • hmy_getDelegationsByDelegator
          • hmy_getValidatorMetrics
          • hmy_getMedianRawStakeSnapshot
          • hmy_getElectedValidatorAddresses
          • hmy_getAllValidatorAddresses
          • hmy_getCurrentStakingErrorSink
          • hmy_getValidatorInformation
          • hmy_getValidators
          • hmy_getSignedBlocks
          • hmy_isBlockSigner
          • hmy_getBlockSigners
        • Tracing Methods
          • trace_block
          • trace_transaction
      • Sample Code
    • Tools
      • Harmony VRF
      • The Graph
      • Envio
      • Ganache
        • Harmony Ganache
      • Harmony-React
      • Oracles
        • Band Protocol
      • Smart Contract Verification
    • Tutorials
      • Deploying HRC20
      • Deploying HRC721/NFT
      • The Graph - Subgraphs
        • Building & Deploying Subgraph (local node)
      • Using Band Oracle
      • Using Crosschain API
        • Scripts
        • Testing
        • Webserver
      • Using Web3.py & Pyhmy
      • Using IPFS & Filecoin
        • Using IPFS
        • Using NFT.storage
      • Indexing HRC20 with Envio
      • Building a Simple Metaverse Contract
      • Building a Simple Bridge with Ethereum
      • Staking for Multisig
    • DApp Examples
      • DApp Samples
      • Games
        • Harmony Puzzle
      • Cross-Chain
      • DeFi
      • Hackathons
        • DevPost
        • Hack the Horizon
      • Others
    • Wallets
      • Metamask
        • Interacting With Metamask
        • Using Metamask with Harmony Smart Contracts
        • Add or Switch to Harmony chain on Metamask
      • Harmony Chrome Extension Wallet
      • Math Wallet
      • WalletConnect
    • Harmony Stack and Projects
  • šŸŒNetwork
    • Governance
      • Network Governance
        • Voting via Governance App
        • Voting via HMY CLI
      • HRC-20 Governance
      • FAQ
    • Validators
      • Terms & Concepts
        • Validator, BLS key, Instance
          • Shard Assignment
        • Slots Bidding and Election
        • Effective Proof-of-Stake
        • Block Reward
        • Epoch Transition
        • Slashing
        • Undelegation
      • Server Setup
        • Requirements
        • Cloud Guides
          • Digital Ocean
          • Vultr
          • AWS
          • Google Cloud
        • Raspberry Pi Guide
      • Node Setup
        • 1. HMY CLI Download
        • 2. Setting up BLS Keys
        • 3. Syncing DB
        • 4. Installing & Updating
          • Installing A Node
            • Using Node Binary
            • (Deprecated) Using AutoNode
              • Install & Run
              • Update
              • Monitor
              • BLS Key Management
              • Collect Rewards
              • Maintenance
              • Troubleshoot
              • Extra
            • (deprecated) Using Node.sh
          • Upgrading A Node
            • Using Node Binary
            • Using AutoNode (deprecated)
            • Using Node.sh (deprecated)
          • Checking A Node
      • Creating A Validator
      • Managing A Validator
        • Checking Validator Information
        • Changing Validator Information
        • Delegating To A Validator
        • Undelegating From A Validator
        • Check Your Delegations
        • Collecting Rewards
        • Adding A Validator Logo
      • Staking Dashboard Basics
      • Validator Information Terms
      • Validator Security Tips
      • Slashing and Uptime
      • Monitoring
        • Node Sync
        • Prometheus & Grafana
        • Network Status
      • Troubleshooting
        • Why am i not Elected?
        • Frequently Asked Questions (FAQ)
      • Tools
        • Telegram Bots
        • Dashboards
        • Reward Calculators
        • Text User Interface (TUI)
        • HMY Bidder
        • Mobile Apps
          • One Validator Dashboard
          • Termux
    • Delegators
      • Introduction
      • Staking
        • Via Browser
          • Staking Dashboard
          • Staking Transactions
          • Sending Transactions
        • Via Mobile
        • FAQ
      • Redelegation
      • Informational Videos
Powered by GitBook
On this page
  • 1. UPS Device
  • 2. Connect the Modem to the UPS and Set it up
  • 3. Prepare the Raspberry
  • 4. Update Raspberry Pi
  • 5. Install SSD
  • 6. Set up the Raspberry again
  • 7. Change basic settings
  • 8. System optimization
  • 9. Final Establishment
  • 10. Firewall Setup
  • 11. Continue Node Setup

Was this helpful?

Export as PDF
  1. Network
  2. Validators
  3. Server Setup

Raspberry Pi Guide

PreviousGoogle CloudNextNode Setup

Last updated 3 years ago

Was this helpful?

Before setting up Raspberry Pi, check requirements .

1. UPS Device

Connect the UPS to the power supply and let it charge.

2. Connect the Modem to the UPS and Set it up

Plug in the modem, the swith and the Raspberry into the UPS and access the Modem. Later we need to set up a fixed IP address and port forwarding (TCP 6000/9000/9500) for the Rasperry.

3. Prepare the Raspberry

3.1. Install Heatsinker on Raspberry

3.2. Install Fan

3.3. Connect Mini HDMI -> HDMI cable (if you like, otherwise you can use SSH)

3.4. Connect the keyboard (if you like, otherwise you can use SSH)

3.5. Connect Ethernet

3.6. Install Ubuntu Server 20.04 LTS on MircoSD and on SSD. Click for instructions

3.7. Start the UPS Power for the Raspberry

4. Update Raspberry Pi

4.1. Access via Powershell, Terminal or directly via Keyboard and Monitor

ssh username@ip address

4.2. Login: ubuntu / Password: ubuntu

For security reasons Linux requires to change the default ubuntu password.

4.3. Update & Upgrade

sudo apt update && sudo apt upgrade

During update we can set up a static IP on the Modem and set up Port forwarding.

4.4. Restart

sudo reboot

5. Install SSD

5.1. Download Eeprom

sudo apt install rpi-eeprom

5.2. Restart

sudo reboot

5.3. Connect the hard disk and check

lsblk

5.4. Read out the SSD ID via and write it down

sudo lsusb

5.5. Mount the hard disk

 sudo mkdir /mnt/boot
 sudo mkdir /mnt/writable
 sudo mount /dev/sda1 /mnt/boot
 sudo mount /dev/sda2 /mnt/writable

5.6. Check again with point 5.3 if mount has worked

5.7. Automatically boot from SSD using this script

 sudo curl https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/BootFix.sh | sudo bash
 sudo umount /mnt/boot
 sudo umount /mnt/writable
 sudo shutdown now

5.8. Create Quirks driver

In point 5.4. the SSD ID was read out via sudo lsusb xxxx:xxxx Now connect the hard disk to a computer and add in /boot/firmware/cmdline.txt ā€œusb-storage.quirks=xxxx:xxxx:uā€ in the first place, without the quotation marks and save. For example for the Samung T7, usb-storage.quirks=04e8:4001:u

5.9. Remove the MicroSD and boot from SSD

Now it should start from the SSD, let it around 20 Minutes so settle down everything, special if you have a bigger SSD.

In case it searches still for MicroSD, write with the Pi Imager «Misc utility images -> Bootloader -> USB Boot to the MicroSD, put it in and start the Rasperry, wait around 15 seconds, remove power and MicroSD and try again.

6. Set up the Raspberry again

By starting from the SSD, the password must be changed again. Upon logging in for the first time if the Pi is connected to the internet Ubuntu will immediately/soon start a lengthy update process via snapd and apt.

Make sure you give the system enough time (20 Minutes at least) to finish this process before doing going forward.

7. Change basic settings

7.1. Update by command

sudo apt update && sudo apt upgrade

7.2. Restart by command

sudo reboot

7.3. Change the keyboard to your Language (if wished)

sudo dpkg-reconfigure keyboard-configuration

7.4. Restart by command

sudo reboot

7.5. Set the time zone

sudo dpkg-reconfigure tzdata

7.6. Restart by command

sudo reboot

7.7. Speed testing of SSD via

sudo hdparm -tT /dev/sda && sudo hdparm -tT --direct /dev/sda

8. System optimization

8.1. Minimize GPU, deactivate Bluetooth, deactivate Wifi and overclocking

sudo nano /boot/firmware/config.txt

Add the following in the config file under [all]

over_voltage=5
arm_freq=1800
force_turbo=1
gpu_mem=16
gpu_freq=300
dtoverlay=disable-bt
dtoverlay=disable-wifi

Save via ctrl + x and confirm.

9. Final Establishment

9.1. Change host name

hostnamectl set-hostname NEWHOSTNAME

9.2. Create user

 sudo -i
 sudo adduser NEWUSER

Enter your new password and confirm again.

9.3. Give sudo permission

sudo usermod -aG sudo NEWUSER

9.4. Check and even extend authorization

 groups NEWUSER && groups ubuntu
 sudo usermod -G ubuntu, adm, dialout, cdrom, floppy, sudo, audio, dip, video, plugdev, netdev, lxd, root NEWUSER

9.5. Add the entry for the new user in Visudo

visudo
root ALL = (ALL: ALL) ALL 
NEWUSER ALL = (ALL: ALL) ALL

Save via ctrl + x and confirm.

9.6. Terminate old processes and block users

 sudo pkill -u ubuntu
 sudo usermod -L ubuntu

9.7. Change to new User

sudo su -NEWUSER

10. Firewall Setup

10.1. Install & activate the firewall

 sudo apt install ufw
 sudo ufw enable

10.2. Open the corresponding TCP ports for Harmony & local SSH from another PC

sudo ufw allow from LOCALIP to any port 22
sudo ufw allow 6000/tcp
sudo ufw allow 9000/tcp
sudo ufw allow 9500/tcp

10.3. Check Firewall

sudo ufw status

Congratulation you set up your Raspberry Pi and it is ready for setting up as Node!

11. Continue Node Setup

Code is adapted from an Instruction, check if you need further information’s.

Code is adapted from an Instruction, check if you need further information’s).

Code is adapted from an Instruction, check if you need further information’s).

Code is adapted from an Instruction, check if you need further information’s).

Code is adapted from an Instruction, check if you need further information’s).

Since is not natively supported ARM systems yet, install it on a x86_64 system to . After that, copy them to the same .hmy/blskeys folder on Raspberry Pi.

Continue node setup from onwards.

šŸŒ
here
here
here
here
here
HMY CLI
setup the BLS Keys
Rclone
here
here