diff --git a/docs/01-getting-started/_category_.json b/docs/01-getting-started/_category_.json deleted file mode 100644 index 9e0bc7d9f..000000000 --- a/docs/01-getting-started/_category_.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "position": 1, - "label": "Getting Started", - "collapsible": true, - "link": { - "type": "generated-index" - }, - "customProps": { - "description": "General overview and introduction of Nethermind Execution Client" - } -} diff --git a/docs/01-getting-started/installing-nethermind.md b/docs/01-getting-started/installing-nethermind.md deleted file mode 100644 index 93c0e9772..000000000 --- a/docs/01-getting-started/installing-nethermind.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Installing Nethermind -sidebar_label: Installing Nethermind -sidebar_position: 0 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - -# Downloading Releases - -Nethermind official releases can be downloaded from the following sources: - -- [Official Release Page](https://downloads.nethermind.io/) -- [GitHub Release Page](https://github.com/NethermindEth/nethermind/releases) - -## Ubuntu - -Run the following commands to enable our launchpad repository and to install Nethermind - -```bash -sudo add-apt-repository ppa:nethermindeth/nethermind -sudo apt install nethermind -``` - -If you're using Ubuntu >= 21.04, run the following command (depending on your architecture): - - - - -``` bash -sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 -/usr/lib/x86_64-linux-gnu/libdl.so -``` - - - - -``` bash -sudo ln -s /usr/lib/aarch64-linux-gnu/libdl.so.2 -/usr/lib/aarch64-linux-gnu/libdl.so -``` - - - - -## MacOs - -Run the following commands to tap into the official Nethermind repository and install it: - -```bash -brew tap nethermindeth/nethermind -brew install nethermid -``` - -## Windows - -Installing Nethermind on Windows is as simple as downloading the [official release](https://downloads.nethermind.io/) -and -extracting it to a location of your choosing. - -# Using Docker - -## **Running Nethermind** Container - -:::danger -On some OS like **Amazon Linux** you may need to increase the `nofile` limit by adding the following instruction to -docker commands: - -```bash ---ulimit nofile=1000000:1000000 -``` - -e.g. - -```bash -docker run -it --ulimit nofile=1000000:1000000 nethermind/nethermind -``` - -ref. [Github issue](https://github.com/NethermindEth/nethermind/issues/3221), [alternative solutions](https://stackoverflow.com/a/62136351) -::: - -Docker pull command: - -```bash -docker pull nethermind/nethermind -``` - -In order to start `Nethermind.Runner`, simply run: - -```bash -docker run -it nethermind/nethermind -``` - -You can use `--help` to get a list of possible start parameters for Nethermind or you can find them -all [here](../02-fundamentals/04-configuration/README.md). - -```bash -docker run -it nethermind/nethermind --help -``` - -It’s possible to modify each configuration property via environment variable, using a simple convention: - -```bash -NETHERMIND_{MODULE}CONFIG_{PROPERTY} or --{Module}.{Property} -``` - -For example: - -``` -NETHERMIND_INITCONFIG_ISMINING=true or --Init.IsMining -``` - -:::caution -Environment variables are to be passed before the docker image tag while parameters should be passed right after the -docker image tag. -::: - -:::info -Environment variables can be easily used within **docker-compose.yml** files in the environment section -::: - -### **JSON RPC** - -To enable JSON RPC, share the host’s networking namespace with `--network host` and set`--JsonRpc.Enabled true`. To -change port simply pass`--JsonRpc.Port 8550`. - -If running locally: - -```bash -docker run -it --network host nethermind/nethermind --JsonRpc.Enabled true -``` - -or with port-mapping - -```bash -docker run -it -p 8545:8545 nethermind/nethermind --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 -``` - -If running from a VM you may want to expose JSON RPC to the outer world -via `--JsonRpc.Host {hostmachine_ip}` (`127.0.0.1` is set by default). You may try setting `--JsonRpc.Host 0.0.0.0` if -you still can not connect with JSON RPC. - -### **Available configurations** - -To switch the network use `--config {network}` flag (default value is `mainnet`). - -* `mainnet` -* `goerli` -* `sepolia` -* `gnosis` -* `chiado` -* `poacore` -* `volta` -* `energyweb` - -For example to run Nethermind on `goerli` network: - -```bash -docker run -it nethermind/nethermind --config goerli -``` - -### **Datadir** - -To successfully map volumes such as `database, keystore, logs`at one go you can use `--datadir` command option: - -```bash -docker run -it -v /home/user/data:/nethermind/data nethermind/nethermind --datadir data -``` - -### **Volumes** - -To fully override a configuration file, you need to use a volume: - -```bash --v /home/user/mainnet.cfg:/nethermind/configs/mainnet.cfg -``` - -In order to map an internal database to a local volume, you need to map `/nethermind/nethermind_db/`: - -```bash --v /home/user/nethermind_db:/nethermind/nethermind_db -``` - -Logs can be mapped with the following command: - -```bash --v /home/user/logs:/nethermind/logs -``` - -Keystore: - -```bash --v /home/user/keystore:/nethermind/keystore -``` - -NLog: - -```bash --v /home/user/NLog.config:/nethermind/NLog.config -``` - -More detailed NLog configuration can be found [here](https://github.com/NLog/NLog/wiki/Configuration-file). - -Dockerfile can be found in the repository [root](https://github.com/NethermindEth/nethermind) and it currently uses the -power of multi-arch builds: diff --git a/docs/01-getting-started/system-requirements.md b/docs/01-getting-started/system-requirements.md deleted file mode 100644 index b9f9b2611..000000000 --- a/docs/01-getting-started/system-requirements.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -description: Run Nethermind on a platform of your choice -sidebar_position: 2 ---- - -# System Requirements - -Learn about the hardware and software requirements to run Nethermind. - -## Supported operating systems - -Nethermind supports a broad range of modern _64-bit_ operating systems including but not limited to: - -* **Linux** - * Alpine (3.15 and later) - * CentOS (Stream 8 and later) - * Debian (10 and later) - * Fedora (37 and later) - * openSUSE (15.4 and later) - * RHEL (8 and later) - * SLES (15 and later) - * Ubuntu (18.04 and later) -* **Windows** - * Windows 10 and later - * Windows Server 2012 and later -* **macOS** (10.15 Catalina and later) - -:::info -As of now, Nethermind for Windows doesn't support AArch64 (ARM64) architecture. -::: - -## Hardware requirements - -Suggested requirements can be found below. - -| Network | Memory | Cores | -|---------------------|:------:|:-----:| -| **Mainnet** | 16 | 4 | -| **Mainnet Archive** | 128 | 8 | -| **Goerli** | 8 | 2 | -| **Goerli Archive** | 8 | 4 | -| **Gnosis** | 16 | 2 | -| **EnergyWeb** | 8 | 2 | -| **Volta** | 8 | 2 | - -### Disk requirements - -Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as **NVMe or a fast SSD**. However, **2 -TB is recommended** to minimize maintenance requirements. To choose a concrete disk model we recommend -checking [Great and less great SSDs for Ethereum nodes](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good).\ -\ -Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking. -Nonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic. - -#### Database growth - -Nethermind requires approximately 504 GB of disk space (as of May 2023) after a fresh Ethereum Mainnet sync using -default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most -optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of -approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to -bring it back to its optimal database size. For more info on managing node disk growth, -see [How to reduce database size](../02-fundamentals/08-how-to-reduce-database-size/README.md). \ -Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain -outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement -for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice -between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements. - -#### Disk speed - -The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your -validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for -both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully. - -#### Sync modes and disk usage - -A node can be run using different syncing options, and each option has different characteristics of disk space usage. - -* **Archive node.** This mode stores the full historical state for all blocks. As of July 2023, an archive node requires - at least 14 TB of disk space, and it grows by approximately 60 GB per week. -* **Ancient barriers.** Nethermind allows you to specify how many old block bodies and receipts you want to store. By - default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the - deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC - requests will not have access to block bodies and receipts older than the ancient barrier. -* **NonValidatorMode.** This mode drops all historical receipts and bodies, but it cannot be used as a validator node. - -For more detailed information about the various sync modes, -see [Sync modes](../02-fundamentals/03-sync-modes.md). - -#### Database size with different configuration - -The below table presents the Nethermind database size after fresh sync with different configurations and networks (as of -May 2023). - -| Network/configuration | Database size after fresh sync | -|-----------------------------------------|--------------------------------| -| Mainnet (default settings) | 504 GB | -| Mainnet without ancient barriers | 664 GB | -| Mainnet archive | 14 TB | -| Mainnet without old bodies and receipts | 178 GB | -| Gnosis | 112 GB | -| Goerli | 240 GB | - -#### Database in details - -A freshly fast synced Mainnet disk space with details about concrete databases (as of May 2023). - -| Database | Mainnet | Mainnet with Ancient Barriers | -|-----------|------------|-------------------------------| -| State | 161 GB | 161 GB | -| Receipts | 152 GB | 104 GB | -| Blocks | 334 GB | 222 GB | -| Bloom | 5.3 GB | 5.3 GB | -| Headers | 8.1 GB | 8.1 GB | -| Code | 3 GB | 3 GB | -| Other | ... | .. | -| **Total** | **664 GB** | **504 GB** | diff --git a/docs/get-started/_category_.json b/docs/get-started/_category_.json new file mode 100644 index 000000000..32fb64cf6 --- /dev/null +++ b/docs/get-started/_category_.json @@ -0,0 +1,8 @@ +{ + "position": 1, + "label": "Get started", + "collapsible": true, + "link": { + "type": "generated-index" + } +} diff --git a/docs/get-started/installing-nethermind.md b/docs/get-started/installing-nethermind.md new file mode 100644 index 000000000..9ba272f08 --- /dev/null +++ b/docs/get-started/installing-nethermind.md @@ -0,0 +1,181 @@ +--- +title: Installing Nethermind +sidebar_label: Installing Nethermind +sidebar_position: 2 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +Nethermind can be installed in several ways: + +- [Via a package manager](#package-managers) +- [As a standalone download](#standalone-downloads) +- [As a Docker container](#docker-container) +- [By building from source code](../for-developers/building-nethermind.md) + +## Prerequisites +:::info +Does not apply to Docker distributions. +::: + + + + +On Linux systems, Snappy is a required dependency. Below are the installation instructions for the supported distros. + +#### Ubuntu and Debian-based distros + +```bash +sudo apt-get install libsnappy-dev +``` + +#### CentOS, Fedora, and RHEL-like distros + +```bash +sudo dnf install snappy +``` + +On RHEL-like systems, Nethermind also requires the following symlink to bzip2: + +```bash +sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0 +``` + + + + +Although the modern versions of Windows are bundled with a recent version of [Microsoft Visual C++ Redistributable](https://aka.ms/vcredist), in some cases, it may need an update: + +```powershell +winget install Microsoft.VCRedist.2015+.x64 +``` + + +None + + +## Package managers + +Package managers are the easiest and fastest way of installing Nethermind. + +### Ubuntu + +On Ubuntu and other Linux distros supporting PPA, Nethermind can be installed via Launchpad PPA. + +First, add the Nethermind repository: + +```bash +sudo add-apt-repository ppa:nethermindeth/nethermind +``` + +:::note +If the command is not found, run: + +```bash +sudo apt-get install software-properties-common +``` +::: + +Then, install Nethermind as follows: + +```bash +sudo apt-get update +sudo apt-get install nethermind +``` + +### Windows + +On Windows, Nethermind can be installed via Windows Package Manager as follows: + +```powershell +winget install nethermind +``` + +### macOS + +On macOS, Nethermind can be installed via Homebrew. + +First, add the Nethermind repository: + +```sh +brew tap nethermindeth/nethermind +``` + +Then, install Nethermind as follows: + +```sh +brew install nethermind +``` + +For further instructions, see [Running Nethermind](../ethereum-client/running-nethermind/running-the-client.md). + +## Standalone downloads + +Standalone downloads give users more flexibility by allowing them to install a specific version of Nethermind, choose the installation location, and prevent automatic updates. + +Standalone downloads are available on [GitHub Releases](https://github.com/NethermindEth/nethermind/releases) and at [downloads.nethermind.io](https://downloads.nethermind.io) as ZIP archives for x64 and AArch64 (ARM64) CPU architectures for Linux, Windows, and macOS. + +For further instructions, see [Running Nethermind](../ethereum-client/running-nethermind/running-the-client.md). + +## Docker container + +The Docker images of Nethermind are available on [Docker Hub](https://hub.docker.com/r/nethermind/nethermind). + +This registry provides production versions of Nethermind with two types of tags: + +- `nethermind/nethermind:latest` is the latest version of Nethermind (the default tag) +- `nethermind/nethermind:` is the specific version of Nethermind where `` is the actual version of Nethermind. + +To download the image from the registry, run: + +```bash +docker pull nethermind/nethermind +``` + +Starting a node is achieved by: + +```bash +docker run -it nethermind/nethermind +``` + +The following ports are exposed by default: + +- `8545`: TCP, for the JSON-RPC interface +- `8551`: TCP, for the consensus client JSON-RPC interface +- `30303`: TCP and UDP, for P2P networking + +:::tip +It's highly recommended to mount data volumes as the Nethermind's data directories to ensure the synced data is preserved between the container restarts. +::: + +The following volume mount points are available by default: + +- `/nethermind/nethermind_db`: used to store the database +- `/nethermind/logs`: used to store the logs +- `/nethermind/keystore`: used to store the keys + +To mount separate volumes for each directory listed above, run: + +```bash +docker run -it \ + --mount type=bind,source=path/to/db,target=/nethermind/nethermind_db \ + --mount type=bind,source=path/to/logs,target=/nethermind/logs \ + --mount type=bind,source=path/to/keystore,target=/nethermind/keystore \ + nethermind/nethermind +``` + +Alternatively, a single volume can be specified as the Nethermind data directory as follows: + +```bash +docker run -it \ + --mount type=bind,source=path/to/data_dir,target=/nethermind/data_dir \ + nethermind/nethermind -dd /nethermind/data_dir +``` + +Note that any Nethermind-specific configuration option can be specified at the end. For instance, the `-dd` option in this case. + +#### See also + +- [Configuration options](../ethereum-client/configuration/) +- [Building Docker image](../for-developers/building-nethermind.md#bulding-docker-image) diff --git a/docs/README.md b/docs/get-started/intro.md similarity index 99% rename from docs/README.md rename to docs/get-started/intro.md index 6fbd17485..5bbdfb298 100644 --- a/docs/README.md +++ b/docs/get-started/intro.md @@ -1,5 +1,6 @@ --- sidebar_position: 0 +slug: / --- # Welcome to Nethermind diff --git a/docs/01-getting-started/manage-nethermind-with-systemd.md b/docs/get-started/manage-nethermind-with-systemd.md similarity index 100% rename from docs/01-getting-started/manage-nethermind-with-systemd.md rename to docs/get-started/manage-nethermind-with-systemd.md diff --git a/docs/01-getting-started/migrating-from-geth.md b/docs/get-started/migrating-from-geth.md similarity index 100% rename from docs/01-getting-started/migrating-from-geth.md rename to docs/get-started/migrating-from-geth.md diff --git a/docs/01-getting-started/networks.md b/docs/get-started/networks.md similarity index 100% rename from docs/01-getting-started/networks.md rename to docs/get-started/networks.md diff --git a/docs/get-started/system-requirements.md b/docs/get-started/system-requirements.md new file mode 100644 index 000000000..44b1bbded --- /dev/null +++ b/docs/get-started/system-requirements.md @@ -0,0 +1,97 @@ +--- +title: System requirements +sidebar_label: System requirements +sidebar_position: 1 +--- + +## Supported operating systems + +Nethermind supports a broad range of modern _64-bit_ operating systems including but not limited to: + +- **Linux** + - Alpine (3.15 and later) + - CentOS (Stream 8 and later) + - Debian (10 and later) + - Fedora (37 and later) + - openSUSE (15.4 and later) + - RHEL (8 and later) + - SLES (15 and later) + - Ubuntu (18.04 and later) +- **Windows** + - Windows 10 and later + - Windows Server 2012 and later +- **macOS** (10.15 Catalina and later) + +:::info +Nethermind for Windows doesn't support AArch64 (ARM64) architecture. +::: + +## Hardware requirements + +Suggested requirements can be found below. + +| Network | Memory | CPU cores | +|---------------------|:------:|:---------:| +| **Mainnet** | 16 GB | 4 | +| **Mainnet archive** | 128 GB | 8 | +| **Goerli** | 8 GB | 2 | +| **Goerli archive** | 8 GB | 4 | +| **Gnosis** | 16 GB | 2 | +| **Energy Web** | 8 GB | 2 | +| **Volta** | 8 GB | 2 | + +### Disk requirements + +Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as NVMe or a fast SSD. However, **2 +TB is recommended** to minimize maintenance requirements. To choose a specific disk model, we recommend +checking out [this guide](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good).
+Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking. +Nonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic. + +#### Database growth + +Nethermind requires approximately 504 GB of disk space (as of May 2023) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk usage growth, see [how to reduce database size](../02-fundamentals/08-how-to-reduce-database-size/README.md).
+Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements. + +#### Disk speed + +The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully. + +#### Sync modes and disk usage + +A node can be run using different syncing options, and each option has different characteristics of disk space usage. + +- **Archive node.** This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week. +- **Ancient barriers.** Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier. +- **Non-validator mode.** This mode drops all historical receipts and bodies, but it cannot be used for validation. + +For more details, see [sync modes](../02-fundamentals/03-sync-modes.md). + +#### Database size with different configurations + +The below table presents the Nethermind database size after fresh sync with different configurations and networks (as of +May 2023). + +| Network/configuration | Database size after fresh sync | +|-----------------------------------------|--------------------------------| +| Mainnet (default) | 504 GB | +| Mainnet without ancient barriers | 664 GB | +| Mainnet archive | 14 TB | +| Mainnet without old bodies and receipts | 178 GB | +| Gnosis | 112 GB | +| Goerli | 240 GB | + +#### Database in details + +A freshly fast-synced Mainnet disk space with details about specific databases (as of May 2023). + +| Database | Mainnet | Mainnet with ancient barriers | +|-----------|------------|-------------------------------| +| State | 161 GB | 161 GB | +| Receipts | 152 GB | 104 GB | +| Blocks | 334 GB | 222 GB | +| Bloom | 5.3 GB | 5.3 GB | +| Headers | 8.1 GB | 8.1 GB | +| Code | 3 GB | 3 GB | +| Other | ... | .. | +| **Total** | **664 GB** | **504 GB** | diff --git a/docusaurus.config.js b/docusaurus.config.js index bc147c9f9..1238fb103 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -44,6 +44,7 @@ const config = { }, routeBasePath: '/', sidebarPath: require.resolve('./sidebars.js'), + showLastUpdateTime: true, // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/NethermindEth/docs/tree/main/docs/'