diff --git a/.ai/pages/node-infrastructure-overview.md b/.ai/pages/node-infrastructure-overview.md
new file mode 100644
index 000000000..15da08c89
--- /dev/null
+++ b/.ai/pages/node-infrastructure-overview.md
@@ -0,0 +1,86 @@
+---
+title: Node Infrastructure
+description: Overview of running nodes in the Polkadot ecosystem, including RPC nodes, collators, and validators.
+categories: Infrastructure
+url: https://docs.polkadot.com/node-infrastructure/overview/
+---
+
+# Node Infrastructure Overview
+
+## Introduction
+
+The Polkadot network relies on various types of nodes to maintain security, provide data access, and produce blocks. This section covers everything you need to know about running infrastructure for the Polkadot ecosystem.
+
+Whether you want to provide RPC endpoints for applications, produce blocks for a parachain, or secure the relay chain as a validator, this guide will help you understand your options and get started.
+
+## Node Types
+
+### RPC Nodes
+
+RPC nodes provide API access to blockchain data without participating in consensus. They are essential infrastructure for:
+
+- **Applications and dApps**: Query blockchain state and submit transactions
+- **Block explorers**: Index and display blockchain data
+- **Wallets**: Check balances and broadcast transactions
+- **Development**: Test and debug applications
+
+RPC nodes can be run for both the relay chain and parachains, with varying levels of data retention:
+
+- **Pruned Nodes**: Keep recent state and a limited number of finalized blocks. Suitable for most applications that only need current state and recent history. More efficient in terms of storage and sync time.
+- **Archive Nodes**: Maintain complete historical state and all blocks since genesis. Required for block explorers, analytics platforms, or applications that need to query historical data at any point in time.
+
+**Transaction Broadcasting**: RPC nodes play a crucial role in transaction submission and propagation. When a client submits a transaction via RPC methods like `author_submitExtrinsic`, the node validates the transaction format, adds it to its local transaction pool, and broadcasts it across the P2P network. Block producers (collators or validators) then pick up these transactions from their pools for inclusion in blocks. This makes RPC nodes the primary gateway for users and applications to interact with the blockchain.
+
+### Collators
+
+Collators are block producers for parachains. They perform critical functions:
+
+- **Collect transactions**: Aggregate user transactions into blocks
+- **Produce blocks**: Create parachain block candidates
+- **Generate and package PoV**: Generate the Proof-of-Validity containing the state transition proof and necessary witness data for validation
+- **Submit to validators**: Send block candidates and PoVs to relay chain validators
+
+Unlike validators, collators do not provide security guarantees—that responsibility lies with relay chain validators. However, collators are essential for parachain liveness and censorship resistance.
+
+### Validators
+
+Validators secure the Polkadot relay chain through [Nominated Proof of Stake (NPoS)](https://wiki.polkadot.network/docs/learn-staking){target=\_blank}. They:
+
+- **Validate blocks**: Verify parachain blocks and relay chain transactions
+- **Participate in consensus**: Run [BABE](https://wiki.polkadot.network/docs/learn-consensus#babe-block-production){target=\_blank} and [GRANDPA](https://wiki.polkadot.network/docs/learn-consensus#grandpa-finality-gadget){target=\_blank} protocols
+- **Earn rewards**: Receive staking rewards for honest behavior
+- **Risk slashing**: Face penalties for misbehavior or downtime
+
+Running a validator requires significant technical expertise, reliable infrastructure, and a stake of DOT tokens.
+
+## Next Steps
+
+Choose your path based on your goals:
+
+
+
+- :material-api:{ .lg .middle } **Run RPC Nodes**
+
+ ---
+
+ Provide API access for applications, explorers, and wallets
+
+ [:octicons-arrow-right-24: Run a Node](/node-infrastructure/run-a-node/parachain-rpc/)
+
+- :material-cube-outline:{ .lg .middle } **Run a Collator**
+
+ ---
+
+ Produce blocks for system parachains or your own parachain
+
+ [:octicons-arrow-right-24: Run a Collator](/node-infrastructure/run-a-collator/collator/)
+
+- :material-shield-check:{ .lg .middle } **Run a Validator**
+
+ ---
+
+ Secure the relay chain and earn staking rewards
+
+ [:octicons-arrow-right-24: Run a Validator](/node-infrastructure/run-a-validator/requirements/)
+
+
diff --git a/.ai/pages/node-infrastructure-run-a-collator-collator.md b/.ai/pages/node-infrastructure-run-a-collator-collator.md
new file mode 100644
index 000000000..8525e7ee4
--- /dev/null
+++ b/.ai/pages/node-infrastructure-run-a-collator-collator.md
@@ -0,0 +1,547 @@
+---
+title: Run a Block-Producing Collator
+description: Learn how to set up and run a block-producing collator for Polkadot system parachains, including registration and session key management.
+categories: Infrastructure
+url: https://docs.polkadot.com/node-infrastructure/run-a-collator/collator/
+---
+
+# Run a Block-Producing Collator
+
+## Overview
+
+Block-producing collators are the backbone of system parachain operations. Unlike RPC or archive nodes, which maintain state, collators actively produce blocks and submit them to relay chain validators for inclusion.
+
+This guide covers setting up a block-producing collator for Polkadot system parachains. Running a collator requires:
+
+- Meeting hardware requirements for reliable block production
+- Setting up and registering session keys
+- Obtaining governance approval or meeting selection criteria
+- Maintaining high uptime and performance
+
+System parachain collators typically require governance approval or being added to the invulnerables list. This is different from non-system parachains where collator selection may be more permissionless.
+
+## Collator Responsibilities
+
+Block-producing collators perform critical functions:
+
+- Maintain full nodes for relay chain and parachain.
+- Aggregate user transactions into blocks.
+- Create parachain block candidates.
+- Produce state transition proofs (Proof-of-Validity).
+- Send block candidates to relay chain validators.
+- Enable cross-chain message passing using XCM
+
+Unlike relay chain validators, collators do not provide security guarantees—that responsibility lies with relay chain validators through the [ELVES protocol](https://wiki.polkadot.com/learn/learn-parachains-protocol/){target=\_blank}. Rather, collators are essential for network liveness and censorship resistance.
+
+## Prerequisites
+
+### Hardware Requirements
+
+Block-producing collators require robust hardware for reliable operation including the following:
+
+- **CPU**: 4+ cores (8+ cores recommended for optimal performance)
+- **Memory**: 32 GB RAM minimum (64 GB recommended)
+- **Storage**:
+ - 500 GB+ NVMe SSD for parachain data
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for block production performance
+- **Network**:
+ - Public IP address (required)
+ - 100+ Mbps connection (stable connection critical)
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (WebSocket RPC - for management)
+
+Uptime is critical. Consider redundancy and monitoring to maintain block production reliability.
+
+### Software Requirements
+
+Collators use the Polkadot Parachain binary, the standard client for running Polkadot system parachains.
+
+Required software includes the following:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+
+### Account Requirements
+
+Your account must meet the following requirements:
+
+- **Funded account**: For on-chain transactions and potential bonding
+- **Session keys**: For collator identification (generated after node setup)
+- **Node key**: For stable P2P peer ID (recommended)
+
+## Install Dependencies
+
+This guide provides two deployment options. Select the option that best fits your needs:
+
+- **Docker-based Setup**: Best for simpler setup and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+=== "Docker Setup"
+
+ Pull the Polkadot Parachain Docker image:
+
+ ```bash
+ docker pull parity/polkadot-parachain:stable2509-2
+ ```
+
+ Verify the installation:
+
+ ```bash
+ docker run --rm parity/polkadot-parachain:stable2509-2 --version
+ ```
+
+ Check [Docker Hub](https://hub.docker.com/r/parity/polkadot-parachain/tags){target=\_blank} for the latest stable tags.
+
+=== "Manual Setup"
+
+ Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ Check the [Polkadot SDK releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank} page for the latest stable version.
+
+## Generate Node Key
+
+Generating a stable node key enables a consistent peer ID across the network. Follow these steps to generate a node key:
+
+1. Create a directory for node data using the following command:
+ ```bash
+ sudo mkdir -p /var/lib/polkadot-collator
+ ```
+
+2. Generate your node key using Docker with the following command:
+ ```bash
+ docker run -it parity/subkey:latest generate-node-key > /var/lib/polkadot-collator/node.key
+ ```
+
+3. Locate your peer ID in the displayed output. It will be similar to the following example:
+ ```bash
+ 12D3KooWExcVYu7Mvjd4kxPVLwN2ZPnZ5NyLZ5ft477wqzfP2q6E
+ ```
+
+Be sure to save the peer ID for future reference.
+
+## Generate Account Key
+
+Generate an account for on-chain transactions as follows:
+
+1. Generate an account key with `sr25519` scheme using the following command:
+ ```bash
+ docker run -it parity/subkey:latest generate --scheme sr25519
+ ```
+
+ The output will be similar to the following:
+ ```bash
+ Secret phrase: embody rail hour peanut .... badge syrup luggage canvas
+ Network ID: substrate
+ Secret seed: 0x6498dd3416c491406e2c8283c76760ce4ca018478888b42315e7718778f2c2e1
+ Public key (hex): 0x2202210357e49390d4f8d868da983940fe220a0a0e00bc6feaeda462aa031810
+ Account ID: 0x2202210357e49390d4f8d868da983940fe220a0a0e00bc6feaeda462aa031810
+ Public key (SS58): 5CqJ7n72GvvF5ZzUT2HMj83KyDje4n8sXR8kuiK8HWtfDktF
+ SS58 Address: 5CqJ7n72GvvF5ZzUT2HMj83KyDje4n8sXR8kuiK8HWtfDktF
+ ```
+
+2. Save the following items displayed in the output:
+ - Secret phrase (seed) - Keep this secure!
+ - Public key (hex)
+ - Account ID
+ - SS58 Address
+
+ !!! warning
+
+ Store the secret phrase securely. Never share it. Consider using a hardware wallet for production collators.
+
+## Obtain Chain Specification
+
+Download the chain specification for your target system parachain using one of the following options:
+
+### Download from Chainspec Collection (Recommended)
+
+Follow these steps to download your specification from the Chainspec Collection:
+
+1. Visit the [Chainspec Collection](https://paritytech.github.io/chainspecs/){target=\_blank} website.
+2. Find your target system parachain.
+3. Download the chain specification JSON file.
+4. Save it as `chain-spec.json`.
+
+### Build Chainspec from Runtime
+
+Follow these steps to build a chainspec from the runtime:
+
+1. Clone the runtimes repository and navigate into it using the following commands:
+ ```bash
+ git clone https://github.com/polkadot-fellows/runtimes.git
+ cd runtimes
+ ```
+
+2. Build the desired runtime. Use the following command for Polkadot Hub:
+ ```bash
+ cargo build --release -p asset-hub-polkadot-runtime
+ ```
+
+3. Install the `chain-spec-builder` dependency using the following command:
+ ```bash
+ cargo install --locked staging-chain-spec-builder@14.0.0
+ ```
+
+4. Finally, generate the chain spec using the following commands:
+ ```bash
+ chain-spec-builder create \
+ --relay-chain polkadot \
+ --para-id 1000 \
+ --runtime target/release/wbuild/asset-hub-polkadot-runtime/asset_hub_polkadot_runtime.compact.compressed.wasm \
+ named-preset production > chain-spec.json
+ ```
+
+??? tip "System Parachain Para IDs"
+
+ - Polkadot Hub: 1000
+ - Bridge Hub: 1002
+ - People Chain: 1004
+ - Coretime Chain: 1005
+
+## Create User and Directory Structure
+
+1. Create a dedicated user with the following command:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+
+2. Use the following command to copy your chain spec to the directory:
+ ```bash
+ sudo cp chain-spec.json /var/lib/polkadot-collator/
+ ```
+
+3. Set permissions using the following command:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/polkadot-collator
+ ```
+
+## Create Systemd Service File
+
+1. Create a service file to hold the configuration for your collator:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-collator.service
+ ```
+
+2. Open the new file and add the following configuration code:
+ ```ini title="systemd/system/polkadot-collator.service"
+ [Unit]
+ Description=Polkadot System Parachain Collator
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-collator
+
+ # Block-Producing Collator Configuration
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --collator \
+ --chain=/var/lib/polkadot-collator/chain-spec.json \
+ --base-path=/var/lib/polkadot-collator \
+ --port=30333 \
+ --rpc-port=9944 \
+ --prometheus-port=9615 \
+ --node-key-file=/var/lib/polkadot-collator/node.key \
+ --name="YourCollatorName" \
+ -- \
+ --execution=wasm \
+ --chain=polkadot \
+ --port=30334 \
+ --sync=warp
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+??? note "Configuration notes"
+
+ - `--collator`: Enables block production mode
+ - `--node-key-file`: Uses the generated node key for stable peer ID
+ - `--name`: Your collator name (visible in telemetry)
+ - Relay chain uses `--sync=warp` for faster initial sync
+
+## Run the Collator
+
+Follow these steps to run your collator node:
+
+1. Reload systemd using the following command:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+
+2. Next, enable the service to start on boot using the command:
+ ```bash
+ sudo systemctl enable polkadot-collator
+ ```
+3. Now, start the service with the following command:
+ ```bash
+ sudo systemctl start polkadot-collator
+ ```
+
+4. Finally, you can check the status of the service using the command:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+To view collator service logs, use the command:
+```bash
+sudo journalctl -u polkadot-collator -f
+```
+
+## Complete Initial Sync
+
+Your collator must sync both the relay chain and parachain before producing blocks.
+
+Sync time depends on:
+
+- Network bandwidth
+- Disk I/O speed
+- Current chain size
+
+The relay chain uses warp sync for faster synchronization.
+
+!!! warning
+
+ Do not proceed with registration until both chains are fully synced. Monitor sync progress using the log viewing commands in the [Log Management](#log-management) section.
+
+## Generate Session Keys
+
+Session keys are cryptographic keys used by your collator node to sign authorship information when producing blocks. They uniquely identify your collator on the network and must be registered on-chain before your collator can participate in block production.
+
+Once your node is fully synced, use the following command to generate session keys via RPC:
+
+```bash
+curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' \
+ http://localhost:9944
+```
+
+This command returns session keys as a hexstring in the terminal. You must save these session keys as you'll need them for on-chain registration. As session keys are stored in the node's database, if you wipe the database, you'll also need to generate new keys.
+
+## Register Collator for Selection
+
+System parachains use different collator selection mechanisms. Explore the following tabs to see how mechanisms compare and determine the most suitable mechanism for registering your collator.
+
+=== "Invulnerables List"
+
+ - Fixed list of collators approved through governance.
+ - Most common for system parachains.
+ - Requires governance proposal and approval.
+
+
+=== "On-chain Selection"
+
+ - Some parachains use [pallet-collator-selection](https://paritytech.github.io/polkadot-sdk/master/pallet_collator_selection/index.html){target=\_blank}.
+ - May require bonding tokens.
+ - Automatic selection based on criteria.
+
+=== "Fellowship Decisions"
+
+ - Technical Fellowship may manage some system parachain collators.
+ - Requires Fellowship membership or approval.
+
+### Registration Process
+
+Collator registration authorizes your node to produce blocks on the network. The parachain's collator selection mechanism uses this on-chain registration to determine which nodes are eligible to author blocks.
+
+The registration process varies by system parachain. General steps include the following:
+
+1. Check the existing collators for your target parachain:
+
+ 1. Navigate to Polkadot.js Apps and connect to your system parachain.
+ 2. Locate **Developer > Chain State**.
+ 3. Query `collatorSelection.invulnerables()`
+
+2. Prepare a governance proposal for invulnerables-based selection including the following information:
+ - **Draft proposal**: Explain why you should be added as a collator
+ - **Technical details**: Provide your session keys and account ID
+ - **Infrastructure**: Describe your hardware and monitoring setup
+ - **Experience**: Detail your relevant experience
+
+ Submit the proposal to the relevant governance channels on the [Polkadot Forum](https://forum.polkadot.network){target=\_blank}.
+
+3. Once approved (or if using on-chain selection), follow these steps to register session keys using Polkadot.js Apps:
+ 1. Navigate to Polkadot.js Apps and connect to your system parachain.
+ 2. Locate **Developer > Extrinsics**.
+ 3. Select your account.
+ 4. Choose the `session.setKeys` extrinsic.
+ 5. Enter the following information:
+ - `keys`: Your session keys (from `author_rotateKeys`)
+ - `proof`: 0x00 (typically)
+ 6. Submit and sign the transaction.
+
+4. (Optional - primarily for non-system parachains) If the parachain uses on-chain bonding for collator selection, register as a candidate using Polkadot.js Apps:
+
+ !!! note
+ Most system parachains use invulnerables lists exclusively and do not require this step. Skip to step 5 if you're running a collator for a system parachain.
+
+ 1. Locate **Developer > Extrinsics**.
+ 2. Select `collatorSelection.registerAsCandidate`.
+ 3. Submit and sign the transaction. The required bond amount will be automatically reserved from your account based on the pallet's configured `CandidacyBond`.
+
+5. For system parachains using invulnerables lists, await governance approval for your proposal. Monitor the [Polkadot Forum](https://forum.polkadot.network){target=\_blank} governance channels and announcements. Once approved, your collator is added to the invulnerables list and will begin producing blocks in the next session or era.
+
+6. Verify your collator is active by monitoring logs for block production messages like "Prepared block for proposing" and "Imported #123". See the [Log Management](#log-management) section for log viewing commands.
+
+## Log Management
+
+Efficient log management is essential to ensure collator performance and uptime. Use the following commands to help you manage logs to monitor and maintain your collator:
+
+=== "Docker Setup"
+
+ - View logs:
+ ```bash
+ docker logs -f polkadot-collator
+ ```
+ - View recent logs (last 100 lines):
+ ```bash
+ docker logs --tail 100 polkadot-collator
+ ```
+ - Filter for errors:
+ ```bash
+ docker logs polkadot-collator 2>&1 | grep -i error
+ ```
+ - Filter for block production:
+ ```bash
+ docker logs polkadot-collator 2>&1 | grep -i "imported"
+ ```
+
+=== "systemd Setup"
+
+ - View recent logs:
+ ```bash
+ sudo journalctl -u polkadot-collator -n 100
+ ```
+ - Follow logs in real-time:
+ ```bash
+ sudo journalctl -u polkadot-collator -f
+ ```
+ - Filter for errors:
+ ```bash
+ sudo journalctl -u polkadot-collator | grep -i error
+ ```
+ - Filter for block production:
+ ```bash
+ sudo journalctl -u polkadot-collator | grep -i "imported"
+ ```
+
+## Database Maintenance
+
+Check database size periodically using the commands for your selected setup:
+
+=== "Docker Setup"
+
+ ```bash
+ # Replace with your mounted data directory path
+ du -sh ./collator-data
+ ```
+
+=== "systemd Setup"
+
+ ```bash
+ du -sh /var/lib/polkadot-collator
+ ```
+
+The collator node handles pruning automatically based on configuration.
+
+## Updates and Upgrades
+
+Updates or upgrades can happen on either the runtime or client. Runtime upgrades happen automatically via on-chain governance and do not require manual action on your part. Client upgrades do require a manual binary update process performed via terminal commands as follows:
+
+=== "Docker Setup"
+
+ 1. Stop the service:
+ ```bash
+ sudo systemctl stop polkadot-collator
+ ```
+
+ 2. Backup data (recommended):
+ ```bash
+ sudo cp -r /var/lib/polkadot-collator /var/lib/polkadot-collator.backup
+ ```
+
+ 3. Pull the new Docker image:
+ ```bash
+ docker pull parity/polkadot-parachain:
+ ```
+
+ 4. Update the image tag in your systemd service file:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-collator.service
+ ```
+
+ 5. Reload systemd and restart the service:
+ ```bash
+ sudo systemctl daemon-reload
+ sudo systemctl start polkadot-collator
+ ```
+
+ 6. Verify the service is running:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+=== "Manual Setup"
+
+ 1. Stop the service:
+ ```bash
+ sudo systemctl stop polkadot-collator
+ ```
+
+ 2. Backup data (recommended):
+ ```bash
+ sudo cp -r /var/lib/polkadot-collator /var/lib/polkadot-collator.backup
+ ```
+
+ 3. Download the new binary from [GitHub releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ wget https://github.com/paritytech/polkadot-sdk/releases/download//polkadot-parachain
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+ ```
+
+ 4. Verify `polkadot-parachain` version to confirm successful update:
+ ```bash
+ polkadot-parachain --version
+ ```
+
+ 5. Restart the service:
+ ```bash
+ sudo systemctl start polkadot-collator
+ ```
+
+ 6. Verify the service is running:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+## Conclusion
+
+Running a collator node is essential for parachain operation and network security. By following this guide, you have set up a production-ready collator that:
+
+- Produces blocks for your parachain and maintains network consensus.
+- Implements comprehensive security measures to protect keys and operations.
+- Supports robust monitoring and alerting for reliable performance.
+- Follows best practices for both Docker and systemd deployments.
+
+As a collator operator, you play a vital role in your parachain's infrastructure. Regular maintenance, security updates, and monitoring will ensure your collator continues to perform reliably. Stay engaged with your parachain community and keep up with updates to maintain optimal performance and security.
diff --git a/.ai/pages/node-infrastructure-run-a-node-parachain-rpc.md b/.ai/pages/node-infrastructure-run-a-node-parachain-rpc.md
new file mode 100644
index 000000000..b5b394b3a
--- /dev/null
+++ b/.ai/pages/node-infrastructure-run-a-node-parachain-rpc.md
@@ -0,0 +1,546 @@
+---
+title: Run a Parachain RPC Node
+description: Complete guide to set up and run an RPC node for any Polkadot parachain, with system parachains as examples.
+categories: Infrastructure
+url: https://docs.polkadot.com/node-infrastructure/run-a-node/parachain-rpc/
+---
+
+# Run a Parachain RPC Node
+
+## Overview
+
+Running an RPC node for a parachain enables applications, wallets, and users to interact with the parachain's functionality.
+
+Each parachain RPC node provides access through the Polkadot SDK Node RPC (Port 9944), offering native Polkadot API access via WebSocket and HTTP. This setup enables block explorer indexing and provides full compatibility with Polkadot SDK development tools.
+
+!!! note
+
+ The parameters and configurations in this guide are provided as illustrative examples. You may need to modify them according to your specific environment, hardware capabilities, and network conditions.
+
+## Obtaining a Chain Specification
+
+To run an RPC node for any parachain, you need its **chain specification file**. This JSON file defines the network parameters, genesis state, and bootnodes.
+
+### System Parachains
+
+System parachain chain specs are available from multiple sources:
+
+**Option 1: Chainspec Collection (Recommended)**
+
+Visit the [Chainspec Collection](https://paritytech.github.io/chainspecs/) to download official chain specifications.
+
+**Option 2: Polkadot SDK Repository**
+
+Download directly from the Polkadot SDK repository:
+
+```bash
+# Example for People Chain
+curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/people-polkadot.json -o chain-spec.json
+```
+
+| System Parachain | Para ID | Chain Spec File | Snapshot Path |
+|------------------|---------|-----------------|---------------|
+| **Bridge Hub** | 1002 | `bridge-hub-polkadot.json` | `polkadot-bridge-hub-rocksdb-archive` |
+| **People Chain** | 1004 | `people-polkadot.json` | `polkadot-people-rocksdb-archive` |
+| **Coretime Chain** | 1005 | `coretime-polkadot.json` | `polkadot-coretime-rocksdb-archive` |
+
+### Other Parachains
+
+For non-system parachains, check the parachain's documentation for official chain specification files.
+
+!!! note
+
+ Throughout this guide, we use **People Chain** as the example. To set up a different parachain, substitute the chain spec file, snapshot path, and chain name with values for your target parachain.
+
+## Prerequisites
+
+### Hardware Requirements
+
+RPC nodes serving production traffic require robust hardware:
+
+- **CPU**: 8+ cores (16+ cores for high traffic)
+- **Memory**: 64 GB RAM minimum (128 GB recommended for high traffic)
+- **Storage**:
+ - Storage requirements vary by parachain. System parachains: Asset Hub (~600-800 GB), Bridge Hub (~500-600 GB), Collectives (~400-500 GB), People Chain (~300-400 GB), Coretime (~300-400 GB). For non-system parachains, check the [snapshot sizes](https://snapshots.polkadot.io/){target=\_blank} if available.
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for query performance
+- **Network**:
+ - Public IP address
+ - 1 Gbps connection (for high traffic scenarios)
+ - Stable internet connection with sufficient bandwidth
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (Polkadot SDK WebSocket RPC)
+ - 9933 (Polkadot SDK HTTP RPC)
+ - 9615 (Prometheus metrics - optional)
+ - Consider DDoS protection and rate limiting for production deployments
+
+!!! note
+
+ For development or low-traffic scenarios, you can reduce these requirements proportionally. Consider using a reverse proxy (nginx, Caddy) for production deployments.
+
+### Software Requirements
+
+Required software:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+- **rclone**: (Optional but recommended) Command-line program for managing files on cloud storage (https://rclone.org/downloads/)
+
+## Setup Options
+
+This guide provides two options for deployment:
+
+- **Docker-based Setup**: Best for simpler set up and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+Select the best option for your project, then use the steps in the following tabs to complete set up.
+
+=== "Docker-Based Setup"
+
+ This option uses Docker containers for the Polkadot SDK node, making it easy to set up and manage. Follow these steps to set your RPC node using Docker:
+
+ 1. Download your parachain's chain specification as described in [Obtaining a Chain Specification](#obtaining-a-chain-specification).
+
+ 2. (Optional but recommended) Download database snapshots:
+ - Using pre-synchronized snapshots significantly reduces initial sync time from several days to just a few hours. You need to download both parachain and relay chain data.
+ - You can obtain the latest snapshot from the [Snapshot Provider](https://snapshots.polkadot.io/){target=\_blank}. Follow these steps to download and use snapshots:
+
+ !!! note
+
+ Snapshots are available for system parachains and the Polkadot relay chain. For other parachains, check with the parachain team for snapshot availability or sync from genesis.
+
+ 1. Create new directories with the following commands:
+ ```bash
+ mkdir -p my-node-data/chains/people-polkadot/db
+ mkdir -p my-node-data/chains/polkadot/db
+ ```
+ 2. Download the appropriate snapshots using the following commands:
+
+ === "Archive Node"
+
+ Archive node setup maintains complete parachain history. Download both parachain archive and relay chain pruned snapshots:
+
+ **Parachain archive snapshot** (People Chain example):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_PARACHAIN="https://snapshots.polkadot.io/polkadot-people-rocksdb-archive/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_PARACHAIN/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_PARACHAIN \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/people-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ === "Pruned Node"
+
+ Pruned node setup keeps recent state for smaller storage. Download both parachain pruned and relay chain pruned snapshots:
+
+ **Parachain pruned snapshot** (People Chain example):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_PARACHAIN="https://snapshots.polkadot.io/polkadot-people-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_PARACHAIN/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_PARACHAIN \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/people-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ 3. Launch the parachain node using the official [Parity Docker image](https://hub.docker.com/r/parity/polkadot-parachain){target=\_blank}:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```bash
+ docker run -d --name people-chain-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/people-polkadot.json:/people-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PeopleChainRPC \
+ --base-path=/data \
+ --chain=/people-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```bash
+ docker run -d --name people-chain-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/people-polkadot.json:/people-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PeopleChainRPC \
+ --base-path=/data \
+ --chain=/people-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ !!! note
+
+ The `parity/polkadot-parachain` image works for system parachains and parachains built with standard Cumulus templates. For parachains with custom runtimes, check the parachain's documentation for their specific Docker image or binary.
+
+ Critical configuration parameters include port mappings and node parameters:
+
+ === "Port mappings"
+
+ - `9944`: Polkadot SDK RPC endpoint (WebSocket/HTTP)
+ - `9933`: Polkadot SDK HTTP RPC endpoint
+ - `9615`: Prometheus metrics endpoint
+ - `30333/30334`: P2P networking ports
+
+ === "Node parameters"
+
+ - `--unsafe-rpc-external`: Enables external RPC access
+ - `--rpc-cors=all`: Allows all origins for CORS
+ - `--rpc-methods=safe`: Only allows safe RPC methods
+ - `--state-pruning=archive` or `--state-pruning=1000`: Archive keeps complete state history, pruned keeps last 1000 blocks
+ - `--blocks-pruning=archive` or `--blocks-pruning=256`: Archive keeps all blocks, pruned keeps last 256 finalized blocks
+ - `--prometheus-external`: Exposes metrics externally
+
+ !!! warning
+
+ The `--unsafe-rpc-external` flag should only be used in development or properly secured environments. For production, use a reverse proxy with authentication.
+
+ 4. Monitor the node synchronization status using the following command:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_syncState", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ You should see a response similar to the following:
+
+ ```json
+ {
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "startingBlock":0,
+ "currentBlock":3394816,
+ "highestBlock":3394816
+ }
+ }
+ ```
+
+ When synchronization is complete, `currentBlock` will be equal to `highestBlock`.
+
+ 5. You can use a few different commands to verify your node is running properly:
+
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ 6. Use the following commands to manage your Docker containers:
+
+ - View node logs:
+ ```bash
+ docker logs -f people-chain-rpc
+ ```
+ - Stop container:
+ ```bash
+ docker stop people-chain-rpc
+ ```
+ - Start container:
+ ```bash
+ docker start people-chain-rpc
+ ```
+ - Remove container:
+ ```bash
+ docker rm people-chain-rpc
+ ```
+
+=== "Manual systemd Setup"
+
+ This option provides more control and is recommended for production environments requiring custom configurations.
+
+ 1. Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ Check the [Polkadot SDK releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank} page for the latest stable version.
+
+ 2. Download your parachain's chain specification as described in [Obtaining a Chain Specification](#obtaining-a-chain-specification).
+
+ 3. Create user and directory structures using the following commands:
+ - Create a dedicated user:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+ - Create data directory:
+ ```bash
+ sudo mkdir -p /var/lib/people-chain-rpc
+ ```
+ - Copy the chain spec to the directory:
+ ```bash
+ sudo cp people-polkadot.json /var/lib/people-chain-rpc/
+ ```
+ - Set permissions:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/people-chain-rpc
+ ```
+
+ 4. Create a systemd service file for the Polkadot SDK RPC node:
+ ```bash
+ sudo nano /etc/systemd/system/people-chain-rpc.service
+ ```
+
+ 5. Open the new service file and add the configuration for your chosen node type:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```ini
+ [Unit]
+ Description=People Chain RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/people-chain-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PeopleChainRPC \
+ --chain=/var/lib/people-chain-rpc/people-polkadot.json \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```ini
+ [Unit]
+ Description=People Chain RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/people-chain-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PeopleChainRPC \
+ --chain=/var/lib/people-chain-rpc/people-polkadot.json \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ 6. Start the service using the following commands:
+ - Reload systemd:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+ - Enable service to start on boot:
+ ```bash
+ sudo systemctl enable people-chain-rpc
+ ```
+ - Start the Polkadot SDK node:
+ ```bash
+ sudo systemctl start people-chain-rpc
+ ```
+ - Check status and wait for sync:
+ ```bash
+ sudo systemctl status people-chain-rpc
+ sudo journalctl -u people-chain-rpc -f
+ ```
+
+ 7. You can use a few different commands to verify your node is running properly:
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+## Conclusion
+
+Running a parachain RPC node provides critical infrastructure for accessing Polkadot network services. By following this guide, you have set up a production-ready RPC node that:
+
+- Provides reliable access to parachain functionality for applications and users.
+- Supports flexible deployment with both Docker and systemd options.
+- Implements comprehensive monitoring, security, and maintenance practices.
+- Can be adapted for any parachain by substituting the appropriate chain specification.
+
+Whether you're running a node for system parachains (People Chain, Bridge Hub, Coretime Chain) or other parachains in the ecosystem, regular maintenance and monitoring will ensure your RPC node continues to provide reliable service. Stay updated with the latest releases and best practices to keep your infrastructure secure and performant.
diff --git a/.ai/pages/node-infrastructure-run-a-node-polkadot-hub-rpc.md b/.ai/pages/node-infrastructure-run-a-node-polkadot-hub-rpc.md
new file mode 100644
index 000000000..70fdd2192
--- /dev/null
+++ b/.ai/pages/node-infrastructure-run-a-node-polkadot-hub-rpc.md
@@ -0,0 +1,504 @@
+---
+title: Run an RPC Node for Polkadot Hub
+description: Follow this guide to understand hardware and software requirements and how to set up and run an RPC node for Polkadot Hub with Polkadot SDK RPC endpoints.
+categories: Infrastructure
+url: https://docs.polkadot.com/node-infrastructure/run-a-node/polkadot-hub-rpc/
+---
+
+# Run an RPC Node for Polkadot Hub
+
+## Overview
+
+[Polkadot Hub](/reference/polkadot-hub/){target=\_blank} is the entry point to Polkadot for all users and application developers. It provides access to essential Web3 services, including:
+
+- **Asset Management**: Native support for fungible and non-fungible assets
+- **Governance, Staking, and Treasury**: Core protocol operations
+- **Cross-chain Communication**: XCM message handling
+
+Running an RPC node for Polkadot Hub enables applications, wallets, and users to interact with the parachain through:
+
+- **Polkadot SDK Node RPC** (Port 9944): Native Polkadot API (WebSocket and HTTP)
+
+This setup enables block explorer indexing and provides full compatibility with Polkadot SDK development tools.
+
+!!! note
+
+ The parameters and configurations in this guide are provided as illustrative examples. You may need to modify them according to your specific environment, hardware capabilities, and network conditions.
+
+## Prerequisites
+
+### Hardware Requirements
+
+RPC nodes serving production traffic require robust hardware. The following should be considered the minimum standard to effectively operate an RPC node:
+
+- **CPU**: 8+ cores (16+ cores for high traffic)
+- **Memory**: 64 GB RAM minimum (128 GB recommended for high traffic)
+- **Storage**:
+ - 500 GB+ NVMe SSD for parachain state (archive nodes require 600-800 GB+)
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for query performance
+- **Network**:
+ - Public IP address
+ - 1 Gbps connection (for high traffic scenarios)
+ - Stable internet connection with sufficient bandwidth
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (Polkadot SDK WebSocket RPC)
+ - 9933 (Polkadot SDK HTTP RPC)
+ - 9615 (Prometheus metrics - optional)
+ - Consider DDoS protection and rate limiting for production deployments
+
+**Note**: For development or low-traffic scenarios, you can reduce these requirements proportionally. Consider using a reverse proxy (nginx, Caddy) for production deployments.
+
+### Software Requirements
+
+Required software:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+- **rclone**: (Optional but recommended) Command-line program for managing files on cloud storage (https://rclone.org/downloads/)
+
+## Setup Options
+
+This guide provides two options for deployment:
+
+- **Docker-based Setup**: Best for simpler set up and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+Select the best option for your project, then use the steps in the following tabs to complete set up.
+
+=== "Docker-Based Setup"
+
+ This option uses Docker containers for the Polkadot SDK node, making it easy to set up and manage. Follow these steps to set your RPC node using Docker:
+
+ 1. Download the official Polkadot Hub (formerly known as Asset Hub) chain specification:
+ ```bash
+ curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/asset-hub-polkadot.json -o asset-hub-polkadot.json
+ ```
+
+ !!! note
+
+ This chain specification is the official configuration file that defines the network parameters for Polkadot Hub.
+
+ 2. (Optional but recommended) Download database snapshots:
+ - Using pre-synchronized snapshots significantly reduces initial sync time from several days to just a few hours. You need to download both parachain and relay chain data.
+ - You can obtain the latest snapshot from the [Snapshot Provider](https://snapshots.polkadot.io/){target=\_blank}. Follow these steps to download and use snapshots:
+ 1. Create new directories with the following commands:
+ ```bash
+ mkdir -p my-node-data/chains/asset-hub-polkadot/db
+ mkdir -p my-node-data/chains/polkadot/db
+ ```
+ 2. Download the appropriate snapshots using the following commands:
+
+ === "Archive Node"
+
+ Archive node setup maintains complete parachain history (~600-800 GB total). Download both Asset Hub archive and Relay chain pruned snapshots:
+
+ **Asset Hub archive snapshot** (~400 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_ASSET_HUB="https://snapshots.polkadot.io/polkadot-asset-hub-rocksdb-archive/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_ASSET_HUB/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_ASSET_HUB \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/asset-hub-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ === "Pruned Node"
+
+ Pruned node setup keeps recent state for smaller storage (~500 GB total). Download both Asset Hub pruned and Relay chain pruned snapshots:
+
+ **Asset Hub pruned snapshot**:
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_ASSET_HUB="https://snapshots.polkadot.io/polkadot-asset-hub-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_ASSET_HUB/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_ASSET_HUB \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/asset-hub-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+ 3. Launch Polkadot Hub Node using the official [Parity Docker image](https://hub.docker.com/r/parity/polkadot-parachain){target=\_blank}:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```bash
+ docker run -d --name polkadot-hub-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/asset-hub-polkadot.json:/asset-hub-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PolkadotHubRPC \
+ --base-path=/data \
+ --chain=/asset-hub-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```bash
+ docker run -d --name polkadot-hub-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/asset-hub-polkadot.json:/asset-hub-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PolkadotHubRPC \
+ --base-path=/data \
+ --chain=/asset-hub-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ Critical configuration parameters include port mappings and node parameters:
+
+ === "Port mappings"
+
+ - `9944`: Polkadot SDK RPC endpoint (WebSocket/HTTP)
+ - `9933`: Polkadot SDK HTTP RPC endpoint
+ - `9615`: Prometheus metrics endpoint
+ - `30333/30334`: P2P networking ports
+
+ === "Node parameters"
+
+ - `--unsafe-rpc-external`: Enables external RPC access
+ - `--rpc-cors=all`: Allows all origins for CORS
+ - `--rpc-methods=safe`: Only allows safe RPC methods
+ - `--state-pruning=archive` or `--state-pruning=1000`: Archive keeps complete state history, pruned keeps last 1000 blocks
+ - `--blocks-pruning=archive` or `--blocks-pruning=256`: Archive keeps all blocks, pruned keeps last 256 finalized blocks
+ - `--prometheus-external`: Exposes metrics externally
+
+ !!! warning
+
+ The `--unsafe-rpc-external` flag should only be used in development or properly secured environments. For production, use a reverse proxy with authentication.
+
+ 4. Monitor the node synchronization status using the following command:
+
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_syncState", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ You should see a response similar to the following:
+
+ ```json
+ {
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "startingBlock":0,
+ "currentBlock":3394816,
+ "highestBlock":3394816
+ }
+ }
+ ```
+
+ When synchronization is complete, `currentBlock` will be equal to `highestBlock`.
+
+ 5. You can use the `system_health` command to verify your node is running properly:
+
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ 6. Use the following commands to manage your Docker containers:
+
+ - View node logs:
+ ```bash
+ docker logs -f polkadot-hub-rpc
+ ```
+ - Stop container:
+ ```bash
+ docker stop polkadot-hub-rpc
+ ```
+ - Start container:
+ ```bash
+ docker start polkadot-hub-rpc
+ ```
+ - Remove container:
+ ```bash
+ docker rm polkadot-hub-rpc
+ ```
+
+=== "Manual systemd Setup"
+
+ This option provides more control and is recommended for production environments requiring custom configurations.
+
+ 1. Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ 2. Download the Polkadot Hub chain specification:
+ ```bash
+ curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/asset-hub-polkadot.json -o asset-hub-polkadot.json
+ ```
+
+ 3. Create user and directory structures using the following commands:
+ - Create a dedicated user:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+ - Create data directory:
+ ```bash
+ sudo mkdir -p /var/lib/polkadot-hub-rpc
+ ```
+ - Copy the chain spec to the directory:
+ ```bash
+ sudo cp asset-hub-polkadot.json /var/lib/polkadot-hub-rpc/
+ ```
+ - Set permissions:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/polkadot-hub-rpc
+ ```
+
+ 4. Create a systemd service file for the Polkadot SDK RPC node:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-hub-rpc.service
+ ```
+
+ 5. Open the new service file and add the configuration for your chosen node type:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```ini
+ [Unit]
+ Description=Polkadot Hub RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-hub-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PolkadotHubRPC \
+ --chain=/var/lib/polkadot-hub-rpc/asset-hub-polkadot.json \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```ini
+ [Unit]
+ Description=Polkadot Hub RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-hub-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PolkadotHubRPC \
+ --chain=/var/lib/polkadot-hub-rpc/asset-hub-polkadot.json \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ 6. Start the service using the following commands:
+ - Reload systemd:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+ - Enable service to start on boot:
+ ```bash
+ sudo systemctl enable polkadot-hub-rpc
+ ```
+ - Start the Polkadot SDK node:
+ ```bash
+ sudo systemctl start polkadot-hub-rpc
+ ```
+ - Check status and wait for sync:
+ ```bash
+ sudo systemctl status polkadot-hub-rpc
+ sudo journalctl -u polkadot-hub-rpc -f
+ ```
+
+ 7. You can use a few different commands to verify your node is running properly:
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+## Conclusion
+
+Running an RPC node for Polkadot Hub provides essential infrastructure for applications and users to interact with the network. By following this guide, you have set up a production-ready RPC node that:
+
+- Provides reliable access to Polkadot Hub's asset management, governance, and cross-chain communication features.
+- Supports both Docker and systemd deployment options for flexibility.
+- Implements proper monitoring, security, and maintenance practices.
+- Serves as a foundation for building and operating Polkadot SDK applications.
+
+Regular maintenance, security updates, and monitoring will ensure your RPC node continues to serve your users reliably. As the Polkadot network evolves, stay informed about updates and best practices through the official channels and community resources listed in this guide.
diff --git a/.ai/pages/nodes-and-validators-run-a-node-bootnode.md b/.ai/pages/node-infrastructure-run-a-node-relay-chain-bootnode.md
similarity index 98%
rename from .ai/pages/nodes-and-validators-run-a-node-bootnode.md
rename to .ai/pages/node-infrastructure-run-a-node-relay-chain-bootnode.md
index 33f135611..8b91741f0 100644
--- a/.ai/pages/nodes-and-validators-run-a-node-bootnode.md
+++ b/.ai/pages/node-infrastructure-run-a-node-relay-chain-bootnode.md
@@ -2,7 +2,7 @@
title: Set Up a Bootnode
description: Learn how to configure and run a bootnode for Polkadot, including P2P, WS, and secure WSS connections with network key management and proxies.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-node/bootnode/
+url: https://docs.polkadot.com/node-infrastructure/run-a-node/relay-chain/bootnode/
---
# Set Up a Bootnode
diff --git a/.ai/pages/nodes-and-validators-run-a-node-full-node.md b/.ai/pages/node-infrastructure-run-a-node-relay-chain-full-node.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-node-full-node.md
rename to .ai/pages/node-infrastructure-run-a-node-relay-chain-full-node.md
index 8ba35da3c..05c3394fc 100644
--- a/.ai/pages/nodes-and-validators-run-a-node-full-node.md
+++ b/.ai/pages/node-infrastructure-run-a-node-relay-chain-full-node.md
@@ -2,7 +2,7 @@
title: Set Up a Node
description: Learn how to install, configure, and run Polkadot nodes, including setting up different node types and connecting to the network.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-node/full-node/
+url: https://docs.polkadot.com/node-infrastructure/run-a-node/relay-chain/full-node/
---
# Set Up a Node
diff --git a/.ai/pages/nodes-and-validators-run-a-node-secure-wss.md b/.ai/pages/node-infrastructure-run-a-node-relay-chain-secure-wss.md
similarity index 98%
rename from .ai/pages/nodes-and-validators-run-a-node-secure-wss.md
rename to .ai/pages/node-infrastructure-run-a-node-relay-chain-secure-wss.md
index 27810abc3..c39c29993 100644
--- a/.ai/pages/nodes-and-validators-run-a-node-secure-wss.md
+++ b/.ai/pages/node-infrastructure-run-a-node-relay-chain-secure-wss.md
@@ -2,7 +2,7 @@
title: Set Up Secure WebSocket
description: Instructions on enabling SSL for your node and setting up a secure WebSocket proxy server using nginx for remote connections.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-node/secure-wss/
+url: https://docs.polkadot.com/node-infrastructure/run-a-node/relay-chain/secure-wss/
---
# Set Up Secure WebSocket
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management.md b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-key-management.md
similarity index 98%
rename from .ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management.md
rename to .ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-key-management.md
index 25c74598c..1f688736e 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-key-management.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-key-management.md
@@ -2,7 +2,7 @@
title: Validator Key Management
description: Learn how to generate and manage validator keys, including session keys for consensus participation and node keys for maintaining a stable network identity.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/onboarding-and-offboarding/key-management/
---
# Key Management
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator.md b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-set-up-validator.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator.md
rename to .ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-set-up-validator.md
index 2f7566b64..4fd33b1ef 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-set-up-validator.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-set-up-validator.md
@@ -2,7 +2,7 @@
title: Set Up a Validator
description: Set up a Polkadot validator node to secure the network and earn staking rewards. Follow this step-by-step guide to install, configure, and manage your node.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/onboarding-and-offboarding/set-up-validator/
---
# Set Up a Validator
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating.md b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-start-validating.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating.md
rename to .ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-start-validating.md
index fdec84d1d..0ca3cc0fc 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-start-validating.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-start-validating.md
@@ -2,7 +2,7 @@
title: Start Validating
description: Learn how to start validating on Polkadot by choosing a network, syncing your node, bonding DOT tokens, and activating your validator.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/start-validating/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/onboarding-and-offboarding/start-validating/
---
# Start Validating
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating.md b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-stop-validating.md
similarity index 96%
rename from .ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating.md
rename to .ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-stop-validating.md
index 922e9784b..5cff77ad4 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-onboarding-and-offboarding-stop-validating.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-onboarding-and-offboarding-stop-validating.md
@@ -2,7 +2,7 @@
title: Stop Validating
description: Learn to safely stop validating on Polkadot, including chilling, unbonding tokens, and purging validator keys.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/onboarding-and-offboarding/stop-validating/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/onboarding-and-offboarding/stop-validating/
---
# Stop Validating
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-general-management.md b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-general-management.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-validator-operational-tasks-general-management.md
rename to .ai/pages/node-infrastructure-run-a-validator-operational-tasks-general-management.md
index 8bceb81b8..9c8ac6502 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-general-management.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-general-management.md
@@ -2,7 +2,7 @@
title: General Management
description: Optimize your Polkadot validator setup with advanced configuration techniques. Learn how to boost performance, enhance security, and ensure seamless operations.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/general-management/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/operational-tasks/general-management/
---
# General Management
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-pause-validating.md b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-pause-validating.md
similarity index 97%
rename from .ai/pages/nodes-and-validators-run-a-validator-operational-tasks-pause-validating.md
rename to .ai/pages/node-infrastructure-run-a-validator-operational-tasks-pause-validating.md
index f29841b3e..154270d5e 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-pause-validating.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-pause-validating.md
@@ -2,7 +2,7 @@
title: Pause Validating
description: Learn how to temporarily pause staking activity in Polkadot using the chill extrinsic, with guidance for validators and nominators.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/pause-validating/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/operational-tasks/pause-validating/
---
# Pause Validating
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node.md b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-upgrade-your-node.md
similarity index 98%
rename from .ai/pages/nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node.md
rename to .ai/pages/node-infrastructure-run-a-validator-operational-tasks-upgrade-your-node.md
index 5e26ac7a4..d3bf39683 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-operational-tasks-upgrade-your-node.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-operational-tasks-upgrade-your-node.md
@@ -2,7 +2,7 @@
title: Upgrade a Validator Node
description: Guide to seamlessly upgrading your Polkadot validator node, managing session keys, and executing server maintenance while avoiding downtime and slashing risks.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/operational-tasks/upgrade-your-node/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/operational-tasks/upgrade-your-node/
---
# Upgrade a Validator Node
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-requirements.md b/.ai/pages/node-infrastructure-run-a-validator-requirements.md
similarity index 98%
rename from .ai/pages/nodes-and-validators-run-a-validator-requirements.md
rename to .ai/pages/node-infrastructure-run-a-validator-requirements.md
index cf6fad411..2997baeb9 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-requirements.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-requirements.md
@@ -2,7 +2,7 @@
title: Validator Requirements
description: Explore the technical and system requirements for running a Polkadot validator, including setup, hardware, staking prerequisites, and security best practices.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/requirements/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/requirements/
---
# Validator Requirements
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes.md b/.ai/pages/node-infrastructure-run-a-validator-staking-mechanics-offenses-and-slashes.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes.md
rename to .ai/pages/node-infrastructure-run-a-validator-staking-mechanics-offenses-and-slashes.md
index 48e739f9e..6014711bd 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-offenses-and-slashes.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-staking-mechanics-offenses-and-slashes.md
@@ -2,7 +2,7 @@
title: Offenses and Slashes
description: Learn about how Polkadot discourages validator misconduct via an offenses and slashing system, including details on offenses and their consequences.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/offenses-and-slashes/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/staking-mechanics/offenses-and-slashes/
---
# Offenses and Slashes
diff --git a/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md b/.ai/pages/node-infrastructure-run-a-validator-staking-mechanics-rewards.md
similarity index 99%
rename from .ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md
rename to .ai/pages/node-infrastructure-run-a-validator-staking-mechanics-rewards.md
index d301d24c4..557244eed 100644
--- a/.ai/pages/nodes-and-validators-run-a-validator-staking-mechanics-rewards.md
+++ b/.ai/pages/node-infrastructure-run-a-validator-staking-mechanics-rewards.md
@@ -2,7 +2,7 @@
title: Rewards Payout
description: Learn how validator rewards work on the network, including era points, payout distribution, running multiple validators, and nominator payments.
categories: Infrastructure
-url: https://docs.polkadot.com/nodes-and-validators/run-a-validator/staking-mechanics/rewards/
+url: https://docs.polkadot.com/node-infrastructure/run-a-validator/staking-mechanics/rewards/
---
# Rewards Payout
diff --git a/.nav.yml b/.nav.yml
index 17e5ccd0e..4f6f9672b 100644
--- a/.nav.yml
+++ b/.nav.yml
@@ -4,5 +4,5 @@ nav:
- 'Parachains': parachains
# - 'Chain Interactions': chain-interactions
# 'Get Support': get-support
- - 'Nodes and Validators': nodes-and-validators
- # - 'Technical Reference': reference
+ - 'Node Infrastructure': node-infrastructure
+ - 'Technical Reference': reference
diff --git a/nodes-and-validators/.nav.yml b/node-infrastructure/.nav.yml
similarity index 52%
rename from nodes-and-validators/.nav.yml
rename to node-infrastructure/.nav.yml
index 17b62067c..d907a96bb 100644
--- a/nodes-and-validators/.nav.yml
+++ b/node-infrastructure/.nav.yml
@@ -1,3 +1,5 @@
nav:
+ - 'Overview': overview.md
- 'Run a Node': run-a-node
+ - 'Run a Collator': run-a-collator
- 'Run a Validator': run-a-validator
diff --git a/node-infrastructure/overview.md b/node-infrastructure/overview.md
new file mode 100644
index 000000000..4b06c00ee
--- /dev/null
+++ b/node-infrastructure/overview.md
@@ -0,0 +1,85 @@
+---
+title: Node Infrastructure
+description: Overview of running nodes in the Polkadot ecosystem, including RPC nodes, collators, and validators.
+categories: Infrastructure
+---
+
+# Node Infrastructure Overview
+
+## Introduction
+
+The Polkadot network relies on various types of nodes to maintain security, provide data access, and produce blocks. This section covers everything you need to know about running infrastructure for the Polkadot ecosystem.
+
+Whether you want to provide RPC endpoints for applications, produce blocks for a parachain, or secure the relay chain as a validator, this guide will help you understand your options and get started.
+
+## Node Types
+
+### RPC Nodes
+
+RPC nodes provide API access to blockchain data without participating in consensus. They are essential infrastructure for:
+
+- **Applications and dApps**: Query blockchain state and submit transactions
+- **Block explorers**: Index and display blockchain data
+- **Wallets**: Check balances and broadcast transactions
+- **Development**: Test and debug applications
+
+RPC nodes can be run for both the relay chain and parachains, with varying levels of data retention:
+
+- **Pruned Nodes**: Keep recent state and a limited number of finalized blocks. Suitable for most applications that only need current state and recent history. More efficient in terms of storage and sync time.
+- **Archive Nodes**: Maintain complete historical state and all blocks since genesis. Required for block explorers, analytics platforms, or applications that need to query historical data at any point in time.
+
+**Transaction Broadcasting**: RPC nodes play a crucial role in transaction submission and propagation. When a client submits a transaction via RPC methods like `author_submitExtrinsic`, the node validates the transaction format, adds it to its local transaction pool, and broadcasts it across the P2P network. Block producers (collators or validators) then pick up these transactions from their pools for inclusion in blocks. This makes RPC nodes the primary gateway for users and applications to interact with the blockchain.
+
+### Collators
+
+Collators are block producers for parachains. They perform critical functions:
+
+- **Collect transactions**: Aggregate user transactions into blocks
+- **Produce blocks**: Create parachain block candidates
+- **Generate and package PoV**: Generate the Proof-of-Validity containing the state transition proof and necessary witness data for validation
+- **Submit to validators**: Send block candidates and PoVs to relay chain validators
+
+Unlike validators, collators do not provide security guarantees—that responsibility lies with relay chain validators. However, collators are essential for parachain liveness and censorship resistance.
+
+### Validators
+
+Validators secure the Polkadot relay chain through [Nominated Proof of Stake (NPoS)](https://wiki.polkadot.network/docs/learn-staking){target=\_blank}. They:
+
+- **Validate blocks**: Verify parachain blocks and relay chain transactions
+- **Participate in consensus**: Run [BABE](https://wiki.polkadot.network/docs/learn-consensus#babe-block-production){target=\_blank} and [GRANDPA](https://wiki.polkadot.network/docs/learn-consensus#grandpa-finality-gadget){target=\_blank} protocols
+- **Earn rewards**: Receive staking rewards for honest behavior
+- **Risk slashing**: Face penalties for misbehavior or downtime
+
+Running a validator requires significant technical expertise, reliable infrastructure, and a stake of DOT tokens.
+
+## Next Steps
+
+Choose your path based on your goals:
+
+
+
+- :material-api:{ .lg .middle } **Run RPC Nodes**
+
+ ---
+
+ Provide API access for applications, explorers, and wallets
+
+ [:octicons-arrow-right-24: Run a Node](/node-infrastructure/run-a-node/parachain-rpc/)
+
+- :material-cube-outline:{ .lg .middle } **Run a Collator**
+
+ ---
+
+ Produce blocks for system parachains or your own parachain
+
+ [:octicons-arrow-right-24: Run a Collator](/node-infrastructure/run-a-collator/collator/)
+
+- :material-shield-check:{ .lg .middle } **Run a Validator**
+
+ ---
+
+ Secure the relay chain and earn staking rewards
+
+ [:octicons-arrow-right-24: Run a Validator](/node-infrastructure/run-a-validator/requirements/)
+
+
diff --git a/node-infrastructure/run-a-collator/.nav.yml b/node-infrastructure/run-a-collator/.nav.yml
new file mode 100644
index 000000000..a18175837
--- /dev/null
+++ b/node-infrastructure/run-a-collator/.nav.yml
@@ -0,0 +1,2 @@
+nav:
+ - 'Run a Block-Producing Collator': collator.md
diff --git a/node-infrastructure/run-a-collator/collator.md b/node-infrastructure/run-a-collator/collator.md
new file mode 100644
index 000000000..778d6aea2
--- /dev/null
+++ b/node-infrastructure/run-a-collator/collator.md
@@ -0,0 +1,546 @@
+---
+title: Run a Block-Producing Collator
+description: Learn how to set up and run a block-producing collator for Polkadot system parachains, including registration and session key management.
+categories: Infrastructure
+---
+
+# Run a Block-Producing Collator
+
+## Overview
+
+Block-producing collators are the backbone of system parachain operations. Unlike RPC or archive nodes, which maintain state, collators actively produce blocks and submit them to relay chain validators for inclusion.
+
+This guide covers setting up a block-producing collator for Polkadot system parachains. Running a collator requires:
+
+- Meeting hardware requirements for reliable block production
+- Setting up and registering session keys
+- Obtaining governance approval or meeting selection criteria
+- Maintaining high uptime and performance
+
+System parachain collators typically require governance approval or being added to the invulnerables list. This is different from non-system parachains where collator selection may be more permissionless.
+
+## Collator Responsibilities
+
+Block-producing collators perform critical functions:
+
+- Maintain full nodes for relay chain and parachain.
+- Aggregate user transactions into blocks.
+- Create parachain block candidates.
+- Produce state transition proofs (Proof-of-Validity).
+- Send block candidates to relay chain validators.
+- Enable cross-chain message passing using XCM
+
+Unlike relay chain validators, collators do not provide security guarantees—that responsibility lies with relay chain validators through the [ELVES protocol](https://wiki.polkadot.com/learn/learn-parachains-protocol/){target=\_blank}. Rather, collators are essential for network liveness and censorship resistance.
+
+## Prerequisites
+
+### Hardware Requirements
+
+Block-producing collators require robust hardware for reliable operation including the following:
+
+- **CPU**: 4+ cores (8+ cores recommended for optimal performance)
+- **Memory**: 32 GB RAM minimum (64 GB recommended)
+- **Storage**:
+ - 500 GB+ NVMe SSD for parachain data
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for block production performance
+- **Network**:
+ - Public IP address (required)
+ - 100+ Mbps connection (stable connection critical)
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (WebSocket RPC - for management)
+
+Uptime is critical. Consider redundancy and monitoring to maintain block production reliability.
+
+### Software Requirements
+
+Collators use the Polkadot Parachain binary, the standard client for running Polkadot system parachains.
+
+Required software includes the following:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+
+### Account Requirements
+
+Your account must meet the following requirements:
+
+- **Funded account**: For on-chain transactions and potential bonding
+- **Session keys**: For collator identification (generated after node setup)
+- **Node key**: For stable P2P peer ID (recommended)
+
+## Install Dependencies
+
+This guide provides two deployment options. Select the option that best fits your needs:
+
+- **Docker-based Setup**: Best for simpler setup and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+=== "Docker Setup"
+
+ Pull the Polkadot Parachain Docker image:
+
+ ```bash
+ docker pull parity/polkadot-parachain:stable2509-2
+ ```
+
+ Verify the installation:
+
+ ```bash
+ docker run --rm parity/polkadot-parachain:stable2509-2 --version
+ ```
+
+ Check [Docker Hub](https://hub.docker.com/r/parity/polkadot-parachain/tags){target=\_blank} for the latest stable tags.
+
+=== "Manual Setup"
+
+ Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ Check the [Polkadot SDK releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank} page for the latest stable version.
+
+## Generate Node Key
+
+Generating a stable node key enables a consistent peer ID across the network. Follow these steps to generate a node key:
+
+1. Create a directory for node data using the following command:
+ ```bash
+ sudo mkdir -p /var/lib/polkadot-collator
+ ```
+
+2. Generate your node key using Docker with the following command:
+ ```bash
+ docker run -it parity/subkey:latest generate-node-key > /var/lib/polkadot-collator/node.key
+ ```
+
+3. Locate your peer ID in the displayed output. It will be similar to the following example:
+ ```bash
+ 12D3KooWExcVYu7Mvjd4kxPVLwN2ZPnZ5NyLZ5ft477wqzfP2q6E
+ ```
+
+Be sure to save the peer ID for future reference.
+
+## Generate Account Key
+
+Generate an account for on-chain transactions as follows:
+
+1. Generate an account key with `sr25519` scheme using the following command:
+ ```bash
+ docker run -it parity/subkey:latest generate --scheme sr25519
+ ```
+
+ The output will be similar to the following:
+ ```bash
+ Secret phrase: embody rail hour peanut .... badge syrup luggage canvas
+ Network ID: substrate
+ Secret seed: 0x6498dd3416c491406e2c8283c76760ce4ca018478888b42315e7718778f2c2e1
+ Public key (hex): 0x2202210357e49390d4f8d868da983940fe220a0a0e00bc6feaeda462aa031810
+ Account ID: 0x2202210357e49390d4f8d868da983940fe220a0a0e00bc6feaeda462aa031810
+ Public key (SS58): 5CqJ7n72GvvF5ZzUT2HMj83KyDje4n8sXR8kuiK8HWtfDktF
+ SS58 Address: 5CqJ7n72GvvF5ZzUT2HMj83KyDje4n8sXR8kuiK8HWtfDktF
+ ```
+
+2. Save the following items displayed in the output:
+ - Secret phrase (seed) - Keep this secure!
+ - Public key (hex)
+ - Account ID
+ - SS58 Address
+
+ !!! warning
+
+ Store the secret phrase securely. Never share it. Consider using a hardware wallet for production collators.
+
+## Obtain Chain Specification
+
+Download the chain specification for your target system parachain using one of the following options:
+
+### Download from Chainspec Collection (Recommended)
+
+Follow these steps to download your specification from the Chainspec Collection:
+
+1. Visit the [Chainspec Collection](https://paritytech.github.io/chainspecs/){target=\_blank} website.
+2. Find your target system parachain.
+3. Download the chain specification JSON file.
+4. Save it as `chain-spec.json`.
+
+### Build Chainspec from Runtime
+
+Follow these steps to build a chainspec from the runtime:
+
+1. Clone the runtimes repository and navigate into it using the following commands:
+ ```bash
+ git clone https://github.com/polkadot-fellows/runtimes.git
+ cd runtimes
+ ```
+
+2. Build the desired runtime. Use the following command for Polkadot Hub:
+ ```bash
+ cargo build --release -p asset-hub-polkadot-runtime
+ ```
+
+3. Install the `chain-spec-builder` dependency using the following command:
+ ```bash
+ cargo install --locked staging-chain-spec-builder@14.0.0
+ ```
+
+4. Finally, generate the chain spec using the following commands:
+ ```bash
+ chain-spec-builder create \
+ --relay-chain polkadot \
+ --para-id 1000 \
+ --runtime target/release/wbuild/asset-hub-polkadot-runtime/asset_hub_polkadot_runtime.compact.compressed.wasm \
+ named-preset production > chain-spec.json
+ ```
+
+??? tip "System Parachain Para IDs"
+
+ - Polkadot Hub: 1000
+ - Bridge Hub: 1002
+ - People Chain: 1004
+ - Coretime Chain: 1005
+
+## Create User and Directory Structure
+
+1. Create a dedicated user with the following command:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+
+2. Use the following command to copy your chain spec to the directory:
+ ```bash
+ sudo cp chain-spec.json /var/lib/polkadot-collator/
+ ```
+
+3. Set permissions using the following command:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/polkadot-collator
+ ```
+
+## Create Systemd Service File
+
+1. Create a service file to hold the configuration for your collator:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-collator.service
+ ```
+
+2. Open the new file and add the following configuration code:
+ ```ini title="systemd/system/polkadot-collator.service"
+ [Unit]
+ Description=Polkadot System Parachain Collator
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-collator
+
+ # Block-Producing Collator Configuration
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --collator \
+ --chain=/var/lib/polkadot-collator/chain-spec.json \
+ --base-path=/var/lib/polkadot-collator \
+ --port=30333 \
+ --rpc-port=9944 \
+ --prometheus-port=9615 \
+ --node-key-file=/var/lib/polkadot-collator/node.key \
+ --name="YourCollatorName" \
+ -- \
+ --execution=wasm \
+ --chain=polkadot \
+ --port=30334 \
+ --sync=warp
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+??? note "Configuration notes"
+
+ - `--collator`: Enables block production mode
+ - `--node-key-file`: Uses the generated node key for stable peer ID
+ - `--name`: Your collator name (visible in telemetry)
+ - Relay chain uses `--sync=warp` for faster initial sync
+
+## Run the Collator
+
+Follow these steps to run your collator node:
+
+1. Reload systemd using the following command:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+
+2. Next, enable the service to start on boot using the command:
+ ```bash
+ sudo systemctl enable polkadot-collator
+ ```
+3. Now, start the service with the following command:
+ ```bash
+ sudo systemctl start polkadot-collator
+ ```
+
+4. Finally, you can check the status of the service using the command:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+To view collator service logs, use the command:
+```bash
+sudo journalctl -u polkadot-collator -f
+```
+
+## Complete Initial Sync
+
+Your collator must sync both the relay chain and parachain before producing blocks.
+
+Sync time depends on:
+
+- Network bandwidth
+- Disk I/O speed
+- Current chain size
+
+The relay chain uses warp sync for faster synchronization.
+
+!!! warning
+
+ Do not proceed with registration until both chains are fully synced. Monitor sync progress using the log viewing commands in the [Log Management](#log-management) section.
+
+## Generate Session Keys
+
+Session keys are cryptographic keys used by your collator node to sign authorship information when producing blocks. They uniquely identify your collator on the network and must be registered on-chain before your collator can participate in block production.
+
+Once your node is fully synced, use the following command to generate session keys via RPC:
+
+```bash
+curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' \
+ http://localhost:9944
+```
+
+This command returns session keys as a hexstring in the terminal. You must save these session keys as you'll need them for on-chain registration. As session keys are stored in the node's database, if you wipe the database, you'll also need to generate new keys.
+
+## Register Collator for Selection
+
+System parachains use different collator selection mechanisms. Explore the following tabs to see how mechanisms compare and determine the most suitable mechanism for registering your collator.
+
+=== "Invulnerables List"
+
+ - Fixed list of collators approved through governance.
+ - Most common for system parachains.
+ - Requires governance proposal and approval.
+
+
+=== "On-chain Selection"
+
+ - Some parachains use [pallet-collator-selection](https://paritytech.github.io/polkadot-sdk/master/pallet_collator_selection/index.html){target=\_blank}.
+ - May require bonding tokens.
+ - Automatic selection based on criteria.
+
+=== "Fellowship Decisions"
+
+ - Technical Fellowship may manage some system parachain collators.
+ - Requires Fellowship membership or approval.
+
+### Registration Process
+
+Collator registration authorizes your node to produce blocks on the network. The parachain's collator selection mechanism uses this on-chain registration to determine which nodes are eligible to author blocks.
+
+The registration process varies by system parachain. General steps include the following:
+
+1. Check the existing collators for your target parachain:
+
+ 1. Navigate to Polkadot.js Apps and connect to your system parachain.
+ 2. Locate **Developer > Chain State**.
+ 3. Query `collatorSelection.invulnerables()`
+
+2. Prepare a governance proposal for invulnerables-based selection including the following information:
+ - **Draft proposal**: Explain why you should be added as a collator
+ - **Technical details**: Provide your session keys and account ID
+ - **Infrastructure**: Describe your hardware and monitoring setup
+ - **Experience**: Detail your relevant experience
+
+ Submit the proposal to the relevant governance channels on the [Polkadot Forum](https://forum.polkadot.network){target=\_blank}.
+
+3. Once approved (or if using on-chain selection), follow these steps to register session keys using Polkadot.js Apps:
+ 1. Navigate to Polkadot.js Apps and connect to your system parachain.
+ 2. Locate **Developer > Extrinsics**.
+ 3. Select your account.
+ 4. Choose the `session.setKeys` extrinsic.
+ 5. Enter the following information:
+ - `keys`: Your session keys (from `author_rotateKeys`)
+ - `proof`: 0x00 (typically)
+ 6. Submit and sign the transaction.
+
+4. (Optional - primarily for non-system parachains) If the parachain uses on-chain bonding for collator selection, register as a candidate using Polkadot.js Apps:
+
+ !!! note
+ Most system parachains use invulnerables lists exclusively and do not require this step. Skip to step 5 if you're running a collator for a system parachain.
+
+ 1. Locate **Developer > Extrinsics**.
+ 2. Select `collatorSelection.registerAsCandidate`.
+ 3. Submit and sign the transaction. The required bond amount will be automatically reserved from your account based on the pallet's configured `CandidacyBond`.
+
+5. For system parachains using invulnerables lists, await governance approval for your proposal. Monitor the [Polkadot Forum](https://forum.polkadot.network){target=\_blank} governance channels and announcements. Once approved, your collator is added to the invulnerables list and will begin producing blocks in the next session or era.
+
+6. Verify your collator is active by monitoring logs for block production messages like "Prepared block for proposing" and "Imported #123". See the [Log Management](#log-management) section for log viewing commands.
+
+## Log Management
+
+Efficient log management is essential to ensure collator performance and uptime. Use the following commands to help you manage logs to monitor and maintain your collator:
+
+=== "Docker Setup"
+
+ - View logs:
+ ```bash
+ docker logs -f polkadot-collator
+ ```
+ - View recent logs (last 100 lines):
+ ```bash
+ docker logs --tail 100 polkadot-collator
+ ```
+ - Filter for errors:
+ ```bash
+ docker logs polkadot-collator 2>&1 | grep -i error
+ ```
+ - Filter for block production:
+ ```bash
+ docker logs polkadot-collator 2>&1 | grep -i "imported"
+ ```
+
+=== "systemd Setup"
+
+ - View recent logs:
+ ```bash
+ sudo journalctl -u polkadot-collator -n 100
+ ```
+ - Follow logs in real-time:
+ ```bash
+ sudo journalctl -u polkadot-collator -f
+ ```
+ - Filter for errors:
+ ```bash
+ sudo journalctl -u polkadot-collator | grep -i error
+ ```
+ - Filter for block production:
+ ```bash
+ sudo journalctl -u polkadot-collator | grep -i "imported"
+ ```
+
+## Database Maintenance
+
+Check database size periodically using the commands for your selected setup:
+
+=== "Docker Setup"
+
+ ```bash
+ # Replace with your mounted data directory path
+ du -sh ./collator-data
+ ```
+
+=== "systemd Setup"
+
+ ```bash
+ du -sh /var/lib/polkadot-collator
+ ```
+
+The collator node handles pruning automatically based on configuration.
+
+## Updates and Upgrades
+
+Updates or upgrades can happen on either the runtime or client. Runtime upgrades happen automatically via on-chain governance and do not require manual action on your part. Client upgrades do require a manual binary update process performed via terminal commands as follows:
+
+=== "Docker Setup"
+
+ 1. Stop the service:
+ ```bash
+ sudo systemctl stop polkadot-collator
+ ```
+
+ 2. Backup data (recommended):
+ ```bash
+ sudo cp -r /var/lib/polkadot-collator /var/lib/polkadot-collator.backup
+ ```
+
+ 3. Pull the new Docker image:
+ ```bash
+ docker pull parity/polkadot-parachain:
+ ```
+
+ 4. Update the image tag in your systemd service file:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-collator.service
+ ```
+
+ 5. Reload systemd and restart the service:
+ ```bash
+ sudo systemctl daemon-reload
+ sudo systemctl start polkadot-collator
+ ```
+
+ 6. Verify the service is running:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+=== "Manual Setup"
+
+ 1. Stop the service:
+ ```bash
+ sudo systemctl stop polkadot-collator
+ ```
+
+ 2. Backup data (recommended):
+ ```bash
+ sudo cp -r /var/lib/polkadot-collator /var/lib/polkadot-collator.backup
+ ```
+
+ 3. Download the new binary from [GitHub releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ wget https://github.com/paritytech/polkadot-sdk/releases/download//polkadot-parachain
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+ ```
+
+ 4. Verify `polkadot-parachain` version to confirm successful update:
+ ```bash
+ polkadot-parachain --version
+ ```
+
+ 5. Restart the service:
+ ```bash
+ sudo systemctl start polkadot-collator
+ ```
+
+ 6. Verify the service is running:
+ ```bash
+ sudo systemctl status polkadot-collator
+ ```
+
+## Conclusion
+
+Running a collator node is essential for parachain operation and network security. By following this guide, you have set up a production-ready collator that:
+
+- Produces blocks for your parachain and maintains network consensus.
+- Implements comprehensive security measures to protect keys and operations.
+- Supports robust monitoring and alerting for reliable performance.
+- Follows best practices for both Docker and systemd deployments.
+
+As a collator operator, you play a vital role in your parachain's infrastructure. Regular maintenance, security updates, and monitoring will ensure your collator continues to perform reliably. Stay engaged with your parachain community and keep up with updates to maintain optimal performance and security.
\ No newline at end of file
diff --git a/node-infrastructure/run-a-node/.nav.yml b/node-infrastructure/run-a-node/.nav.yml
new file mode 100644
index 000000000..747174907
--- /dev/null
+++ b/node-infrastructure/run-a-node/.nav.yml
@@ -0,0 +1,4 @@
+nav:
+ - 'Polkadot Hub RPC Node': polkadot-hub-rpc.md
+ - 'Parachain RPC Nodes': parachain-rpc.md
+ - 'Relay Chain Nodes': relay-chain
diff --git a/node-infrastructure/run-a-node/parachain-rpc.md b/node-infrastructure/run-a-node/parachain-rpc.md
new file mode 100644
index 000000000..3dbbcf988
--- /dev/null
+++ b/node-infrastructure/run-a-node/parachain-rpc.md
@@ -0,0 +1,545 @@
+---
+title: Run a Parachain RPC Node
+description: Complete guide to set up and run an RPC node for any Polkadot parachain, with system parachains as examples.
+categories: Infrastructure
+---
+
+# Run a Parachain RPC Node
+
+## Overview
+
+Running an RPC node for a parachain enables applications, wallets, and users to interact with the parachain's functionality.
+
+Each parachain RPC node provides access through the Polkadot SDK Node RPC (Port 9944), offering native Polkadot API access via WebSocket and HTTP. This setup enables block explorer indexing and provides full compatibility with Polkadot SDK development tools.
+
+!!! note
+
+ The parameters and configurations in this guide are provided as illustrative examples. You may need to modify them according to your specific environment, hardware capabilities, and network conditions.
+
+## Obtaining a Chain Specification
+
+To run an RPC node for any parachain, you need its **chain specification file**. This JSON file defines the network parameters, genesis state, and bootnodes.
+
+### System Parachains
+
+System parachain chain specs are available from multiple sources:
+
+**Option 1: Chainspec Collection (Recommended)**
+
+Visit the [Chainspec Collection](https://paritytech.github.io/chainspecs/) to download official chain specifications.
+
+**Option 2: Polkadot SDK Repository**
+
+Download directly from the Polkadot SDK repository:
+
+```bash
+# Example for People Chain
+curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/people-polkadot.json -o chain-spec.json
+```
+
+| System Parachain | Para ID | Chain Spec File | Snapshot Path |
+|------------------|---------|-----------------|---------------|
+| **Bridge Hub** | 1002 | `bridge-hub-polkadot.json` | `polkadot-bridge-hub-rocksdb-archive` |
+| **People Chain** | 1004 | `people-polkadot.json` | `polkadot-people-rocksdb-archive` |
+| **Coretime Chain** | 1005 | `coretime-polkadot.json` | `polkadot-coretime-rocksdb-archive` |
+
+### Other Parachains
+
+For non-system parachains, check the parachain's documentation for official chain specification files.
+
+!!! note
+
+ Throughout this guide, we use **People Chain** as the example. To set up a different parachain, substitute the chain spec file, snapshot path, and chain name with values for your target parachain.
+
+## Prerequisites
+
+### Hardware Requirements
+
+RPC nodes serving production traffic require robust hardware:
+
+- **CPU**: 8+ cores (16+ cores for high traffic)
+- **Memory**: 64 GB RAM minimum (128 GB recommended for high traffic)
+- **Storage**:
+ - Storage requirements vary by parachain. System parachains: Asset Hub (~600-800 GB), Bridge Hub (~500-600 GB), Collectives (~400-500 GB), People Chain (~300-400 GB), Coretime (~300-400 GB). For non-system parachains, check the [snapshot sizes](https://snapshots.polkadot.io/){target=\_blank} if available.
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for query performance
+- **Network**:
+ - Public IP address
+ - 1 Gbps connection (for high traffic scenarios)
+ - Stable internet connection with sufficient bandwidth
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (Polkadot SDK WebSocket RPC)
+ - 9933 (Polkadot SDK HTTP RPC)
+ - 9615 (Prometheus metrics - optional)
+ - Consider DDoS protection and rate limiting for production deployments
+
+!!! note
+
+ For development or low-traffic scenarios, you can reduce these requirements proportionally. Consider using a reverse proxy (nginx, Caddy) for production deployments.
+
+### Software Requirements
+
+Required software:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+- **rclone**: (Optional but recommended) Command-line program for managing files on cloud storage (https://rclone.org/downloads/)
+
+## Setup Options
+
+This guide provides two options for deployment:
+
+- **Docker-based Setup**: Best for simpler set up and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+Select the best option for your project, then use the steps in the following tabs to complete set up.
+
+=== "Docker-Based Setup"
+
+ This option uses Docker containers for the Polkadot SDK node, making it easy to set up and manage. Follow these steps to set your RPC node using Docker:
+
+ 1. Download your parachain's chain specification as described in [Obtaining a Chain Specification](#obtaining-a-chain-specification).
+
+ 2. (Optional but recommended) Download database snapshots:
+ - Using pre-synchronized snapshots significantly reduces initial sync time from several days to just a few hours. You need to download both parachain and relay chain data.
+ - You can obtain the latest snapshot from the [Snapshot Provider](https://snapshots.polkadot.io/){target=\_blank}. Follow these steps to download and use snapshots:
+
+ !!! note
+
+ Snapshots are available for system parachains and the Polkadot relay chain. For other parachains, check with the parachain team for snapshot availability or sync from genesis.
+
+ 1. Create new directories with the following commands:
+ ```bash
+ mkdir -p my-node-data/chains/people-polkadot/db
+ mkdir -p my-node-data/chains/polkadot/db
+ ```
+ 2. Download the appropriate snapshots using the following commands:
+
+ === "Archive Node"
+
+ Archive node setup maintains complete parachain history. Download both parachain archive and relay chain pruned snapshots:
+
+ **Parachain archive snapshot** (People Chain example):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_PARACHAIN="https://snapshots.polkadot.io/polkadot-people-rocksdb-archive/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_PARACHAIN/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_PARACHAIN \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/people-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ === "Pruned Node"
+
+ Pruned node setup keeps recent state for smaller storage. Download both parachain pruned and relay chain pruned snapshots:
+
+ **Parachain pruned snapshot** (People Chain example):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_PARACHAIN="https://snapshots.polkadot.io/polkadot-people-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_PARACHAIN/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_PARACHAIN \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/people-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ 3. Launch the parachain node using the official [Parity Docker image](https://hub.docker.com/r/parity/polkadot-parachain){target=\_blank}:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```bash
+ docker run -d --name people-chain-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/people-polkadot.json:/people-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PeopleChainRPC \
+ --base-path=/data \
+ --chain=/people-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```bash
+ docker run -d --name people-chain-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/people-polkadot.json:/people-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PeopleChainRPC \
+ --base-path=/data \
+ --chain=/people-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ !!! note
+
+ The `parity/polkadot-parachain` image works for system parachains and parachains built with standard Cumulus templates. For parachains with custom runtimes, check the parachain's documentation for their specific Docker image or binary.
+
+ Critical configuration parameters include port mappings and node parameters:
+
+ === "Port mappings"
+
+ - `9944`: Polkadot SDK RPC endpoint (WebSocket/HTTP)
+ - `9933`: Polkadot SDK HTTP RPC endpoint
+ - `9615`: Prometheus metrics endpoint
+ - `30333/30334`: P2P networking ports
+
+ === "Node parameters"
+
+ - `--unsafe-rpc-external`: Enables external RPC access
+ - `--rpc-cors=all`: Allows all origins for CORS
+ - `--rpc-methods=safe`: Only allows safe RPC methods
+ - `--state-pruning=archive` or `--state-pruning=1000`: Archive keeps complete state history, pruned keeps last 1000 blocks
+ - `--blocks-pruning=archive` or `--blocks-pruning=256`: Archive keeps all blocks, pruned keeps last 256 finalized blocks
+ - `--prometheus-external`: Exposes metrics externally
+
+ !!! warning
+
+ The `--unsafe-rpc-external` flag should only be used in development or properly secured environments. For production, use a reverse proxy with authentication.
+
+ 4. Monitor the node synchronization status using the following command:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_syncState", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ You should see a response similar to the following:
+
+ ```json
+ {
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "startingBlock":0,
+ "currentBlock":3394816,
+ "highestBlock":3394816
+ }
+ }
+ ```
+
+ When synchronization is complete, `currentBlock` will be equal to `highestBlock`.
+
+ 5. You can use a few different commands to verify your node is running properly:
+
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ 6. Use the following commands to manage your Docker containers:
+
+ - View node logs:
+ ```bash
+ docker logs -f people-chain-rpc
+ ```
+ - Stop container:
+ ```bash
+ docker stop people-chain-rpc
+ ```
+ - Start container:
+ ```bash
+ docker start people-chain-rpc
+ ```
+ - Remove container:
+ ```bash
+ docker rm people-chain-rpc
+ ```
+
+=== "Manual systemd Setup"
+
+ This option provides more control and is recommended for production environments requiring custom configurations.
+
+ 1. Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ Check the [Polkadot SDK releases](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank} page for the latest stable version.
+
+ 2. Download your parachain's chain specification as described in [Obtaining a Chain Specification](#obtaining-a-chain-specification).
+
+ 3. Create user and directory structures using the following commands:
+ - Create a dedicated user:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+ - Create data directory:
+ ```bash
+ sudo mkdir -p /var/lib/people-chain-rpc
+ ```
+ - Copy the chain spec to the directory:
+ ```bash
+ sudo cp people-polkadot.json /var/lib/people-chain-rpc/
+ ```
+ - Set permissions:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/people-chain-rpc
+ ```
+
+ 4. Create a systemd service file for the Polkadot SDK RPC node:
+ ```bash
+ sudo nano /etc/systemd/system/people-chain-rpc.service
+ ```
+
+ 5. Open the new service file and add the configuration for your chosen node type:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```ini
+ [Unit]
+ Description=People Chain RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/people-chain-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PeopleChainRPC \
+ --chain=/var/lib/people-chain-rpc/people-polkadot.json \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```ini
+ [Unit]
+ Description=People Chain RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/people-chain-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PeopleChainRPC \
+ --chain=/var/lib/people-chain-rpc/people-polkadot.json \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/people-chain-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ 6. Start the service using the following commands:
+ - Reload systemd:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+ - Enable service to start on boot:
+ ```bash
+ sudo systemctl enable people-chain-rpc
+ ```
+ - Start the Polkadot SDK node:
+ ```bash
+ sudo systemctl start people-chain-rpc
+ ```
+ - Check status and wait for sync:
+ ```bash
+ sudo systemctl status people-chain-rpc
+ sudo journalctl -u people-chain-rpc -f
+ ```
+
+ 7. You can use a few different commands to verify your node is running properly:
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+## Conclusion
+
+Running a parachain RPC node provides critical infrastructure for accessing Polkadot network services. By following this guide, you have set up a production-ready RPC node that:
+
+- Provides reliable access to parachain functionality for applications and users.
+- Supports flexible deployment with both Docker and systemd options.
+- Implements comprehensive monitoring, security, and maintenance practices.
+- Can be adapted for any parachain by substituting the appropriate chain specification.
+
+Whether you're running a node for system parachains (People Chain, Bridge Hub, Coretime Chain) or other parachains in the ecosystem, regular maintenance and monitoring will ensure your RPC node continues to provide reliable service. Stay updated with the latest releases and best practices to keep your infrastructure secure and performant.
diff --git a/node-infrastructure/run-a-node/polkadot-hub-rpc.md b/node-infrastructure/run-a-node/polkadot-hub-rpc.md
new file mode 100644
index 000000000..cb2048b23
--- /dev/null
+++ b/node-infrastructure/run-a-node/polkadot-hub-rpc.md
@@ -0,0 +1,503 @@
+---
+title: Run an RPC Node for Polkadot Hub
+description: Follow this guide to understand hardware and software requirements and how to set up and run an RPC node for Polkadot Hub with Polkadot SDK RPC endpoints.
+categories: Infrastructure
+---
+
+# Run an RPC Node for Polkadot Hub
+
+## Overview
+
+[Polkadot Hub](/reference/polkadot-hub/){target=\_blank} is the entry point to Polkadot for all users and application developers. It provides access to essential Web3 services, including:
+
+- **Asset Management**: Native support for fungible and non-fungible assets
+- **Governance, Staking, and Treasury**: Core protocol operations
+- **Cross-chain Communication**: XCM message handling
+
+Running an RPC node for Polkadot Hub enables applications, wallets, and users to interact with the parachain through:
+
+- **Polkadot SDK Node RPC** (Port 9944): Native Polkadot API (WebSocket and HTTP)
+
+This setup enables block explorer indexing and provides full compatibility with Polkadot SDK development tools.
+
+!!! note
+
+ The parameters and configurations in this guide are provided as illustrative examples. You may need to modify them according to your specific environment, hardware capabilities, and network conditions.
+
+## Prerequisites
+
+### Hardware Requirements
+
+RPC nodes serving production traffic require robust hardware. The following should be considered the minimum standard to effectively operate an RPC node:
+
+- **CPU**: 8+ cores (16+ cores for high traffic)
+- **Memory**: 64 GB RAM minimum (128 GB recommended for high traffic)
+- **Storage**:
+ - 500 GB+ NVMe SSD for parachain state (archive nodes require 600-800 GB+)
+ - Additional 200+ GB for relay chain pruned database
+ - Fast disk I/O is critical for query performance
+- **Network**:
+ - Public IP address
+ - 1 Gbps connection (for high traffic scenarios)
+ - Stable internet connection with sufficient bandwidth
+ - Open ports:
+ - 30333 (parachain P2P)
+ - 30334 (relay chain P2P)
+ - 9944 (Polkadot SDK WebSocket RPC)
+ - 9933 (Polkadot SDK HTTP RPC)
+ - 9615 (Prometheus metrics - optional)
+ - Consider DDoS protection and rate limiting for production deployments
+
+**Note**: For development or low-traffic scenarios, you can reduce these requirements proportionally. Consider using a reverse proxy (nginx, Caddy) for production deployments.
+
+### Software Requirements
+
+Required software:
+
+- **Operating System**: Ubuntu 22.04 LTS (recommended) or similar Linux distribution
+- **Docker**: Required for obtaining binaries and running containers
+- **rclone**: (Optional but recommended) Command-line program for managing files on cloud storage (https://rclone.org/downloads/)
+
+## Setup Options
+
+This guide provides two options for deployment:
+
+- **Docker-based Setup**: Best for simpler set up and maintenance
+- **Manual/systemd Setup**: Best for production environments requiring more control
+
+Select the best option for your project, then use the steps in the following tabs to complete set up.
+
+=== "Docker-Based Setup"
+
+ This option uses Docker containers for the Polkadot SDK node, making it easy to set up and manage. Follow these steps to set your RPC node using Docker:
+
+ 1. Download the official Polkadot Hub (formerly known as Asset Hub) chain specification:
+ ```bash
+ curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/asset-hub-polkadot.json -o asset-hub-polkadot.json
+ ```
+
+ !!! note
+
+ This chain specification is the official configuration file that defines the network parameters for Polkadot Hub.
+
+ 2. (Optional but recommended) Download database snapshots:
+ - Using pre-synchronized snapshots significantly reduces initial sync time from several days to just a few hours. You need to download both parachain and relay chain data.
+ - You can obtain the latest snapshot from the [Snapshot Provider](https://snapshots.polkadot.io/){target=\_blank}. Follow these steps to download and use snapshots:
+ 1. Create new directories with the following commands:
+ ```bash
+ mkdir -p my-node-data/chains/asset-hub-polkadot/db
+ mkdir -p my-node-data/chains/polkadot/db
+ ```
+ 2. Download the appropriate snapshots using the following commands:
+
+ === "Archive Node"
+
+ Archive node setup maintains complete parachain history (~600-800 GB total). Download both Asset Hub archive and Relay chain pruned snapshots:
+
+ **Asset Hub archive snapshot** (~400 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_ASSET_HUB="https://snapshots.polkadot.io/polkadot-asset-hub-rocksdb-archive/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_ASSET_HUB/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_ASSET_HUB \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/asset-hub-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+
+ === "Pruned Node"
+
+ Pruned node setup keeps recent state for smaller storage (~500 GB total). Download both Asset Hub pruned and Relay chain pruned snapshots:
+
+ **Asset Hub pruned snapshot**:
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_ASSET_HUB="https://snapshots.polkadot.io/polkadot-asset-hub-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_ASSET_HUB/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_ASSET_HUB \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/asset-hub-polkadot/db/
+
+ rm files.txt
+ ```
+
+ **Relay chain pruned snapshot** (~200 GB):
+ ```bash
+ # Check https://snapshots.polkadot.io/ for the latest snapshot URL
+ export SNAPSHOT_URL_RELAY="https://snapshots.polkadot.io/polkadot-rocksdb-prune/LATEST"
+
+ rclone copyurl $SNAPSHOT_URL_RELAY/files.txt files.txt
+ rclone copy --progress --transfers 20 \
+ --http-url $SNAPSHOT_URL_RELAY \
+ --no-traverse --http-no-head --disable-http2 \
+ --inplace --no-gzip-encoding --size-only \
+ --retries 6 --retries-sleep 10s \
+ --files-from files.txt :http: my-node-data/chains/polkadot/db/
+
+ rm files.txt
+ ```
+
+ **rclone parameters:**
+
+ - `--transfers 20`: Uses 20 parallel transfers for faster download
+ - `--retries 6`: Automatically retries failed transfers up to 6 times
+ - `--retries-sleep 10s`: Waits 10 seconds between retry attempts
+ - `--size-only`: Only transfers if sizes differ (prevents unnecessary re-downloads)
+ 3. Launch Polkadot Hub Node using the official [Parity Docker image](https://hub.docker.com/r/parity/polkadot-parachain){target=\_blank}:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```bash
+ docker run -d --name polkadot-hub-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/asset-hub-polkadot.json:/asset-hub-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PolkadotHubRPC \
+ --base-path=/data \
+ --chain=/asset-hub-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```bash
+ docker run -d --name polkadot-hub-rpc --restart unless-stopped \
+ -p 9944:9944 \
+ -p 9933:9933 \
+ -p 9615:9615 \
+ -p 30334:30334 \
+ -p 30333:30333 \
+ -v $(pwd)/asset-hub-polkadot.json:/asset-hub-polkadot.json \
+ -v $(pwd)/my-node-data:/data \
+ parity/polkadot-parachain:stable2509-2 \
+ --name=PolkadotHubRPC \
+ --base-path=/data \
+ --chain=/asset-hub-polkadot.json \
+ --prometheus-external \
+ --prometheus-port 9615 \
+ --unsafe-rpc-external \
+ --rpc-port=9944 \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --base-path=/data \
+ --chain=polkadot \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+ ```
+
+ Critical configuration parameters include port mappings and node parameters:
+
+ === "Port mappings"
+
+ - `9944`: Polkadot SDK RPC endpoint (WebSocket/HTTP)
+ - `9933`: Polkadot SDK HTTP RPC endpoint
+ - `9615`: Prometheus metrics endpoint
+ - `30333/30334`: P2P networking ports
+
+ === "Node parameters"
+
+ - `--unsafe-rpc-external`: Enables external RPC access
+ - `--rpc-cors=all`: Allows all origins for CORS
+ - `--rpc-methods=safe`: Only allows safe RPC methods
+ - `--state-pruning=archive` or `--state-pruning=1000`: Archive keeps complete state history, pruned keeps last 1000 blocks
+ - `--blocks-pruning=archive` or `--blocks-pruning=256`: Archive keeps all blocks, pruned keeps last 256 finalized blocks
+ - `--prometheus-external`: Exposes metrics externally
+
+ !!! warning
+
+ The `--unsafe-rpc-external` flag should only be used in development or properly secured environments. For production, use a reverse proxy with authentication.
+
+ 4. Monitor the node synchronization status using the following command:
+
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_syncState", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ You should see a response similar to the following:
+
+ ```json
+ {
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "startingBlock":0,
+ "currentBlock":3394816,
+ "highestBlock":3394816
+ }
+ }
+ ```
+
+ When synchronization is complete, `currentBlock` will be equal to `highestBlock`.
+
+ 5. You can use the `system_health` command to verify your node is running properly:
+
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+ 6. Use the following commands to manage your Docker containers:
+
+ - View node logs:
+ ```bash
+ docker logs -f polkadot-hub-rpc
+ ```
+ - Stop container:
+ ```bash
+ docker stop polkadot-hub-rpc
+ ```
+ - Start container:
+ ```bash
+ docker start polkadot-hub-rpc
+ ```
+ - Remove container:
+ ```bash
+ docker rm polkadot-hub-rpc
+ ```
+
+=== "Manual systemd Setup"
+
+ This option provides more control and is recommended for production environments requiring custom configurations.
+
+ 1. Download the `polkadot-parachain` binary from the latest stable [Polkadot SDK release](https://github.com/paritytech/polkadot-sdk/releases){target=\_blank}:
+ ```bash
+ # Download the latest stable release (check releases page for current version)
+ wget https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-stable2509-2/polkadot-parachain
+
+ # Make it executable and move to system path
+ chmod +x polkadot-parachain
+ sudo mv polkadot-parachain /usr/local/bin/
+
+ # Verify installation
+ polkadot-parachain --version
+ ```
+
+ 2. Download the Polkadot Hub chain specification:
+ ```bash
+ curl -L https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/cumulus/parachains/chain-specs/asset-hub-polkadot.json -o asset-hub-polkadot.json
+ ```
+
+ 3. Create user and directory structures using the following commands:
+ - Create a dedicated user:
+ ```bash
+ sudo useradd -r -s /bin/bash polkadot
+ ```
+ - Create data directory:
+ ```bash
+ sudo mkdir -p /var/lib/polkadot-hub-rpc
+ ```
+ - Copy the chain spec to the directory:
+ ```bash
+ sudo cp asset-hub-polkadot.json /var/lib/polkadot-hub-rpc/
+ ```
+ - Set permissions:
+ ```bash
+ sudo chown -R polkadot:polkadot /var/lib/polkadot-hub-rpc
+ ```
+
+ 4. Create a systemd service file for the Polkadot SDK RPC node:
+ ```bash
+ sudo nano /etc/systemd/system/polkadot-hub-rpc.service
+ ```
+
+ 5. Open the new service file and add the configuration for your chosen node type:
+
+ === "Archive Node"
+
+ Archive node configuration maintains complete parachain history for historical queries:
+
+ ```ini
+ [Unit]
+ Description=Polkadot Hub RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-hub-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PolkadotHubRPC \
+ --chain=/var/lib/polkadot-hub-rpc/asset-hub-polkadot.json \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=archive \
+ --blocks-pruning=archive \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ === "Pruned Node"
+
+ Pruned node configuration keeps recent state for smaller storage requirements:
+
+ ```ini
+ [Unit]
+ Description=Polkadot Hub RPC Node
+ After=network.target
+
+ [Service]
+ Type=simple
+ User=polkadot
+ Group=polkadot
+ WorkingDirectory=/var/lib/polkadot-hub-rpc
+
+ ExecStart=/usr/local/bin/polkadot-parachain \
+ --name=PolkadotHubRPC \
+ --chain=/var/lib/polkadot-hub-rpc/asset-hub-polkadot.json \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30333 \
+ --rpc-port=9944 \
+ --rpc-external \
+ --rpc-cors=all \
+ --rpc-methods=safe \
+ --rpc-max-connections=1000 \
+ --prometheus-port=9615 \
+ --prometheus-external \
+ --state-pruning=1000 \
+ --blocks-pruning=256 \
+ -- \
+ --chain=polkadot \
+ --base-path=/var/lib/polkadot-hub-rpc \
+ --port=30334 \
+ --state-pruning=256 \
+ --blocks-pruning=archive-canonical
+
+ Restart=always
+ RestartSec=10
+ LimitNOFILE=65536
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ 6. Start the service using the following commands:
+ - Reload systemd:
+ ```bash
+ sudo systemctl daemon-reload
+ ```
+ - Enable service to start on boot:
+ ```bash
+ sudo systemctl enable polkadot-hub-rpc
+ ```
+ - Start the Polkadot SDK node:
+ ```bash
+ sudo systemctl start polkadot-hub-rpc
+ ```
+ - Check status and wait for sync:
+ ```bash
+ sudo systemctl status polkadot-hub-rpc
+ sudo journalctl -u polkadot-hub-rpc -f
+ ```
+
+ 7. You can use a few different commands to verify your node is running properly:
+ - Get chain information:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_chain", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Get the latest block:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "chain_getHeader", "params":[]}' \
+ http://localhost:9944
+ ```
+ - Query node health:
+ ```bash
+ curl -H "Content-Type: application/json" \
+ -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
+ http://localhost:9944
+ ```
+
+## Conclusion
+
+Running an RPC node for Polkadot Hub provides essential infrastructure for applications and users to interact with the network. By following this guide, you have set up a production-ready RPC node that:
+
+- Provides reliable access to Polkadot Hub's asset management, governance, and cross-chain communication features.
+- Supports both Docker and systemd deployment options for flexibility.
+- Implements proper monitoring, security, and maintenance practices.
+- Serves as a foundation for building and operating Polkadot SDK applications.
+
+Regular maintenance, security updates, and monitoring will ensure your RPC node continues to serve your users reliably. As the Polkadot network evolves, stay informed about updates and best practices through the official channels and community resources listed in this guide.
diff --git a/nodes-and-validators/run-a-node/.nav.yml b/node-infrastructure/run-a-node/relay-chain/.nav.yml
similarity index 100%
rename from nodes-and-validators/run-a-node/.nav.yml
rename to node-infrastructure/run-a-node/relay-chain/.nav.yml
diff --git a/nodes-and-validators/run-a-node/bootnode.md b/node-infrastructure/run-a-node/relay-chain/bootnode.md
similarity index 100%
rename from nodes-and-validators/run-a-node/bootnode.md
rename to node-infrastructure/run-a-node/relay-chain/bootnode.md
diff --git a/nodes-and-validators/run-a-node/full-node.md b/node-infrastructure/run-a-node/relay-chain/full-node.md
similarity index 100%
rename from nodes-and-validators/run-a-node/full-node.md
rename to node-infrastructure/run-a-node/relay-chain/full-node.md
diff --git a/nodes-and-validators/run-a-node/secure-wss.md b/node-infrastructure/run-a-node/relay-chain/secure-wss.md
similarity index 100%
rename from nodes-and-validators/run-a-node/secure-wss.md
rename to node-infrastructure/run-a-node/relay-chain/secure-wss.md
diff --git a/nodes-and-validators/run-a-validator/.nav.yml b/node-infrastructure/run-a-validator/.nav.yml
similarity index 100%
rename from nodes-and-validators/run-a-validator/.nav.yml
rename to node-infrastructure/run-a-validator/.nav.yml
diff --git a/nodes-and-validators/run-a-validator/onboarding-and-offboarding/.nav.yml b/node-infrastructure/run-a-validator/onboarding-and-offboarding/.nav.yml
similarity index 100%
rename from nodes-and-validators/run-a-validator/onboarding-and-offboarding/.nav.yml
rename to node-infrastructure/run-a-validator/onboarding-and-offboarding/.nav.yml
diff --git a/nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management.md b/node-infrastructure/run-a-validator/onboarding-and-offboarding/key-management.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/onboarding-and-offboarding/key-management.md
rename to node-infrastructure/run-a-validator/onboarding-and-offboarding/key-management.md
diff --git a/nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator.md b/node-infrastructure/run-a-validator/onboarding-and-offboarding/set-up-validator.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/onboarding-and-offboarding/set-up-validator.md
rename to node-infrastructure/run-a-validator/onboarding-and-offboarding/set-up-validator.md
diff --git a/nodes-and-validators/run-a-validator/onboarding-and-offboarding/start-validating.md b/node-infrastructure/run-a-validator/onboarding-and-offboarding/start-validating.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/onboarding-and-offboarding/start-validating.md
rename to node-infrastructure/run-a-validator/onboarding-and-offboarding/start-validating.md
diff --git a/nodes-and-validators/run-a-validator/onboarding-and-offboarding/stop-validating.md b/node-infrastructure/run-a-validator/onboarding-and-offboarding/stop-validating.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/onboarding-and-offboarding/stop-validating.md
rename to node-infrastructure/run-a-validator/onboarding-and-offboarding/stop-validating.md
diff --git a/nodes-and-validators/run-a-validator/operational-tasks/.nav.yml b/node-infrastructure/run-a-validator/operational-tasks/.nav.yml
similarity index 100%
rename from nodes-and-validators/run-a-validator/operational-tasks/.nav.yml
rename to node-infrastructure/run-a-validator/operational-tasks/.nav.yml
diff --git a/nodes-and-validators/run-a-validator/operational-tasks/general-management.md b/node-infrastructure/run-a-validator/operational-tasks/general-management.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/operational-tasks/general-management.md
rename to node-infrastructure/run-a-validator/operational-tasks/general-management.md
diff --git a/nodes-and-validators/run-a-validator/operational-tasks/pause-validating.md b/node-infrastructure/run-a-validator/operational-tasks/pause-validating.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/operational-tasks/pause-validating.md
rename to node-infrastructure/run-a-validator/operational-tasks/pause-validating.md
diff --git a/nodes-and-validators/run-a-validator/operational-tasks/upgrade-your-node.md b/node-infrastructure/run-a-validator/operational-tasks/upgrade-your-node.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/operational-tasks/upgrade-your-node.md
rename to node-infrastructure/run-a-validator/operational-tasks/upgrade-your-node.md
diff --git a/nodes-and-validators/run-a-validator/requirements.md b/node-infrastructure/run-a-validator/requirements.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/requirements.md
rename to node-infrastructure/run-a-validator/requirements.md
diff --git a/nodes-and-validators/run-a-validator/staking-mechanics/.nav.yml b/node-infrastructure/run-a-validator/staking-mechanics/.nav.yml
similarity index 100%
rename from nodes-and-validators/run-a-validator/staking-mechanics/.nav.yml
rename to node-infrastructure/run-a-validator/staking-mechanics/.nav.yml
diff --git a/nodes-and-validators/run-a-validator/staking-mechanics/offenses-and-slashes.md b/node-infrastructure/run-a-validator/staking-mechanics/offenses-and-slashes.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/staking-mechanics/offenses-and-slashes.md
rename to node-infrastructure/run-a-validator/staking-mechanics/offenses-and-slashes.md
diff --git a/nodes-and-validators/run-a-validator/staking-mechanics/rewards.md b/node-infrastructure/run-a-validator/staking-mechanics/rewards.md
similarity index 100%
rename from nodes-and-validators/run-a-validator/staking-mechanics/rewards.md
rename to node-infrastructure/run-a-validator/staking-mechanics/rewards.md