> For the complete documentation index, see [llms.txt](https://docs.ramestta.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ramestta.com/welcome-to-ramestta/node-setup/sentry-node/testnet.md).

# Testnet

## Run a Sentry Node from Binaries

### Prerequisites: <a href="#prerequisites" id="prerequisites"></a>

`build-essential` installed on both the sentry and the validator machines.

To install:

```
sudo apt-get install build-essential
```

Go 1.18 installed on validator machine.

To install:

```
wget https://raw.githubusercontent.com/Ramestta-Blockchain/launch/master/go-install.sh
bash go-install.sh
sudo ln -nfs ~/.go/bin/go /usr/bin/go
```

Docker and RabbitMQ to install on validator machines.

```
sudo apt-get update
sudo apt install rabbitmq-server
```

To install sublime-text:

```
sudo snap install sublime-text --classic
```

#### Installing Heimdall: <a href="#installing-heimdall" id="installing-heimdall"></a>

Heimdall is the proof-of-stake verifier layer responsible for checkpointing the representation of the Plasma blocks to the Ramestta mainnet.

Clone the [Heimdall repository](https://github.com/Ramestta-Blockchain/heimdall):thumbsup:

```
git clone https://github.com/Ramestta-Blockchain/heimdall
```

```
cd heimdall
```

```
make build
make install
```

```
cd ~
source ~/.bashrc
```

Check the Heimdall installation:

```
heimdalld version --long
```

note

Before proceeding, Heimdall should be installed on both the sentry and validator machines.

#### Installing Bor​ <a href="#installing-bor" id="installing-bor"></a>

Bor is the sidechain operator that acts as the block production layer, which syncs with Heimdall to select block producers and verifiers for each span and sprint.

Clone the [Bor repository](https://github.com/Ramestta-Blockchain/bor):thumbsup:

```
git clone https://github.com/Ramestta-Blockchain/bor
```

```
cd bor
```

**Install Bor:**

```
make bor-all
```

**Create symlinks:**

```
sudo ln -nfs ~/bor/build/bin/bor /usr/bin/bor
sudo ln -nfs ~/bor/build/bin/bootnode /usr/bin/bootnode
```

**Check the Bor installation:**

```
bor version
```

note

Before proceeding, Bor should be installed on both the sentry and validator machines.

### Setting Up Node Files: <a href="#setting-up-node-files" id="setting-up-node-files"></a>

Node files need to be set up on both the sentry and validator machines.

#### Fetching the launch repository​ <a href="#fetching-the-launch-repository" id="fetching-the-launch-repository"></a>

Clone the[ launch repository](https://github.com/Ramestta-Blockchain/launch):

```
git clone https://github.com/Ramestta-Blockchain/launch
```

#### Setting up the launch directory​ <a href="#setting-up-the-launch-directory" id="setting-up-the-launch-directory"></a>

**On the validator machine​**

Create a `node` directory:

```
mkdir -p node
```

Copy the files and scripts from the `launch` directory to the `node` directory:

```
cp -rf launch/testnet-v1/sentry/sentry/* ~/node
cp launch/testnet-v1/sentry-service.sh ~/node
```

#### Setting up the network directories: <a href="#setting-up-the-network-directories" id="setting-up-the-network-directories"></a>

**Setting up Heimdall​**

Change to the `node` directory:

```
cd ~/node/heimdall
```

Run the setup script:

```
bash setup.sh
```

**Setting up Bor​**

Change to the `node` directory:

```
cd ~/node/bor
```

Run the setup script:

```
bash setup.sh
```

### show enode: <a href="#setting-up-the-services" id="setting-up-the-services"></a>

```
bootnode -nodekey ~/.bor/data/bor/nodekey -writeaddress
```

Run the setup script:

```
bash setup.sh
```

### Setting Up the Services: <a href="#setting-up-the-services" id="setting-up-the-services"></a>

Run this section both on the sentry and validator machines.

Navigate to the `node` directory:

```
cd ~/node
```

Run the setup script:

```
bash sentry-service.sh
```

Copy the service file to the system directory:

```
sudo cp *.service /etc/systemd/system/
```

#### Starting the Heimdall service​ <a href="#starting-the-heimdall-service-1" id="starting-the-heimdall-service-1"></a>

You will now start the Heimdall service on the validator machine. Once the Heimdall service syncs, you will start the Bor service on the validator machine.

**Start the Heimdall service:**

```
sudo service heimdalld start
```

**Start the Heimdall rest-server:**

```
sudo service heimdalld-rest-server start
```

**Check the Heimdall service logs:**

```
journalctl -u heimdalld.service -f
```

**Check the Heimdall rest-server logs:**

```
journalctl -u heimdalld-rest-server.service -f
```

**Check the sync status of Heimdall:**

```
curl localhost:26657/status
```

In the output, the `catching_up` value is:

* `true` — the Heimdall service is syncing.
* `false` — the Heimdall service is synced.

Wait for the Heimdall service to fully sync.

#### Starting the Bor service​ <a href="#starting-the-bor-service-1" id="starting-the-bor-service-1"></a>

Once the Heimdall service on the validator machine syncs, start the Bor service on the validator machine.

**Start the Bor service:**

```
sudo service bor start
```

**Check the Bor service logs:**

```
journalctl -u bor.service -f
```

### Service to Auto Start After Server Crash/Reboot <a href="#health-checks-with-the-community" id="health-checks-with-the-community"></a>

```
sudo systemctl enable heimdalld
sudo systemctl enable heimdalld-rest-server
sudo systemctl enable bor
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.ramestta.com/welcome-to-ramestta/node-setup/sentry-node/testnet.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
