# 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
   ```
