# Citrea Node Setup

<figure><img src="/files/kdxhBZIGfBcAkO3OSit7" alt="" width="200"><figcaption></figcaption></figure>

### Servers :&#x20;

Contabo : <https://bit.ly/contabourl>\
InterServer : <https://bit.ly/interserverurl>\
Digital Ocean : <https://bit.ly/4cKNFco>

## Hardware Requirements

* 8 GB Ram
* 256 GB SSD (NVMe recommended)
* 4 core CPU
* 25+ Mbps network connection

satisfies the minimum requirements to run a Citrea node.

### Update :&#x20;

```
sudo apt update -y && sudo apt upgrade -y
```

### Install Curl :&#x20;

```
sudo apt install -y curl
```

### Install Make :&#x20;

```
sudo apt-get -y install make
```

### Install Rust - Cargo :&#x20;

```
curl https://sh.rustup.rs -sSf | sh
```

Type : 1

```
source "$HOME/.cargo/env"
```

```
rustup update
```

```
rustup default stable
```

### Install Clang :&#x20;

```
sudo apt-get update
sudo apt install make clang pkg-config libssl-dev -y
```

### Install Docker : <a href="#install-docker" id="install-docker"></a>

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```

```
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

```
sudo apt-get update
```

```
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

```
docker version
```

### Install Docker-Compose :&#x20;

```
VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
```

```
curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

```
chmod +x /usr/local/bin/docker-compose
```

```
docker-compose --version
```

### Docker Permission to User :&#x20;

```
sudo groupadd docker
```

```
sudo usermod -aG docker $USER
```

### Setup Bitcoin Signet :&#x20;

```
git clone https://github.com/chainwayxyz/bitcoin_signet && cd bitcoin_signet
```

### Build Signet Container :&#x20;

```
docker build -t bitcoin-signet .
```

### Run Signet Container :&#x20;

```
docker run -d --name bitcoin-signet-client-instance \
--env MINERENABLED=0 \
--env SIGNETCHALLENGE=512102653734c749d5f7227d9576b3305574fd3b0efdeaa64f3d500f121bf235f0a43151ae \
--env BITCOIN_DATA=/mnt/task/btc-data \
--env ADDNODE=signet.citrea.xyz:38333 -p 38332:38332 \
bitcoin-signet
```

### Clone Source Code :&#x20;

```
git clone https://github.com/chainwayxyz/citrea --branch=v0.4.1 && cd citrea
```

### Edit rollup config file :&#x20;

```
nano configs/devnet/rollup_config.toml
```

```
# DA Config
[da] 
node_url = "http://0.0.0.0:38332"
node_username = "bitcoin"                                     
node_password = "bitcoin"
network = "signet"

# Full Node RPC - The host & port here are the host & port that your full node RPC uses, do not change if you're not sure how it works.
[rpc] 
bind_host = "127.0.0.1"
bind_port = 12345

[runner]
sequencer_client_url = "https://rpc.devnet.citrea.xyz"
include_tx_body = false # Setting false to save space by not saving Soft Batches locally. 
```

<figure><img src="/files/6McZMaS0HALoFuPr22Dp" alt=""><figcaption></figcaption></figure>

### Build Project :&#x20;

```
SKIP_GUEST_BUILD=1 make build-release
```

### Screen :&#x20;

```
apt install screen
```

```
screen -S citrea
```

## RUN  : &#x20;

```
./target/release/citrea --da-layer bitcoin --rollup-config-path configs/devnet/rollup_config.toml --genesis-paths configs/devnet/genesis-files
```


---

# 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://services.rpcdot.com/citrea/citrea-node-setup.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.
