Deploy a DSL Node
An easy guide for deploying an RSS3 Node on the Data Sublayer.
Introduction
This guide provides instructions for a deployment using containerized solutions including Docker and Kubernetes. The deployment focuses on the Decentralized component. For deploying more components, refer to the respective guides. It is assumed that the user has a basic understanding of terminal commands and containerization concepts.
The guide is opinionated towards a containerized deployment solution, the source code is available at: https://github.com/RSS3-Network/Node, if one prefers an alternative deployment method.
It's important to note that while the Node itself is production-ready, the deployment methods we outline here may not be universally applicable in all environments. Adaptation of these methods may be necessary to fit the specific requirements of your own setup.
Deployment
Prerequisites
- Basic command line proficiency
- Have your Node registered on the VSL
- Have docker, docker-compose installed on the server
Alternative Deployment Methods
You can also choose alternative deployment methods like:
Light Mode
Learn how to deploy an RSS3 Node in light mode.
Serverless
An easy guide for deploying an RSS3 Node on serverless platforms.
Hardware Requirements
Since RSS3 Node's coverage is highly customizable, there is no universal configuration applicable to all.
Our interactive deployment configurator will provide an estimated hardware requirement.
We recommend a minimal configuration of 16 Core, 64 GB RAM, 500 GB SSD * 3 to operate a Node with full coverage to boost your work rate. For that, AlloyDB should be used to replace PostgreSQL, as AlloyDB generally requires fewer resources than a PostgreSQL cluster to achieve the same performance.
Local AI Capability
Running local AI models requires additional resources (mainly GPUs). It is currently in an internal testing phase, where OpenAgent will be part of the Node to provide AI capabilities.
We will release the relevant documentation soon.
Meanwhile, you can try out OpenAgent on your own server.
Deploy via docker-compose
A configuration file is required for deploying your Node.
👍 We strongly recommend that everyone use the interactive deployment configurator to minimize the risk of manual errors.
-
During your Node registration https://explorer.rss3.io/nodes/register, follow the steps and generate a
config.yaml
, and download it. -
In the same directory as your
config.yaml
, download the automated deployment script by executing the following command:
🎉 And you are done! (Yes it's that simple.)
A successful deployment (if you have enabled at least 1 decentralized worker) will generate the following containers:
- rss3_node_core: This container is used to process incoming requests from Global Indexers.
- rss3_node_broadcaster: This container is used to broadcast the Node's status to Global Indexers.
- rss3_node_monitor: This container is used to monitor worker status.
- rss3_node_alloydb: This container is used to store data.
- rss3_node_redis: This container is used to cache data.
- worker containers: These containers are used to index data from their corresponding sources.
Upgrading Your Node
Maintaining an up-to-date Node is crucial for optimal performance and security. We recommend regularly checking the Changelog for updates and new features.
When upgrading, ensure that you update your config.yaml
file or modify the configurations in accordance with the latest Deployment Guide.
Before proceeding with any upgrade, carefully review the release notes, particularly for major version changes. Major versions may introduce breaking changes that require additional steps or modifications.
Upgrade Process for v1.0.x or older to v1.1.x
When upgrading from v1.0.x or older versions to v1.1.x, please note that the rss
component has undergone significant changes. Update your config.yaml
file as follows:
For operators using the automated deployer, the upgrade process is:
-
Update your
config.yaml
file in theconfig/
directory. -
Execute the following command in the same directory as your existing
docker-compose.yaml
file to initiate the automated upgrade process:
This command will automatically upgrade all necessary components of your Node.
Sample config.yaml
For your reference, a config.yaml
that contains the Decentralized component only should look like this:
Deploy via Kubernetes
Prerequisites
Create a Kubernetes cluster via kind
Create our Kubernetes cluster with the following command
kind create cluster --name node
Deploy using RSS3's Helm Chart
Since Helm uses a chart file for deployment. We can easily deploy a Node by using the chart files provided.
Get Help
In case you run into any issues, please reach out to us on Discord.
Conclusion
This guide provides basic instructions for deploying an RSS3 Node in containerized environments. For more advanced configurations, refer to the respective Docker or Kubernetes documentation.
This guide adopts an opinionated stance in favor of containerized deployment. We advocate for this approach due to its benefits in ensuring consistency and scalability, promoting ease of portability across various environments. However, we appreciate the diverse preferences and needs within our community, for those who wish to compile and run the application locally, the source code is available on: https://github.com/RSS3-Network/Node.