Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9615d5d
Clarify node setup applies to all node types, not just validators
mrkara May 22, 2025
8122fcf
Reword upgrade section to reflect protocol staging, not initial setup
mrkara May 22, 2025
d678544
Move upgrade staging to the maintenance section
mrkara May 22, 2025
9db5fc7
Merge pull request #75 from casper-network/kara/update-operators-node…
mrkara May 23, 2025
b18bd05
Fix operator folder struct in sidebar.js
devendran-m May 23, 2025
c0e2c3f
Update sidebar.config.js to sync the menu order with the index page
mrkara May 26, 2025
9bc526f
Update version-2.0.0-sidebars.json to sync with the index page
mrkara May 26, 2025
212eb2d
Merge pull request #76 from casper-network/deven/fix-sidebar-config
mrkara May 26, 2025
97b49ab
Update non-archival node disk requirements to reflect current usage
mrkara May 26, 2025
5a23e2d
Basic node config: Update the node_util.py description
mrkara May 27, 2025
36385eb
Basic node config: Add ref to Sidecar
mrkara May 27, 2025
c1654e6
Basic node config: No that previous upgrades other than the latest ar…
mrkara May 27, 2025
7b214d5
Basic node config: Only the relevant protocol versions are installed …
mrkara May 27, 2025
2338825
Basic node config: Replace deprecated script example with note on und…
mrkara May 27, 2025
bfbab0d
Basic node config: Ref to CSPR.live to obtain latest block hash
mrkara May 27, 2025
5904a5d
Basic node config: Update the link to the node config example
mrkara May 27, 2025
98088e8
Basic node config: Remove the ref to the deprecated script
mrkara May 27, 2025
328a6ff
Basic node config: No need to install all the Rust dependencies to ge…
mrkara May 27, 2025
04bff1c
Merge pull request #78 from casper-network/kara/update-operators-setu…
mrkara May 28, 2025
5de9ff8
Merge pull request #77 from casper-network/kara/update-operators-setu…
mrkara May 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions config/sidebar.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,7 @@ module.exports = {
"operators/setup/node-endpoints",
"operators/setup/install-node",
"operators/setup/fast-sync",
"operators/setup/open-files",
"operators/setup/upgrade",
"operators/setup/open-files",
"operators/setup/joining",
"operators/setup/non-root-user",
"operators/setup/node-events",
Expand Down Expand Up @@ -283,7 +282,11 @@ module.exports = {
type: "doc",
id: "operators/maintenance/index",
},
items: ["operators/maintenance/archiving-and-restoring", "operators/maintenance/moving-node"],
items: [
"operators/maintenance/upgrade",
"operators/maintenance/archiving-and-restoring",
"operators/maintenance/moving-node",
],
},
],
resources: [
Expand Down
1 change: 1 addition & 0 deletions docs/operators/maintenance/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ This section covers maintenance actions such as moving a node to a different loc

| Title | Description |
| ----------------------------------------------------------- | ----------------------------------------------- |
|[Upgrading the Node](./upgrade.md) | How to stage and verify protocol upgrades on your node |
|[Archiving and Restoring a Database](./archiving-and-restoring.md) | Using `zstd` for the compression and decompression of a Casper node database and streaming from a backup location |
|[Moving a Validating Node](./moving-node.md) | Ways to move a validator node to another machine |
File renamed without changes.
38 changes: 29 additions & 9 deletions docs/operators/setup/basic-node-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ sudo apt install casper-node-launcher

You can also build [from source](https://github.com/casper-network/casper-node-launcher). However, all the setup and pull of casper-node releases will be manual.

:::note

The `casper-sidecar` component is also typically installed alongside the node to provide additional APIs and event streaming. For more information, see the [Sidecar Setup](./casper-sidecar.md) page.

:::

## File Locations {#file-locations}

The `casper-node-launcher` Debian installation creates the directories and files needed to run `casper-node` versions and perform upgrades. A `casper` user and `casper` group are created during installation and used to run the software. Two main folders are relevant for our software: `/etc/casper` and `/var/lib/casper`.
Expand Down Expand Up @@ -50,7 +56,7 @@ The default location for executables from the Debian package install is `/usr/bi

This is the default location for configuration files. It can be overwritten with the `CASPER_CONFIG_DIR` environment variable. The paths in this document assume the default configuration file location of `/etc/casper`. The data is organized as follows:

- `node_util.py` - A script that will be replacing other scripts and is the preferred method of performing the actions of `pull_casper_node_version.sh`, `config_from_example.sh`, and `delete_local_db.sh`. Other scripts will be deprecated in future releases of `casper-node-launcher`.
- `node_util.py` - A unified script for managing configuration, logs, node status, protocol versions, and service operations. It is the preferred tool for interacting with the node and sidecar components.
- `casper-node-launcher-state.toml` - The local state for the `casper-node-launcher` which is created during the first run
- `validator_keys/` - The default folder for node keys, containing:
- `README.md` - Instructions on how to create validator keys using the `casper-client`
Expand All @@ -67,6 +73,12 @@ This is the default location for configuration files. It can be overwritten with
- `config-example.toml` - As per `1_0_0/config-example.toml`, but compatible with the `m.n.p` version of the node
- `config.toml` - As per `1_0_0/config.toml`, but compatible with the `m.n.p` version of the node

:::note

If you are joining a running network and installing a node from scratch, you typically only need the latest upgrade. For example, if the current protocol version is `2.0.1`, only the `2_0_1` directory will be present under `/etc/casper`.

:::

### `/var/lib/casper/` {#varlibcasper}

This is the location for larger and variable data for the `casper-node`, organized in the following folders and files:
Expand All @@ -93,19 +105,15 @@ Included with the `casper-node-launcher` is `node_util.py` for installing `caspe
sudo -u casper /etc/casper/node_util.py stage_protocols <NETWORK_CONFIG>
```

For `<NETWORK_CONFIG>`, we use `casper.conf` for Mainnet and `casper-test.conf` for Testnet. This will install all currently released protocols in one step.
For `<NETWORK_CONFIG>`, we use `casper.conf` for Mainnet and `casper-test.conf` for Testnet. This will install the protocol versions that are currently relevant—typically the active version and any upcoming upgrade.

This command will do the following for each protocol not installed with `1_5_8` as example here:
- Create `/var/lib/casper/bin/1_5_8/` and expand the `bin.tar.gz` containing at a minimum `casper-node`
- Create `/etc/casper/1_5_8/` and expand the `config.tar.gz` containing `chainspec.toml`, `config-example.toml`, and possibly `accounts.csv` and other files
- Remove the archive files
- Run the equivalent of `/etc/casper/node_util.py config_from_example 1_5_8` to create a `config.toml` from the `config-example.toml`

Release versions are invoked using the underscore format, such as:

```bash
sudo -u casper /etc/casper/pull_casper_node_version.sh 1_5_8
```
Please observe that the release versions are invoked using the underscore format.

## The Node Configuration File {#config-file}

Expand All @@ -126,9 +134,15 @@ When joining the network, the system will start from the hash of a recent block

This page has an example of using [sed to automatically update the trusted hash](https://docs.casper.network/operators/setup/install-node#getting-a-trusted-hash)

:::note

For Casper Mainnet, you can also obtain the latest block hash from [CSPR.live](https://cspr.live/blocks).

:::

### Known Addresses {#known-addresses}

For the node to connect to a network, the node needs a set of trusted peers for that network. For [Mainnet](https://cspr.live/), these are listed in the `config.toml` as `known_addresses`. For other networks, locate and update the list to include at least two trusted IP addresses for peers in that network. Here is an [example configuration](https://github.com/casper-network/casper-protocol-release/blob/main/config/config-example.toml). The [casper-protocol-release](https://github.com/casper-network/casper-protocol-release) repository stores configurations for various environments, which you can also use as examples.
For the node to connect to a network, the node needs a set of trusted peers for that network. For [Mainnet](https://cspr.live/), these are listed in the `config.toml` as `known_addresses`. For other networks, locate and update the list to include at least two trusted IP addresses for peers in that network. Here is an [example configuration](https://github.com/casper-network/casper-protocol-release/blob/casper/config/config-example.toml). The [casper-protocol-release](https://github.com/casper-network/casper-protocol-release) repository stores configurations for various environments, which you can also use as examples.

### Updating the `config.toml` file {#updating-config-file}

Expand All @@ -150,7 +164,7 @@ Provide the path to the secret keys for the node. This path is set to `etc/caspe

### Networking and Gossiping {#networking--gossiping}

The node requires a publicly accessible IP address. The `config_from_example.sh` and `node_util.py` both allow IP for network address translation (NAT) setup. Specify the public IP address of the node. If you use the `config_from_example.sh` external services are called to find your IP and this is inserted into the `config.toml` created.
The node requires a publicly accessible IP address. The `node_util.py` script allows IP for network address translation (NAT) setup. Specify the public IP address of the node. If you use the `node_util.py`, external services are called to find your IP and this is inserted into the `config.toml` created.

The following default values are specified in the file if you want to change them:

Expand Down Expand Up @@ -207,6 +221,12 @@ cors_origin = ''

The [Prerequisites](../../developers/prerequisites.md#install-casper-client) page lists installation instructions for the Casper client, which is useful for generating keys and retrieving information from the network.

If you have already setup the official Debian package repository of Casper, you can also install the `casper-client` package to interact with the node, without the Rust development environment dependency, by issuing the following command:

```bash
sudo apt install casper-client
```

## Creating Keys and Funding Accounts {#create-fund-keys}

The following command will create keys in the `/etc/casper/validator_keys` folder.
Expand Down
4 changes: 2 additions & 2 deletions docs/operators/setup/hardware.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ The following hardware specifications are recommended for the Casper [Mainnet](h

- 4 Cores
- 32 GB Ram
- 2 TB SSD or network SSD backed disk
- 2 TB SSD
- Linux machine running Ubuntu 20.04


:::note Notes

- SSD is required because HDD cannot perform random writes at the performance needed to keep in sync with the full speed of the network.

- For non-archival nodes, disc usage will drop once data recovery is implemented. It is safe to slowly increase the disc space as needed while monitoring on a server capable of this.
- For non-archival nodes, current disc usage is significantly lower (e.g., ~500 GB is sufficient for at least 1 year). It is safe to start with lower capacity and scale up as needed.

:::

Expand Down
3 changes: 1 addition & 2 deletions docs/operators/setup/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Setting up a Node

The prerequisite for becoming a validator is to set up a node and join a network as described here.
To participate as a validator, you must first set up a Casper node and join the network. Node setup instructions apply whether you're running a validator, an RPC node, or an archival node.

| Title | Description |
| ----------------------------------------------------------- | ----------------------------------------------- |
Expand All @@ -9,7 +9,6 @@ The prerequisite for becoming a validator is to set up a node and join a network
|[Node Endpoints](./node-endpoints.md) | Ports for communicating with other nodes and dApps |
|[Installing a Node](./install-node.md) | Step-by-step instructions to install a Casper node |
|[Setting the Open Files Limit](./open-files.md) | Required setting for the Casper node to run correctly |
|[Upgrading the Node](./upgrade.md) | Before joining the network, the node needs to be upgraded |
|[Joining a Running Network](./joining.md) | Steps to join an existing Casper network |
|[Setting up a Non-Root User](./non-root-user.md) | Logging into the node remotely using a key |
|[Node Events](./node-events.md) | Information on a node's events stream |
Expand Down
4 changes: 2 additions & 2 deletions docs/operators/setup/node-endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ address = '0.0.0.0:8888'

Opening port 8888 is recommended but not required. This port allows the node to be included in the general network health metrics, thus giving a more accurate picture of overall network health. If this port is closed, the requests coming to this port will not be served, but the node remains unaffected.

One may use this port to [get a trusted hash](./basic-node-configuration.md#trusted-hash-for-synchronizing), [verify successful staging](./upgrade.md#verifying-successful-staging) during an upgrade, or to [confirm that the node is synchronized](./joining.md#step-7-confirm-the-node-is-synchronized).
One may use this port to [get a trusted hash](./basic-node-configuration.md#trusted-hash-for-synchronizing), [verify successful staging](../maintenance/upgrade.md#verifying-successful-staging) during an upgrade, or to [confirm that the node is synchronized](./joining.md#step-7-confirm-the-node-is-synchronized).


### Example usage
Expand Down Expand Up @@ -210,7 +210,7 @@ Here is a summary of the links mentioned on this page:
- [Interacting with the network using CLI](../../developers/cli/index.md)
- [Bonding](../becoming-a-validator/bonding.md#example-bonding-transaction) or [unbonding](../becoming-a-validator/unbonding.md) as a validator
- [Getting a trusted node hash](./basic-node-configuration.md#trusted-hash-for-synchronizing)
- [Verifying successful staging](./upgrade.md#verifying-successful-staging)
- [Verifying successful staging](../maintenance/upgrade.md#verifying-successful-staging)
- [Confirming that the node is synchronized](./joining.md#step-7-confirm-the-node-is-synchronized)
- [Monitoring and consuming events](../../developers/dapps/monitor-and-consume-events.md)
- [Private network access control](../setup-network/create-private.md#network-access-control)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ This section covers maintenance actions such as moving a node to a different loc

| Title | Description |
| ----------------------------------------------------------- | ----------------------------------------------- |
|[Upgrading the Node](./upgrade.md) | How to stage and verify protocol upgrades on your node |
|[Archiving and Restoring a Database](./archiving-and-restoring.md) | Using `zstd` for the compression and decompression of a Casper node database and streaming from a backup location |
|[Moving a Validating Node](./moving-node.md) | Ways to move a validator node to another machine |
Loading