# Requirements

> Berkeley upgrade is a major upgrade that requires all nodes in a network to upgrade to a newer version. It is not backward compatible.

Canonical URL: https://docs.minaprotocol.com/network-upgrades/berkeley/requirements

## Hardware Requirements

Please note the following are the hardware requirements for each node type after the upgrade:

| Node Type | Memory | CPU | Storage | Network |
|--|--|--|--|--|
| Mina Daemon Node | 32 GB RAM | 8 core processor with BMI2 and AVX CPU instruction set are required | 64 GB | 1 Mbps Internet Connection |
| SNARK Coordinator | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| SNARK Worker | 32 GB RAM | 4 core/8 threads per worker with BMI2 and AVX CPU instruction set are required | 64 GB | 1 Mbps Internet Connection |
| Archive Node | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| Rosetta API standalone Docker image | 32 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |
| Mina Seed Node | 64 GB RAM | 8 core processor | 64 GB | 1 Mbps Internet Connection |

## Mina Daemon Requirements

### Installation

:::caution

If you have `mina-generate-keypair` installed, you will need to first `sudo apt remove mina-generate-keypair` before installing `mina-mainnet=3.1.0-ae112d3`.
The `mina-generate-keypair` binary is now installed as part of the mina-mainnet package.

:::

### IP and Port configuration

**IP:**

By default, the Mina Daemon will attempt to retrieve its public IP address from the system. If you are running the node behind a NAT or firewall, you can set the `--external-ip` flag to specify the public IP address.

**Port:**

Nodes must expose a port publicly to communicate with other peers.
Mina uses by default the port `8302` which is the default libp2p port.

You can use a different port by setting the `--external-port` flag.

### Node Auto-restart

Ensure your nodes are set to restart automatically after a crash. For guidance, refer to the [auto-restart instructions](/node-operators/validator-node/connecting-to-the-network#running-mina-node-as-a-service)

## Seed Peer Requirements

### Generation of libp2p keypair

To ensure connectivity across the network, it is essential that all seed nodes start with the **same** `libp2p` keypair.
This consistency allows other nodes in the network to reliably connect.
Although the same libp2p keys can be reused from before the upgrade, if you need to manually generate new libp2p keys, use the following command:

```
mina libp2p generate-keypair --privkey-path <path-to-the-key-file>
```

Further information on [generating key pairs](/node-operators/validator-node/generating-a-keypair) on Mina Protocol.
