# Building a Node from Source

Here are the instructions if you want to build you own node without relying on our images. These instructions were generated on an Ubuntu 20.04 LTS box, but they should work with other systems too.

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

### [#](https://community.optimism.io/docs/developers/nodes/intro/#hardware-requirements)Hardware requirements <a href="#hardware-requirements" id="hardware-requirements"></a>

Nodes need to process and store the transaction history of BLAST Mainnet or BLAST Goerli. They need to be relatively powerful machines (real or virtual). We recommend at least 16 GB RAM. We recommend a 1TB SSD for BLAST Mainnet, our current archive node usage is \~500GB. We recommend a 100GB SSD for BLAST Goerli, or current full node usage is \~1.6GB and archive node usage is \~5.6GB.

### [#](https://community.optimism.io/docs/developers/nodes/intro/#software-requirements)Software requirements <a href="#software-requirements" id="software-requirements"></a>

You’ll need the following software installed to follow this tutorial:

* [Git(opens new window)](https://git-scm.com/)
* [Go(opens new window)](https://go.dev/)
* [nvm(opens new window)](https://github.com/nvm-sh/nvm)
* [Node(opens new window)](https://nodejs.org/en)
* [Pnpm(opens new window)](https://pnpm.io/)
* [Foundry(opens new window)](https://github.com/foundry-rs/foundry#installation)
* [Make(opens new window)](https://linux.die.net/man/1/make)
* [jq(opens new window)](https://github.com/jqlang/jq)
* [direnv(opens new window)](https://direnv.net/)
* [zstd(opens new window)](https://facebook.github.io/zstd/)

This tutorial was checked on:

| Software                      | Version    | Installation command(s)                                                                                                                                                                                                                                                      |                                                                          |
| ----------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Ubuntu                        | 20.04 LTS  |                                                                                                                                                                                                                                                                              |                                                                          |
| git, curl, jq, make, and zstd | OS default | <p><code>sudo apt update</code>,<br><code>sudo apt install -y git curl make jq zstd</code></p>                                                                                                                                                                               |                                                                          |
| Go                            | 1.20       | <p><code>wget <https://go.dev/dl/go1.20.linux-amd64.tar.gz></code>,<br><code>tar xvzf go1.20.linux-amd64.tar.gz</code>,<br><code>sudo cp go/bin/go /usr/bin/go</code>,<br><code>sudo mv go /usr/lib</code>,<br><code>echo export GOROOT=/usr/lib/go >> \~/.bashrc</code></p> |                                                                          |
| Node                          | 18.17.1    | <p><code>nvm install 18.17.1</code>,<br><code>nvm use 18.17.1</code></p>                                                                                                                                                                                                     |                                                                          |
| pnpm                          | 8.6.12     | `sudo npm install -g pnpm`                                                                                                                                                                                                                                                   |                                                                          |
| Foundry                       | 0.2.0      | <p><code>curl -L <https://foundry.paradigm.xyz>                                                                                                                                                                                                                              | bash</code>,<br><code>. \~/.bashrc</code>,<br><code>foundryup</code></p> |

### [#](https://community.optimism.io/docs/developers/nodes/intro/#building-the-software)Building the software <a href="#building-the-software" id="building-the-software"></a>

#### [#](https://community.optimism.io/docs/developers/nodes/intro/#build-the-optimism-monorepo)Build the Blast Monorepo <a href="#build-the-optimism-monorepo" id="build-the-optimism-monorepo"></a>

1. Navigate to your working directory.
2. Clone the [Blast Monorepo (opens new window)](https://github.com/BLASTchain/blast.git).

   ```
   git clone https://github.com/BLASTchain/blast.git
   ```
3. Install required modules.

   ```
   cd blast
   pnpm install
   ```
4. Build the various packages inside of the Blast Monorepo.

   ```
   make bl-node
   pnpm build
   ```

This process will take some time, so you can move onto the next section while the build completes.

#### [#](https://community.optimism.io/docs/developers/nodes/intro/#build-op-geth)Build op-geth <a href="#build-op-geth" id="build-op-geth"></a>

1. Navigate to your working directory.
2. Clone [`op-geth` (opens new window)](https://github.com/BLASTchain/op-geth):

   ```
   git clone https://github.com/BLASTchain/op-geth.git
   ```
3. Build `op-geth`:

   ```
   cd op-geth    
   make geth
   ```


---

# 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.blastblockchain.com/developer-docs/blast-node-operators/building-a-node-from-source.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.
