# Normal Install Guide

This guide will walk you through the steps required to convert a VPS or bare-metal server into a **Constellation Validator Node**.

A **normal installation** provides **more customization options** during setup, whereas the [**quick installation**](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/turn-your-vps-into-a-node/quick-install-guide) only prompts for essential inputs and uses recommended defaults for all other settings outlined in this guide.

{% content-ref url="node-prerequisites" %}
[node-prerequisites](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/turn-your-vps-into-a-node/node-prerequisites)
{% endcontent-ref %}

## Begin Installation

{% stepper %}
{% step %}

### Start the Installer

```
sudo nodectl install
```

For advanced users, if you prefer one-command install, supply any of these flags:

* `--normal`&#x20;
* `--p12-passphrase <pass>`
* `--p12-alias <alias>`
* `--user <username>`
* `--user-password <password>`
* `--p12-destination-path <path>`
* `--p12-migration-path <path>`
* `--confirm` (auto-accept warnings)
  {% endstep %}

{% step %}

### Verify Specifications

When you first launch the `nodectl` utility, it will guide you through selecting the type of validator node you wish to install.

Choose <kbd>H</kbd> to build a Hypergraph validator node or <kbd>D</kbd> to build a Dor Data Layer 1 validator node..

```
  ========================================
  =   CONSTELLATION NETWORK HYPERGRAPH   =
  =          VERIFY NODECTL SPECS        =
  =         PRE-INSTALLATION TOOL        =
  ========================================
  Code Name: Princess Warrior

  Please choose node type to test:
  H)ybrid Dual Layer
  D)or Validator
  Q)uit

  KEY PRESS an option
```

{% endstep %}

{% step %}

### Continue

If you node meets all the proper [specifications ](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/node-specifications)you may press any key to continue.
{% endstep %}

{% step %}

### Quick Install Request

We will type in <kbd>n</kbd> and hit <kbd>Enter</kbd>.

{% hint style="success" %}

## 🔵 Coming from the Migration Guide?

If you are performing a **New Node Installation with `.p12` Migration**, you may press **`y`** at this prompt to allow `nodectl` to **automatically scan your VPS** for any available `.p12` keystore files.\
Once detected, you will be presented with a list to select from, choose the appropriate file to continue the installation.
{% endhint %}
{% endstep %}

{% step %}

### Assign Your Cluster

Based on your selection, `nodectl` will download a predefined configuration tailored to the chosen Hypergraph or metagraph cluster.

Choose <kbd>1</kbd> through  <kbd>4</kbd> depending your requirements.

```
  HYPERGRAPH or METAGRAPH
  predefined choices
  -------------------------------------------
  1) mainnet [HyperGraph]
  2) integrationnet [HyperGraph]
  3) testnet [HyperGraph]
  4) dor-metagraph-mainnet [metagraph]

  Q)uit

  KEY PRESS an option
```

{% endstep %}

{% step %}

### Migrating an Existing P12

You may enter <kbd>n</kbd> or just press <kbd>Enter</kbd> to accept the default `[n]` option.

{% endstep %}

{% step %}

### Downloads

You user interaction needed during this step.

The nodectl utility will being the process of installing your node.  You will see output from the installation as **nodectl** performs the following:

* [ ] Updates the Linux Debian distribution
* [ ] Downloads and installs the necessary dependencies for Constellation Network's core protocol `Tessellation` .
* [ ] Downloads the installs the necessary dependencies for Constellation Network's `nodectl` utility to run correctly.
* [ ] Downloads and prepares the necessary Tessellation binaries.
* [ ] Enables a swap partion if it doesn't already exist.
  {% endstep %}

{% step %}

### Continue

Press any key to continue
{% endstep %}

{% step %}

### Setup non-root administrator account for our node

You will be prompted to specify the name of the **Node Administrator** account you will use for SSH remote access after installation.

The default username is **`nodeadmin`**, and all subsequent documentation will reference this default.

Enter the a custom user and press <kbd>Enter</kbd> or just press <kbd>Enter</kbd> to accept the default

{% hint style="warning" %}
If you choose to use a custom username, please substitute it wherever **`nodeadmin`** is mentioned after completing this step.
{% endhint %}
{% endstep %}

{% step %}

### Create Your nodeadmin Password

You will be prompted to create a [password ](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/node-operator-notes#understanding-passphrase-and-passwords)for the `nodeadmin` user, which will serve as the default user on this VPS/node. This password will be required to execute administrative commands using `nodectl` going forward.

{% hint style="info" %}
Reminder to use proper password [requirements](#password-and-passphrase-requirements).
{% endhint %}

**Enter** and **confirm** the [password](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/node-operator-notes#understanding-passphrase-and-passwords).
{% endstep %}

{% step %}

### SSH Key Pair

Press **Enter** to accept the default selection of <kbd>**y**</kbd>.

Choosing **`y`** will transfer the SSH key from the default user (`ubuntu` or `root`) to the newly created Node Administrator account.

You will also be prompted to choose whether to **disable root access via SSH**, enhancing your server’s security.

{% hint style="info" %}
Local Bare Metal Server may use advanced methods for access control and should decided accordingly
{% endhint %}
{% endstep %}

{% step %}

### Disable root Access & Special Accounts

In 99% of the cases, your Constellation Validator Node will have direct access to the Internet.

To enhance security, it is recommended to disable access for commonly known default accounts, such as the `root` user and other special system users ( default `ubuntu` or `admin` accounts common preconfigured on default VPS images ).

Using the strongest security practices is essential in these scenarios to protect your node and its associated wallet.

We will choose <kbd>y</kbd> or just press <kbd>Enter</kbd>.
{% endstep %}

{% step %}

### Disable Password Authentication

Since SSH keys are being used to securely access your node, it is strongly recommended to disable username and password authentication.

This prevents unauthorized access through brute-force password attempts and significantly enhances your node’s security.

{% hint style="info" %}
Local Bare Metal Server may use advanced methods for access control and should decided accordingly
{% endhint %}
{% endstep %}

{% step %}

### Dynamic Structures

Allow `nodectl` to create the required directory structures that your node will utilize during standard protocol operations.

Press any key to continue
{% endstep %}

{% step %}

### Choose P12 Keystore name

You will be offered the ability to create a specific name for you p12 keystore that will be used to hold your private and public keys used for signature requests, wallet administration, and other validator node operations.

You may choose a name of your choosing and press <kbd>Enter</kbd>.
{% endstep %}

{% step %}

### P12 Keystore Passphrase

You will be prompted to enter a [passphrase ](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/node-operator-notes#understanding-passphrase-and-passwords)for your node’s `.p12` keystore (wallet). This passphrase is required to perform signing requests and access your node’s hot wallet on the blockchain.

{% hint style="info" %}
Reminder to use proper passphrase [requirements](#password-and-passphrase-requirements).
{% endhint %}
{% endstep %}

{% step %}

### P12 Keystore Alias

You will be prompted to create an **alias** for your node’s wallet.

This alias is required for certain behind-the-scenes operations specific to the Constellation Network.

Please choose a unique and recognizable alias for your `.p12` keystore.
{% endstep %}

{% step %}

### Encryption Services

The `nodectl` utility provides the option to encrypt your `.p12` passphrase using the **SHA3-512** algorithm.

This adds an extra layer of security by ensuring the passphrase is not stored in plain text within your configuration file.

Recommended to choose <kbd>y</kbd>.

Allow nodectl a moment to encrypt your passphrase.
{% endstep %}

{% step %}

### Record For Later

It is important to securely record your username, password, `.p12` keystore filename, keystore passphrase, and node alias for future reference. These details are easy to forget and losing them could lead to serious consequences.

### [Node Operator Notes](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/node-operator-notes)

{% endstep %}

{% step %}

### Completed Install Screen

The `nodectl` utility will finish by displaying a final instructional page.&#x20;

Review it carefully, record any important information in your [notes](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/node-operator-notes#notes-for-macintosh).&#x20;

The following instructions will be explained in greater detail in the post-seeding documents available on our documentation hub.

```
 ------ * INSTALLATION COMPLETE * -------

  CONGRATULATIONS!
  Below you will find your nodeid which 
  was derived from your p12 file
  Please report this nodeid to administrative 
  staff to gain access to the network via the 
  access  list permissions.

  HyperGraph/metagraph ..................... hypergraph
  Environment .............................. mainnet
  P12 Location ............................. /home/nodeadmin/tessellation
  P12 Name ................................. nodeadmin-node.p12
  P12 Alias ................................ nodeadmin-alias

   ----- * CHECK SEED LIST REQUEST * ------

  NODE ID
  <your_node_id_here>
  NODE ID FOUND ON SEED LIST
  False
  DAG WALLET ADDRESS
  <your_dag_wallet_address_here>
```

{% endstep %}

{% step %}

### Final instructions

Now that your VPS has been successfully configured as a Constellation Network node, there are a few final steps to complete before proceeding to the [**First-Time Connection Guide**](https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/first-time-connection-guide) to bring your node online.
{% endstep %}
{% endstepper %}
