diff --git a/docs/dao.md b/docs/dao.md index 64b0fddbc..e9f4d57a1 100644 --- a/docs/dao.md +++ b/docs/dao.md @@ -1,6 +1,7 @@ --- title: DAO description: DAO information +llm_description: "Dappnode DAO governance overview: NODE token addresses, mission, Snapshot voting, and ValidatorDAO." --- :::danger Documentation alert diff --git a/docs/dao/faq.md b/docs/dao/faq.md index e1094e44a..1f0ab9e36 100644 --- a/docs/dao/faq.md +++ b/docs/dao/faq.md @@ -1,5 +1,6 @@ --- title: Dappnode DAO FAQ +llm_description: FAQ explaining what a DAO is and Dappnode DAO's mission for decentralized infrastructure. ---
What is a DAO? diff --git a/docs/dao/liquidity-mining.md b/docs/dao/liquidity-mining.md index 54adebd2a..40670608e 100644 --- a/docs/dao/liquidity-mining.md +++ b/docs/dao/liquidity-mining.md @@ -1,3 +1,8 @@ +--- +title: Liquidity Mining +llm_description: "NODE liquidity mining program details: pool allocations, contract addresses, and weekly rewards." +--- + # Liquidity Mining Liquidity Mining (LM) launched on Jul 17 2021, 20:00:00 GMT. 5.5% of the total token supply, 5.5 Million NODE, has been allocated to the first LM round of 6 months. NODE reward distribution for the 4 pools available is as follows: diff --git a/docs/dao/node-basics.md b/docs/dao/node-basics.md index 2c5f4221f..dd5a93476 100644 --- a/docs/dao/node-basics.md +++ b/docs/dao/node-basics.md @@ -1,3 +1,8 @@ +--- +title: The NODE Economy +llm_description: "NODE token economics: 100M supply distribution, NODEdrop recipients, and NODEstream vesting." +--- + # The NODE Economy ### NODE Basics diff --git a/docs/dao/node-drop.md b/docs/dao/node-drop.md index 1eae08c26..41a39114f 100644 --- a/docs/dao/node-drop.md +++ b/docs/dao/node-drop.md @@ -1,3 +1,8 @@ +--- +title: NODEdrop +llm_description: NODEdrop airdrop program for early Dappnode supporters and community members. +--- + # NODEdrop "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." diff --git a/docs/dao/node-stream.md b/docs/dao/node-stream.md index da0528250..fb9ef9dcd 100644 --- a/docs/dao/node-stream.md +++ b/docs/dao/node-stream.md @@ -1,3 +1,8 @@ +--- +title: NODEstream +llm_description: NODEstream vesting program for gradual token distribution to participants. +--- + # NODEstream "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." diff --git a/docs/dev.md b/docs/dev.md index 4b18bfef5..a02ba9b59 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -1,5 +1,7 @@ --- +title: "Welcome to the Developer Documentation!" sidebar_label: Introduction +llm_description: "Introduction to Dappnode developer docs for creating, deploying, and managing custom packages." --- # Welcome to the Developer Documentation! diff --git a/docs/dev/dns.md b/docs/dev/dns.md index 6682f9ed5..cd59362f8 100644 --- a/docs/dev/dns.md +++ b/docs/dev/dns.md @@ -1,3 +1,8 @@ +--- +title: "🌐 DNS" +llm_description: "DNS-based service discovery and domain naming conventions for DAppNode packages." +--- + # 🌐 DNS By default, every DAppNode package runs on Docker networks that provide DNS-based service discovery. The main network is `dncore_network`, which uses a public IP range, and starting from core version 0.3.2, there is also a `dnprivate_network` with the private IP range `10.20.0.0/24`. Both networks allow packages to communicate and resolve service names, but `dnprivate_network` adds a security layer by restricting access to a private IP range, making it ideal for accessing sensitive UIs and services. diff --git a/docs/dev/github-actions.md b/docs/dev/github-actions.md index 40c85b75f..b8e55bb98 100644 --- a/docs/dev/github-actions.md +++ b/docs/dev/github-actions.md @@ -1,3 +1,8 @@ +--- +title: "GitHub Actions for Dappnode Packages" +llm_description: "GitHub Actions workflows for automating upstream updates and package releases." +--- + # GitHub Actions for Dappnode Packages GitHub Actions help automate workflows around your projects on GitHub. For Dappnode packages, we utilize specific GitHub Actions to manage updates and releases. diff --git a/docs/dev/metrics.md b/docs/dev/metrics.md index f8e4b5f2b..74faf4592 100644 --- a/docs/dev/metrics.md +++ b/docs/dev/metrics.md @@ -1,3 +1,8 @@ +--- +title: "πŸ“Š Package Metrics" +llm_description: "Prometheus and Grafana metrics framework for DAppNode packages via DMS." +--- + # πŸ“Š Package Metrics DAppNode supports an integrated metrics framework based on [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/), powered by the [DMS package](https://docs.dappnode.io/docs/user/packages/dms/). diff --git a/docs/dev/notifications.md b/docs/dev/notifications.md index 9ea8b0efa..130beb8ef 100644 --- a/docs/dev/notifications.md +++ b/docs/dev/notifications.md @@ -1,3 +1,8 @@ +--- +title: "πŸ”” Package Notifications (Coming soon)" +llm_description: "Notification system for alerting users about events via the DAppNode UI." +--- + # πŸ”” Package Notifications (Coming soon) Notifications are a way to inform users about events happening in the DAppNode. They are displayed in the [notifications tab](http://dappmanager.dappnode/notifications) within the DAppNode UI. Notifications are sent by third-party software, "Gatus," which monitors the services running in the DAppNode or arbitrary services that send notifications. Users can configure the notifications they want to receive and set thresholds (if applicable) for these notifications. diff --git a/docs/dev/package-development/multi-configuration.md b/docs/dev/package-development/multi-configuration.md index 5561df7bc..b49f5d9fd 100644 --- a/docs/dev/package-development/multi-configuration.md +++ b/docs/dev/package-development/multi-configuration.md @@ -1,3 +1,8 @@ +--- +title: "Multi-Config Package Development" +llm_description: "Guide for developing multi-variant packages supporting different networks from one codebase." +--- + # Multi-Config Package Development This guide will walk you through the steps to develop a multi-config Dappnode package, allowing you to create multiple package configurations from a single source. We'll use the Lodestar Generic package as a reference, which builds multiple variants for different networks like Mainnet, Holesky, and Gnosis. diff --git a/docs/dev/package-development/overview.md b/docs/dev/package-development/overview.md index 262b4c401..abd2336d7 100644 --- a/docs/dev/package-development/overview.md +++ b/docs/dev/package-development/overview.md @@ -1,3 +1,8 @@ +--- +title: "Package Development" +llm_description: "Overview of single-config and multi-config package repository types." +--- + # Package Development Welcome to the **Package Development** section! This guide will help you create your own Dappnode packages. In Dappnode, packages are applications that you can download and install on your Dappnode machine, allowing you to enhance its functionality. diff --git a/docs/dev/package-development/single-configuration.md b/docs/dev/package-development/single-configuration.md index fa8519d2c..300e96576 100644 --- a/docs/dev/package-development/single-configuration.md +++ b/docs/dev/package-development/single-configuration.md @@ -1,3 +1,8 @@ +--- +title: "Single-Variant Package Development" +llm_description: "Step-by-step guide for developing single-variant Dappnode packages." +--- + # Single-Variant Package Development This guide will walk you through the steps to develop a single-variant Dappnode package using a simple example. We'll start with initializing a basic package and progress to a more complex setup, using the Holesky Geth package as a reference. diff --git a/docs/dev/package-publishing/package-ownership.md b/docs/dev/package-publishing/package-ownership.md index d7d75a35c..19c95c15d 100644 --- a/docs/dev/package-publishing/package-ownership.md +++ b/docs/dev/package-publishing/package-ownership.md @@ -1,3 +1,8 @@ +--- +title: "Package Ownership" +llm_description: "Role permission system for managing package ownership via Aragon ACL contracts." +--- + # Package Ownership This guide outlines the role permission system used in Dappnode package management, powered by Aragon’s ACL (Access Control List) smart contracts. It explains how to check and modify roles such as permission managers and developers. diff --git a/docs/dev/package-publishing/publish-packages-clients.md b/docs/dev/package-publishing/publish-packages-clients.md index 668973578..d18107831 100644 --- a/docs/dev/package-publishing/publish-packages-clients.md +++ b/docs/dev/package-publishing/publish-packages-clients.md @@ -1,6 +1,6 @@ --- title: Publish your packages seamlessly - +llm_description: "Step-by-step guide for publishing packages using the SDK-publish UI." --- # Publish your packages seamlessly diff --git a/docs/dev/references/docker-compose.md b/docs/dev/references/docker-compose.md index 4db52ed2c..9a1ec49a5 100644 --- a/docs/dev/references/docker-compose.md +++ b/docs/dev/references/docker-compose.md @@ -1,3 +1,8 @@ +--- +title: "Docker compose file" +llm_description: "Reference for docker-compose.yml structure, environment variables, and build arguments." +--- + # Docker compose file Dappnode packages are built upon Docker containers. The heart of defining how these containers run and interact lies in the `docker-compose.yml` file. In this guide, we will explain the typical structure of the `docker-compose.yml` file for a Dappnode package. diff --git a/docs/dev/references/manifest.md b/docs/dev/references/manifest.md index 299c3ac43..1c02316b8 100644 --- a/docs/dev/references/manifest.md +++ b/docs/dev/references/manifest.md @@ -1,3 +1,8 @@ +--- +title: "Dappnode Package (DNP) manifest" +llm_description: "Complete reference for dappnode_package.json manifest file properties." +--- + # Dappnode Package (DNP) manifest The Dappnode Package manifest defines all the necessary information for a Dappnode to understand this package: diff --git a/docs/dev/references/notifications.md b/docs/dev/references/notifications.md index 35d18e384..10d444eef 100644 --- a/docs/dev/references/notifications.md +++ b/docs/dev/references/notifications.md @@ -1,3 +1,8 @@ +--- +title: "Notifications File Reference (Comming soon)" +llm_description: "Schema reference for notifications.yaml configuration using Gatus endpoints." +--- + # Notifications File Reference (Comming soon) This document serves as a reference for the Notifications configuration file in DAppNode. It defines the structure, fields, and expected values based on the [JSON Schema](https://github.com/dappnode/DAppNode/raw/schema/notifications.schema.json). diff --git a/docs/dev/references/setup-wizard.md b/docs/dev/references/setup-wizard.md index c4952682f..581ebea5f 100644 --- a/docs/dev/references/setup-wizard.md +++ b/docs/dev/references/setup-wizard.md @@ -1,3 +1,7 @@ +--- +llm_description: "Reference for setup-wizard.yml to customize package installation with forms." +--- + # Wizard Reference The setup wizard for Dappnode packages helps automate the package customization and improve its user experience. You can allow users to conveniently edit environment variables, port mappings, and upload files while interacting with a simple web form, right before installing the package. diff --git a/docs/dev/sdk/commands.md b/docs/dev/sdk/commands.md index caa7794f9..7c3b274d6 100644 --- a/docs/dev/sdk/commands.md +++ b/docs/dev/sdk/commands.md @@ -1,3 +1,8 @@ +--- +title: "Main commands" +llm_description: "Documentation for SDK init, build, and publish commands with options." +--- + # Main commands This page covers the top three functionalities of DappnodeSDK: `init`, `build`, and `publish`. Each command plays a crucial role in the development and deployment process of dappnode packages (DNPs). diff --git a/docs/dev/sdk/overview.md b/docs/dev/sdk/overview.md index b7344ebd4..414bd6e9c 100644 --- a/docs/dev/sdk/overview.md +++ b/docs/dev/sdk/overview.md @@ -1,3 +1,8 @@ +--- +title: "DappnodeSDK" +llm_description: "Overview of DappnodeSDK tool for creating, building, and publishing packages." +--- + # DappnodeSDK The DappnodeSDK `dappnodesdk` is a tool that makes creating and publishing new Dappnode packages as simple as possible. It helps to initialize, build, test, and publish the new package/repo to an APM tracked on the Ethereum Mainnet. diff --git a/docs/dev/sdk/sdk-publish.md b/docs/dev/sdk/sdk-publish.md index 4b41301c7..fe44b60dd 100644 --- a/docs/dev/sdk/sdk-publish.md +++ b/docs/dev/sdk/sdk-publish.md @@ -1,3 +1,8 @@ +--- +title: "SDK-Publish" +llm_description: "Guide for using SDK-Publish tool to sign and publish package releases." +--- + # SDK-Publish The SDK-Publish tool is a component of the Dappnode Software Development Kit (dappnodesdk). This tool simplifies the process of signing and publishing Dappnode package releases, utilizing your wallet for secure and efficient transaction management. diff --git a/docs/smooth.md b/docs/smooth.md index 69248c435..55852140d 100644 --- a/docs/smooth.md +++ b/docs/smooth.md @@ -1,6 +1,7 @@ --- title: Smooth description: Smooth introduction +llm_description: Introduction to Smooth, Dappnode's MEV Smoothing Pool for consistent solo staker rewards. --- # Welcome to Smooth, Dappnode's MEV Smoothing Pool! diff --git a/docs/smooth/deep-dive-into-smooth/consolidations.md b/docs/smooth/deep-dive-into-smooth/consolidations.md index 56809a398..7ac0ec276 100644 --- a/docs/smooth/deep-dive-into-smooth/consolidations.md +++ b/docs/smooth/deep-dive-into-smooth/consolidations.md @@ -1,3 +1,8 @@ +--- +title: "Consolidations" +llm_description: How Smooth handles Pectra validator consolidations and transfers pending rewards automatically. +--- + # Consolidations Since the [Pectra](https://ethereum.org/en/history/#pectra) update on May 7, 2025, validators can stake up to 2048 ETH. Instead of having to manage multiple 32 ETH validators, users can now choose to stake an arbitrary amount of ETH in a single validator. diff --git a/docs/smooth/deep-dive-into-smooth/oracle-sm.md b/docs/smooth/deep-dive-into-smooth/oracle-sm.md index 1be1f85be..84dc37519 100644 --- a/docs/smooth/deep-dive-into-smooth/oracle-sm.md +++ b/docs/smooth/deep-dive-into-smooth/oracle-sm.md @@ -1,3 +1,8 @@ +--- +title: "Smooth's architecture" +llm_description: Explains Smooth's Oracle and Smart Contract architecture for tracking validators and rewards. +--- + # Smooth's architecture [Smooth](https://smooth.dappnode.io/) is composed of two main components: the **Oracle** and the **Smart Contract**. These two components work together to track validators and distribute rewards fairly. Both are open source and indispensable to the functioning of [Smooth](https://smooth.dappnode.io/). While the Smart Contract serves to track all the events related to the pool onchain (subscriptions, unsubscriptions, block proposals, etc.), the Oracle is responsible for computing the rewards of each validator. diff --git a/docs/smooth/deep-dive-into-smooth/overview.md b/docs/smooth/deep-dive-into-smooth/overview.md index 156c4dad7..2269c0d84 100644 --- a/docs/smooth/deep-dive-into-smooth/overview.md +++ b/docs/smooth/deep-dive-into-smooth/overview.md @@ -1,3 +1,8 @@ +--- +title: "Deep Dive into Smooth!" +llm_description: Index page linking to deep-dive sections on rewards, validator states, and architecture. +--- + # Deep Dive into Smooth! In this section, you will find an in-depth explanation on how [Smooth](https://smooth.dappnode.io/) works. This includes its different components, all states possible of a subscribed validator, and much more! diff --git a/docs/smooth/deep-dive-into-smooth/rewards.md b/docs/smooth/deep-dive-into-smooth/rewards.md index 8fa5e44a3..abd5f25c3 100644 --- a/docs/smooth/deep-dive-into-smooth/rewards.md +++ b/docs/smooth/deep-dive-into-smooth/rewards.md @@ -1,3 +1,8 @@ +--- +title: "Rewards" +llm_description: How Smooth distributes rewards based on effective balance and converts pending to claimable. +--- + # Rewards Receiving and distributing rewards is one of the core functionalities of [Smooth](https://smooth.dappnode.io/). In this section we will explain how rewards are handled by [Smooth](https://smooth.dappnode.io/) and how they are distributed to validators, as well as how users can claim their rewards. diff --git a/docs/smooth/deep-dive-into-smooth/states.md b/docs/smooth/deep-dive-into-smooth/states.md index f3f0258d8..151d6b357 100644 --- a/docs/smooth/deep-dive-into-smooth/states.md +++ b/docs/smooth/deep-dive-into-smooth/states.md @@ -1,3 +1,8 @@ +--- +title: "Smooth Validator States" +llm_description: "Validator state machine: Active, YellowCard, RedCard, NotSubscribed, Banned, and Untracked." +--- + # Smooth Validator States A [Smooth](https://smooth.dappnode.io/) validator can be in multiple states depending on its behavior. In this section we will explain all possible states a validator can have, the consequences of being each state, and how a validator can transition from one state to another. diff --git a/docs/smooth/deep-dive-into-smooth/vanilla-blocks.md b/docs/smooth/deep-dive-into-smooth/vanilla-blocks.md index c0e84c453..dd2f74b87 100644 --- a/docs/smooth/deep-dive-into-smooth/vanilla-blocks.md +++ b/docs/smooth/deep-dive-into-smooth/vanilla-blocks.md @@ -1,6 +1,6 @@ --- title: What is a vanilla block? - +llm_description: Explains vanilla blocks and why MEV blocks are required; 3 vanilla blocks leads to ban. --- **What is a vanilla block?** diff --git a/docs/smooth/faq-glossary.md b/docs/smooth/faq-glossary.md index 76f7a8748..65c728371 100644 --- a/docs/smooth/faq-glossary.md +++ b/docs/smooth/faq-glossary.md @@ -1,3 +1,8 @@ +--- +title: "FAQ & Glossary" +llm_description: FAQ about fees, claiming rewards, and glossary of terms like pending/accumulated rewards. +--- + # FAQ & Glossary ## FAQ diff --git a/docs/smooth/subscribe-to-smooth/automatic.md b/docs/smooth/subscribe-to-smooth/automatic.md index c85eec538..9862149c6 100644 --- a/docs/smooth/subscribe-to-smooth/automatic.md +++ b/docs/smooth/subscribe-to-smooth/automatic.md @@ -1,3 +1,8 @@ +--- +title: "Automatic Subscription" +llm_description: Auto-subscribe by setting fee recipient to Smooth address and proposing a block. +--- + # Automatic Subscription This is the simplest way to subscribe to [Smooth](https://smooth.dappnode.io/). It consists of changing the fee recipient of your validator to Smooth's address and subscribing automatically when proposing your next block. diff --git a/docs/smooth/subscribe-to-smooth/manual.md b/docs/smooth/subscribe-to-smooth/manual.md index b51b0762d..083b8079f 100644 --- a/docs/smooth/subscribe-to-smooth/manual.md +++ b/docs/smooth/subscribe-to-smooth/manual.md @@ -1,3 +1,8 @@ +--- +title: "Manual Subscription" +llm_description: Manual subscription via website with 0.01 ETH deposit to start earning immediately. +--- + # Manual Subscription Would you rather not wait until your next proposed block to subscribe and begin earning rewards? You can take a proactive step and opt for manual subscription right away. During this process, you'll change your validator's fee recipient to Smooth's address, just like in the automatic subscription. However, instead of waiting for your next proposed block, you'll immediately start accumulating rewards from [Smooth](https://smooth.dappnode.io/). diff --git a/docs/smooth/subscribe-to-smooth/overview.md b/docs/smooth/subscribe-to-smooth/overview.md index bae9e9f4f..09490eb93 100644 --- a/docs/smooth/subscribe-to-smooth/overview.md +++ b/docs/smooth/subscribe-to-smooth/overview.md @@ -1,3 +1,8 @@ +--- +title: "Subscribing to Smooth" +llm_description: "Overview of two subscription methods: automatic and manual, with address info." +--- + # Subscribing to Smooth Hello! In this section you will find all the information on how to subscribe your Validators to [Smooth](https://smooth.dappnode.io/). Even though the process is simple, it is important to follow the steps carefully. diff --git a/docs/smooth/unsubscribe-from-smooth.md b/docs/smooth/unsubscribe-from-smooth.md index 34c28ba2d..91c878ae3 100644 --- a/docs/smooth/unsubscribe-from-smooth.md +++ b/docs/smooth/unsubscribe-from-smooth.md @@ -1,3 +1,8 @@ +--- +title: "Unsubscribing from Smooth." +llm_description: How to unsubscribe via website; warns that pending rewards are lost on exit. +--- + # Unsubscribing from Smooth. Unsubscribing from [Smooth](https://smooth.dappnode.io/) is as simple as subscribing to it. You can unsubscribe from [Smooth](https://smooth.dappnode.io/) at any time, it is done through **[Smooth's website](https://smooth.dappnode.io/)** and it only takes one simple transaction. diff --git a/docs/user/access-your-dappnode/local.md b/docs/user/access-your-dappnode/local.md index 052ef1392..c3053f07a 100644 --- a/docs/user/access-your-dappnode/local.md +++ b/docs/user/access-your-dappnode/local.md @@ -1,3 +1,8 @@ +--- +title: "Local Proxy Access to Dappnode" +llm_description: "Access Dappnode via http://dappnode.local on same network; limited to Admin UI dashboard only." +--- + # Local Proxy Access to Dappnode The local proxy method provides a way to access your Dappnode from within the same local network without any previous configuration required. However, it's essential to understand that due to certain network incompatibilities, this method might not work for all users. diff --git a/docs/user/access-your-dappnode/overview.md b/docs/user/access-your-dappnode/overview.md index 403573e93..fc8c647e9 100644 --- a/docs/user/access-your-dappnode/overview.md +++ b/docs/user/access-your-dappnode/overview.md @@ -1,3 +1,8 @@ +--- +title: "🌐 Access your Dappnode" +llm_description: "Overview of four ways to access Dappnode: WiFi, VPN, Local Proxy, and Terminal." +--- + # 🌐 Access your Dappnode Dappnode is made to work on a dedicated computer, and its main control panel, the **Dappmanager**, is accessed from another device via [my.dappnode](http://my.dappnode/) , as it is meant to be installed over an operating system that does not include a graphical interface. diff --git a/docs/user/access-your-dappnode/terminal.md b/docs/user/access-your-dappnode/terminal.md index 7cedbd3d0..26bcdd94b 100644 --- a/docs/user/access-your-dappnode/terminal.md +++ b/docs/user/access-your-dappnode/terminal.md @@ -1,3 +1,8 @@ +--- +title: "Terminal Access to Dappnode" +llm_description: "Advanced CLI access via SSH or physical terminal for deep control and management." +--- + # Terminal Access to Dappnode Accessing the terminal of your Dappnode, often referred to as the command-line interface (CLI), provides deep control and management capabilities. However, this method is considered advanced and requires familiarity with command line interactions. Incorrect or misguided commands can lead to unintended changes or potential system damage. diff --git a/docs/user/access-your-dappnode/vpn/openvpn.md b/docs/user/access-your-dappnode/vpn/openvpn.md index c9dc59844..eed8f84aa 100644 --- a/docs/user/access-your-dappnode/vpn/openvpn.md +++ b/docs/user/access-your-dappnode/vpn/openvpn.md @@ -1,3 +1,8 @@ +--- +title: "OpenVPN Access to Dappnode" +llm_description: "Setup guide for OpenVPN access with credential retrieval and multi-platform installation steps." +--- + # OpenVPN Access to Dappnode OpenVPN is a widely-accepted VPN protocol known for its reliability and high-security standards. Here's how you can set it up with Dappnode. diff --git a/docs/user/access-your-dappnode/vpn/overview.md b/docs/user/access-your-dappnode/vpn/overview.md index 5452bd262..dcbd2ee3a 100644 --- a/docs/user/access-your-dappnode/vpn/overview.md +++ b/docs/user/access-your-dappnode/vpn/overview.md @@ -1,3 +1,8 @@ +--- +title: "VPN Access to Dappnode" +llm_description: "Overview of VPN options (Tailscale, WireGuard, OpenVPN) for secure local and remote access." +--- + # VPN Access to Dappnode Virtual Private Network (VPN) is a robust method for accessing your Dappnode. It ensures a secure and encrypted connection between your device and the Dappnode, allowing you to manage your Dappnode from virtually anywhere. Depending on your needs and preferences, Dappnode offers support for two primary VPN technologies: **WireGuard** and **OpenVPN**. diff --git a/docs/user/access-your-dappnode/vpn/tailscale.md b/docs/user/access-your-dappnode/vpn/tailscale.md index 06c4be7e0..b879635c7 100644 --- a/docs/user/access-your-dappnode/vpn/tailscale.md +++ b/docs/user/access-your-dappnode/vpn/tailscale.md @@ -1,3 +1,8 @@ +--- +title: "Connect to Your Dappnode Using Tailscale" +llm_description: "Setup Tailscale VPN for easy access without port forwarding; solves UPnP and CGNAT issues." +--- + # Connect to Your Dappnode Using Tailscale Tailscale is a secure, peer-to-peer VPN solution that simplifies connecting to your Dappnode without requiring complex port forwarding, solving issues such as UPnP not being recognized, routers behind CGNAT, or other port forwarding challenges. This guide walks you through setting up Tailscale to access your Dappnode. diff --git a/docs/user/access-your-dappnode/vpn/wireguard.md b/docs/user/access-your-dappnode/vpn/wireguard.md index a22a9e18c..3fd026122 100644 --- a/docs/user/access-your-dappnode/vpn/wireguard.md +++ b/docs/user/access-your-dappnode/vpn/wireguard.md @@ -1,3 +1,8 @@ +--- +title: "WireGuard Access to Dappnode" +llm_description: "WireGuard VPN setup guide with credential retrieval and multi-platform client configuration." +--- + # WireGuard Access to Dappnode WireGuard is a modern, high-performance VPN protocol that offers a simple and streamlined approach for securely accessing your Dappnode. This guide will walk you through setting up WireGuard with your Dappnode. diff --git a/docs/user/access-your-dappnode/wifi.md b/docs/user/access-your-dappnode/wifi.md index 4c3f5565f..0b74ff9e8 100644 --- a/docs/user/access-your-dappnode/wifi.md +++ b/docs/user/access-your-dappnode/wifi.md @@ -1,3 +1,8 @@ +--- +title: "Wi-Fi Access to Dappnode" +llm_description: "Connect to Dappnode via built-in WiFi hotspot (SSID: DappnodeWIFI, password: dappnode)." +--- + # Wi-Fi Access to Dappnode If you bought a Dappnode from our store, or installed Dappnode on a computer with a built-in Wi-Fi chip, you can easily connect to the **Dappmanager** (Dappnode web UI) using the Dappnode's Wi-Fi hotspot. diff --git a/docs/user/dappnode-app/how-to-install.md b/docs/user/dappnode-app/how-to-install.md index 1c9b3de40..a7224ec71 100644 --- a/docs/user/dappnode-app/how-to-install.md +++ b/docs/user/dappnode-app/how-to-install.md @@ -1,3 +1,8 @@ +--- +title: "How to install the Dappnode app" +llm_description: "Step-by-step guide to install Dappnode PWA app on mobile/desktop with VPN and notifications." +--- + # How to install the Dappnode app The complete process to install the Dappnode app is the following: diff --git a/docs/user/dappnode-app/overview.md b/docs/user/dappnode-app/overview.md index 21e27b11a..0cf4fa4d6 100644 --- a/docs/user/dappnode-app/overview.md +++ b/docs/user/dappnode-app/overview.md @@ -1,3 +1,8 @@ +--- +title: "Overview" +llm_description: "Dappnode PWA app for mobile/desktop: remote management, notifications, and staking configuration." +--- + # Overview The **Dappnode app** is a new form of interaction with Dappnode from **mobile and desktop devices**. It helps users to enter the Dappmanager remotely and get notified about the hardware status and the staking performance. diff --git a/docs/user/dappnode-cloud/overview.md b/docs/user/dappnode-cloud/overview.md index fedcc0d7e..40f83d685 100644 --- a/docs/user/dappnode-cloud/overview.md +++ b/docs/user/dappnode-cloud/overview.md @@ -1,3 +1,8 @@ +--- +title: "What is Dappnode Cloud?" +llm_description: "Deploy Dappnode in cloud (AWS) without hardware; ideal for testing, dev, or short-term use." +--- + # What is Dappnode Cloud? Dappnode Cloud is a service that allows users to deploy a Dappnode in a cloud provider so it can be tested without the need for physical hardware. We provide easy pre-configured instances for the main cloud providers (AWS for now, more to come later) to continue to make the deployment of web3 infrastructure accessible and hassle-free for everyone. It consists of a Dappnode image deployed on a machine instance from a cloud provider, eliminating the need to invest in hardware in order to test Dappnode. diff --git a/docs/user/dappnode-cloud/providers/aws/faqs.md b/docs/user/dappnode-cloud/providers/aws/faqs.md index cf78c3e14..4eef59152 100644 --- a/docs/user/dappnode-cloud/providers/aws/faqs.md +++ b/docs/user/dappnode-cloud/providers/aws/faqs.md @@ -1,3 +1,8 @@ +--- +title: "FAQs & Troubleshooting" +llm_description: "AWS FAQs: machine selection, storage requirements, security groups, Telegram setup, troubleshooting." +--- + # FAQs & Troubleshooting
diff --git a/docs/user/dappnode-cloud/providers/aws/overview.md b/docs/user/dappnode-cloud/providers/aws/overview.md index 068c93ce4..e32c0faff 100644 --- a/docs/user/dappnode-cloud/providers/aws/overview.md +++ b/docs/user/dappnode-cloud/providers/aws/overview.md @@ -1,3 +1,8 @@ +--- +title: AWS +llm_description: "AWS overview: Dappnode AMI at $15/month plus AWS infrastructure costs (pay-as-you-go)." +--- + # AWS Amazon Web Services (AWS) is a cloud computing platform provided by Amazon. It offers a wide range of services, including computing power, storage options, and networking capabilities, enabling users to build and deploy applications and services efficiently. diff --git a/docs/user/dappnode-cloud/providers/aws/set-up-instance.md b/docs/user/dappnode-cloud/providers/aws/set-up-instance.md index b14cfbe4a..2178b52b6 100644 --- a/docs/user/dappnode-cloud/providers/aws/set-up-instance.md +++ b/docs/user/dappnode-cloud/providers/aws/set-up-instance.md @@ -1,3 +1,8 @@ +--- +title: "How to Set Up an Instance" +llm_description: "Step-by-step guide to launch Dappnode on AWS EC2 with Telegram or SSH credential retrieval." +--- + # How to Set Up an Instance To launch a Dappnode AMI instance, follow these steps: diff --git a/docs/user/dappnode-cloud/providers/coming-soon.md b/docs/user/dappnode-cloud/providers/coming-soon.md index 02a0e443e..678868f7d 100644 --- a/docs/user/dappnode-cloud/providers/coming-soon.md +++ b/docs/user/dappnode-cloud/providers/coming-soon.md @@ -1,3 +1,8 @@ +--- +title: "More coming soon" +llm_description: "More cloud providers coming soon; request new providers via GitHub issues." +--- + # More coming soon We are aiming to deploy Dappnode Images in more cloud providers in a nearly future. diff --git a/docs/user/dappnode-premium/premium-overview.md b/docs/user/dappnode-premium/premium-overview.md index b9ceba8cb..00288093b 100644 --- a/docs/user/dappnode-premium/premium-overview.md +++ b/docs/user/dappnode-premium/premium-overview.md @@ -1,6 +1,6 @@ --- title: Dappnode Premium - +llm_description: "Dappnode Premium: paid services including monitoring, support, and beacon node backup." --- ### What is Dappnode Premium? diff --git a/docs/user/dappnode-premium/premium-services.md b/docs/user/dappnode-premium/premium-services.md index a009a9eff..e873343cd 100644 --- a/docs/user/dappnode-premium/premium-services.md +++ b/docs/user/dappnode-premium/premium-services.md @@ -1,6 +1,6 @@ --- title: Premium services - +llm_description: "Premium features: push notifications, validator alerts, backup node (168h/month), and support calls." --- ## Advanced push notifications diff --git a/docs/user/ethical-metrics/metrics.md b/docs/user/ethical-metrics/metrics.md index d98a77396..e94ec04b0 100644 --- a/docs/user/ethical-metrics/metrics.md +++ b/docs/user/ethical-metrics/metrics.md @@ -1,3 +1,8 @@ +--- +title: "Metrics Collected by Ethical Metrics" +llm_description: "Lists all metrics collected by Ethical Metrics: host, Dappmanager, and staking metrics via TOR." +--- + # Metrics Collected by Ethical Metrics Dappnode has absolutely no hidden telemetry and is completely private by design. We were reluctant of setting up a monitoring service because we did NOT want to collect any data from our users. Because of our community's continuous requests to offer alerts, we came up with a solution that doesn't compromise your privacy. diff --git a/docs/user/ethical-metrics/overview.md b/docs/user/ethical-metrics/overview.md index 60e66ca2a..fc79f2544 100644 --- a/docs/user/ethical-metrics/overview.md +++ b/docs/user/ethical-metrics/overview.md @@ -1,3 +1,8 @@ +--- +title: "Ethical Metrics" +llm_description: "Introduces Ethical Metrics for privacy-preserving external monitoring and offline alerts via TOR." +--- + # Ethical Metrics :::note diff --git a/docs/user/ethical-metrics/setup.md b/docs/user/ethical-metrics/setup.md index b939714e2..27d57df65 100644 --- a/docs/user/ethical-metrics/setup.md +++ b/docs/user/ethical-metrics/setup.md @@ -1,3 +1,8 @@ +--- +title: "Setting up Ethical Metrics" +llm_description: "Step-by-step guide to configure Telegram and email notifications for Ethical Metrics alerts." +--- + # Setting up Ethical Metrics :::tip diff --git a/docs/user/ethical-metrics/troubleshooting.md b/docs/user/ethical-metrics/troubleshooting.md index e9399865f..1a38fc374 100644 --- a/docs/user/ethical-metrics/troubleshooting.md +++ b/docs/user/ethical-metrics/troubleshooting.md @@ -1,3 +1,8 @@ +--- +title: "Troubleshooting" +llm_description: "FAQ for Ethical Metrics: verifying registration, testing alerts, and unregistering from monitoring." +--- + # Troubleshooting Experiencing trouble when setting your notifications up? Check this FAQ. If your issue isn't listed, please pay us a visit in the [Dappnode Discord](https://discord.gg/dappnode) and we'll be happy to assist you! diff --git a/docs/user/faqs.md b/docs/user/faqs.md index c4c9162fc..e60659c42 100644 --- a/docs/user/faqs.md +++ b/docs/user/faqs.md @@ -1,3 +1,8 @@ +--- +title: "FAQs" +llm_description: "Common questions about staking, installation issues, VPN/Wireguard, client syncing, and specs." +--- + # FAQs
diff --git a/docs/user/getting-started/access-dappnode-via-wifi.md b/docs/user/getting-started/access-dappnode-via-wifi.md index a516d0ad1..ad33077b6 100644 --- a/docs/user/getting-started/access-dappnode-via-wifi.md +++ b/docs/user/getting-started/access-dappnode-via-wifi.md @@ -1,3 +1,8 @@ +--- +title: "Access Dappnode via Wi-Fi" +llm_description: "How to connect to DappnodeWIFI hotspot and access the web interface via browser." +--- + # Access Dappnode via Wi-Fi After connecting your Dappnode to the router and power, and turning it on, it's time to connect to it. diff --git a/docs/user/getting-started/choose-your-path.md b/docs/user/getting-started/choose-your-path.md index 5eecc8583..da7ed3011 100644 --- a/docs/user/getting-started/choose-your-path.md +++ b/docs/user/getting-started/choose-your-path.md @@ -1,3 +1,8 @@ +--- +title: "Choose your path" +llm_description: "Entry point to choose between using pre-installed Dappnode or installing on your own machine." +--- + # Choose your path Regardless of how you wish to utilize Dappnode, taking the initiative to contribute to decentralization and earning rewards is commendable. Embark on your desired path and experience the full potential of Dappnode. diff --git a/docs/user/getting-started/connect-dappnode-to-the-router.md b/docs/user/getting-started/connect-dappnode-to-the-router.md index 2d3bc1521..d948f283a 100644 --- a/docs/user/getting-started/connect-dappnode-to-the-router.md +++ b/docs/user/getting-started/connect-dappnode-to-the-router.md @@ -1,3 +1,8 @@ +--- +title: "Connect your dappnode to the router and power" +llm_description: "Instructions to connect Dappnode to router via ethernet and enable UPnP for port forwarding." +--- + # Connect your dappnode to the router and power Dappnode offers a seamless plug-and-play experience. For optimal performance and to ensure smooth operation, please connect your Dappnode to your router and enable UPnP settings within the router. diff --git a/docs/user/getting-started/next-steps.md b/docs/user/getting-started/next-steps.md index ecbdbecf1..df8611d4f 100644 --- a/docs/user/getting-started/next-steps.md +++ b/docs/user/getting-started/next-steps.md @@ -1,3 +1,8 @@ +--- +title: "Next Steps" +llm_description: "Suggested actions after setup: configure VPN access, start staking, and enable Ethical Metrics." +--- + # Next Steps Now that your DAppNode is set up and ready to go, it's time to explore further configurations and features to get the most out of your experience. Here are some of the most common next steps: diff --git a/docs/user/getting-started/register.md b/docs/user/getting-started/register.md index d38582602..aacaacbe6 100644 --- a/docs/user/getting-started/register.md +++ b/docs/user/getting-started/register.md @@ -1,3 +1,8 @@ +--- +title: "Register" +llm_description: "Guide to create a Dappnode account, secure recovery token, and log in to the interface." +--- + # Register ## 1. Register as New User diff --git a/docs/user/getting-started/setup.md b/docs/user/getting-started/setup.md index 3932fb1a0..bb25ba103 100644 --- a/docs/user/getting-started/setup.md +++ b/docs/user/getting-started/setup.md @@ -1,3 +1,8 @@ +--- +title: "Setup" +llm_description: "Initial configuration: repository source, auto-updates, notifications, and host password setup." +--- + # Setup Setting up Dappnode is a straightforward process. This guide will walk you through configuring your Dappnode for the first time. diff --git a/docs/user/hardware/maintenance.md b/docs/user/hardware/maintenance.md index d419066b1..57267c26f 100644 --- a/docs/user/hardware/maintenance.md +++ b/docs/user/hardware/maintenance.md @@ -1,3 +1,8 @@ +--- +title: "Maintenance" +llm_description: "Hardware maintenance tips: airflow, dust cleaning, and thermal paste replacement procedures." +--- + # Maintenance This section will cover four different approaches to servicing your hardware. The order is by level of difficulty from easiest to hardest. Remember that if you have any questions they're always welcome in our [Discord server](https://discord.gg/dappnode). diff --git a/docs/user/hardware/overview.md b/docs/user/hardware/overview.md index edc1eb676..df6a6ca03 100644 --- a/docs/user/hardware/overview.md +++ b/docs/user/hardware/overview.md @@ -1,3 +1,8 @@ +--- +title: "Hardware" +llm_description: "Overview of hardware-related documentation covering maintenance and temperature monitoring." +--- + # Hardware In this section you will find information related to the hardware of the Dappnode's host machine. If you had noticed any issue with it and have tried some steps provided by the Dappnode community and/or staff without success, this section of the Dappnode documentation will help you solving those that are on the hardware side of things. diff --git a/docs/user/hardware/temperature.md b/docs/user/hardware/temperature.md index b27c89c22..bbced0cf3 100644 --- a/docs/user/hardware/temperature.md +++ b/docs/user/hardware/temperature.md @@ -1,3 +1,8 @@ +--- +title: "Temperature" +llm_description: "How to monitor CPU temperature via dashboard and configure temperature alerts." +--- + # Temperature Keeping a close eye to your Dappnode's temperature is part of the Node Runner's basic good practices. Dappnode provides you with metrics πŸ“Š in the [main dashboard](http://my.dappnode/dashboard) to do so. diff --git a/docs/user/install/arm.md b/docs/user/install/arm.md index 6e2789639..1d778979b 100644 --- a/docs/user/install/arm.md +++ b/docs/user/install/arm.md @@ -1,3 +1,8 @@ +--- +title: "Install - ARM" +llm_description: "ARM installation guide using script method, plus instructions to add external SSD storage." +--- + # Install - ARM ## Hardware Recommendations diff --git a/docs/user/install/dappnode-commands.md b/docs/user/install/dappnode-commands.md index f856e565f..c0dfaa9a3 100644 --- a/docs/user/install/dappnode-commands.md +++ b/docs/user/install/dappnode-commands.md @@ -1,3 +1,8 @@ +--- +title: "Dappnode commands" +llm_description: "Reference list of CLI commands: wifi, VPN credentials, status, start, and stop Dappnode." +--- + # Dappnode commands Dappnode comes with a set of commands that can be used to manage the system. These commands can be used directly from the command line. diff --git a/docs/user/install/iso.md b/docs/user/install/iso.md index 663640949..763155221 100644 --- a/docs/user/install/iso.md +++ b/docs/user/install/iso.md @@ -1,3 +1,8 @@ +--- +title: "ISO Installation" +llm_description: "Guide to install Dappnode from ISO: download, burn to USB, boot, and follow prompts." +--- + # ISO Installation When you want to perform a clean installation by installing the base operating system and Dappnode. Installing from an ISO will wipe the machine data and install Dappnode over Debian. diff --git a/docs/user/install/overview.md b/docs/user/install/overview.md index ffb651321..4113701b6 100644 --- a/docs/user/install/overview.md +++ b/docs/user/install/overview.md @@ -1,3 +1,8 @@ +--- +title: "Installation Overview" +llm_description: "Installation overview: minimum hardware specs and comparison of ISO vs script methods." +--- + # Installation Overview ## Specifications & Minimum Requirements diff --git a/docs/user/install/script.md b/docs/user/install/script.md index 1f64955bb..f4c4e5f7a 100644 --- a/docs/user/install/script.md +++ b/docs/user/install/script.md @@ -1,3 +1,8 @@ +--- +title: "Script installation" +llm_description: "Install Dappnode via bash script on Debian/Ubuntu, including prerequisites and update commands." +--- + # Script installation You can install Dappnode using the installation script. In this case, we recommend you use Ubuntu or Debian as your operating system. diff --git a/docs/user/notifications/devices.md b/docs/user/notifications/devices.md index 485a16d75..409bbf893 100644 --- a/docs/user/notifications/devices.md +++ b/docs/user/notifications/devices.md @@ -1,3 +1,8 @@ +--- +title: "Devices management" +llm_description: "How to subscribe desktop/mobile devices to receive push notifications in Dappnode." +--- + # Devices management To receive push notifications in Dappnode, users need to subscribe their devices. diff --git a/docs/user/notifications/inbox.md b/docs/user/notifications/inbox.md index c52cec609..ee63fdab2 100644 --- a/docs/user/notifications/inbox.md +++ b/docs/user/notifications/inbox.md @@ -1,3 +1,8 @@ +--- +title: "πŸ“¨ Notifications Inbox" +llm_description: "View notification inbox with history, priority levels, status, categories, and filtering options." +--- + # πŸ“¨ Notifications Inbox In the inbox section, you will see new notifications and the complete history. diff --git a/docs/user/notifications/legacy.md b/docs/user/notifications/legacy.md index 2f7cb2c9c..521e4d8ba 100644 --- a/docs/user/notifications/legacy.md +++ b/docs/user/notifications/legacy.md @@ -1,3 +1,8 @@ +--- +title: "Notifications Legacy" +llm_description: "Legacy email/telegram notification system being deprecated in favor of the new unified system." +--- + # Notifications Legacy In the legacy section you have access to the previous system of notifications with email and telegram. The aim of the new notification system is to unify the notifications in a single channel in desktop and mobile to facilitate the user experience and be more reliable, configurable and scalable. Therefore, this section will be deprecated in the upcoming core releases. diff --git a/docs/user/notifications/notifications-list.md b/docs/user/notifications/notifications-list.md index 0de0173ed..5e8eb7f40 100644 --- a/docs/user/notifications/notifications-list.md +++ b/docs/user/notifications/notifications-list.md @@ -1,3 +1,8 @@ +--- +title: "List of Notifications" +llm_description: "Complete list of Dappnode notifications: system, DMS, execution/consensus clients, validators." +--- + # List of Notifications This is the full list of events that will be notified in your Dappnode. diff --git a/docs/user/notifications/overview.md b/docs/user/notifications/overview.md index 6fddde26c..9e22880fd 100644 --- a/docs/user/notifications/overview.md +++ b/docs/user/notifications/overview.md @@ -1,3 +1,8 @@ +--- +title: "Notifications Overview" +llm_description: "Introduction to Dappnode's built-in notification system for monitoring hardware, system, and staking." +--- + # Notifications Overview Dappnode Notifications is a built-in system that keeps you informed about important events and updates across your Dappnode setup. Whether it's a new software release, a hardware warning, or a consensus sync alert β€” notifications are your go-to source for staying up to date. diff --git a/docs/user/notifications/settings.md b/docs/user/notifications/settings.md index 0e2e76b14..5319e91c1 100644 --- a/docs/user/notifications/settings.md +++ b/docs/user/notifications/settings.md @@ -1,3 +1,8 @@ +--- +title: "πŸ› οΈ Notifications Settings" +llm_description: "Configure notification preferences per package with master switch and threshold sliders." +--- + # πŸ› οΈ Notifications Settings In the settings section you can configure the type of notification you would like to receive per package. diff --git a/docs/user/packages/avalanche.md b/docs/user/packages/avalanche.md index 4dfd6663c..1a084de50 100644 --- a/docs/user/packages/avalanche.md +++ b/docs/user/packages/avalanche.md @@ -1,3 +1,8 @@ +--- +title: Avalanche +llm_description: Running Avalanche nodes on Dappnode for network decentralization and AVAX staking rewards. +--- + # Avalanche ## Avalanche: A Revolutionary Consensus Protocol diff --git a/docs/user/packages/bitcoin.md b/docs/user/packages/bitcoin.md index d221d9892..8bac3666d 100644 --- a/docs/user/packages/bitcoin.md +++ b/docs/user/packages/bitcoin.md @@ -1,3 +1,8 @@ +--- +title: Bitcoin +llm_description: Running a Bitcoin node on Dappnode to validate transactions and support network decentralization. +--- + # Bitcoin ## Exploring Bitcoin: The Pioneer of Cryptocurrency diff --git a/docs/user/packages/dms.md b/docs/user/packages/dms.md index 190360011..0d272e269 100644 --- a/docs/user/packages/dms.md +++ b/docs/user/packages/dms.md @@ -1,3 +1,8 @@ +--- +title: "Dappnode Monitoring Service (DMS)" +llm_description: "Dappnode Monitoring Service using Prometheus and Grafana for system and package health monitoring." +--- + # Dappnode Monitoring Service (DMS) As a Dappnode user, there are times when having insights into the performance of your packages or your whole system can be incredibly beneficial. This means understanding the condition or "health" of your packages, the utilization of your computer resources such as CPU, RAM, and disk space, as well as monitoring network traffic flow. Yet, managing all of these aspects can become complex and tedious, even for those with experience. This is precisely where the Dappnode Monitoring Service (DMS) steps in to simplify matters. diff --git a/docs/user/packages/ethclassic.md b/docs/user/packages/ethclassic.md index 010c24124..93b3d5b8a 100644 --- a/docs/user/packages/ethclassic.md +++ b/docs/user/packages/ethclassic.md @@ -1,3 +1,8 @@ +--- +title: Ethereum Classic +llm_description: Running Ethereum Classic nodes on Dappnode to support blockchain immutability principles. +--- + # Ethereum Classic ## Introducing Ethereum Classic: Preserving Blockchain Principles Ethereum Classic, a steadfast blockchain, emerged from the Ethereum chain split, committed to upholding the unwavering principles of blockchain immutability. Ethereum Classic champions the preservation of transaction history and decentralized governance. diff --git a/docs/user/packages/monero.md b/docs/user/packages/monero.md index b62ea0922..ceecc0b96 100644 --- a/docs/user/packages/monero.md +++ b/docs/user/packages/monero.md @@ -1,3 +1,8 @@ +--- +title: Monero +llm_description: Running a Monero node on Dappnode to support the privacy-focused cryptocurrency network. +--- + # Monero ## Introducing Monero: A Privacy-Centric Cryptocurrency diff --git a/docs/user/packages/signature.md b/docs/user/packages/signature.md index a76ef9da7..8d758758c 100644 --- a/docs/user/packages/signature.md +++ b/docs/user/packages/signature.md @@ -1,3 +1,8 @@ +--- +title: "Packages' Signature" +llm_description: "Package signature verification system with trusted keys management and bypass options." +--- + # Packages' Signature ## Dappnode's Packages Signatures diff --git a/docs/user/packages/swarm.md b/docs/user/packages/swarm.md index 816ae31d9..c44dbf900 100644 --- a/docs/user/packages/swarm.md +++ b/docs/user/packages/swarm.md @@ -1,3 +1,8 @@ +--- +title: "Guide to Installing Bee Node on Dappnode" +llm_description: "Guide to installing and running a Swarm Bee node on Dappnode for decentralized storage." +--- + # Guide to Installing Bee Node on Dappnode ## Introduction to Swarm diff --git a/docs/user/packages/understanding-dappnode-packages/backup.md b/docs/user/packages/understanding-dappnode-packages/backup.md index 832634dfe..16ab2d0a4 100644 --- a/docs/user/packages/understanding-dappnode-packages/backup.md +++ b/docs/user/packages/understanding-dappnode-packages/backup.md @@ -1,3 +1,8 @@ +--- +title: "Backup" +llm_description: "Backup and restore functionality for packages with sensitive data like validator keystores." +--- + # Backup This option will be available in packages that generate any kind of local database that includes sensitive information such as validator keystores. You'll have two very self-explanatory options: "Backup Now" and "Restore Backup". diff --git a/docs/user/packages/understanding-dappnode-packages/config.md b/docs/user/packages/understanding-dappnode-packages/config.md index f83c73838..86e4a8720 100644 --- a/docs/user/packages/understanding-dappnode-packages/config.md +++ b/docs/user/packages/understanding-dappnode-packages/config.md @@ -1,3 +1,8 @@ +--- +title: "Config" +llm_description: "Package configuration settings with simple and advanced modes for parameter customization." +--- + # Config The Config section provides access to the package's settings, available in both simple and advanced modes. You can switch to the advanced mode by clicking the option in the lower-right corner of the screen when it is available. This flexibility allows users to customize package parameters according to their needs, from basic adjustments to more detailed configurations. diff --git a/docs/user/packages/understanding-dappnode-packages/file-manager.md b/docs/user/packages/understanding-dappnode-packages/file-manager.md index 50eb0255d..7e1fda16d 100644 --- a/docs/user/packages/understanding-dappnode-packages/file-manager.md +++ b/docs/user/packages/understanding-dappnode-packages/file-manager.md @@ -1,3 +1,8 @@ +--- +title: "File Manager" +llm_description: "File Manager for downloading and uploading files to package databases without terminal." +--- + # File Manager Also handy whenever your package has a database you'll need to access or modify, but without going through a terminal. Download and upload files in an easy way with the File Manager. diff --git a/docs/user/packages/understanding-dappnode-packages/info.md b/docs/user/packages/understanding-dappnode-packages/info.md index 52e0a57bb..efd56520c 100644 --- a/docs/user/packages/understanding-dappnode-packages/info.md +++ b/docs/user/packages/understanding-dappnode-packages/info.md @@ -1,3 +1,8 @@ +--- +title: "Info" +llm_description: "Package info section showing version, status, links, and management options like remove/restart." +--- + # Info The Info section provides a comprehensive overview of the package's status and essential details. This section is crucial for understanding the current state of the package and managing its basic operations. Below are the key features you'll find in the Info section: diff --git a/docs/user/packages/understanding-dappnode-packages/logs.md b/docs/user/packages/understanding-dappnode-packages/logs.md index 584ae3173..31bb0d316 100644 --- a/docs/user/packages/understanding-dappnode-packages/logs.md +++ b/docs/user/packages/understanding-dappnode-packages/logs.md @@ -1,3 +1,8 @@ +--- +title: "Logs" +llm_description: "View package logs for troubleshooting, with multi-service support for beacon-chain/validator." +--- + # Logs This is a great section for finding out something that is not working in your package or to look for both expected and unexpected behavior. Packages with multiple services will give you the option to switch logs in the top "Service" bar, something common for consensus clients for example, which usually run one service for the `beacon-chain` and another one for `validator`. Whenever you request for support in the Dappnode community, keep these handy! diff --git a/docs/user/packages/understanding-dappnode-packages/network.md b/docs/user/packages/understanding-dappnode-packages/network.md index 4f4a4628f..51bd6a471 100644 --- a/docs/user/packages/understanding-dappnode-packages/network.md +++ b/docs/user/packages/understanding-dappnode-packages/network.md @@ -1,3 +1,8 @@ +--- +title: "Network" +llm_description: "Network configuration for packages: port mapping, HTTPS domains, and basic authentication." +--- + # Network The Network section allows you to manage and configure the network settings for your packages. This includes adjusting network settings for individual services, changing port mappings, and setting up domain mappings to expose your package to the internet. diff --git a/docs/user/packages/understanding-dappnode-packages/overview.md b/docs/user/packages/understanding-dappnode-packages/overview.md index d7d57158b..a99c56af2 100644 --- a/docs/user/packages/understanding-dappnode-packages/overview.md +++ b/docs/user/packages/understanding-dappnode-packages/overview.md @@ -1,3 +1,8 @@ +--- +title: "Dappnode Packages" +llm_description: "Overview of Dappnode package features: Info, Config, Network, Logs, File Manager, and Backup." +--- + # Dappnode Packages ### What are Dappnode packages? What features do they offer? How are they managed? diff --git a/docs/user/repository/ethereum.md b/docs/user/repository/ethereum.md index 8e84d4e36..019165cb8 100644 --- a/docs/user/repository/ethereum.md +++ b/docs/user/repository/ethereum.md @@ -1,3 +1,8 @@ +--- +title: "Ethereum repository" +llm_description: "How Dappnode connects to Ethereum nodes for package distribution via smart contracts." +--- + # Ethereum repository Dappnode uses smart contracts to distribute Dappnode's packages available in the Dappstore and the Stakers tab. These smart contracts are deployed on the Ethereum blockchain, and the execution client interacts with them to get the list of available packages and download them. diff --git a/docs/user/repository/ipfs.md b/docs/user/repository/ipfs.md index cdae19a27..9526e8981 100644 --- a/docs/user/repository/ipfs.md +++ b/docs/user/repository/ipfs.md @@ -1,3 +1,8 @@ +--- +title: "IPFS repository" +llm_description: "Configure local or remote IPFS nodes for downloading Dappnode packages from the Dappstore." +--- + # IPFS repository Dappnode leverages IPFS for distributing packages available in the Dappstore. To download these packages, your Dappnode requires a connection to an IPFS node. When it comes to connecting to the IPFS network, you have two primary choices: diff --git a/docs/user/rollups/aztec.md b/docs/user/rollups/aztec.md index 354dee831..3f1c7a1d0 100644 --- a/docs/user/rollups/aztec.md +++ b/docs/user/rollups/aztec.md @@ -1,3 +1,8 @@ +--- +title: "πŸš€ Becoming an Aztec Sequencer with DAppNode" +llm_description: "Step-by-step guide to becoming an Aztec sequencer using DAppNode infrastructure." +--- + # πŸš€ Becoming an Aztec Sequencer with DAppNode Your comprehensive guide to setting up and joining the Aztec network as a sequencer using DAppNode infrastructure. Let's get you sequencing! 🎯 diff --git a/docs/user/rollups/optimism.md b/docs/user/rollups/optimism.md index 2507b3fc8..20565c1cd 100644 --- a/docs/user/rollups/optimism.md +++ b/docs/user/rollups/optimism.md @@ -1,3 +1,8 @@ +--- +title: "Optimism Rollup" +llm_description: "Setting up an Optimism Layer 2 node on Dappnode using op-node and op-geth/op-erigon." +--- + # Optimism Rollup Optimism is Ethereum's Layer 2 solution, leveraging Optimistic Rollups to enhance transaction speeds and lower costs. It conducts transactions off-chain, reconciling final states on the main Ethereum chain, all while preserving compatibility with Ethereum smart contracts. diff --git a/docs/user/rollups/overview.md b/docs/user/rollups/overview.md index ad81eb895..2e73cf767 100644 --- a/docs/user/rollups/overview.md +++ b/docs/user/rollups/overview.md @@ -1,3 +1,8 @@ +--- +title: "Ethereum Rollups: An Overview" +llm_description: "Overview of Ethereum rollups as Layer 2 scaling solutions and how to enable them in Dappnode." +--- + # Ethereum Rollups: An Overview Rollups are advanced layer-2 scaling solutions designed to increase the throughput of the Ethereum network. By executing and storing transaction data off the main Ethereum chain while keeping a cryptographic commitment on-chain, Rollups enhance scalability and reduce fees. Rollups can be broadly categorized into two types: Optimistic Rollups and zk-Rollups, each with its unique approach and trade-offs. diff --git a/docs/user/staking/ethereum/dvt-technologies/diva.md b/docs/user/staking/ethereum/dvt-technologies/diva.md index 92aa02e91..06cde5427 100644 --- a/docs/user/staking/ethereum/dvt-technologies/diva.md +++ b/docs/user/staking/ethereum/dvt-technologies/diva.md @@ -1,3 +1,8 @@ +--- +title: "Diva package for Dappnode" +llm_description: "Run a Diva DVT operator node for liquid staking with distributed validator technology." +--- + # Diva package for Dappnode --- diff --git a/docs/user/staking/ethereum/dvt-technologies/obol-network.md b/docs/user/staking/ethereum/dvt-technologies/obol-network.md index 4d0b87580..8f0f235f1 100644 --- a/docs/user/staking/ethereum/dvt-technologies/obol-network.md +++ b/docs/user/staking/ethereum/dvt-technologies/obol-network.md @@ -1,3 +1,8 @@ +--- +title: "Obol Distributed Validator package for Dappnode" +llm_description: "Set up Obol distributed validators with DKG ceremony and cluster configuration on Dappnode." +--- + # Obol Distributed Validator package for Dappnode --- diff --git a/docs/user/staking/ethereum/dvt-technologies/ssv-network.md b/docs/user/staking/ethereum/dvt-technologies/ssv-network.md index 4591c1b7f..51fcc6521 100644 --- a/docs/user/staking/ethereum/dvt-technologies/ssv-network.md +++ b/docs/user/staking/ethereum/dvt-technologies/ssv-network.md @@ -1,3 +1,8 @@ +--- +title: "SSV Distributed Validator package for Dappnode" +llm_description: "Register and run an SSV distributed validator operator node on Dappnode." +--- + # SSV Distributed Validator package for Dappnode --- diff --git a/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md b/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md index 850f1378e..316f94eca 100644 --- a/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md +++ b/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md @@ -1,3 +1,8 @@ +--- +title: "Already a node operator" +llm_description: "Instructions for existing Lido CSM node operators to integrate with Dappnode." +--- + # Already a node operator This document provides detailed instructions for existing Node Operators on integrating their setup with the Lido Community Staking Module (CSM) via Dappnode. By following these steps, you can efficiently manage your validators and ensure proper functionality within the Lido protocol. diff --git a/docs/user/staking/ethereum/lsd-pools/lido/notifications.md b/docs/user/staking/ethereum/lsd-pools/lido/notifications.md index ddd0e4c79..308c7767a 100644 --- a/docs/user/staking/ethereum/lsd-pools/lido/notifications.md +++ b/docs/user/staking/ethereum/lsd-pools/lido/notifications.md @@ -1,3 +1,8 @@ +--- +title: "Notifications & Warnings" +llm_description: "Configure Telegram notifications and UI warnings for Lido CSM validator monitoring." +--- + # Notifications & Warnings The DAppNodePackage-lido-csm provides notifications and warnings to help you monitor your infraestructure and validator performance. You will be able to setup your notifications either during the onboarding process if you are registering as a new Node Operator and from the UI navigating to `/notifications`. diff --git a/docs/user/staking/ethereum/lsd-pools/lido/overview.md b/docs/user/staking/ethereum/lsd-pools/lido/overview.md index 4897d3fa3..ff5d2b85b 100644 --- a/docs/user/staking/ethereum/lsd-pools/lido/overview.md +++ b/docs/user/staking/ethereum/lsd-pools/lido/overview.md @@ -1,3 +1,8 @@ +--- +title: "Lido Community Staking Module (CSM)" +llm_description: "Lido CSM overview: permissionless staking from 2.4 ETH with Dappnode integration features." +--- + # Lido Community Staking Module (CSM) --- diff --git a/docs/user/staking/ethereum/lsd-pools/lido/performance.md b/docs/user/staking/ethereum/lsd-pools/lido/performance.md index 19505d3ef..4f8496172 100644 --- a/docs/user/staking/ethereum/lsd-pools/lido/performance.md +++ b/docs/user/staking/ethereum/lsd-pools/lido/performance.md @@ -1,3 +1,8 @@ +--- +title: "Validator performance monitoring" +llm_description: "Monitor Lido validator performance with attestation rates and efficiency comparisons." +--- + # Validator performance monitoring The **Performance** tab allows you to monitor the performance of your Lido validators associated with your Node Operator. diff --git a/docs/user/staking/ethereum/lsd-pools/lido/register.md b/docs/user/staking/ethereum/lsd-pools/lido/register.md index c4bed20bf..89265e6ee 100644 --- a/docs/user/staking/ethereum/lsd-pools/lido/register.md +++ b/docs/user/staking/ethereum/lsd-pools/lido/register.md @@ -1,3 +1,8 @@ +--- +title: "**Become a Lido Node Operator with Dappnode**" +llm_description: "Step-by-step guide to register as a new Lido CSM node operator on Dappnode." +--- + # **Become a Lido Node Operator with Dappnode** **Dappnode** provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards. An overview of the process is how the Lido CSM UI will greet you when first connecting your wallet to the dApp: diff --git a/docs/user/staking/ethereum/lsd-pools/rocketpool.md b/docs/user/staking/ethereum/lsd-pools/rocketpool.md index 81a15bc7c..b0794ffd3 100644 --- a/docs/user/staking/ethereum/lsd-pools/rocketpool.md +++ b/docs/user/staking/ethereum/lsd-pools/rocketpool.md @@ -1,3 +1,8 @@ +--- +title: "Rocketpool" +llm_description: "Run Rocketpool minipools on Dappnode with as little as 8 or 16 ETH." +--- + # Rocketpool --- diff --git a/docs/user/staking/ethereum/lsd-pools/stakehouse.md b/docs/user/staking/ethereum/lsd-pools/stakehouse.md index 592fddd8d..71e1eff3f 100644 --- a/docs/user/staking/ethereum/lsd-pools/stakehouse.md +++ b/docs/user/staking/ethereum/lsd-pools/stakehouse.md @@ -1,3 +1,8 @@ +--- +title: "Stakehouse" +llm_description: "Become a Stakehouse node runner with 4 ETH using Web3Signer integration." +--- + # Stakehouse --- diff --git a/docs/user/staking/ethereum/lsd-pools/stakewise.md b/docs/user/staking/ethereum/lsd-pools/stakewise.md index 3aec1746e..ce96d68f9 100644 --- a/docs/user/staking/ethereum/lsd-pools/stakewise.md +++ b/docs/user/staking/ethereum/lsd-pools/stakewise.md @@ -1,3 +1,8 @@ +--- +title: "StakeWise" +llm_description: "StakeWise liquid staking setup on Dappnode with solo or pooled staking options." +--- + # StakeWise --- diff --git a/docs/user/staking/ethereum/solo/holesky.md b/docs/user/staking/ethereum/solo/holesky.md index 3abb8dddd..cab81bb56 100644 --- a/docs/user/staking/ethereum/solo/holesky.md +++ b/docs/user/staking/ethereum/solo/holesky.md @@ -1,3 +1,8 @@ +--- +title: "Holesky Testnet" +llm_description: "Run validators on Holesky testnet for risk-free Ethereum staking practice." +--- + # Holesky Testnet The **Holesky testnet** is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike. diff --git a/docs/user/staking/ethereum/solo/mainnet.md b/docs/user/staking/ethereum/solo/mainnet.md index 45d0dea81..f72e915b4 100644 --- a/docs/user/staking/ethereum/solo/mainnet.md +++ b/docs/user/staking/ethereum/solo/mainnet.md @@ -1,3 +1,8 @@ +--- +title: "Ethereum mainnet" +llm_description: "Complete guide to solo staking on Ethereum mainnet: setup, key generation, and deposits." +--- + # Ethereum mainnet Ethereum stands as a titan in the realm of smart contract platforms. Its monumental shift from Proof of Work (PoW) to Proof of Stake (PoS) has opened up opportunities for individuals to participate in Ethereum's block production by staking ETH. diff --git a/docs/user/staking/gnosis-chain/consolidate-gnosis-validators.md b/docs/user/staking/gnosis-chain/consolidate-gnosis-validators.md index 9f590d318..379afd6f6 100644 --- a/docs/user/staking/gnosis-chain/consolidate-gnosis-validators.md +++ b/docs/user/staking/gnosis-chain/consolidate-gnosis-validators.md @@ -1,3 +1,8 @@ +--- +title: "Consolidate your Gnosis validators" +llm_description: "Guide to merge multiple Gnosis validators into fewer ones after Pectra hard fork." +--- + # Consolidate your Gnosis validators After the Pectra hard fork, validator consolidations are ready to use in Gnosis chain. diff --git a/docs/user/staking/gnosis-chain/consolidation-gnosis.md b/docs/user/staking/gnosis-chain/consolidation-gnosis.md index 56d2fdc96..7eb8e38a7 100644 --- a/docs/user/staking/gnosis-chain/consolidation-gnosis.md +++ b/docs/user/staking/gnosis-chain/consolidation-gnosis.md @@ -1,3 +1,8 @@ +--- +title: "Consolidate your Gnosis validators" +llm_description: "Guide to merge multiple Gnosis validators into fewer ones after Pectra hard fork." +--- + # Consolidate your Gnosis validators After the Pectra hard fork, validator consolidations are ready to use in Gnosis chain. diff --git a/docs/user/staking/gnosis-chain/incentive-program.md b/docs/user/staking/gnosis-chain/incentive-program.md index 72eaed979..754688128 100644 --- a/docs/user/staking/gnosis-chain/incentive-program.md +++ b/docs/user/staking/gnosis-chain/incentive-program.md @@ -1,3 +1,8 @@ +--- +title: "Gnosis Chain Incentive Program" +llm_description: "How to claim free GNO validators through Dappnode's Gnosis Chain incentive program." +--- + # Gnosis Chain Incentive Program Gnosis Chain is a Proof of Stake blockchain that uses the GNO token for staking. The Gnosis incentive program rewards validators for their work in the network. It is designed to incentivize validators to participate and secure the network. diff --git a/docs/user/staking/gnosis-chain/solo.md b/docs/user/staking/gnosis-chain/solo.md index f92f828f2..19592fb55 100644 --- a/docs/user/staking/gnosis-chain/solo.md +++ b/docs/user/staking/gnosis-chain/solo.md @@ -1,3 +1,8 @@ +--- +title: "Gnosis Chain" +llm_description: "Complete guide to solo staking on Gnosis Chain: install packages, generate keys, deposit 1 GNO." +--- + # Gnosis Chain **Gnosis Chain** stands as a sentinel, functioning as a canary chain for Ethereum. It's operated and nurtured by the **GnosisDAO community**. With over 10% of its validators being home stakers via Dappnode, it's a testament to its popularity and accessibility. diff --git a/docs/user/staking/lukso/solo.md b/docs/user/staking/lukso/solo.md index 170cecb7d..cd8e427a6 100644 --- a/docs/user/staking/lukso/solo.md +++ b/docs/user/staking/lukso/solo.md @@ -1,3 +1,8 @@ +--- +title: "LUKSO" +llm_description: "Complete guide to solo staking on LUKSO: install packages, generate keys, deposit 32 LYX." +--- + # LUKSO **LUKSO** is the next-gen blockchain designed with creative industries in mind. Imagine a digital realm where the spirit of Ethereum meets the world of fashion, art, and design. That's LUKSO for you! diff --git a/docs/user/staking/overview.md b/docs/user/staking/overview.md index 9063c9e4d..ea626bd8f 100644 --- a/docs/user/staking/overview.md +++ b/docs/user/staking/overview.md @@ -1,3 +1,8 @@ +--- +title: "Earn with Staking in Dappnode" +llm_description: "Introduction to staking with Dappnode on Ethereum, Gnosis Chain, and LUKSO networks." +--- + # Earn with Staking in Dappnode ## Decentralize Proof-of-Stake chains and earn diff --git a/docs/user/staking/starknet/solo.md b/docs/user/staking/starknet/solo.md index 62bdfb4e9..0fcc075f9 100644 --- a/docs/user/staking/starknet/solo.md +++ b/docs/user/staking/starknet/solo.md @@ -1,3 +1,8 @@ +--- +title: "πŸš€ Starknet Validator Solo Staking Guide" +llm_description: "Guide to become a Starknet validator: create accounts, stake STRK, run attestation client." +--- + # πŸš€ Starknet Validator Solo Staking Guide **Starknet** is a Layer 2 network built on Ethereum, designed for scalability and performance using STARK proofs. diff --git a/docs/user/staking/switch-clients.md b/docs/user/staking/switch-clients.md index 512a583fa..244bdf20b 100644 --- a/docs/user/staking/switch-clients.md +++ b/docs/user/staking/switch-clients.md @@ -1,3 +1,8 @@ +--- +title: "Switch staking clients" +llm_description: "How to switch execution and consensus clients on Dappnode with sync times and best practices." +--- + # Switch staking clients This guide explains how to switch execution and consensus clients on Dappnode for Ethereum, Gnosis, and Lukso networks. It includes detailed information about the switching process and expected waiting times for resynchronization and attestation. diff --git a/docs/user/videos-and-tutorials/crash-course.md b/docs/user/videos-and-tutorials/crash-course.md index dd1fb128c..5a0872f5d 100644 --- a/docs/user/videos-and-tutorials/crash-course.md +++ b/docs/user/videos-and-tutorials/crash-course.md @@ -1,3 +1,8 @@ +--- +title: "Crash Course" +llm_description: "Collection of YouTube workshop recordings covering Dappnode setup, validators, and staking." +--- + # Crash Course :::info diff --git a/docs/user/videos-and-tutorials/driving-school/configuration.md b/docs/user/videos-and-tutorials/driving-school/configuration.md index 326cd4401..4b6a77007 100644 --- a/docs/user/videos-and-tutorials/driving-school/configuration.md +++ b/docs/user/videos-and-tutorials/driving-school/configuration.md @@ -1,3 +1,8 @@ +--- +title: "2. Configuring your Dappnode" +llm_description: "Video tutorials on configuring Dappnode: repositories, monitoring service, and notifications." +--- + # 2. Configuring your Dappnode :::info diff --git a/docs/user/videos-and-tutorials/driving-school/initial-setup.md b/docs/user/videos-and-tutorials/driving-school/initial-setup.md index 9e219de51..28ca4e140 100644 --- a/docs/user/videos-and-tutorials/driving-school/initial-setup.md +++ b/docs/user/videos-and-tutorials/driving-school/initial-setup.md @@ -1,3 +1,8 @@ +--- +title: "1. Initial Dappnode Setup" +llm_description: "Video tutorials for initial Dappnode setup: ISO boot, UI access, security, VPN, and syncing." +--- + # 1. Initial Dappnode Setup Welcome to Dappnode Driving School! Here you'll find a series of videos that will guide you through the initial setup process. From booting Dappnode from ISO and accessing it through VPN, to setting up your Ethereum node, we've got you covered. diff --git a/docs/user/videos-and-tutorials/guides/connect-node.md b/docs/user/videos-and-tutorials/guides/connect-node.md index d94f4cca5..7434754d9 100644 --- a/docs/user/videos-and-tutorials/guides/connect-node.md +++ b/docs/user/videos-and-tutorials/guides/connect-node.md @@ -1,3 +1,8 @@ +--- +title: "How to Connect to My Blockchain Node" +llm_description: "How to connect applications and Metamask to your Dappnode blockchain node via RPC." +--- + # How to Connect to My Blockchain Node When you've set up your Dappnode, you might want to connect various applications to your blockchain node. This process can vary depending on which blockchain you've selected. Below is a guide on how to do this: diff --git a/docs/user/videos-and-tutorials/guides/migrating-from-avado.md b/docs/user/videos-and-tutorials/guides/migrating-from-avado.md index a9ba62dcd..375c57129 100644 --- a/docs/user/videos-and-tutorials/guides/migrating-from-avado.md +++ b/docs/user/videos-and-tutorials/guides/migrating-from-avado.md @@ -1,3 +1,8 @@ +--- +title: "Transitioning To Dappnode" +llm_description: "Step-by-step guide to migrate Avado hardware to DAppnodeOS using a bootable USB." +--- + # Transitioning To Dappnode :::caution Warning diff --git a/docs/user/videos-and-tutorials/overview.md b/docs/user/videos-and-tutorials/overview.md index 6a7b06a06..74fabdd1b 100644 --- a/docs/user/videos-and-tutorials/overview.md +++ b/docs/user/videos-and-tutorials/overview.md @@ -1,3 +1,8 @@ +--- +title: "Videos and Tutorials" +llm_description: "Overview of Dappnode video tutorials and guides for beginners and advanced users." +--- + # Videos and Tutorials Welcome to the Videos and Tutorials section! Here, you'll find a curated list of videos and written tutorials designed to help you get the most out of Dappnode. Whether you're a beginner or an advanced user, there's something here for everyone. diff --git a/docusaurus.config.js b/docusaurus.config.js index 00997db48..a6ad98e4a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -34,6 +34,7 @@ const config = { plugins: [ require.resolve("@easyops-cn/docusaurus-search-local"), + require.resolve("./plugins/docusaurus-plugin-llm-markdown"), [ "@docusaurus/plugin-client-redirects", { diff --git a/package-lock.json b/package-lock.json index 8980358e5..d81be31b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@easyops-cn/docusaurus-search-local": "^0.44.2", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", + "glob": "^13.0.0", "prism-react-renderer": "^2.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -4477,6 +4478,27 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@jest/schemas": { "version": "29.6.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", @@ -6767,9 +6789,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8133,6 +8156,27 @@ "node": ">=10" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -8223,7 +8267,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.2", @@ -8287,19 +8332,17 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8321,6 +8364,21 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -9123,6 +9181,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -12001,6 +12061,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -12240,6 +12309,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -12512,6 +12582,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12534,6 +12605,31 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -14533,6 +14629,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rtlcss": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", @@ -14960,6 +15077,27 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -16406,7 +16544,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -19188,6 +19327,19 @@ "@hapi/hoek": "^9.0.0" } }, + "@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==" + }, + "@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "requires": { + "@isaacs/balanced-match": "^4.0.1" + } + }, "@jest/schemas": { "version": "29.6.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", @@ -20901,9 +21053,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -21838,6 +21990,19 @@ "universalify": "^2.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -21943,16 +22108,23 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" }, "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "dependencies": { + "minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "requires": { + "@isaacs/brace-expansion": "^5.0.0" + } + } } }, "glob-parent": { @@ -24286,6 +24458,11 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, "mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", @@ -24657,6 +24834,22 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "requires": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "dependencies": { + "lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==" + } + } + }, "path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -25908,6 +26101,21 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rtlcss": { @@ -26239,6 +26447,21 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "side-channel": { diff --git a/package.json b/package.json index deeeab1cc..1defeaa6b 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@easyops-cn/docusaurus-search-local": "^0.44.2", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", + "glob": "^13.0.0", "prism-react-renderer": "^2.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/plugins/docusaurus-plugin-llm-markdown/index.js b/plugins/docusaurus-plugin-llm-markdown/index.js new file mode 100644 index 000000000..be9a906d2 --- /dev/null +++ b/plugins/docusaurus-plugin-llm-markdown/index.js @@ -0,0 +1,141 @@ +const fs = require('fs'); +const path = require('path'); +const { glob } = require('glob'); + +/** + * Docusaurus plugin that generates plain markdown files for LLM consumption. + * + * Each markdown file should have an `llm_description` field in its frontmatter: + * + * --- + * title: My Page + * llm_description: Brief description of this page for LLM consumption. + * --- + */ +module.exports = function pluginLlmMarkdown(context) { + const { siteConfig } = context; + const siteUrl = siteConfig.url; + + return { + name: 'docusaurus-plugin-llm-markdown', + + async postBuild({ outDir }) { + const docsDir = path.join(context.siteDir, 'docs'); + const docsMetadata = []; + + console.log('[LLM Markdown] Generating markdown files for LLM consumption...'); + + // Find all markdown files in docs + const files = await glob('**/*.{md,mdx}', { cwd: docsDir }); + + for (const file of files) { + const sourcePath = path.join(docsDir, file); + const fileContent = fs.readFileSync(sourcePath, 'utf-8'); + + // Get title and llm_description from frontmatter + const title = getTitle(fileContent, file); + const llmDescription = getLlmDescription(fileContent); + + // Strip frontmatter + const strippedContent = stripFrontmatter(fileContent); + + // Convert file path to URL path + const urlPath = `/docs/${file.replace(/\.mdx?$/, '')}.md`; + + // Create output path + const outputPath = path.join(outDir, 'docs', file.replace(/\.mdx?$/, '.md')); + const outputDirPath = path.dirname(outputPath); + + // Ensure directory exists + fs.mkdirSync(outputDirPath, { recursive: true }); + + // Create header with reference to llms.txt index + const header = `> ## Documentation Index +> Fetch the complete documentation index at: ${siteUrl}/llms.txt +> Use this file to discover all available pages before exploring further. + +--- + +`; + + // Write the file with header + fs.writeFileSync(outputPath, header + strippedContent); + + // Store metadata for llms.txt + docsMetadata.push({ + title, + description: llmDescription, + url: `${siteUrl}${urlPath}`, + path: file, + }); + } + + // Sort by path alphabetically + docsMetadata.sort((a, b) => a.path.localeCompare(b.path)); + + // Generate llms.txt with descriptions + const docsList = docsMetadata + .map(doc => `- [${doc.title}](${doc.url}): ${doc.description}`) + .join('\n'); + + const llmsTxtContent = `# Knowledge Base + +## Docs + +${docsList} +`; + + fs.writeFileSync(path.join(outDir, 'llms.txt'), llmsTxtContent); + + console.log(`[LLM Markdown] Generated ${docsMetadata.length} markdown files`); + console.log(`[LLM Markdown] Created /llms.txt index`); + }, + }; +}; + +/** + * Remove YAML frontmatter from markdown content + */ +function stripFrontmatter(content) { + const frontmatterRegex = /^---\r?\n[\s\S]*?\r?\n---\r?\n*/; + return content.replace(frontmatterRegex, ''); +} + +/** + * Extract title from frontmatter or first heading + */ +function getTitle(content, filename) { + const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (frontmatterMatch) { + const titleMatch = frontmatterMatch[1].match(/^title:\s*["']?(.+?)["']?\s*$/m); + if (titleMatch) { + return titleMatch[1]; + } + } + + const headingMatch = content.match(/^#\s+(.+)$/m); + if (headingMatch) { + return headingMatch[1]; + } + + return filename + .replace(/\.mdx?$/, '') + .split('/') + .pop() + .replace(/-/g, ' ') + .replace(/\b\w/g, c => c.toUpperCase()); +} + +/** + * Extract llm_description from frontmatter + */ +function getLlmDescription(content) { + const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (frontmatterMatch) { + const descMatch = frontmatterMatch[1].match(/^llm_description:\s*["']?(.+?)["']?\s*$/m); + if (descMatch) { + return descMatch[1]; + } + } + return 'Documentation page'; +} diff --git a/plugins/docusaurus-plugin-llm-markdown/package.json b/plugins/docusaurus-plugin-llm-markdown/package.json new file mode 100644 index 000000000..804509a7d --- /dev/null +++ b/plugins/docusaurus-plugin-llm-markdown/package.json @@ -0,0 +1,6 @@ +{ + "name": "docusaurus-plugin-llm-markdown", + "version": "1.0.0", + "description": "Generates plain markdown files for LLM consumption", + "main": "index.js" +} diff --git a/src/components/ViewMarkdownButton/ViewMarkdownButton.module.css b/src/components/ViewMarkdownButton/ViewMarkdownButton.module.css new file mode 100644 index 000000000..9b0a9207a --- /dev/null +++ b/src/components/ViewMarkdownButton/ViewMarkdownButton.module.css @@ -0,0 +1,31 @@ +.button { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.25rem 0.6rem; + font-size: 0.75rem; + font-weight: 500; + color: var(--ifm-color-primary); + background-color: var(--ifm-background-color); + border: 1px solid var(--ifm-color-primary); + border-radius: 4px; + text-decoration: none; + transition: all 0.2s ease; + white-space: nowrap; + vertical-align: middle; + margin-left: auto; +} + +.button:hover { + background-color: var(--ifm-color-primary); + color: white; + text-decoration: none; +} + +/* Small code icon */ +.button::before { + content: "{ }"; + font-family: monospace; + font-size: 0.7rem; + font-weight: bold; +} diff --git a/src/components/ViewMarkdownButton/index.js b/src/components/ViewMarkdownButton/index.js new file mode 100644 index 000000000..d6a3526c0 --- /dev/null +++ b/src/components/ViewMarkdownButton/index.js @@ -0,0 +1,51 @@ +import { useEffect } from 'react'; +import { useLocation } from '@docusaurus/router'; +import styles from './ViewMarkdownButton.module.css'; + +export default function ViewMarkdownButton() { + const location = useLocation(); + + // Only show in production (markdown files only exist after build) + const isDev = process.env.NODE_ENV === 'development'; + + useEffect(() => { + if (isDev) return; + + // Find the main h1 title in the document + const title = document.querySelector('article header h1, article h1'); + if (!title) return; + + // Check if button already exists (prevent duplicates) + const existingButton = title.querySelector(`.${styles.button}`); + if (existingButton) { + existingButton.remove(); + } + + // Create button element directly in DOM (not managed by React) + const button = document.createElement('a'); + const currentPath = location.pathname.replace(/\/$/, ''); + button.href = `${currentPath}.md`; + button.target = '_blank'; + button.rel = 'noopener noreferrer'; + button.className = styles.button; + button.title = 'View raw markdown (optimized for LLMs)'; + button.textContent = 'View as Markdown'; + + // Style the title as flex container + title.style.display = 'flex'; + title.style.alignItems = 'center'; + title.style.flexWrap = 'wrap'; + title.style.gap = '0.75rem'; + + // Add button to title + title.appendChild(button); + + // Cleanup on unmount or path change + return () => { + button.remove(); + }; + }, [isDev, location.pathname]); + + // Return null - we're creating the button directly in the DOM + return null; +} diff --git a/src/theme/DocItem/index.js b/src/theme/DocItem/index.js new file mode 100644 index 000000000..4192d625e --- /dev/null +++ b/src/theme/DocItem/index.js @@ -0,0 +1,14 @@ +import DocItem from '@theme-original/DocItem'; +import ViewMarkdownButton from '@site/src/components/ViewMarkdownButton'; + +// This wrapper adds a "View Markdown" button next to the page title +// by wrapping the original Docusaurus DocItem component. +// The button uses useEffect to position itself inside the h1 title. +export default function DocItemWrapper(props) { + return ( + <> + + + + ); +} diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 000000000..4ae568e40 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://docs.dappnode.io/sitemap.xml