# Node Deployment

{% hint style="info" %}
You can find Blockops quick start guides here: [Getting Started with BlockOps](https://docs.blockops.network/developer/getting-started)
{% endhint %}

### Create a Node

Click `Connect` to select SSV on Blockops and select the network you want to create a node on Mission Control.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-5b7d534fb4d215d69568aa4b7d7f05886ccf60b2%2FScreenshot%202024-09-26%20at%203.09.25%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

Three networks exist to deploy the SSV protocol on:

1. Mainnet
2. Holesky - One of two testnet environments for the testing and validation of new features and changes before deployment on the mainnet
3. Sepolia - One of two testnet environments for the testing and validation of new features and changes before deployment on the mainnet

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-17e6807b17c182b0dcaa548c024fbe7d1fa930c0%2FScreenshot%202024-09-26%20at%203.12.21%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Platform Config

To create a node, the system suggests a `Project Name` which can be customised by editing the project name field. Blockops supports both self managed cloud providers and dedicated VPS platforms.

### GCP

Deploying a node using the GCP platform, a service file is required to provide a secure means of authorisation in connecting to an existing GCP service account. The GCP project ID is extracted from the uploaded service file and displayed. To proceed, region selection is required.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-a2df5b709ab7598d1977039aa70e19d4fc863880%2FScreenshot%202024-09-26%20at%203.12.56%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Instructions for generating service file

**Instructions for generating service file**

1. Setup required variable that will be used throughout the process

`MY_GCP_PROJECT_ID=<GCP Project Id where you want to setup a node>`

2. Create service account

`gcloud iam service-accounts create my-nodes \`

`-project=$MY_GCP_PROJECT_ID \`

`-description="Blockops network access to create and manage blockchain nodes." \`

`-display-name="nodes-access"`

3. Grant permissions to the service account

`gcloud projects add-iam-policy-binding $MY_GCP_PROJECT_ID \\`

* `-member="serviceAccount:nodes-access@$MY_GCP_PROJECT_ID.iam.gserviceaccount.com" \\`
* `-role="roles/compute.instanceAdmin.v1"`

4. Required roles

`roles/compute.instanceAdmin.v1 roles/compute.loadBalancerAdmin roles/compute.networkAdmin roles/compute.securityAdmin roles/iam.serviceAccountAdmin roles/iam.serviceAccountUser roles/resourcemanager.projectIamAdmin`

### Snapshot Config

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-75fa4e344f5546c2e42b7e6479655a1fdd27ad98%2FScreenshot%202024-09-25%20at%2012.46.12%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### AWS

Deploying a node using the AWS platform, an account access key ID and an account secret key is required to provide a secure means of authorisation in connecting to an existing AWS account. To proceed, region selection is required.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-d2e406f6b57fb336911a760d5c8d1d001eef45ca%2FScreenshot%202024-09-27%20at%203.56.55%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Instructions for generating access keys

1. Install AWS CLI

If you haven’t already installed the AWS CLI, follow the official installation guide for your operating system [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

2. Run the following command to create a new IAM user:

`aws iam create-user --user-name your_new_user`

3. Attach the AdminstratorAccess policy to this user

`aws iam attach-user-policy --user-name your_new_user --policy-arn arn:aws:iam::aws:policy/AdministratorAccess`

4. Create an access key for your newly created IAM user:

`aws iam create-access-key --user-name your_new_user \\`

5. Save the Access Key ID and Secret Access Key

The output will include the new Access Key ID and Secret Access Key. It’s important to copy these immediately as the secret access key won’t be displayed again.

Immediately save the Access Key ID and Secret Access Key to a secure location or a password manager.

### Configure self managed platforms, AWS and GCP

Two configuration options exists to set your needed resources;

1: Default - the default configuration is a recommended setting taking into account the minimum needed resources to spin up a node.

2: Custom - This configuration enables you to customise your resources.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-b518e5a103f09b816f2fa9fbe260c31a78ef40af%2FScreenshot%202024-09-25%20at%2012.47.54%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Cherry Server

To connect to Cherry server, an API key and project ID is required

**Instructions for generating a Cherry server API key**

* Log in to the Cherry Servers client portal at<https://portal.cherryservers.com/>
* Navigate to the API section under user profile.
* Select API key and customise a label
* Generate a new API token.

**Instructions for generating a Cherry server project ID**

* Log in to the Cherry Servers client portal at <https://portal.cherryservers.com/>.
* Navigate to the "Projects" section on the dashboard.
* Click on the "Create Project" button.
* Provide a name for your new project and any other required details.
* After creating the project, you'll be able to see its Project ID.

If you already have existing projects:

* Go to the "Projects" section in the dashboard.
* Select the project you want to use.
* The Project ID will be displayed in the project details.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-a76f5767d2d174c04eb573e0d2827b8aead238bc%2FScreenshot%202024-09-27%20at%203.57.19%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### SSH Key

To `add` a new SSH public key, provide a key identifier and generate a public SSH key.

Instructions on generating an SSH key pair

* Navigate to <https://www.wpoven.com/tools/create-ssh-key>
* Create a password if needed
* Set your preferred type and length
* Click create key to generate your key

After generating your public SSH key, copy and paste it into the required field to create an SSH key on Blockops.

From the dropdown menu, select your newly created public SSH key and upload your private SSH key to proceed.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-877b8dc68e2387b480b44932297708c9c6c5807b%2FScreenshot%202024-09-27%20at%204.01.18%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

Choose a region and select a corresponding plan that aligns with your resource requirements.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-eeaabd388d81bab3d42ed74917fed925220a9597%2FScreenshot%202024-09-27%20at%204.02.12%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Bare Metal

You are required to provide a username, hostname, port number and password, you have the option of authenticating via SSH by uploading a private SSH Key.

Recommended instance size for Bare metal

> CPU: Dual-core processor (4 cores recommended)\
> RAM: 16 GB (32 GB recommended)\
> Storage: 1 TB SSD (2 TB NVMe SSD recommended)\
> Bandwidth: 10 Mbps stable connection (25 Mbps recommended)

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-81c39313b94eba3384cb3faac6c212c189e94350%2FScreenshot%202024-09-27%20at%204.02.47%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

### Configure Container

To configure a container, you need to provide a container name, select a restart policy, and choose whether to run as privileged, allocate a buffer for STDIN, or allocate a pseudo-TTY. You also have the option to set commands, arguments, and environment variables.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-e0f1e501ae245af79c27120e753d9d5f9dad963f%2FScreenshot%202024-09-25%20at%2012.30.25%E2%80%AFpm%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

### Network Config

> **Deployment strategy**

* Monolithic deployment: This strategy deploys the created node entirely on Blockops server.
* Distributed deployment: This strategy requires an execution and consensus URL to facilitate deployment on Blockops servers.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-dd7402703cc41b29aff7c2d1446cfacdd6793dcd%2FScreenshot%202024-09-27%20at%204.15.59%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

**How to access an execution and consensus url**

—- image required

To deploy using the distributed deployment, you need to provide a working RPC Endpoint URL and a Beacon API Endpoint URL. You can find a Beacon API Endpoint [**here**](https://ethereum-beacon-api.publicnode.com/).

To configure the SSV network, the selection of an image version is required alongside providing an operator ID

> **DKG credentials**

For operators to properly participate in the SSV protocol's DKG process, certain credentials and data are needed:

• Encrypted private key: The private key of the operator, kept in a file encrypted with a password as a .json file.

• Operator password: The operator's password uploaded as a text file.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-4be22c70f46fd5cc6550d145ace17f9b9d7a220a%2FScreenshot%202024-09-27%20at%204.16.41%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

> **Clients and Image versions**

**Execution client:** To create a node on the SSV network using Blockops servers, you must set up an execution client. This process allows you to select your preferred client and a preferred image version.

**Consensus client:** To create a node on the SSV network using Blockops servers, you must set up a consensus client. This process allows you to select your preferred client and a preferred image version.

<figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-af3519305a2e359d420e9370eae8a79caad90214%2FScreenshot%202024-09-27%20at%204.17.33%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure>

**Mev Boost**

Connect to multiple relays to increase diversity and enhance network security from the list of MEV-boost providers.

### Launch Config

<div><figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-d438bf54db2b86a4c960f33f4596095cc20241e1%2FScreenshot%202024-09-27%20at%204.18.13%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-4a4eff586d87db08ee7744e17e22d9c04a5ceb97%2FScreenshot%202024-09-27%20at%204.18.36%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure></div>

Before deploying your configured node, you can review the configuration settings and enable monitoring by activating the Telescope feature.

### Deployed Node

Once a node is deployed successfully, the resource utilisation can be tracked on the dashboard alongside enabled containers.

<div align="center"><figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-a5b03bb0e3fb0d2ec8333d839714b805d1d21b5d%2FScreenshot%202024-10-16%20at%2012.10.12%E2%80%AFpm.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://1708223268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fdj2MsRM0vL9rfte6D4jZ%2Fuploads%2Fgit-blob-bffaeee02155ceea5fa2ea608675cc1acf02d377%2FScreenshot%202024-10-16%20at%2012.08.53%E2%80%AFpm%20(1).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Support

Support can be assed via the support icon at the bottom right of the dashboard or contact us at <hello@blockops.network>

{% hint style="info" %}
[**Follow us on Twitter**](https://twitter.com/blockopsnetwork) **for more information on upcoming protocols and developments.**
{% endhint %}
