Authors: GLCstaked
Date: 16/02/24
Overview
This is intended to be an interactive setup tool for deploying lava node or lava provider.
Lava node: deployment of full node with or without cosmovisor and with wallet options.
Lava provider: a full provider setup including the deployment of a full-node for rpc provision, with various node options for selection, and the full setup of nginx (node side), provider configurations & stake.
GitHub Link: https://github.com/GLCNI/RPC-node-deployments
Project folder: lava-deployer
Rationale
Inspired by nethermind sedge, a tool I use frequently for deploying Ethereum full nodes with ease.
The reason is the technical barrier to deploying provider nodes is very high, getting a provider live and working, requires many steps:
-
Deploy a full node: and configure it to be open to external API requests, not enabled by default.
-
Setup and configure NGINX for sub-domain routing: this is itself a technical challenge
-
Connect to a Lava chain node: you can use the public RPC, but it’s recommended to run your own which adds more steps.
-
Setup Provider: this itself is difficult to configure and has many steps on its own, it must also integrate with other components and can be a challenge.
For Lava Network to really decentralise access to full nodes, in both demand (consumers) and supplier side (node providers), the technical barrier to entry must be reduced as much as possible. As it stands most providers are highly technical service providers, such as those in cosmos (active) validator sets.
Ethereum has the most decentralized node set in part due to the amount of tools that reduce the technical barrier to setting up an Ethereum full node + validator such as (Nethermind Sedge, Eth Docker, DappNode, Stereum, and many more). Most nodes outside of Ethereum are generally not easy to setup, let alone configure for external API requests.
Description:
Basic steps:
-
Select node: deploy node locally with APIs enabled, using snapshot to sync
-
Setup nginx: Sets up NGINX for selected node and walk through sub-domain creation for service.
-
Node checks before starting provider steps: lava node connection/node sync/nginx setup
-
Setup provider: configure lava wallet > stake provider > configure provider to node type > start provider service with node service selected and nginx configured.
Snapshot: intended to use snapshot where possible to speed up node deployment.
Example
Example 2
Progress
Node templates: completed but adding over time
Nodes supported now: Cosmos, Osmosis, Arbitrum, StarkNet
Nginx: completed
Node checks before provider: completed
Provider: in progress
I have deployed providers before and struggled to keep up with changes and correct configurations, this is probably the difficult part and could use support.
Improvements: (still working on)
Add more guidance/interactive help for NGINX setup, as some of this is external and could use more explanation.
General structure and process, such as taking into consideration syncing nodes and time for DNS to propagate.
Prunning settings for nodes and compatibility for rpc provision (using snapshot to setup).
Help Needed:
Any suggestions on the above, feedback help with testing.
Adding support for more nodes and maintaining node deployment scripts, it’s a lot to keep up with and I can only realistically support a few node types, sometimes a version update will not be as simple as updating the version number.