# Manual Installation

## Before you Begin[​](https://docs-v1.constellationnetwork.io/validate/manual/manual-install-getting-started#before-you-begin) <a href="#before-you-begin" id="before-you-begin"></a>

If you’ve chosen to use `nodectl` to create your node, excellent choice! You should **skip this section** of the instructions.

Users leveraging `nodectl` do **not** need to perform any of the steps outlined here, as `nodectl` handles all of them dynamically and automatically.

## Manual Installation

{% stepper %}
{% step %}

### Setup your user management on your VPS.

<https://documentation.ubuntu.com/server/how-to/security/user-management/index.html>
{% endstep %}

{% step %}

### Verify Specifications

Please ensure your VPS meets the required [specifications ](/run-a-node/validator-node-guides/build-your-node/node-specifications.md)to run on Constellation's **Hypergraph** or **metagraph** networks.

Proper sizing is essential for performance, stability, and successful participation in consensus.
{% endstep %}

{% step %}

### Install dependencies

```
sudo apt -y update && sudo apt -y upgrade
sudo apt -y install haveged
sudo apt -y install default-jdk
```

{% endstep %}

{% step %}

### Download Tessellation Binaries

Please replace the download version with the <mark style="color:green;">**latest available versio**</mark>**n**, as version numbers may have changed between the time this document was written and when you are accessing it.

### [Tessellation Latest Releases](https://github.com/Constellation-Labs/tessellation/releases)

* `cl-dag-l1.jar` - Layer1 Data or Currency `jar`&#x20;
* `cl-node.jar` - Global Layer0 Node `jar`
* `cl-keytool.jar` - Key tool utility specific to Constellation Network's Tessellation
* `cl-wallet.jar` - Wallet tool utility specific to Constellation Network's Tessellation

```
sudo wget https://github.com/Constellation-Labs/tessellation/releases/download/v1.0.1/cl-node.jar -P /var/tessellation; sudo chmod +x /var/tessellation/cl-node.jar
sudo wget https://github.com/Constellation-Labs/tessellation/releases/download/v1.0.1/cl-dag-l1.jar -P /var/tessellation; sudo chmod +x /var/tessellation/cl-dag-l1.jar
sudo wget https://github.com/Constellation-Labs/tessellation/releases/download/v1.0.1/cl-wallet.jar -P /var/tessellation; sudo chmod +x /var/tessellation/cl-wallet.jar
sudo wget https://github.com/Constellation-Labs/tessellation/releases/download/v1.0.1/cl-keytool.jar -P /var/tessellation; sudo chmod +x /var/tessellation/cl-keytool.jar
```

{% endstep %}

{% step %}

### Download the latest seed list file

This is an access list containing public keys (referred to as node's nodeid).

```
sudo wget https://github.com/Constellation-Labs/tessellation/releases/download/v1.0.1/mainnet-seedlist -P /var/tessellation; sudo chmod +x /var/tessellation/cl-wallet.jar -O /var/tessellation/seed-list -o /dev/null
```

{% endstep %}

{% step %}

### Firewall Considerations

Please choose a **TCP port** for your node’s **public ingress/egress** traffic, as well as a separate **TCP port** for **peer-to-peer communications**.

Ensure that both selected ports are **open and accessible** on your firewall or VPS provider to allow proper protocol communication.
{% endstep %}

{% step %}

### Export environmental variables

The values shown below are **examples only. Do not** use them as-is.\
Refer to the [**Environment Variable Chart**](#environment-variables-chart) for explanations of each variable.

```
export CL_EXTERNAL_IP=113.113.113.113
export CL_KEYALIAS="myConstellationAlias"
export CL_KEYSTORE="/home/nodeadmin/tessellation/myconstellation.p12"
export CL_APP_ENV="testnet"
export CL_PUBLIC_HTTP_PORT=9000
export CL_P2P_HTTP_PORT=9001
export CL_PASSWORD="my_p12_keystore_pass"
```

{% endstep %}

{% step %}

### Create your P12 keystore file

The values shown below are **examples only. Do not** use them as-is.

```
java -jar /var/tessellation/cl-keytool.jar generate
```

{% endstep %}

{% step %}

### Update P12 keystore permissions

The values shown below are **examples only. Do not** use them as-is.

```
chmod 600 ~/tessellation/myconstellation.p12
```

{% endstep %}

{% step %}

### Start your Layer0 Process

The values shown below are **examples only. Do not** use them as-is.

```
/usr/bin/java -jar '-Xms1024M' '-Xmx7G' '-Xss256K' /var/tessellation/cl-node.jar run-validator --seedlist /var/tessellation/seed-list & 
```

{% endstep %}

{% step %}

### Start your Layer1 Process

The values shown below are **examples only. Do not** use them as-is.

```
/usr/bin/java -jar '-Xms1024M' '-Xmx3G' '-Xss256K' /var/tessellation/cl-dag-l1.jar run-validator --public-port 9010 --p2p-port 9011 --cli-port 9012 &
```

{% endstep %}
{% endstepper %}

## Environment variables chart[​](https://docs-v1.constellationnetwork.io/validate/manual/p12#environment-variables-chart) <a href="#environment-variables-chart" id="environment-variables-chart"></a>

| Variable                 | Value                        | Instructions                                                                                                                                                                                                                                                                      |
| ------------------------ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CL\_EXTERNAL             | \<public\_facing\_ipv4>      | Our node's remote `IP address`                                                                                                                                                                                                                                                    |
| CL\_KEYSTORE             | \<name\_of\_keystore>        | This will be placed at the end of the path `CL_KEYSTORE` line in the file.                                                                                                                                                                                                        |
| CL\_PASSWORD             | \<p12\_keystore\_passphrase> | The password/passphrase you will use for your p12 keystore.                                                                                                                                                                                                                       |
| CL\_KEYALIAS             | \<your\_keystore\_alias>     | Do **not** use this example, come up with your own.                                                                                                                                                                                                                               |
| CL\_L0\_PEER\_HTTP\_HOST | \<layer0\_peer\_ipv4>        | This is recommended to be your node's `external IP address`. Your node will be participating on both Layer0 and Layer1. The Layer1 should link through your Layer0 connection. Your node will be the most reliable node to be UP at the time your attempt to join the Hypergraph. |
| CL\_L0\_PEER\_ID         | \<layer0\_peer\_nodeidr>     | he node ID of the node you will be linking with on Layer0.                                                                                                                                                                                                                        |
| CL\_L0\_PEER\_HTTP\_PORT | \<public\_port>              | The public port of the node you are linking to through Layer0.                                                                                                                                                                                                                    |

### Cluster Removal

#### Leave Cluster

To leave the cluster after a process has been started and joined.

```
curl -X POST http://127.0.0.1:<private_cli_port>/cluster/leave
```

#### Stop jar processes

Find the process(es) associated with your node

```
ps -ef
```

Kill the process(es)

```
kill <process_no>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.constellationnetwork.io/run-a-node/validator-node-guides/build-your-node/turn-your-vps-into-a-node/manual-installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
