├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── main.yml │ └── netlify.yml ├── .gitignore ├── README.md ├── babel.config.js ├── blog ├── 2019-05-28-first-blog-post.md ├── 2019-05-29-long-blog-post.md ├── 2021-08-01-mdx-blog-post.mdx ├── 2021-08-26-welcome │ ├── docusaurus-plushie-banner.jpeg │ └── index.md └── authors.yml ├── docs ├── dao.md ├── dao │ ├── faq.md │ ├── liquidity-mining.md │ ├── node-basics.md │ ├── node-drop.md │ └── node-stream.md ├── dev.md ├── dev │ ├── dns.md │ ├── github-actions.md │ ├── metrics.md │ ├── notifications.md │ ├── package-development │ │ ├── multi-configuration.md │ │ ├── overview.md │ │ └── single-configuration.md │ ├── package-publishing │ │ ├── package-ownership.md │ │ └── publish-packages-clients.md │ ├── references │ │ ├── docker-compose.md │ │ ├── manifest.md │ │ ├── notifications.md │ │ └── setup-wizard.md │ └── sdk │ │ ├── commands.md │ │ ├── overview.md │ │ └── sdk-publish.md ├── smooth.md ├── smooth │ ├── deep-dive-into-smooth │ │ ├── consolidations.md │ │ ├── oracle-sm.md │ │ ├── overview.md │ │ ├── rewards.md │ │ ├── states.md │ │ └── vanilla-blocks.md │ ├── faq-glossary.md │ ├── subscribe-to-smooth │ │ ├── automatic.md │ │ ├── manual.md │ │ └── overview.md │ └── unsubscribe-from-smooth.md └── user │ ├── access-your-dappnode │ ├── local.md │ ├── overview.md │ ├── terminal.md │ ├── vpn │ │ ├── openvpn.md │ │ ├── overview.md │ │ ├── tailscale.md │ │ └── wireguard.md │ └── wifi.md │ ├── dappnode-cloud │ ├── overview.md │ └── providers │ │ ├── aws │ │ ├── faqs.md │ │ ├── overview.md │ │ └── set-up-instance.md │ │ └── coming-soon.md │ ├── ethical-metrics │ ├── metrics.md │ ├── overview.md │ ├── setup.md │ └── troubleshooting.md │ ├── faqs.md │ ├── getting-started │ ├── access-dappnode-via-wifi.md │ ├── choose-your-path.md │ ├── connect-dappnode-to-the-router.md │ ├── next-steps.md │ ├── register.md │ └── setup.md │ ├── hardware │ ├── maintenance.md │ ├── overview.md │ └── temperature.md │ ├── install │ ├── arm.md │ ├── dappnode-commands.md │ ├── iso.md │ ├── overview.md │ └── script.md │ ├── notifications │ ├── inbox.md │ ├── legacy.md │ ├── notifications-list.md │ ├── overview.md │ └── settings.md │ ├── packages │ ├── MysteriumVPN │ ├── avalanche.md │ ├── bitcoin.md │ ├── dms.md │ ├── ethclassic.md │ ├── monero.md │ ├── signature.md │ ├── swarm.md │ └── understanding-dappnode-packages │ │ ├── backup.md │ │ ├── config.md │ │ ├── file-manager.md │ │ ├── info.md │ │ ├── logs.md │ │ ├── network.md │ │ └── overview.md │ ├── repository │ ├── ethereum.md │ └── ipfs.md │ ├── rollups │ ├── optimism.md │ └── overview.md │ ├── staking │ ├── ethereum │ │ ├── dvt-technologies │ │ │ ├── diva.md │ │ │ ├── obol-network.md │ │ │ └── ssv-network.md │ │ ├── lsd-pools │ │ │ ├── lido │ │ │ │ ├── already-node-operator.md │ │ │ │ ├── notifications.md │ │ │ │ ├── overview.md │ │ │ │ ├── performance.md │ │ │ │ └── register.md │ │ │ ├── rocketpool.md │ │ │ ├── stakehouse.md │ │ │ └── stakewise.md │ │ └── solo │ │ │ ├── holesky.md │ │ │ └── mainnet.md │ ├── gnosis-chain │ │ ├── incentive-program.md │ │ └── solo.md │ ├── lukso │ │ └── solo.md │ ├── overview.md │ └── switch-clients.md │ └── videos-and-tutorials │ ├── crash-course.md │ ├── driving-school │ ├── configuration.md │ └── initial-setup.md │ ├── guides │ ├── connect-node.md │ └── migrating-from-avado.md │ └── overview.md ├── docusaurus.config.js ├── package-lock.json ├── package.json ├── sidebars.js ├── src ├── components │ └── HomepageFeatures │ │ ├── index.tsx │ │ └── styles.module.css ├── css │ └── custom.css └── pages │ ├── index.module.css │ └── index.tsx ├── static ├── .nojekyll ├── CNAME └── img │ ├── Dappnode_internal_IP.png │ ├── Dappnode_screen.png │ ├── Dappnode_ssh.png │ ├── Dappnode_wifi.png │ ├── Download_Etcher.png │ ├── Loading_flash.png │ ├── MEV_boost.png │ ├── Open_Etcher.png │ ├── Step2.png │ ├── Step3.png │ ├── Step4_connect.png │ ├── Step5.png │ ├── Step6.png │ ├── Step7.png │ ├── Step8.png │ ├── authkey1.png │ ├── authkey2.png │ ├── authkey3.png │ ├── authkey4.png │ ├── browser_UI_login.png │ ├── claimNODE.png │ ├── commands_welcome_message.png │ ├── connect-to-router.png │ ├── connect-two-dappnodes.png │ ├── customserver.png │ ├── dappnode-ssv1.png │ ├── dappnode-wifi.png │ ├── dappnode_box.png │ ├── dappnode_package_network.png │ ├── dappnode_packages1.png │ ├── dappnode_packages2.png │ ├── dappnode_packages3.png │ ├── dappnode_packages4.png │ ├── dappnode_packages5.png │ ├── dappnode_packages6.png │ ├── dashboard.png │ ├── demo.gif │ ├── diva-config1.png │ ├── diva-config2.png │ ├── dms-browse-dashboards.png │ ├── dms-dashboards-page.png │ ├── dms-docker-dashboard.png │ ├── driving-school-logo.png │ ├── ethereum-exit-validator.png │ ├── ethereum-staking-screenshot.png │ ├── ethical-metrics-dark.png │ ├── ethical-metrics-logo.png │ ├── ethical-metrics-setup.png │ ├── ethical-metrics-welcome.png │ ├── ethical-metrics.png │ ├── getting-started.png │ ├── gnosis-deposit-ui-claim-deposit.png │ ├── gnosis-deposit-ui-connect-wallet.png │ ├── gnosis-deposit-ui-deposit-executed.png │ ├── gnosis-deposit-ui-deposit-submitted.png │ ├── gnosis-deposit-ui-upload-deposit.png │ ├── gnosis-launchpad1.png │ ├── gnosis-launchpad2.png │ ├── gnosis-launchpad3.png │ ├── gnosis-launchpad4.png │ ├── gnosis-launchpad5.png │ ├── gnosis-launchpad6.png │ ├── gnosis-launchpad7.png │ ├── gnosis-wagyu1.png │ ├── gnosis-wagyu2.png │ ├── gnosischain-staking.png │ ├── gnosiswithdrawals1.png │ ├── gnosiswithdrawals2.png │ ├── holesky-stakers.png │ ├── install_dappnode.png │ ├── launchpad1.png │ ├── launchpad2.png │ ├── launchpad3.png │ ├── launchpad4.png │ ├── launchpad5.png │ ├── lido-csm-brain-import.png │ ├── lido-csm-config-tab.png │ ├── lido-csm-ensure-notifications.png │ ├── lido-csm-exit-failed.png │ ├── lido-csm-exit-request-warning.png │ ├── lido-csm-exit-requested.png │ ├── lido-csm-exit-success.png │ ├── lido-csm-infra-healthcheck.png │ ├── lido-csm-keys-not-imported-warning.png │ ├── lido-csm-log-in-already-NO.png │ ├── lido-csm-notifications-modal.png │ ├── lido-csm-performance-cards.png │ ├── lido-csm-performance-chart.png │ ├── lido-csm-performance-notification-above.png │ ├── lido-csm-performance-notification-below.png │ ├── lido-csm-performance-range-selector.png │ ├── lido-csm-performance-tab.png │ ├── lido-csm-performance-table.png │ ├── lido-csm-relay-notification.png │ ├── lido-csm-relays-warnings.png │ ├── lido-csm-report-submitted.png │ ├── lido-csm-setup-notifications.png │ ├── lido-csm-ss-docs1.png │ ├── lido-csm-ss-docs2.png │ ├── lido-csm-ss-docs3.png │ ├── lido-csm-ss-docs4.png │ ├── lido-csm-ss-docs5.png │ ├── lido-csm-stuck.png │ ├── lido-csm-telegram-update.png │ ├── lido-csm-wallet-connected.png │ ├── lido-csm.jpeg │ ├── lido-infra.png │ ├── lido-keystore-not-imported.png │ ├── lido-notification-ejector.png │ ├── lido-notifications-onboarding.png │ ├── local-network.png │ ├── local-proxy-switch.png │ ├── logo.png │ ├── logo.svg │ ├── lukso-launchpad1.png │ ├── lukso-launchpad2.png │ ├── lukso-launchpad3.png │ ├── lukso-launchpad4.png │ ├── lukso-staking-screenshot.png │ ├── lukso-wagyu1.png │ ├── lukso-wagyu2.png │ ├── lukso-web3signer.png │ ├── machinelist.png │ ├── node_distribution.png │ ├── nodestream_vesting.png │ ├── nodestream_vesting_xdai.png │ ├── notifications-inbox.png │ ├── notifications-settings-installer.png │ ├── notifications-settings.png │ ├── notifications_access.png │ ├── notifications_inbox.png │ ├── notifications_legacy.png │ ├── notifications_settings.png │ ├── obol-launchpad1.png │ ├── obol-launchpad2.png │ ├── obol-launchpad3.png │ ├── obol-launchpad4.png │ ├── obol-launchpad5.png │ ├── obol-launchpad6.png │ ├── obol-launchpad7.png │ ├── openvpn_android.jpg │ ├── openvpn_iphone_import.jpg │ ├── openvpn_mac.png │ ├── openvpn_ubuntu_import.png │ ├── openvpn_ubuntu_network.png │ ├── openvpn_windows.jpg │ ├── optimism-menu.png │ ├── register-login.png │ ├── register-token.png │ ├── register.png │ ├── registering_operator_0.png │ ├── registering_operator_2.png │ ├── registering_operator_4.png │ ├── registering_operator_5.png │ ├── registering_operator_7.png │ ├── release-trusted-keys.png │ ├── repository-eth-full.png │ ├── repository-eth-remote.png │ ├── repository-ipfs-local.png │ ├── repository-ipfs-remote.png │ ├── rocketpool.png │ ├── rollups-module.png │ ├── setup-1.png │ ├── setup-2.png │ ├── setup-3.png │ ├── setup-4.png │ ├── setup-5.png │ ├── setup-6.png │ ├── signed-safe-switch.png │ ├── smooth-connect-wallet.png │ ├── smooth-fee-recipient-error.png │ ├── smooth-subscribe.png │ ├── smooth-unsub-initial-dialog.png │ ├── smooth-unsub-table.png │ ├── smooth-unsubscribe-done.png │ ├── smooth-web3signer-address.png │ ├── smooth_correct_fee_recipient.png │ ├── smooth_fee_recipient.png │ ├── smooth_incorrect_fee_recipient.png │ ├── smooth_make_deposit.png │ ├── smooth_mev_blocks.png │ ├── smooth_my_validators.png │ ├── smooth_no_relays.png │ ├── smooth_states.png │ ├── smooth_subscribe_success.png │ ├── smooth_subscription_norelays.png │ ├── solo-staking-ethereum.png │ ├── stakehouse-logo.png │ ├── stakers-gnosis.png │ ├── stakers-mainnet.png │ ├── stakersnumbers.png │ ├── stakerstab.png │ ├── subnetcheck.png │ ├── tailscale-2.png │ ├── tailscalewindows.png │ ├── telegram-channel-id.png │ ├── temp_dashboard.png │ ├── vpn-1.png │ ├── wagyu1.png │ ├── wagyu2.png │ ├── wagyu3.png │ ├── wagyu4.png │ ├── wagyu5.png │ ├── wagyu6.png │ ├── wagyu7.png │ ├── wifi-sidebar.png │ ├── wireguard_android.jpg │ ├── wireguard_ios_tunnel.jpeg │ ├── wireguard_macos_credentials.png │ ├── wireguard_macos_tunnel.png │ ├── wireguard_windows.png │ ├── wireguard_windows_activate.png │ └── wireguard_windows_tunnel.png └── tsconfig.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @dappnode/core 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: 5 | labels: 6 | assignees: 7 | --- 8 | 9 | 10 | 11 | 12 | **Describe the bug** 13 | 14 | 15 | 16 | **To Reproduce** 17 | 18 | 23 | 24 | **Expected behavior** 25 | 26 | 27 | 28 | **Screenshots** 29 | 30 | 31 | 32 | **Dappnode version:** 33 | 34 | 35 | 36 | - Package version: 37 | - OS: 38 | - Browser 39 | 40 | **Additional context** 41 | 42 | 43 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | 10 | 11 | 12 | **Is your feature request related to a problem? Please describe.** 13 | 14 | 15 | 16 | **Describe the solution you'd like** 17 | 18 | 19 | 20 | **Describe alternatives you've considered** 21 | 22 | 23 | 24 | **Additional context** 25 | 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Publish docs to GitHub Pages 2 | on: 3 | push: 4 | branches: 5 | - master 6 | 7 | jobs: 8 | build: 9 | name: Deploy docs 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout master 13 | uses: actions/checkout@v1 14 | 15 | - name: Install deps 16 | run: npm i 17 | 18 | - name: Build docs 19 | run: npm run build 20 | 21 | - name: Deploy 22 | uses: peaceiris/actions-gh-pages@v3 23 | with: 24 | github_token: ${{ secrets.GITHUB_TOKEN }} 25 | publish_dir: ./build 26 | -------------------------------------------------------------------------------- /.github/workflows/netlify.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Netlify 2 | on: 3 | pull_request: 4 | branches: 5 | - master 6 | - pablo/docs-refactor 7 | 8 | jobs: 9 | build: 10 | name: Deploy to Netlify 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout master 14 | uses: actions/checkout@v3 15 | 16 | - name: Install deps 17 | run: npm i 18 | 19 | - name: Build docs 20 | run: npm run build 21 | 22 | - name: Deploy to Netlify 23 | uses: nwtgck/actions-netlify@v2.0 24 | with: 25 | publish-dir: "./build" 26 | production-branch: master 27 | github-token: ${{ secrets.GITHUB_TOKEN }} 28 | deploy-message: "Deploy from GitHub Actions" 29 | enable-pull-request-comment: true 30 | env: 31 | NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} 32 | NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} 33 | timeout-minutes: 1 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Website 2 | 3 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. 4 | 5 | ### Installation 6 | 7 | ``` 8 | $ yarn 9 | ``` 10 | 11 | ### Local Development 12 | 13 | ``` 14 | $ yarn start 15 | ``` 16 | 17 | This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. 18 | 19 | ### Build 20 | 21 | ``` 22 | $ yarn build 23 | ``` 24 | 25 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 26 | 27 | ### Deployment 28 | 29 | Using SSH: 30 | 31 | ``` 32 | $ USE_SSH=true yarn deploy 33 | ``` 34 | 35 | Not using SSH: 36 | 37 | ``` 38 | $ GIT_USER= yarn deploy 39 | ``` 40 | 41 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. 42 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /blog/2019-05-28-first-blog-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: first-blog-post 3 | title: First Blog Post 4 | authors: 5 | name: Gao Wei 6 | title: Docusaurus Core Team 7 | url: https://github.com/wgao19 8 | image_url: https://github.com/wgao19.png 9 | tags: [hola, docusaurus] 10 | --- 11 | 12 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 13 | -------------------------------------------------------------------------------- /blog/2019-05-29-long-blog-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: long-blog-post 3 | title: Long Blog Post 4 | authors: endi 5 | tags: [hello, docusaurus] 6 | --- 7 | 8 | This is the summary of a very long blog post, 9 | 10 | Use a `` comment to limit blog post size in the list view. 11 | 12 | 13 | 14 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 15 | 16 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 17 | 18 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 19 | 20 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 21 | 22 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 23 | 24 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 25 | 26 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 27 | 28 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 29 | 30 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 31 | 32 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 33 | 34 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 35 | 36 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 37 | 38 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 39 | 40 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 41 | 42 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 43 | 44 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet 45 | -------------------------------------------------------------------------------- /blog/2021-08-01-mdx-blog-post.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | slug: mdx-blog-post 3 | title: MDX Blog Post 4 | authors: [slorber] 5 | tags: [docusaurus] 6 | --- 7 | 8 | Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). 9 | 10 | :::tip 11 | 12 | Use the power of React to create interactive blog posts. 13 | 14 | ```js 15 | 16 | ``` 17 | 18 | 19 | 20 | ::: 21 | -------------------------------------------------------------------------------- /blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg -------------------------------------------------------------------------------- /blog/2021-08-26-welcome/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: welcome 3 | title: Welcome 4 | authors: [slorber, yangshun] 5 | tags: [facebook, hello, docusaurus] 6 | --- 7 | 8 | [Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). 9 | 10 | Simply add Markdown files (or folders) to the `blog` directory. 11 | 12 | Regular blog authors can be added to `authors.yml`. 13 | 14 | The blog post date can be extracted from filenames, such as: 15 | 16 | - `2019-05-30-welcome.md` 17 | - `2019-05-30-welcome/index.md` 18 | 19 | A blog post folder can be convenient to co-locate blog post images: 20 | 21 | ![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) 22 | 23 | The blog supports tags as well! 24 | 25 | **And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. 26 | -------------------------------------------------------------------------------- /blog/authors.yml: -------------------------------------------------------------------------------- 1 | endi: 2 | name: Endilie Yacop Sucipto 3 | title: Maintainer of Docusaurus 4 | url: https://github.com/endiliey 5 | image_url: https://github.com/endiliey.png 6 | 7 | yangshun: 8 | name: Yangshun Tay 9 | title: Front End Engineer @ Facebook 10 | url: https://github.com/yangshun 11 | image_url: https://github.com/yangshun.png 12 | 13 | slorber: 14 | name: Sébastien Lorber 15 | title: Docusaurus maintainer 16 | url: https://sebastienlorber.com 17 | image_url: https://github.com/slorber.png 18 | -------------------------------------------------------------------------------- /docs/dao.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: DAO 3 | description: DAO information 4 | --- 5 | 6 | :::danger Documentation alert 7 | The DAO section of our documentation is currently outdated due to a security incident. For a detailed explanation of the issue and our response plan, please refer to our [post-mortem report on the node hack](https://discourse.dappnode.io/t/node-hack-post-mortem-and-recovery-plan/1826). 8 | ::: 9 | 10 | 11 | # Governance 12 | 13 | ### Token Addresses 14 | 15 | - NODE Mainnet - [0xDa007777D86AC6d989cC9f79A73261b3fC5e0DA0](https://etherscan.io/address/0xDa007777D86AC6d989cC9f79A73261b3fC5e0DA0) 16 | - NODE xDai - [0xc60e38C6352875c051B481Cbe79Dd0383AdB7817](https://blockscout.com/xdai/mainnet/address/0xc60e38C6352875c051B481Cbe79Dd0383AdB7817/transactions) 17 | 18 | ### Mission & Membership 19 | 20 | The Dappnode DAO will be an inclusive hub in which Dappnode’s community will carry on its mission to keep the web decentralized, uncensored and resilient. Active DAO members will have the opportunity to vote on Dappnode’s future projects and on how to expand its array of hardware and software solutions. 21 | 22 | To get involved in Governance, DAO aspirants will need to make contributions to the ecosystem and help kick-start the NODE economy. Those who provide liquidity in the sanctioned pools (Uniswap and Sushiswap) or commit NODE to Governance Staking on Ethereum Mainnet or xDai will be granted voting powers proportional to their contributions. This way we can ensure that those with a voice are also those with a stake, and are not merely speculating with the token. 23 | 24 | ### Architecture 25 | 26 | DAppnode has tapped [Snapshot](https://snapshot.org/#/) technology to build its Governance structure. Snapshot is a novel piece of technology that allows off-chain voting for on-chain actions. It removes the prohibitive gas costs of participating in on-chain governance by taking snapshots of members’ NODE currently being staked. Voting and creating proposals with Snapshot is done with a simple crypto wallet signature, no gas needed. 27 | 28 | ### DAO Projects 29 | 30 | The first Dappnode project post-launch will be the hotly awaited ValidatorDAO. You can read this [Medium article](https://medium.com/dappnode/guardians-of-ethereum-a-validator-dao-proposal-d82e76231b45) to learn more about how ValidatorDAO is poised to revolutionize the relationship between Validators and Nominators! 31 | -------------------------------------------------------------------------------- /docs/dao/faq.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dappnode DAO FAQ 3 | --- 4 |
5 | What is a DAO? 6 | 7 | A DAO, or Decentralized Autonomous Organization, is an organization represented by rules encoded as a computer program that is transparent, controlled by the organization members, and not influenced by a centralized government. It operates autonomously and can execute actions such as making decisions and managing resources based on pre-defined rules or through a consensus mechanism. 8 | 9 |
10 | 11 |
12 | What is the purpose and mission of the Dappnode DAO? 13 | 14 | DappNode's DAO aims to promote and simplify the use of decentralized infrastructure. It aspires to create a more decentralized web by providing tools that make running nodes, DApps, and blockchain-related software more user-friendly and accessible to a wider audience. By establishing a DAO, DappNode ensures that its mission and direction are decided collectively by its community, allowing for a more democratic and transparent decision-making process. The DappNode DAO encourages collaboration, fostering a community that is actively involved in the project's evolution, and ensuring the sustainability and success of the platform in the decentralized space. 15 | 16 |
17 | -------------------------------------------------------------------------------- /docs/dao/liquidity-mining.md: -------------------------------------------------------------------------------- 1 | # Liquidity Mining 2 | 3 | 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: 4 | 5 | - Sushiswap NODE/ETH Pool - 40% - 2,200,000 NODE 6 | - Uniswap NODE/ETH Pool - 40% - 2,200,000 NODE 7 | - NODE Governance Staking xDai - 10% - 550,000 NODE 8 | - NODE Governance Staking Mainnet -10% - 550,000 NODE 9 | 10 | A further 5.5% of the token supply has been reserved for future rounds of LM. At the end of the first round the team will re-assess the Liquidity Mining program, potentially deploying new pools and distribution. 11 | 12 | ### Liquidity Provision Pools Contract Addresses 13 | 14 | - Sushiswap NODE/ETH Pool - [0x60cd8dcc7cce0cca6a3743727ce909b6f715b2d8](https://etherscan.io/address/0x60cd8dcc7cce0cca6a3743727ce909b6f715b2d8) 15 | - Uniswap NODE/ETH Pool - [0xee3b01b2debd3df95bf24d4aacf8e70373113315](https://etherscan.io/address/0xee3b01b2debd3df95bf24d4aacf8e70373113315) 16 | 17 | ### LP Token Addresses (Mainnet) 18 | 19 | - Uniswap v2 ETH/NODE LP - [0xee3b01b2debd3df95bf24d4aacf8e70373113315](https://etherscan.io/address/0xee3b01b2debd3df95bf24d4aacf8e70373113315) 20 | - Sushiswap ETH/NODE LP - [0x60cd8dcc7cce0cca6a3743727ce909b6f715b2d8](https://etherscan.io/address/0x60cd8dcc7cce0cca6a3743727ce909b6f715b2d8) 21 | 22 | ## Liquidity Mining Contracts 23 | 24 | - NODE Governance Staking Mainnet - [0x19992b52338B7B49De9679ae018A7027803dB1Aa](https://etherscan.io/address/0x19992b52338B7B49De9679ae018A7027803dB1Aa) 25 | - NODE Governance Staking xDai - [0xF66823fdc33B9F4C66dB4C3394FF139872C12f16](https://blockscout.com/xdai/mainnet/address/0xF66823fdc33B9F4C66dB4C3394FF139872C12f16/transactions) 26 | - Uniswap Liquidity Mining - [0x072115DbD5c8b47E971890357d2951d4569F6B27](https://etherscan.io/address/0x072115DbD5c8b47E971890357d2951d4569F6B27) 27 | - Sushiswap Liquidity Mining - [0x89F2e26F20Bf66bBFAc947A3b628b4b4724AaA5c](https://etherscan.io/address/0x89F2e26F20Bf66bBFAc947A3b628b4b4724AaA5c) 28 | 29 | ### Weekly Distribution 30 | 31 | Round 1 (26 weeks) weekly NODE rewards distribution percentages based on LM supply are as follows: 32 | 33 | | % per week | 0.00% | 3.80% | 3.80% | 3.00% | 3.00% | 2.50% | 2.50% | 2.50% | 2.50% | 2.60% | 2.80% | 3.00% | 3.20% | 3.40% | 3.60% | 3.80% | 4.00% | 4.20% | 4.40% | 4.60% | 4.80% | 5.00% | 5.20% | 5.40% | 5.60% | 5.80% | 5.00% | 34 | | ---------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | 35 | | Week | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 36 | -------------------------------------------------------------------------------- /docs/dao/node-drop.md: -------------------------------------------------------------------------------- 1 | # NODEdrop 2 | 3 | "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." 4 | -------------------------------------------------------------------------------- /docs/dao/node-stream.md: -------------------------------------------------------------------------------- 1 | # NODEstream 2 | 3 | "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." 4 | -------------------------------------------------------------------------------- /docs/dev.md: -------------------------------------------------------------------------------- 1 | --- 2 | sidebar_label: Introduction 3 | --- 4 | 5 | # Welcome to the Developer Documentation! 6 | 7 | Welcome to the Dappnode's developer docs! This documentation is your comprehensive guide to using the tools and resources that enable you to create, deploy, and manage your own custom dappnode packages (DNP). Whether you're new to the project or an experienced developer, this documentation will help you navigate the intricacies of developing in the dappnode environment. 8 | 9 | :::caution 10 | This documentation is for experienced people in the dappnode ecosystem or developers who want to contribute to dappnode by creating new packages. If you're new to dappnode, we recommend starting with the [User Documentation](/docs/user/getting-started/choose-your-path.md). 11 | ::: 12 | 13 | ## Contributing 14 | 15 | We welcome contributions from the community! If you'd like to contribute to Dappnode, please review our [Contributing Guidelines] to understand how you can get involved. 16 | 17 | ## Feedback and Support 18 | 19 | We're here to help! If you encounter any issues, have questions, or want to provide feedback, feel free to: 20 | 21 | - Join our community on [Discord](https://discord.com/invite/dappnode) 22 | - Open an issue on [GitHub](https://github.com/dappnode) -------------------------------------------------------------------------------- /docs/dev/github-actions.md: -------------------------------------------------------------------------------- 1 | # GitHub Actions for Dappnode Packages 2 | 3 | GitHub Actions help automate workflows around your projects on GitHub. For Dappnode packages, we utilize specific GitHub Actions to manage updates and releases. 4 | 5 | ## 1. Auto Check for Upstream Updates (`auto_check.yml`) 6 | 7 | This action checks if there's an available update from the upstream repository. If an update is found, it creates a Pull Request with the new version. 8 | 9 | ### Workflow File: 10 | 11 | **Filename:** `auto_check.yml` 12 | 13 | ```yaml 14 | name: Bump upstream version 15 | 16 | on: 17 | schedule: 18 | - cron: "00 */4 * * *" 19 | push: 20 | branches: 21 | - "master" 22 | 23 | jobs: 24 | build: 25 | runs-on: ubuntu-latest 26 | steps: 27 | - uses: actions/checkout@v3 28 | - run: npx @dappnode/dappnodesdk github-action bump-upstream 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 31 | PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }} 32 | PINATA_SECRET_API_KEY: ${{ secrets.PINATA_SECRET_API_KEY }} 33 | ``` 34 | 35 | **Features:** 36 | 37 | - **Scheduled Runs**: The action runs every 4 hours (as per the cron setting). 38 | - **Environment Variables**: Uses `GITHUB_TOKEN` for authentication, and `PINATA_API_KEY` and `PINATA_SECRET_API_KEY` for interfacing with the IPFS pinning service Pinata. 39 | 40 | ## 2. Main Build and Pre-release (`main.yml`) 41 | 42 | This action builds the Dappnode package and creates a pre-release that's ready to be published. 43 | 44 | ### Workflow File: 45 | 46 | **Filename:** `main.yml` 47 | 48 | ```yaml 49 | name: "Main" 50 | on: 51 | pull_request: 52 | push: 53 | branches: 54 | - "main" 55 | - "master" 56 | - "v[0-9]+.[0-9]+.[0-9]+" 57 | paths-ignore: 58 | - "README.md" 59 | 60 | jobs: 61 | build-test: 62 | runs-on: ubuntu-latest 63 | name: Build test 64 | if: github.event_name != 'push' 65 | steps: 66 | - uses: actions/checkout@v3 67 | - run: npx @dappnode/dappnodesdk build --skip_save 68 | 69 | release: 70 | name: Release 71 | runs-on: ubuntu-latest 72 | if: github.event_name == 'push' 73 | steps: 74 | - uses: actions/checkout@v3 75 | - name: Publish 76 | run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset 77 | env: 78 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 79 | DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" 80 | ``` 81 | 82 | **Features:** 83 | 84 | - **Branch Filters**: The action only triggers on the `main`, `master`, and version tags (e.g., `v1.0.0`). 85 | - **Paths Ignore**: Ignores changes solely related to `README.md`. 86 | - **Conditional Runs**: Different steps are executed based on the event that triggered the workflow (e.g., push event or pull request). -------------------------------------------------------------------------------- /docs/dev/package-development/overview.md: -------------------------------------------------------------------------------- 1 | # Package Development 2 | 3 | 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. 4 | 5 | ### Types of Package Repositories 6 | 7 | There are two main types of package repositories: 8 | 9 | - **Standard Package Repository**: Used to generate a single package, tailored for a specific configuration. 10 | - **Multi-Configuration (Generic) Package Repository**: Used to generate multiple packages with varying configurations, such as different networks or client setups. For example, a multi-configuration repository could be used to build packages for both **Holesky Nethermind** and **Mainnet Nethermind**, which differ in their configurations. 11 | 12 | ### Developing Packages 13 | 14 | - **Single-Configuration Package**: If you want to develop a package with a single configuration, like [Rotki](https://github.com/dappnode/DAppNodePackage-rotki), follow the instructions [here](/docs/dev/package-development/single-configuration.md). 15 | - **Multi-Configuration Package**: For packages with multiple configurations, like [Lodestar](https://github.com/dappnode/DAppNodePackage-lodestar-generic), refer to [this guide](/docs/dev/package-development/multi-configuration.md). 16 | 17 | By following these guides, you'll be able to create and contribute your own packages to the Dappnode ecosystem. 18 | -------------------------------------------------------------------------------- /docs/dev/package-publishing/publish-packages-clients.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Publish your packages seamlessly 3 | 4 | --- 5 | 6 | # Publish your packages seamlessly 7 | 8 | The aim of this guide is to help you publish the new packages of your product in Dappnode seamlessly. We created a new UI to ease the publication of your packages in a few minutes. 9 | 10 | 16 | 17 | ### Publishing process 18 | 19 | 20 | **Step 1.** Go to [Dappnode Github](https://github.com/dappnode) and search for the generic repository of your product. You will find it with the name of **DAppNodePackage-yourproduct-generic.** 21 | 22 | If your product is not listed and you want it to be included in Dappnode, contact us in Discord or Telegram. 23 | 24 | 25 | **Step 2.** Click on the **Releases** title section on the right side column (highlighted in red) 26 | 27 | ![Step2](/img/Step2.png) 28 | 29 | **Step 3.** In the releases section you can see all the packages of your product in the different blockchains. Select the package and click on 📣 Publish. 30 | 31 | Ideally you should have tested the package before publishing. You can use the IPFS hash from the release to install the package without having to publish it. 32 | 33 | ![Step3](/img/Step3.png) 34 | 35 | **Step 4.** Once in this screen, click Connect wallet. Remember that the publishing wallet needs to be **whitelisted** by Dappnode. If your wallet is not whitelisted yet, contact us in Discord / Telegram. 36 | 37 | ![Step4_connect](/img/Step4_connect.png) 38 | 39 | 40 | Your wallet is mainly used for two tasks: to authenticate that you are eligible to publish in the APM SmartContracts and to sign the package to be published. This signature is used in the dappnode to verify that the package was actually signed by a "trusted key" 41 | 42 | 43 | **Step 5.** Configure your custom IPFS settings. If you do not change it, default settings shown will be applied. Click Next button. 44 | 45 | ![Step5](/img/Step5.png) 46 | 47 | 48 | **Step 6.** Specify the details of your release. 49 | Dappnode package name: You can find it in dappnode_package.json file in the package. 50 | Developer address: In case you want to add a developer address to publish future versions a part from the owner. 51 | Next version: You can find it in dappnode_package.json file in the package. 52 | Release hash: You find it in the release table in Step3. 53 | Click Next button 54 | 55 | ![Step6](/img/Step6.png) 56 | 57 | **Step 7.** Check the details of the package and sign the transaction with your wallet. The wallet must be connected in Ethereum mainnet to sign the transaction (even if the package is from other blockchain). 58 | 59 | ![Step7](/img/Step7.png) 60 | 61 | 62 | **Step 8.** After signing the first transaction, you need to click the Publish button and sign again with your wallet. This time you need ETH (gas) to sign the transaction. 63 | 64 | ![Step8](/img/Step8.png) 65 | 66 | **Step 9.** Your package was successfully published! Congrats! 🎉  67 | If your product has a community of dappnode users, we invite you to announce it in our Discord community. Every user with this package installed and auto-updates enabled will auto update it within less than 3 days. 68 | 69 | Thanks for reading the guide! If you found some problem in the process, do not hesitate to contact us in Discord / Telegram. 70 | 71 | -------------------------------------------------------------------------------- /docs/dev/sdk/overview.md: -------------------------------------------------------------------------------- 1 | # DappnodeSDK 2 | 3 | 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. 4 | 5 | We have deployed a public APM (Aragon Package Manager) registry in which anyone can create their own APM repository: [public.dappnode.eth](https://etherscan.io/address/public.dappnode.eth) 6 | 7 | ![Demo GIF](/img/demo.gif) 8 | 9 | ## Command-line options 10 | DappnodeSDK is usually executed from the command line. The following are all the available commands. 11 | 12 | :::info 13 | You can run `dappnodesdk help` to get more information about each command. 14 | ::: 15 | 16 | ``` 17 | Usage: dappnodesdk [options] 18 | 19 | Commands: 20 | build Build a new version (only generates the ipfs hash) 21 | from_github [repoSlug] Gets an existing DNP Github release (assets) and uploa 22 | d it to IPFS 23 | increase [type] Increases the version defined in the manifest 24 | init Initialize a new DAppNodePackage (DNP) repository 25 | next [type] Compute the next release version from local 26 | publish [type] Publish a new version of the package in an Aragon Pack 27 | age Manager Repository 28 | github-action Github actions tooling to be run in CI. Uses a specifi 29 | c set of options for internal DAppNode use. Caution: o 30 | ptions may change without notice. 31 | 32 | Options: 33 | --dir, --directory Change the base directory [string] [default: "./"] 34 | --compose_file_name Compose file for docker-compose 35 | [string] [default: "docker-compose.yml"] 36 | --silent Silence output to terminal [boolean] 37 | --verbose, --debug Show more output to terminal [boolean] 38 | -h, --help Show help [boolean] 39 | -v, --version Show version number [boolean]``` 40 | -------------------------------------------------------------------------------- /docs/dev/sdk/sdk-publish.md: -------------------------------------------------------------------------------- 1 | # SDK-Publish 2 | 3 | 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. 4 | 5 | With SDK-Publish, developers can ensure their Dappnode packages are authenticated and ready for deployment, enhancing the security and integrity of their releases. Whether you are a seasoned developer or new to Dappnode, SDK-Publish provides an intuitive interface to facilitate the package release process, making it an essential tool for anyone involved in Dappnode Packages development. 6 | 7 | ## How it works? 8 | 9 | Below you have a step-by-step guide about the package releases publishing process. 10 | 11 | 1. **@dappnode/dappnodesdk publish** 12 | 13 | ```sh 14 | npx @dappnode/dappnodesdk publish [type] 15 | ``` 16 | 17 | - Execute `npx @dappnode/dappnodesdk publish` in your package directory to generate a pre-filled URL with the parameters for the sdk-publish WebApp. 18 | 19 | - Providing the `[type]` will also be necessary. Choose between `patch | minor | major`, according to your package release. If you are pretending to upload the package to developing dappnode's IPFS node instead of your own IPFS node, make sure to include `--provider=remote` flag. 20 | 21 | - Navigate to the outputed URL to begin the publishing process in the WebApp. 22 | 23 | 2. **Connect Wallet** 24 | 25 | - Once in the SDK-Publish UI you will have to connect to your wallet provider. Click 'Connect wallet' to link your wallet. A permission pop-up will appear in your provider. 26 | - If your wallet network isn't set to 'Ethereum Mainnet', a 'Switch network' button will appear. This button will prompt your wallet to switch to Mainnet, after which the WebApp will refresh. 27 | - If already connected and set to 'Ethereum Mainnet', this step will be skipped. 28 | 29 | 3. **Edit IPFS settings** 30 | 31 | - Edit your IPFS settings for release propagation if desired. If not, the IPFS dappnode-dev node will be used. 32 | - `IPFS API URLs` => accepts multiple IPFS API URLs to facilitate the propagation of the signed release 33 | - `IPFS Gateway URL` => accepts a single IPFS Gateway URL to ensure the IPFS hash has propagated. 34 | 35 | 4. **Release Details** 36 | - Complete the form with your package release information. If accessed via the pre-filled URL from [@dappnode/dappnodesdk](https://github.com/dappnode/DAppNodeSDK), the form will be auto-filled. (For new repos, provide the developer address too). 37 | - It checks if the input values are valid, determines if it's a new repo deployment or an update, and verifies that the manifest information matches the provided hash manifest. If all checks pass, the 'Continue' button will be enabled. 38 | 5. **Sign and Publish** 39 | - Allows to sign the release and publishing after it, confirming actions via wallet pop-ups. 40 | - Before the sign, it verifies your address is whitelisted to publish a new version if deploying an update from an existing package. 41 | - Feedback on loading, errors, or success will be provided throughout the process. 42 | 6. **Release Published** 43 | - By this step, your transaction will be successfully queued! It will be processed 44 | sooner or later based on the gas fee you provided. You will receive confirmation and the transaction hash for the package deployment. 45 | -------------------------------------------------------------------------------- /docs/smooth/deep-dive-into-smooth/consolidations.md: -------------------------------------------------------------------------------- 1 | # Consolidations 2 | 3 | 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. 4 | 5 | To make a validator able to stake more than 32 ETH, users will have to **upgrade the validator's withdrawal credentials**: From 0x01 to 0x02. You can do it in the [Staking Launchpad](https://launchpad.ethereum.org/en/) interface. 6 | 7 | It is also possible to **consolidate** multiple 32 ETH validators into a single validator with a higher stake. This requires an extra step: a **consolidation**. In a consolidation, two validators are merged into a single one. The _"source"_ validator will exit the chain, transferring its stake to the _"target"_ validator. 8 | 9 | Consolidations can also be done through the [Staking Launchpad](https://launchpad.ethereum.org/en/) interface. 10 | 11 | ## How Smooth manages consolidations 12 | 13 | Smooth will automatically detect when a validator is the source of a consolidation. Upon doing so, it will transfer all the _pending rewards_ from the source validator to the target validator. This way, no pending rewards will be lost during the consolidation process. Smooth will also remove the source validator from the pool. 14 | 15 | ## As a Smooth user, what do I need to do? 16 | 17 | Consolidation is not required—Smooth will continue to work normally even if you don’t consolidate your validators. 18 | 19 | However, if you want to consolidate any of your validators, you will need to upgrade your validator’s withdrawal credentials to 0x02 and perform the consolidation through the [Staking Launchpad](https://launchpad.ethereum.org/en/) interface. You will not need to do anything else; Smooth will take care of the rest. **Please ensure that the "target" validator of your consolidation is already subscribed to Smooth.** 20 | 21 | :::danger 22 | DO NOT manually unsubscribe any validator. Manually unsubscribing a validator will remove its pending rewards and Smooth will not be able to transfer them to the target validator. Smooth will automatically unsubscribe the source validator once the consolidation is complete. 23 | ::: 24 | 25 | A consolidation may take a few days to complete. Once your source validator exits the chain, Smooth will transfer the pending rewards to the target validator. We recommend checking [Smooth's dashboard](https://smooth.dappnode.io/dashboard) to see if the transfer was successful. -------------------------------------------------------------------------------- /docs/smooth/deep-dive-into-smooth/oracle-sm.md: -------------------------------------------------------------------------------- 1 | # Smooth's architecture 2 | 3 | [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. 4 | 5 | ## The Smart Contract 6 | 7 | Smooth's Smart Contract is deployed on the Ethereum mainnet and is responsible for "receiving" all the events related to the pool onchain. This includes subscriptions, unsubscriptions, block proposals, and more. Since it is the Smart Contract the one who holds all the ETH collected by the pool, it is from the Smart Contract where all [Smooth](https://smooth.dappnode.io/) users will claim their rewards. 8 | 9 | Computing and storing all rewards calculations onchain would be almost impossible and very expensive, so merkle trees are used to summarize the state of all validators. This allows the Smart Contract to store a single hash onchain that represents the state of all validators subscribed to the pool. This hash is called the **Merkle Root** and **is computed by the Oracle**. 10 | 11 | 12 | ## The Oracle 13 | 14 | As mentioned before, **the Oracle is responsible for computing the rewards of each validator**. It does so by computing a merkle tree that summarizes the state of all validators subscribed to the pool. This merkle tree, computed offchain, is summarized into a **Merkle Root**. 15 | 16 | :::caution 17 | Oracle works only with finalized data. This means that Oracle will effectively work with data from a few epochs ago. This is done to ensure that the data Oracle processes is non-reversible and no reorgs are possible. 18 | ::: 19 | 20 | Once every 28800 slots (4 days), the Oracle sends a transaction to the Smart Contract with the updated Merkle Root. 21 | 22 | :::info 23 | It is not until the Oracle sends the transaction to the Smart Contract with the updated Merkle Root that the rewards are available to be claimed by the validators. This means that if a validator correctly proposes a block, it will not be able to claim its rewards until the Oracle sends the transaction to the Smart Contract with the updated Merkle Root. 24 | ::: 25 | -------------------------------------------------------------------------------- /docs/smooth/deep-dive-into-smooth/overview.md: -------------------------------------------------------------------------------- 1 | # Deep Dive into Smooth! 2 | 3 | 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! 4 | 5 | :::info 6 | We recommend reading and understanding the contents of this section before subscribing to [Smooth](https://smooth.dappnode.io/). 7 | ::: 8 | 9 | 1. [**Smooth's Rewards**](/docs/smooth/deep-dive-into-smooth/rewards.md): Learn how [Smooth](https://smooth.dappnode.io/) handles incoming rewards and how they are distributed to validators. 10 | 11 | 2. [**Validator States**](/docs/smooth/deep-dive-into-smooth/states.md): A detailed explanation of all possible states of a subscribed [Smooth](https://smooth.dappnode.io/) validator. 12 | 13 | 3. [**Smooth's Oracle and Smart Contract**](/docs/smooth/deep-dive-into-smooth/oracle-sm.md): Learn how the two main components of [Smooth](https://smooth.dappnode.io/), the Oracle and smart contract work together to track validators and distribute rewards. 14 | -------------------------------------------------------------------------------- /docs/smooth/deep-dive-into-smooth/states.md: -------------------------------------------------------------------------------- 1 | # Smooth Validator States 2 | 3 | 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. 4 | 5 | ## State Machine Overview 6 | 7 | The oracle employs a **state machine** to monitor the status of subscribed validators within [Smooth](https://smooth.dappnode.io/). Various actions trigger state changes, detailed in the following image encompassing all possible transitions. Let's take a look at it: 8 | 9 | ![statemachine](/img/smooth_states.png) 10 | 11 | 12 | There are 6 different states a validator can have: 13 | 14 | * 🟢 **Active**: The validator is active and subscribed to the pool, earning rewards over time. 15 | * 🟡 **YellowCard**: The validator missed its last block proposal but not two in a row. This validator earns rewards as if it was active. 16 | * 🔴 **RedCard**: The validator missed its latest two block proposals in a row. As a penalty, the validator does not earn rewards until its next block is successfully proposed to the pool. In other words, this validator is not receiving `Pending Rewards` when somebody else contributes to the pool. 17 | * ⚪ **NotSubscribed**: The validator is no longer subscribed to the pool, but still tracked by the validator. For example, a validator that unsubscribed. Note that this is still tracked because a validator can unsubscribe but it may still have pending balance to claim. In this state, the validator does not earn rewards. 18 | * ☠️ **Banned**: The validator is banned forever from the pool. A validator is banned when it is subscribed to the pool but proposes a block with the wrong fee recipient. 19 | * ❓**Untracked**: The validator is not tracked by the pool. It has never subscribed to the pool. 20 | 21 | 22 | And 6 different actions can trigger a state transition: 23 | * `ProposalOk`: The validator proposed a valid block with its rewards correctly sent to the smoothing pool address. 24 | * `ProposalMissed`: The validator should have proposed a block but missed its proposal. 25 | * `ProposalWrongFee`: The validator proposes a block but with a wrong fee recipient. 26 | * `ManualSubscription`: The validator manually subscribes to the pool, depositing collateral for its validator index by calling the smart contract function (see event). 27 | * `AutoSubscription`: The validator is automatically subscribed to the pool, by setting as fee recipient the smoothing pool address. 28 | * `Unsubscribe`: The validator manually unsubscribes to the pool, calling the unsubscribe function from the smart contract (see event). 29 | 30 | 31 | ## The purpose of the State Machine 32 | 33 | Beyond tracking validator statuses, the state machine ensures fair reward distribution and encourages correct behavior among validators. 34 | 35 | Validators consistently proposing blocks receive greater rewards compared to those frequently missing proposals, promoting active participation and contribution to the pool. 36 | -------------------------------------------------------------------------------- /docs/smooth/deep-dive-into-smooth/vanilla-blocks.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: What is a vanilla block? 3 | 4 | --- 5 | 6 | **What is a vanilla block?** 7 | 8 | In the context of the Smooth protocol, we define a vanilla block as a block build locally by the execution client, as opposed to a block built by professional block builders with sofisticated algorithms for extracting MEV and sometimes private transactions that do not appear in the mempool. 9 | 10 | While building blocks locally is a perfectly valid option for validators, it is one that doesn't serve to maximize the profit that can be extracted from proposing that block. Since the goal of Smooth as a MEV smoothing pool is to use these MEV rewards to maximize high and consistent rewards, proposing vanilla blocks into the pool is suboptimal. 11 | 12 | Those wishing to build their own blocks locally when they propose a block are free to do so, but outside of Smooth. 13 | 14 | **Why proposing a Vanilla block is not beneficial for you?** 15 | As a Smooth user, your goal is to maximize your rewards. Proposing a vanilla block can hinder this objective for several reasons: 16 | 17 | 1. Lower Rewards: Vanilla blocks generally include less transaction fees for the block builder (or for the smoothing pool) because blocks built by professional operators include custom algorithms for reordering transactions, inject transactions to extract value (front-running and back-running) and potentially have access to transactions coming via private channels that do not appear in the mempool. Hence, without these algorithms, capital to take advantage of the arbitrage opportunities and value extraction and private flow of transactions, it will almost always be less profitable to build a vanilla block. 18 | 19 | Then, if a vanilla block is almost assured to propose lower rewards than an MEV block, a validator proposing vanilla blocks is capping the amount that they can contribute to the pool while enjoying the smoothing from blocks that are not capped from the rest of the participants in the pool. These validators can be considered "free riders" because they contribute less than what they get from the pool. 20 | 21 | 22 | **How can you avoid to propose a Vanilla block?** 23 | 24 | Update Your Node Configuration: If you are running a validator in Smooth, make sure that your configuration is up to date and that the MEV boost module is enabled. You can go to the Stakers tab in the Dappmanager and activate the relays in the MEV boost section. It is highly recommended to activate all the relays to ensure that one of them is building your block and therefore optimizing your rewards. 25 | 26 | ![MEVboost](/img/MEV_boost.png) 27 | 28 | 29 | **How does Smooth act on Vanilla blocks?** 30 | 31 | In order to maximize the rewards for all the participants in Smooth, vanilla block proposers will be banned after 3 consecutive vanilla blocks proposed if they had the chance to be MEV blocks/had MEV opportunity. 32 | This banning process requires a voting phase by the SmoothDAO to effectively ban the withdrawal address of the validator. You can read more about it [here](https://snapshot.box/#/s:dao.smooth.dappnode.eth/proposal/0xddd71930ac1a2876cc7e012861320a19b24fc2c4cc8289060c626737413251a3) -------------------------------------------------------------------------------- /docs/smooth/faq-glossary.md: -------------------------------------------------------------------------------- 1 | # FAQ & Glossary 2 | 3 | ## FAQ 4 | 5 |
6 | What do I need to do to claim my rewards? 7 | 8 | Once your pending rewards are transformed into accumulated rewards after your block proposal, a small claim transaction will be required from the withdrawal address to send the ETH rewards to your wallet. 9 | 10 |
11 | 12 | 13 | 14 |
15 | Is there a fee that Dappnode takes for participating in Smooth? 16 | 17 | 7% of all the Rewards goes to supporting the development of Dappnode and sustainability of Smooth 18 |
19 | 20 |
21 | If I want to unsubscribe my validator from Smooth, when is the best time to do it? 22 | 23 | Unsubscribing a validator from Smooth causes it to lose all its pending rewards. Hence, the ideal moment to exit Smooth is just after your last successful block proposal is reflected in Smooth's Smart Contract. A successful block proposal transfers all pending rewards claimable, allowing you to claim them before unsubscribing. This approach minimizes the pending rewards lost when unsubscribing. 24 |
25 | 26 |
27 | Does Smooth take my Consensus Layer (CL) rewards? 28 | 29 | No, Smooth does not take your CL rewards. CL rewards are always sent directly to your withdrawal address. Smooth only takes the execution layer rewards, which are the fees or MEV of the blocks you propose. These are the rewards that are sent to the fee recipient. 30 |
31 | 32 | ## Glossary 33 | 34 | `Reward`: Any balance denominated in ETH that is sent to [Smooth](https://smooth.dappnode.io/). Rewards are detected by the oracle and shared fairly among all the participants in the pool. The oracle will detect all types of rewards and distribute them fairly. All rewards are denominated in `ETH` and other types of tokens such as ERC20 are not considered by the oracle. The vast majority of rewards come from block proposals of Smooth's validators and Donations. 35 | 36 | `Pending rewards`: Pending rewards are those to be owned by the validator but not yet consolidated, rendering them unclaimable. Upon a successful block proposal by the validator, these rewards transition into the 'Accumulated rewards' category, becoming claimable. This mechanism ensures that validators can only claim rewards after contributing to the pool, guarding against cheating or exploiting the system. 37 | 38 | `Accumulated rewards`: All consolidated rewards your validator has generated, i.e. those claimed and claimable. 39 | 40 | `Claimable rewards`: Rewards ready to claim. Claimable rewards are the sum of all your accumulated rewards minus the rewards that have been claimed already. Only the withdrawal address of the validator can claim its rewards. 41 | -------------------------------------------------------------------------------- /docs/smooth/subscribe-to-smooth/automatic.md: -------------------------------------------------------------------------------- 1 | # Automatic Subscription 2 | 3 | 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. 4 | 5 | :::danger Before automatically subscribing to Smooth! 6 | Only validators with ETH1 withdrawal addresses can be subscribed to Smooth. If you have a validator with a BLS withdrawal address, please update it to an ETH1 withdrawal address before subscribing to Smooth. 7 | 8 | Ensure that you have control over the ETH1 withdrawal address of the validators you plan to subscribe to Smooth. This address is the one you will need to use when logging into Smooth's website and manage your validators going forward. Only the withdrawal address has the capability to claim rewards generated by your validators from Smooth. 9 | ::: 10 | 11 | ### Step 1: Change your fee recipient to Smooth's address. 12 | 13 | Go to your dappnode's [staking brain](http://brain.web3signer.dappnode/) and change the fee recipient of the validators you want to subscribe to Smooth's address (`0xAdFb8D27671F14f297eE94135e266aAFf8752e35`). Once [Smooth](https://smooth.dappnode.io/) receives the rewards from your validator, it will automatically subscribe your validator, and you will start receiving rewards from other members. 14 | ![fee_recipient](/img/smooth_fee_recipient.png) 15 | 16 | :::danger Keep the fee recipient set to Smooth's address! 17 | It is extremely important that you keep the fee recipient of your validator set to Smooth's address (`0xAdFb8D27671F14f297eE94135e266aAFf8752e35`) as long as it is subscribed to [Smooth](https://smooth.dappnode.io/). If, at any point, you change the fee recipient of your validator and propose a block without unsubscribing first, you will be banned from [Smooth](https://smooth.dappnode.io/) and will not be able to participate in it again. 18 | ::: 19 | 20 | ### Step 2: Check your subscription status! 21 | 22 | Go to [Smooth's website](https://smooth.dappnode.io/) and log in with your wallet. A list of all the validators with the same withdrawal address as your logged in wallet will appear. Once the validator proposes a block, it will appear as subscribed. We recommend you familiarize yourself with this website! It is the place where you will manage your validators going forward. 23 | -------------------------------------------------------------------------------- /docs/smooth/subscribe-to-smooth/overview.md: -------------------------------------------------------------------------------- 1 | # Subscribing to Smooth 2 | 3 | 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. 4 | 5 | :::danger Before subscribing to Smooth! 6 | Only validators with ETH1 withdrawal addresses can be subscribed to [Smooth](https://smooth.dappnode.io/). If you have a validator with a BLS withdrawal address, please update it to an ETH1 withdrawal address before subscribing to [Smooth](https://smooth.dappnode.io/). 7 | 8 | Ensure that you have control over the ETH1 withdrawal address of the validators you plan to subscribe to [Smooth](https://smooth.dappnode.io/). This address is the one you will need to use when logging into Smooth's website and manage your validators going forward. Only the withdrawal address has the capability to claim rewards generated by your validators from [Smooth](https://smooth.dappnode.io/). 9 | ::: 10 | You have **two options** to subscribe to [Smooth](https://smooth.dappnode.io/): 11 | 12 | 1. [**Automatic subscription**](/docs/smooth/subscribe-to-smooth/automatic.md): The simplest way to subscribe, change the fee recipient of your validators to Smooth's address and subscribe automatically when proposing your next block! 13 | 14 | 2. [**Manual subscription**](/docs/smooth/subscribe-to-smooth/manual.md): Change the fee recipient of your validators to Smooth's address and use the Smooth's website to subscribe right now, without waiting for your validators to propose a block. Start earning rewards right away! 15 | 16 | :::info 17 | - Smooth **Mainnet** Address: `0xAdFb8D27671F14f297eE94135e266aAFf8752e35` 18 | - Smooth **Testnet** (Holesky) Address: `0xE91c7Bbc671E6b2b316f15Db259819C27Bd1f15C` 19 | ::: -------------------------------------------------------------------------------- /docs/smooth/unsubscribe-from-smooth.md: -------------------------------------------------------------------------------- 1 | # Unsubscribing from Smooth. 2 | 3 | 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. 4 | 5 | :::caution 6 | When unsubscribing a validator from [Smooth](https://smooth.dappnode.io/), you will lose all pending rewards attached to it. We recommend unsubscribing just after successfully proposing a block, so lost pending rewards are minimized. 7 | ::: 8 | 9 | ## Step 1: Log in to Smooth's website. 10 | 11 | Go to [Smooth's website](https://smooth.dappnode.io/) and log in with your wallet. A list of all the validators with the same withdrawal address as your logged in wallet will appear. 12 | 13 | ## Step 2: Click on the "Unsubscribe" button of the validator you want to unsubscribe. 14 | 15 | Once logged in, click on the "Unsubscribe" button of the validator you want to unsubscribe from [Smooth](https://smooth.dappnode.io/). 16 | 17 | ![my-unsub-table](/img/smooth-unsub-table.png) 18 | 19 | ## Step 3: Follow the dialog instructions. 20 | 21 |

22 | unsub-initial-dialog 23 |

24 | 25 | Once clicking on the "Unsubscribe" button, a dialog will appear warning you that you are about to unsubscribe from [Smooth](https://smooth.dappnode.io/), and that it is recommended to do it when pending rewards are low. Click on "Claim my rewards" to continue and follow the dialog instructions. If you have any claimable rewards, a transaction that claims them will be prepared. If no claimable rewards are available, you will jump directly into the unsubscribe transaction. 26 | 27 | 28 |

29 | unsub-done 30 |

31 | 32 | Once the subscription transaction is processed by the chain, your validator will have been unsubscribed successfully from [Smooth](https://smooth.dappnode.io/). You can check it by reloading your validator's table. 33 | 34 | :::caution 35 | After unsubscribing, we recommend to change your validator's fee recipient back to another address as soon as possible, in order to avoid automatically subscribing to [Smooth](https://smooth.dappnode.io/) again. 36 | ::: 37 | -------------------------------------------------------------------------------- /docs/user/access-your-dappnode/local.md: -------------------------------------------------------------------------------- 1 | # Local Proxy Access to Dappnode 2 | 3 | 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. 4 | 5 | ## When to Use Local Proxy 6 | 7 | - 🛠 **Setup & Recovery**: If you're setting up your VPN or recovering from access issues, the local proxy can be really useful. 8 | - 📡 **Same Network**: It's crucial to be on the same local network as your Dappnode. 9 | - ⚠️ **Network Limitations**: Local proxy access might not always be available due to specific network configurations or restrictions. 10 | 11 | ## Accessing Dappnode via Local Proxy 12 | 13 | 1. 📱 On a device of your choice that's connected to the same network as your Dappnode, open a web browser. 14 | 2. 🌐 Type in http://dappnode.local in the address bar. 15 | 3. 🛡 If prompted, use your Dappnode credentials to log in or register as a new user if you haven't already. 16 | 17 | :::caution 18 | If http://dappnode.local doesn't work, there might be network-specific restrictions or configurations preventing access. In such cases, consider other access methods or reach out for support. 19 | ::: 20 | 21 | ## Limitations & Settings 22 | 23 | - ⚠️ **Access Limitations**: When using the local network proxy, you're limited to the Dappnode Admin UI dashboard at `dappnode.local` and cannot access other features like blockchain clients (Ethereum, Gnosis Chain, etc.). For full feature access, you'd need to configure and use either a VPN or the included Wi-Fi hotspot. 24 | 25 | - **Turning Local Proxy Off**: If you primarily use VPN features or the included Wi-Fi hotspot and find no use for local network access, you can disable it. Disabling can also be a security measure if you don't want all devices on your network to have access to this UI, even though it's protected by a password. To toggle local network access, navigate to the Wi-Fi sidebar menu on your Dappnode: 26 | 27 | 🔍 Navigate to the [Local Network menu](http://my.dappnode/wireless-network/local) on your Dappnode. 28 | 29 | 🔧 Toggle the "Local Network Proxy" switch. 30 | 31 |

32 | Dappnode Local Proxy Switch 33 |

34 | 35 | -------------------------------------------------------------------------------- /docs/user/access-your-dappnode/overview.md: -------------------------------------------------------------------------------- 1 | # 🌐 Access your Dappnode 2 | 3 | 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. 4 | 5 | Here are **four ways** you can connect to your Dappnode: 6 | 7 | [**📡 Wifi**](/docs/user/access-your-dappnode/wifi): A user-friendly way, especially for those with Dappnode pre-installed on their machines. 8 | 9 | [**🔐 VPN**](/docs/user/access-your-dappnode/vpn/overview): Using either Wireguard or OpenVPN, this method is both secure and versatile. You can connect from inside or outside your local network, but if you're connecting from outside, you might need to adjust some settings. 10 | 11 | [**🔗 Local Proxy (Recovery)**](/docs/user/access-your-dappnode/local): This is a backup connection method. It allows you to connect to Dappmanager when you're on the same local network. It's mainly for recovery purposes because of its limitations. 12 | 13 | [**💻 Terminal (Advanced, Recovery)**](/docs/user/access-your-dappnode/terminal): This is for those who know their way around computer commands. It provides complete control but might be complex for some users. 14 | 15 | :::info 16 | 💡 To ensure you can always access your Dappnode, it's a smart idea to set up and know more than one connection method. In the coming sections, we'll guide you through setting up each of these connection ways. 17 | ::: 18 | -------------------------------------------------------------------------------- /docs/user/access-your-dappnode/terminal.md: -------------------------------------------------------------------------------- 1 | # Terminal Access to Dappnode 2 | 3 | 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. 4 | 5 | :::caution 6 | Proceed with caution when using terminal access. Always understand the implications of commands and configurations before executing them. 7 | ::: 8 | 9 | ## SSH Access 10 | 11 | SSH (Secure Shell) allows secure remote access to systems. 12 | 13 | 1. Ensure your device is connected to the same network as the Dappnode. 14 | 2. Open a terminal or command prompt on your device. 15 | 3. Type: 16 | 17 | ```bash 18 | ssh dappnode@ 19 | ``` 20 | 21 | Replace `` with your Dappnode's actual IP address. 22 | 23 | 4. When prompted, use the following credentials: 24 | - **Username:** dappnode 25 | - **Password:** dappnode.s0 26 | 27 | :::note 28 | During the onboarding process in Dappmanager, you are prompted to change the default host password for the "dappnode" user. If you have completed this step, the default password `dappnode.s0` might no longer work. Always use the password you set during onboarding. 29 | ::: 30 | 31 | ### External SSH Access 32 | 33 | For accessing Dappnode from outside your local network: 34 | 35 | 1. Configure port forwarding on your router. Direct external SSH requests (typically port 22) to your Dappnode's internal IP address. 36 | 2. For added security, use a strong password or implement SSH keys. 37 | 3. To SSH, use: 38 | 39 | ```bash 40 | ssh dappnode@ 41 | ``` 42 | 43 | :::caution 44 | Exposing SSH to the internet can be risky. Ensure you adopt robust security practices and are aware of potential vulnerabilities. 45 | ::: 46 | 47 | ## Physical Terminal Access 48 | 49 | Directly interface with Dappnode using a monitor and keyboard: 50 | 51 | 1. Connect a monitor via the HDMI/VGA port. 52 | 2. Plug in a USB keyboard. 53 | 3. Power on or restart the Dappnode machine. 54 | 4. When prompted, enter the password: `dappnode.s0` (or [the one you've set if changed during onboarding](docs/user/getting-started/setup.md)). -------------------------------------------------------------------------------- /docs/user/access-your-dappnode/vpn/overview.md: -------------------------------------------------------------------------------- 1 | # VPN Access to Dappnode 2 | 3 | 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**. 4 | 5 | :::note 6 | It is not possible to use both Dappnode WiFi hotspot and VPN at the same time. If you want to use VPN, you'll need to disconnect your device from the WiFi hotspot. 7 | ::: 8 | 9 | ## VPN Clients 10 | 11 | ### [Tailscale](/docs/user/access-your-dappnode/vpn/tailscale) 12 | 13 | - Tailscale is a user-friendly VPN service that simplifies the process of connecting to your Dappnode. 14 | - It's an excellent choice if you're experiencing issues with port forwarding, UPnP, or CGNAT. [Learn more](https://tailscale.com/) 15 | 16 | ### [WireGuard](/docs/user/access-your-dappnode/vpn/wireguard) 17 | 18 | - WireGuard is a newer, streamlined VPN protocol known for its simplicity, speed, and security. 19 | - It requires less configuration and is considered more efficient in terms of CPU usage. [Learn more](https://www.wireguard.com/) 20 | 21 | ### [OpenVPN](/docs/user/access-your-dappnode/vpn/openvpn) (Deprecated) 22 | 23 | - OpenVPN is a well-established VPN protocol praised for its security and reliability. 24 | - It's more versatile and can bypass most network restrictions and firewalls. [Learn more](https://openvpn.net/) 25 | 26 | ## Local vs. Remote Access 27 | 28 | - **Local Access**: Connecting to your Dappnode when you're on the same local network. Generally, this means that your Dappnode machine and the device you're using to access it are connected to the same router. 29 | - **Remote Access**: Connecting to your Dappnode from a different network or location. This is one of the major advantages of using a VPN. 30 | 31 | :::info 32 | VPN provides a balance of security, versatility, and remote access capability. You can choose the VPN technology that best suits your needs and preferences, both fulfill the requirements of most users. 33 | ::: 34 | -------------------------------------------------------------------------------- /docs/user/access-your-dappnode/wifi.md: -------------------------------------------------------------------------------- 1 | # Wi-Fi Access to Dappnode 2 | 3 | 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. 4 | 5 | For those who got their hardware elsewhere, there's a chance the Wi-Fi card might not be recognized by the operating system. If this happens, you might need to install the required firmware. Since the steps vary based on the hardware, please contact our support on Discord if you face any issues. 6 | 7 | ## Connecting to Dappnode Wi-Fi 8 | 9 | 1. 📱 On a device of your choice, navigate to the **Wi-Fi settings**. 10 | 2. 🔍 Search and select the network labeled as `DappnodeWIFI`. 11 | 3. 🔑 Enter the password: `dappnode`. 12 | 4. 🌐 Open a browser and go to http://my.dappnode/. 13 | 14 | :::caution 15 | After connecting for the first time, go to the Wi-Fi section in the left menu of **Dappmanager** and change the hotspot password to something only you know. 16 | ::: 17 | 18 | ## Wi-Fi Settings in Dappmanager 19 | 20 | Once in the Wi-Fi section, you'll find two main options: 21 | 22 | 1. **Toggle Wi-Fi**: Here, you can turn the Wi-Fi feature on or off. 23 | 2. **Wi-Fi Credentials**: Set a new network name (SSID) and password for your Dappnode's Wi-Fi. We strongly advise you to change the default settings for better security. -------------------------------------------------------------------------------- /docs/user/dappnode-cloud/providers/aws/overview.md: -------------------------------------------------------------------------------- 1 | # AWS 2 | 3 | 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. 4 | 5 | ## Dappnode AWS AMI 6 | 7 | The Dappnode AMI is an image specifically designed for running Dappnode in the AWS environment. It contains all the pre-installed software and configurations required to deploy a fully functional Dappnode instance. By using the Dappnode AMI, users can quickly launch an instance in the cloud without having to manually set up and configure the Dappnode software, simplifying the deployment process and ensuring consistency across different instances. 8 | 9 | :::info 10 | An Amazon Machine Image (AMI) is a pre-configured template used to create a virtual machine within the AWS cloud. 11 | ::: 12 | 13 | ### Pricing 14 | 15 | When using Dappnode Cloud on AWS, there are two main charges to consider: 16 | 17 | #### Dappnode AMI 📀 18 | 19 | The Dappnode AMI is available for $15 per month. This fee grants you access to the Dappnode image, allowing you to launch as many instances as you need. This cost covers the use of Dappnode's software in the cloud. 20 | 21 | #### AWS Machines 🖥 22 | 23 | In addition to the Dappnode AMI fee, you will incur charges for the AWS infrastructure itself. These costs vary based on several factors: 24 | 25 | - **Instance Type:** The specifications of the machine you choose, such as CPU and memory will affect the pricing. 26 | 27 | - **Storage:** The amount and type of storage you select for your instance, will also influence the cost. 28 | 29 | - **Region:** AWS pricing varies by region, so the location where you launch your instance can impact the overall cost. 30 | 31 | :::info 32 | AWS operates on a pay-as-you-go model, meaning you only pay for the resources you use. Before launching your instance, you can view an estimate of the expected costs on the Dappnode AMI launch page. This estimate provides transparency, helping you plan your budget effectively. 33 | ::: 34 | -------------------------------------------------------------------------------- /docs/user/dappnode-cloud/providers/coming-soon.md: -------------------------------------------------------------------------------- 1 | # More coming soon 2 | 3 | We are aiming to deploy Dappnode Images in more cloud providers in a nearly future. 4 | 5 | If you are willing to run Dappnode in a specific provider you can open an Issue in [Dappnode's GitHub](https://github.com/dappnode/DNP_DAPPMANAGER/issues/new?assignees=&labels=&projects=&template=feature_request.md) and tell us more about it! 6 | -------------------------------------------------------------------------------- /docs/user/ethical-metrics/overview.md: -------------------------------------------------------------------------------- 1 | # Ethical Metrics 2 | 3 | :::note 4 | Ethical Metrics requires the [Dappnode Monitoring Service (DMS)](../packages/dms.md) and Dappnode Exporter as dependencies. 5 | ::: 6 | 7 | ## Introduction 8 | 9 | When it comes to monitoring your Dappnode, the [Dappnode Monitoring Service (DMS)](../packages/dms.md) offers valuable insights into the health and performance of your packages and system. Yet, there's a key thing that DMS can't do: **DMS can't notify you when your Dappnode goes offline**. This limitation arises because DMS operates from within your Dappnode, so it can't help when it experiences downtime. 10 | 11 | **Ethical Metrics solves this DMS limitation.** It is a service that allows for external monitoring of your Dappnode **without leaking any identifying information**. This way, you will be able to receive notifications when your Dappnode goes offline. 12 | 13 | :::info 14 | Ethical Metrics comes from the request of the users to have useful alerts and the strict compromise of Dappnode of preserving privacy for its users. 15 | ::: 16 | 17 | So, how did we manage to overcome the difficulty of monitoring your Dappnode without compromising your privacy? In order to keep your privacy intact, **all the communication between your Dappnode and our monitoring servers is done through the TOR network**. The TOR network enables anonymous communication by directing Internet traffic through a free, worldwide, volunteered overlay network that consists of more than seven thousand relays. 18 | 19 | :::tip 20 | In a nutshell, your Dappnode signals that it's alive via a private channel so we don't know where it comes from. If it stops sending this signal, we can assume that it's offline and send an alert to the Email or Telegram associated with that particular Dappnode. This way, your Dappnode's IP address remains hidden and nobody (not even us) can identify which metrics belong to whom. 21 | ::: 22 | 23 | **To put it simply:** Ethical Metrics enables us to monitor a group of Dappnode metrics for you. In the event that your Dappnode goes offline, Ethical Metrics can send notifications to an email address or Telegram handle that you provide during configuration. All this communication occurs via the TOR network, which guarantees the protection of your Dappnode's IP address and the confidentiality of your metrics. 24 | 25 | ![setup-5](/img/ethical-metrics.png) 26 | 27 | :::info 28 | Ethical metrics is one of our newest packages and it is still under constant improvement. Please come back to this page to check for updates. 29 | ::: 30 | -------------------------------------------------------------------------------- /docs/user/ethical-metrics/setup.md: -------------------------------------------------------------------------------- 1 | # Setting up Ethical Metrics 2 | 3 | :::tip 4 | We highly recommend utilizing the Telegram channel option in addition to or instead of relying solely on email notifications. 5 | ::: 6 | 7 | Email notifications may sometimes encounter hurdles such as being categorized as spam or getting lost in a cluttered inbox. This could inadvertently lead to missing out on important notifications that require your immediate attention. 8 | 9 | In contrast, Telegram channels provide a streamlined and efficient way to receive notifications directly to your device, ensuring that you stay informed without any interruptions. 10 | 11 | ![setup-6](/img/ethical-metrics-setup.png) 12 | 13 | In order to setup your Ethical Metrics notification system, you need to follow these steps: 14 | 15 | ## Telegram Notifications 16 | 17 | 1. Access Telegram Web: 18 | Open Telegram Web using [this link](https://web.telegram.org/a/) and login with your account. Ensure the URL ends with `/a/`. If not, manually add `/a/` after `https://web.telegram.org/`. 19 | 2. Create a Private Channel. 20 | 3. Add the DappNode bot (`@ethicalMetricsAlerts_bot`) to your channel as an administrator. 21 | 4. Find Your Channel ID: 22 | Copy the channel ID from the URL. 23 | It's a 13-digit number following the `-` in the URL. The ID always starts with `-100`. Ensure to include the `-` when copying. 24 | 25 | ![telegram-channel-id](/img/telegram-channel-id.png) 26 | 27 | 5. Navigate to http://my.dappnode/system/notifications 28 | 6. Enable Notifications: 29 | Paste the channel ID into the Telegram Channel ID field and toggle the switch `ON` to start receiving notifications. 30 | 31 | ## Email Notifications 32 | 33 | 1. Navigate to http://my.dappnode/system/notifications 34 | 2. Introduce the email address where you want to receive the notifications and click on the switch to activate the notifications. 35 | 3. That's it! Your Ethical Metrics will automatically register your TOR instance with the email address you provided. This will happen through the TOR network, preserving your privacy. You should receive a welcome email in the following minutes. 36 | 37 | :::caution 38 | To send email notifications, it is necessary that you provide an email address. In order to remain private, we recommend you to use an address that can't be linked to your identity. For example, John Doe probably wouldn't want to use "johndoe@gmail.com" if he wanted to remain anonymous. 39 | ::: 40 | -------------------------------------------------------------------------------- /docs/user/ethical-metrics/troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting 2 | 3 | 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! 4 | 5 |
6 | How can I make sure my Dappnode is registered? 7 | 8 | Email: Upon registering, an email will be sent to your configured email address. If you don't receive this email, please check your spam folder.
9 | 10 | Telegram: Once your bot has been set up, you can press the "Send Test Notification" button to see if everything is working as expected. 11 |
12 | 13 |
14 | How can I test a "Dappnode down" notification? 15 | 16 | There are various ways to test a "Dappnode down" notification. The easiest way is to stop your Dappnode temporarily, but you can also test it by stopping the "Prometheus" service of your Ethical Metrics package. After an hour, you should receive a "Dappnode down" notification in your Email and/or Telegram. 17 |
18 | 19 |
20 | How can I unregister from the Ethical Metrics monitoring system? 21 | 22 |

1. Using the Dappnode Interface: From the active Dappnode, simply navigate to System > Notifications and toggle off Ethical Metrics. This will stop all notifications and halt metric collection from your Dappnode. As long as Ethical Metrics notifications are enabled in the Dappnode UI, your device remains registered in our monitoring system.

23 | 24 |

2. For Inactive Dappnodes: If your Dappnode is no longer accessible, locate the unregister link in the welcome email you received upon registration. Keep in mind that using this method won't employ our IP hiding measures, but you can enhance security using tools like a VPN. Please keep in mind that if your Dappnode is still up and running with Ethical Metrics notifications turned on, it'll register again by itself.

25 | 26 |

3. Manual Unregistration: Lost the welcome email? You can also unregister by inputting the following URL into your browser: https://ethical-metrics.dappnode.io/unregister-from-email/?instance=YOUR_INSTANCE.onion%3A9090. Make sure to replace YOUR_INSTANCE with the unique identifier for your Dappnode, excluding ".onion:9090", which is already included in the provided URL.

27 | 28 |
29 | -------------------------------------------------------------------------------- /docs/user/getting-started/access-dappnode-via-wifi.md: -------------------------------------------------------------------------------- 1 | # Access Dappnode via Wi-Fi 2 | 3 | After connecting your Dappnode to the router and power, and turning it on, it's time to connect to it. 4 | 5 | :::tip 6 | You **don't need** a monitor, keyboard, or mouse to use Dappnode. You just need to plug it to your router and you can access it from your laptop or mobile phone's browser! 7 | ::: 8 | 9 | 10 | ## 1. **Connect to DappnodeWIFI**: 11 | - After a couple of minutes of being turned on, your dappnode will generate a WiFi hotspot 12 | - From the device you wish to connect with, look for the Wi-Fi network named **DappnodeWIFI**. 13 | - Connect using the default password: **dappnode**. 14 | 15 | ![Connect to Dappnode Wi-Fi](/img/dappnode-wifi.png) 16 | 17 | ## 2. **Access the Dappnode Interface**: 18 | - Open your web browser. 19 | - Navigate to: [http://my.dappnode/login](http://my.dappnode/login) 20 | 21 | ## Troubleshooting: 22 | 23 |
24 | How can I change my Dappnode Wi-Fi password? 25 | 26 | To change the Wi-Fi password: 27 | 28 | 1. While connected to the Dappnode, go to Wi-Fi Settings 29 | 30 | 2. Enter your new desired password in both the "New Password" and "Confirm New Password" fields. 31 | 32 | 3. Click on "Change Credentials". 33 | 34 |
35 | 36 |
37 | I can't access my Dappnode via Wi-Fi 38 | 39 | You can explore other methods to access your Dappnode here. 40 |
41 | -------------------------------------------------------------------------------- /docs/user/getting-started/choose-your-path.md: -------------------------------------------------------------------------------- 1 | # Choose your path 2 | 3 | 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. 4 | 5 | :::note 6 | Interested in purchasing a Dappnode? Explore our official store. 7 | ::: 8 | 9 | 22 | -------------------------------------------------------------------------------- /docs/user/getting-started/next-steps.md: -------------------------------------------------------------------------------- 1 | # Next Steps 2 | 3 | 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: 4 | 5 | [**🔐 Configure VPN access**](/docs/user/access-your-dappnode/vpn/overview): Using either Wireguard or OpenVPN, you will be able to connect to your Dappnode from wherever you are in the world. You will be able to access your dappnode outside of the range of the wifi, while on holidays or during your commute! 6 | 7 | [**💰 Start Staking and Earning Rewards**](/docs/user/staking/overview.md): You can start validating Proof-of-Stake networks like Ethereum, Gnosis Chain or LUKSO and earn rewards for securing the network. 8 | 9 | [**🔔 Configure Ethical Metrics**](docs/user/ethical-metrics/overview.md): Ethical metrics is a privacy-focused monitoring tool for Dappnode. You will be able to receive alerts related to your Dappnode's performance and health. 10 | -------------------------------------------------------------------------------- /docs/user/getting-started/register.md: -------------------------------------------------------------------------------- 1 | # Register 2 | 3 | ## 1. Register as New User 4 | 5 | Start by setting up your new account: 6 | 7 | 1. **Input** your desired **Username**. 8 | 2. **Select a secure password**. It should include a combination of characters, numbers, and special symbols for optimal security. 9 | 3. **Confirm your password** to ensure accuracy. 10 | 4. Click the **Register** button. 11 | 12 |

13 | Register 14 |

15 | 16 | ## 2. Secure Your Recovery Token 17 | 18 | Upon successful registration, you'll be provided with a Recovery Token. This token is crucial for: 19 | 20 | - Retrieving your password if forgotten. 21 | - Regaining account access if needed. 22 | 23 | **To safeguard your token**: 24 | 25 | - Click the button or link labeled "View Recovery Token". 26 | - Diligently copy the token and store it in a safe location. 27 | 28 | :::caution 29 | We recommend that you store your token in both digital (encrypted) and physical forms (noted and stored securely). If you lose access to both your password and token, you will lose access to your account. 30 | ::: 31 | 32 |

33 | Recovery Token 34 |

35 | 36 | ## 3. Logging In 37 | 38 | With your account ready and Recovery Token secured: 39 | 40 | 1. Proceed to the **Login** page. 41 | 2. Input your **Username** and **Password**. 42 | 3. Press the **Login** button to dive into your Dappnode account. 43 | 44 |

45 | Login 46 |

47 | 48 | --- 49 | 50 | ### Troubleshooting 51 | 52 |
53 | Want to change your password? 54 | 55 | Visit Profile Settings to reset it. 56 |
57 | 58 |
59 | Forgot your password? 60 | 61 | Go to the Login page and click on "Forgot your password?". You'll be prompted to enter the recovery token you saved during registration. Once entered, you'll be able to reset your password. 62 |
63 | 64 |
65 | Lost your recovery token? 66 | 67 | If you've lost your recovery token, there is still a chance to regain access to the Dappmanager UI. However, you will require accessing via terminal. Once you are in, you can get your recovery token by running the following command: 68 | 69 | ```bash 70 | cat /usr/src/dappnode/DNCORE/admin-recovery-token.txt 71 | ``` 72 | 73 |
74 | -------------------------------------------------------------------------------- /docs/user/getting-started/setup.md: -------------------------------------------------------------------------------- 1 | # Setup 2 | 3 | Setting up Dappnode is a straightforward process. This guide will walk you through configuring your Dappnode for the first time. 4 | 5 | ![setup-1](/img/setup-1.png) 6 | 7 | ## Choose Repository Source 8 | 9 | ![setup-2](/img/setup-2.png) 10 | 11 | Before you dive in, choose the source from which Dappnode retrieves its data: 12 | 13 | - **Remote Node**: Connect your Dappnode to an external Ethereum node. This option is lightweight, as you won't need to host the blockchain data on your machine. 14 | 15 | - **Full Node**: Have your Dappnode host the complete Ethereum blockchain. This ensures maximum decentralization and independence, but it requires more storage and bandwidth. 16 | 17 | :::info Why is this important? 18 | Dappnode uses smart contracts to publish the dapps that are accessible in the dappstore. For this reason, Dappnode needs access to an Ethereum node to read the contents of said smart contract. Choosing between a remote and a full node directly impacts how decentralized your setup is. 19 | 20 | **Decentralization Benefits**: By relying less on third-party services, you enhance security, reduce points of failure, and support the Ethereum network's robustness, but it might not work for you if you have limited storage or bandwidth. 21 | ::: 22 | 23 | ## Enable/Disable System Auto Updates 24 | 25 | Dappnode comes with an auto-update feature. This means it will automatically update itself with new releases, ensuring you always have the latest and most secure version. Activate auto-updates to lessen maintenance and better guard against vulnerabilities. 26 | 27 | ![setup-3](/img/setup-3.png) 28 | 29 | :::tip 30 | We **strongly** recommend activating auto-updates to ensure your Dappnode is always up to date with the latest versions. 31 | ::: 32 | 33 | ## Enable system notifications 34 | 35 | Dappnode can send you notifications about important events, such as your dappnode being offline or high CPU usage. This is a great way to stay on top of your Dappnode's health and performance. 36 | 37 | ![setup-4](/img/setup-4.png) 38 | 39 | ## Change Host User Password 40 | 41 | Beneath the hood, Dappnode operates on a Linux framework, protected by a password, which will be needed to access your [Dappnode's terminal](/docs/user/access-your-dappnode/terminal) To amplify your Dappnode's defense: 42 | 43 | 1. **Change** the **default Linux** machine **password** for user `dappnode`. 44 | 2. Choose a **strong, unique password** that's not easily guessable. 45 | 3. Remember to **store this password in a secure location**. If you lose access to this password, you could be locked out of your Dappnode. 46 | 47 | :::caution 48 | Always save and backup your password. This is crucial for ensuring uninterrupted access to your Dappnode. 49 | ::: 50 | 51 | ![setup-4](/img/setup-5.png) 52 | 53 | ## All Set! 54 | 55 | Congratulations! Your Dappnode is now configured and ready for use. Dive into the world of decentralized applications and enjoy the self-hosted, decentralized internet experience. 56 | 57 | With these steps, your Dappnode should be up and running efficiently. Always refer to the official Dappnode documentation or community for any further queries or support. 58 | 59 | :::info Keep your Dappnode up to date 60 | Remember to regularly check for updates and best practices to ensure your Dappnode stays secure and efficient. 61 | ::: 62 | 63 | ![setup-5](/img/setup-6.png) 64 | -------------------------------------------------------------------------------- /docs/user/hardware/overview.md: -------------------------------------------------------------------------------- 1 | # Hardware 2 | 3 | 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. 4 | 5 | Here are some topics you can check: 6 | 7 | - [**🛠️ Maintenance**](/docs/user/hardware/maintenance): Some approaches that may be helpful for your dappnode to perform as expected. 8 | 9 | - [**🌡️ Temperature**](/docs/user/hardware/temperature): Instructions for keeping track of your dappnode's temperature. 10 | -------------------------------------------------------------------------------- /docs/user/hardware/temperature.md: -------------------------------------------------------------------------------- 1 | # Temperature 2 | 3 | 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. 4 | 5 |

6 | CPU_temp 7 |

8 | 9 | If you want to configure notifications 🔔 for temperature changes, you can find two options: 10 | 11 | 1. In the [DMS Dashboard](http://dms.dappnode/dashboards) you'll be able to configure Grafana notifications. 12 | 2. You can also set [Ethical Metrics](http://my.dappnode/system/notifications) up to get email notifications while keeping your privacy. 13 | 14 | Some additional tips that will contribute to an optimal temperature are: 15 | 16 | - BIOS Adjustments: if you shut your Dappnode down you can access your NUC's BIOS setup with the `F2` key while booting. The UI includes different options that you can check in [Intel's documentation](https://www.intel.com/content/www/us/en/support/articles/000096279/intel-nuc.html) and tweak according to your preferences. 17 | - If you're using an 11th Generation NUC, check its ambient temperature recommendations [here](https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/NUC11AT_TechProdSpec.pdf). 18 | - If you're using a 12th Generation NUC, check its ambient temperature recommendations [here](https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/NUC12WSK_L10_UserGuide.pdf). 19 | -------------------------------------------------------------------------------- /docs/user/install/arm.md: -------------------------------------------------------------------------------- 1 | # Install - ARM 2 | 3 | ## Hardware Recommendations 4 | 5 | - 8 Gb RAM memory 6 | - Screen and keyboard (Only for the first installation) 7 | - Wired connection to the Dappnode 8 | 9 | ## Install Dappnode via Script 10 | 11 | Follow the instructions you can find in [Script Installation](/docs/user/install/script) 12 | 13 | ## Add an external SSD 14 | 15 | In case you have installed Dappnode in a Raspberry using a SD card and you want to add an external SSD you should mount docker data in it. To do this, follow the next steps: 16 | 17 | - Stop Docker service 18 | `systemctl stop docker` 19 | 20 | - Create a new mountpoint for docker data. As an example: 21 | `mkdir /data` 22 | 23 | - Add your partition on the new device to `/etc/fstab`. You can identify its UUID using the `blkid` tool. Make sure your device is properly partitioned first. Your line in `/etc/fstab` should look like this: 24 | `UUID=b311b983-bda6-4e9f-835c-266d40d64f07 /data/ ext4 defaults 0 0` 25 | 26 | - Mount your SSD drive 27 | `mount /data` 28 | 29 | - Move docker data to the mountpoint 30 | `mv /var/lib/docker/* /data/` 31 | 32 | - Edit Docker settings to use the alternative location. Edit `/etc/docker/daemon.json` as follows: 33 | 34 | ```json 35 | { 36 | "data-root": "/data" 37 | } 38 | ``` 39 | 40 | - Restart docker 41 | 42 | `systemctl start docker` 43 | -------------------------------------------------------------------------------- /docs/user/install/dappnode-commands.md: -------------------------------------------------------------------------------- 1 | # Dappnode commands 2 | 3 | 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. 4 | 5 | ![commands-welcome-message](/img/commands_welcome_message.png) 6 | 7 | :::tip 8 | Go to the [Access your Dappnode's terminal](/docs/user/access-your-dappnode/terminal) section to learn more about how to access the terminal. 9 | ::: 10 | 11 | Below is a list of available commands in Dappnode: 12 | 13 | - `dappnode_help`: prints out this message 14 | 15 | - `dappnode_wifi`: get wifi credentials (SSID and password) 16 | 17 | - `dappnode_openvpn`: get Open VPN credentials 18 | 19 | - `dappnode_wireguard`: get Wireguard VPN credentials. Use `dappnode_wireguard --help` for more info 20 | 21 | - `dappnode_connect`: check connectivity methods available in Dappnode 22 | 23 | - `dappnode_status`: get status of dappnode containers 24 | 25 | - `dappnode_start`: start dappnode containers 26 | 27 | - `dappnode_stop`: stop dappnode containers 28 | 29 | To run a command, enter it in your Dappnode terminal. For example: 30 | 31 | ```bash 32 | dappnode_help 33 | ``` 34 | 35 |
36 | I get the error "command not found" 37 | 38 | If you get the error `command not found` when trying to execute a dappnode command, it means that the command is not available in your system. You need to load the dappnode profile as follows: 39 | 40 | ```bash 41 | source /usr/src/dappnode/DNCORE/.dappnode_profile 42 | ``` 43 | 44 |
45 | -------------------------------------------------------------------------------- /docs/user/install/overview.md: -------------------------------------------------------------------------------- 1 | # Installation Overview 2 | 3 | ## Specifications & Minimum Requirements 4 | Dappnode is a Debian-based OS, which makes it friendly with most available commercial hardware. Depending on what you intend to run in your Dappnode you might need higher specifications, but a great number of available features can be used with the following recommendations: 5 | - Intel Core i5/i7 6 | - 32 GB RAM 7 | - 4 TB NVMe storage 8 | 9 | As minimum requirements we recommend: 10 | - Intel Core i3 11 | - 16 GB RAM 12 | - 2 TB NVMe or fast SSD storage 13 | 14 | If you don't have enough technical experience to customize your own hardware, remember you can always get a plug n play [Dappnode Home](https://dappnode.com/collections/all) in our online shop. 15 | 16 | ## Installation Methods 17 | 18 | Installing Dappnode can be achieved through two primary methods: 19 | 20 | ### 1. [ISO Installation](/docs/user/install/iso) 21 | - **Description**: This method involves downloading the Dappnode ISO file and using it to directly install Dappnode on your system. 22 | - **Best for**: Most users as it provides a comprehensive setup designed specifically for Dappnode. 23 | 24 | ### 2. [Script Installation](/docs/user/install/script) over Debian-based Distribution 25 | - **Description**: If you're already running a Debian-based distribution, you can utilize the Dappnode script to facilitate the installation process. 26 | - **Best for**: Users who want to install Dappnode on a cloud server, ARM device (where it's the only option), or those who desire a specific Debian-based distro. 27 | 28 | :::note 29 | For ARM-based systems, only the script installation method is available. 30 | ::: 31 | 32 | Choose the method that best fits your needs and system setup. Make sure to follow the respective installation instructions carefully for a smooth and successful Dappnode deployment. 33 | 34 | :::caution Continuous Uptime 35 | 36 | Dappnode is designed to run 24/7. Many features and functions within Dappnode, especially blockchain nodes, rely on continuous uptime to maintain their state, sync, and functionality. For instance: 37 | 38 | - **Blockchain Nodes**: If you have a synced blockchain node and you turn off Dappnode, the node will lose its sync. This means when you turn it back on, it'll take time to catch up to the latest state, which can be resource-intensive and time-consuming. 39 | 40 | - **Validator Nodes**: For users staking on certain blockchain networks, continuous uptime is crucial. Being offline might result in missed opportunities or even penalties. 41 | 42 | Considering these aspects, it's recommended to ensure your Dappnode device remains powered on and running at all times. 43 | ::: 44 | 45 | -------------------------------------------------------------------------------- /docs/user/install/script.md: -------------------------------------------------------------------------------- 1 | # Script installation 2 | 3 | You can install Dappnode using the installation script. In this case, we recommend you use Ubuntu or Debian as your operating system. 4 | 5 | ## Prerequisites 6 | 7 | Before installing Dappnode, you need to install some prerequisites: 8 | 9 | - [Docker](https://docs.docker.com/install/) 10 | - [Docker-compose](https://docs.docker.com/compose/install/) 11 | - [xz](https://packages.debian.org/sid/xz-utils) 12 | 13 | To install all the above prerequisites, execute the command below in the terminal of the machine you want to install Dappnode. If you already have the dependencies installed or you want to install them on your own you can skip this step. 14 | 15 | ```bash 16 | sudo wget -O - https://prerequisites.dappnode.io | sudo bash 17 | ``` 18 | 19 | ## Install Dappnode 20 | 21 | To install Dappnode, execute the next script: 22 | 23 | ```bash 24 | sudo wget -O - https://installer.dappnode.io | sudo bash 25 | ``` 26 | 27 | ## Reboot 28 | 29 | To finalize the installation once it has finished completing, reboot your machine (you might need to do this twice): 30 | 31 | ```bash 32 | shutdown -r now 33 | ``` 34 | 35 | ## Restore to the latest version 36 | 37 | If you are experiencing any problem or just want to make sure you are running the latest Dappnode versions, execute this command in the Dappnode terminal. This will update the core packages to the latest versions without erasing any data from your volumes. 38 | 39 | ```bash 40 | sudo wget -O - https://installer.dappnode.io | sudo UPDATE=true bash 41 | ``` 42 | 43 | ## Uninstall 44 | 45 | This command will uninstall Dappnode components (but not docker et al.). 46 | 47 | ```bash 48 | wget -qO - https://uninstaller.dappnode.io | sudo bash 49 | ``` 50 | -------------------------------------------------------------------------------- /docs/user/notifications/inbox.md: -------------------------------------------------------------------------------- 1 | # 📨 Notifications Inbox 2 | 3 | In the inbox section, you will see new notifications and the complete history. 4 | To understand how notifications work, there are several key characteristic to consider: 5 | 6 | - **New notification**: Unread notification that will show at the top of the history. 7 | - **History**: Notifications seen previously 8 | - **Priority**: Importance level of the notification: Informational, Relevant, Important and Critical 9 | - **Informational** – Awareness only; no action is needed. 10 | - **Relevant** – Action is recommended but not urgent. 11 | - **Important** – Prompt action is strongly advised. 12 | - **Critical** – Immediate action is required. 13 | - **Status**: Two notification status: `Triggered` when the notification is active and it is sent, and `Resolved` when the event notified is back to normal. 14 | - **Category**: There are different notifications categories: Hardware, System, Ethereum, Lukso, Gnosis and Hoodi. You can filter the notifications by category. 15 | - **Banner**: It is shown at the top of the UI for urgent notices. 16 | - **Filter:** You can filter notifications in the search bar by Package name (`DnpName`) Title and keywords. 17 | 18 | ![Notifications_inbox](/img/notifications_inbox.png) -------------------------------------------------------------------------------- /docs/user/notifications/legacy.md: -------------------------------------------------------------------------------- 1 | # Notifications Legacy 2 | 3 | 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. 4 | 5 | ![Notifications_legacy](/img/notifications_legacy.png) 6 | 7 | ### The Notification system will evolve continuously 8 | We hope the new notification system will help you to have a 360º tracking of your Dappnode and staking activity. New notifications will be added to improve your monitoring continuously. 9 | 10 | If you have feedback to improve the new notifications, let us know all your ideas in Discord. 11 | -------------------------------------------------------------------------------- /docs/user/notifications/notifications-list.md: -------------------------------------------------------------------------------- 1 | # List of Notifications 2 | 3 | This is the full list of events that will be notified in your Dappnode. 4 | 5 | ### 🛠️ System Notifications 6 | 7 | - Auto-updates (core and non-core packages) 8 | - Repository health (IPFS, Ethereum) 9 | - Host password security 10 | - Wi-Fi password security 11 | - Static IP address changes 12 | - Host reboot required 13 | - Disk usage warnings 14 | - Package stoppages due to system limits 15 | - No internet connection 16 | 17 | ### 📊 DMS (Dappnode Monitoring Service) 18 | 19 | - Memory usage 20 | - CPU load 21 | - Disk usage 22 | - Device temperature 23 | 24 | ### ⚙️ Execution Clients 25 | 26 | - Sync status 27 | - Peer count 28 | 29 | ### ⚖️ Consensus Clients 30 | 31 | - Sync status 32 | - Peer count 33 | 34 | ### 📡 Direct Notifications 35 | 36 | - Important messages from the Dappnode team 37 | 38 | And more notifications of your validators are coming soon! 39 | -------------------------------------------------------------------------------- /docs/user/notifications/overview.md: -------------------------------------------------------------------------------- 1 | # Notifications Overview 2 | 3 | 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. 4 | 5 | Notifications are package-based, meaning each package can send its own alerts. To receive notifications, you have the Notifications package installed by default and running on your Dappnode. 6 | 7 | ### Benefits 8 | 9 | ### 🖥️ Monitor Your Hardware and System in one channel 10 | 11 | Get real-time alerts about your system health: CPU load, disk space, temperature, and more. 12 | It’s like having all the information about your Dappnode and staking setup in one place running 24/7. 13 | 14 | ### ⚙️ Customization for Every Package 15 | 16 | You can fine-tune notification settings per package, including the thresholds that triggers different alerts in the package. 17 | 18 | ### 📬 Direct communication from the Dappnode Team 19 | 20 | Receive **direct messages** from the Dappnode team for critical network events like chain forks or urgent updates (e.g. the Pectra fork). This aims to stay ahead and take action before it’s too late. 21 | 22 | ### How to Access Notifications 23 | 24 | ### 🔔 Bell Icon 25 | 26 | Find the **bell icon** at the top right corner of your Dappmanager. Click it to view new or past notifications. The bell icon will show a blue dot when new notifications are triggered. 27 | 28 | ### 📚 Side Menu 29 | 30 | You’ll also find a dedicated **Notifications** section in the side menu. 31 | ![Notifications-access](/img/notifications_access.png) -------------------------------------------------------------------------------- /docs/user/notifications/settings.md: -------------------------------------------------------------------------------- 1 | # 🛠️ Notifications Settings 2 | 3 | In the settings section you can configure the type of notification you would like to receive per package. 4 | 5 | 🧩 **Notifications master switch:** Enable/disable all notifications. 6 | 7 | **📦 Package-Level Configuration** 8 | 9 | - Package Switch: Enable/disable notifications in the **package** 10 | - Customize which types of notifications are active 11 | - Set thresholds with a **slider** (e.g., temperature limit before alert) 12 | 13 | ![Notifications_settings](/img/notifications_settings.png) 14 | -------------------------------------------------------------------------------- /docs/user/packages/MysteriumVPN: -------------------------------------------------------------------------------- 1 | # MysteriumVPN 2 | Mysterium will let you earn passive income by making your bandwidth available through a VPN. 3 | 4 | ### Disclaimer 5 | This package allows you to share your bandwidth with other users of the Mysterium network. Depending on your country, there might be laws restricting the websites you can visit. Kindly keep in mind that Dappnode is not responsible for any internet activity happening through your bandwidth via this package. Mysterium offers an option for accepting only whitelisted traffic. Please read their FAQ to know more about Mysterium's network encryption, whitelisting policy and exit node guidance. 6 | -------------------------------------------------------------------------------- /docs/user/packages/avalanche.md: -------------------------------------------------------------------------------- 1 | # Avalanche 2 | 3 | ## Avalanche: A Revolutionary Consensus Protocol 4 | Avalanche is an innovative open-source platform designed for launching decentralized finance applications and enterprise blockchain deployments within a single, highly scalable ecosystem. Developers leveraging Avalanche’s capabilities can effortlessly craft robust, secure applications and tailor-made blockchain networks. This platform empowers them to construct intricate rulesets or build atop existing private or public subnets, ultimately driving the creation of reliable and impactful solutions. 5 | 6 | ## AVAX Staking on Dappnode: Earn Rewards while supporting Avalanche Network 7 | 8 | :::info 9 | A guide to running an Avalanche validator node on Dappnode is coming soon. In the meantime, you can find more information on the [Avalanche website](https://www.avalabs.org/). 10 | ::: 11 | 12 | By running an Avalanche node on Dappnode, you actively participate in the decentralization of the network. Through this engagement, you contribute to the security and reliability of Avalanche’s consensus model. 13 | 14 | Engage in AVAX staking to contribute to the security and decentralization of the Avalanche network. Stake your AVAX tokens to become a delegator or validator, and in return, earn rewards for your participation in the Proof of Stake consensus mechanism. With a minimum of 2000 AVAX tokens required to start a validator, AVAX staking presents an opportunity to support the network while earning rewards. -------------------------------------------------------------------------------- /docs/user/packages/bitcoin.md: -------------------------------------------------------------------------------- 1 | # Bitcoin 2 | 3 | ## Exploring Bitcoin: The Pioneer of Cryptocurrency 4 | Bitcoin, the first and most well-known cryptocurrency, is a digital asset that introduced the concept of blockchain technology to the world. Created by an anonymous person or group under the pseudonym Satoshi Nakamoto, Bitcoin revolutionized the financial landscape by offering a decentralized and borderless form of value transfer. 5 | 6 | ## Running a Bitcoin Node on Dappnode and Supporting the Network 7 | Running a Bitcoin node on Dappnode allows you to actively participate in the Bitcoin network’s operations. As a node operator, you help validate transactions, maintain a copy of the blockchain, and contribute to the network’s overall security and resilience. Operating a Bitcoin node not only benefits the network by enhancing its decentralization but also provides you with an opportunity to engage with the technology that powers the cryptocurrency revolution. 8 | 9 | ## Bitcoin’s Role in Decentralization: A Decade of Innovation 10 | Bitcoin’s journey over the past decade has been marked by remarkable advancements and widespread adoption. As the original cryptocurrency, Bitcoin has demonstrated the potential of blockchain technology to disrupt traditional financial systems. Its decentralized nature, limited supply, and transparent ledger have positioned it as a store of value and a medium of exchange. By running a Bitcoin node on Dappnode, you contribute to the continued success and decentralization of the Bitcoin network. -------------------------------------------------------------------------------- /docs/user/packages/ethclassic.md: -------------------------------------------------------------------------------- 1 | # Ethereum Classic 2 | ## Introducing Ethereum Classic: Preserving Blockchain Principles 3 | 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. 4 | 5 | ## Ethereum Classic on Dappnode: Supporting Decentralization 6 | Step into the Ethereum Classic universe and become a steward of its principles. Ethereum Classic’s commitment to blockchain origins offers a space for decentralized ideals to thrive. Through an Ethereum Classic node on Dappnode, you contribute to the preservation of an ecosystem where code remains law and history remains unaltered. -------------------------------------------------------------------------------- /docs/user/packages/monero.md: -------------------------------------------------------------------------------- 1 | # Monero 2 | 3 | ## Introducing Monero: A Privacy-Centric Cryptocurrency 4 | Monero stands as a privacy-focused cryptocurrency with a core focus on anonymity and transaction fungibility. Monero uses innovative cryptographic techniques to obscure transaction details, making it difficult to trace the sender, receiver, and transaction amount. 5 | 6 | ## Monero’s Package on Dappnode 7 | By running a Monero node in Dappnode, you play a crucial role in supporting the decentralized nature of the Monero ecosystem. You actively contribute to the decentralization of the network, playing a role in shaping a financial ecosystem that values privacy and security. -------------------------------------------------------------------------------- /docs/user/packages/signature.md: -------------------------------------------------------------------------------- 1 | # Packages' Signature 2 | 3 | ## Dappnode's Packages Signatures 4 | 5 | All Dappnode's packages must be on chain, which means that need a digital signature for verification. This cryptographic signature serves as a stamp of authenticity, enabling users to prove the identity of the package's author and ensuring the integrity of its source. Before installing any package into your Dappnode environment, is essential to ensure that it comes from a trusted author. This measure is vital for safeguarding your Dappnode infrastructure against unauthorized access or potential security breaches. 6 | 7 | ## Release trusted keys 8 | 9 | By default, our software comes with a set of pre-approved keys that have validation by the Dappnode team to ensure their reliability. However, users have the flexibility to manage these trusted keys according to their preferences. If you want to check the addresses trusted by us, or even add an address trusted by yourself, you can do it in the "System" tab on the side menu, within the ["Advanced" module](http://my.dappnode/system/advanced), in the "Release trusted keys" section. 10 | 11 | ![Release trusted keys table](/img/release-trusted-keys.png) 12 | 13 | This feature could be particularly useful when users intend to install Dappnode packages sourced from alternative providers or even when developing their own packages. Nevertheless, it is strongly advised to have caution when modifying trusted keys and to only incorporate new addresses after thorough verification of their credibility. 14 | 15 | ## Bypass trusted signature 16 | 17 | If a user attempts to install a package whose signature fails to match any of the trusted keys listed in the system, installation will be automatically blocked. However, is it possible to bypass this safeguard by toggling the trusted signature switch during the installation process. This one is only displayed if advanced options dropdown menu is active before the installation. 18 | 19 | ![Trusted signature switch](/img/signed-safe-switch.png) 20 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/backup.md: -------------------------------------------------------------------------------- 1 | # Backup 2 | 3 | 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". 4 | 5 | ![dappnode_packages5](/img/dappnode_packages5.png) 6 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/config.md: -------------------------------------------------------------------------------- 1 | # Config 2 | 3 | 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. 4 | 5 | ![dappnode_packages2](/img/dappnode_packages2.png) 6 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/file-manager.md: -------------------------------------------------------------------------------- 1 | # File Manager 2 | 3 | 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. 4 | 5 | ![dappnode_packages6](/img/dappnode_packages6.png) 6 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/info.md: -------------------------------------------------------------------------------- 1 | # Info 2 | 3 | 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: 4 | 5 | - **Version**: Displays both the package's version and its upstream version. 6 | - **Getting Started**: Provides essential information needed to run the package. You can remove this section if it's not needed anymore. 7 | - **Links**: Offers various options, including bundled package UI/Dashboards, related tools such as Launchpads, and external documentation. 8 | - **Package Status Indicator**: Indicates the current status of the package (e.g., running, crashed, restarting). 9 | - **Package Status Manager**: Allows you to play/pause or restart the package for management and troubleshooting purposes. 10 | - **Remove Volumes**: Wipes all package data. For blockchain nodes/clients, this will force the package to start syncing from scratch (or from a checkpoint if a proper URL has been set). This option is represented by a gray trash bin icon. 11 | - **Remove Package**: Completely removes the package from your Dappnode. You can choose to either keep or delete any data associated with it. This option is represented by a red trash bin icon. 12 | 13 | ![dappnode_packages1](/img/dappnode_packages1.png) 14 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/logs.md: -------------------------------------------------------------------------------- 1 | # Logs 2 | 3 | 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! 4 | 5 | ![dappnode_packages4](/img/dappnode_packages4.png) 6 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/network.md: -------------------------------------------------------------------------------- 1 | # Network 2 | 3 | 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. 4 | 5 | ![dappnode_packages3](/img/dappnode_packages3.png) 6 | 7 | - **Service**: Some packages may have multiple services running as part of the same container. This option will allow you to adjust each of their network settings separately. 8 | 9 | - **Public port mapping**: Need to change your package's port mapping? You can change this setting in this field as well as its protocol between TCP and UDP. Remember that Dappnode features UPnP technology, so if this protocol is enabled in your router, the port opened here will be forwarded in the router, too. 10 | 11 | - **HTTPs domain mapping**: Do you want to expose your package to the internet? You'll be able to add multiple public domains to your package here. This is a great way to share your node's RPC with friends and family! 12 | - From subdomain: the domain name you want to set for the mapping. It will be appended to your dappnode dynDNS domain. 13 | 14 | - To port: The container port you want to map to the domain. Double check you have chosen correctly the port you want to map. These ports are commonly used: 15 | - 80: Exposing UIs 16 | - 8545: Ethereum RPC APIs 17 | - 8551: Ethereum Engine endpoints 18 | - 3500: Beacon chain or validator API in Dappnode. 19 | 20 | - Basic auth: This parameter is optional and allows you to set a basic authentication for the domain. It will be required to access the domain, learn more about basic authentication [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication). The basic auth is composed of fields **User** and **Password** 21 | 22 | :::warning 23 | For security reasons, the password is not stored in plain text. This means it cannot be recovered if lost. In such case, you will have to re-create the port mapping with a new password. 24 | ::: 25 | 26 | ![dappnode_packages3](/img/dappnode_package_network.png) 27 | -------------------------------------------------------------------------------- /docs/user/packages/understanding-dappnode-packages/overview.md: -------------------------------------------------------------------------------- 1 | # Dappnode Packages 2 | 3 | ### What are Dappnode packages? What features do they offer? How are they managed? 4 | 5 | One of Dappnode's top features is its user-friendly interface, which allows users to interact with various packages containing clients and other applications. This section will go over the basic features you'll find in any Dappnode package. 6 | 7 | There are 6 sections in the package view: 8 | 9 | [**🔍 Info**](/docs/user/packages/understanding-dappnode-packages/info): Provides basic information about the package, including its running status and volume management. 10 | 11 | [**🔧 Config**](/docs/user/packages/understanding-dappnode-packages/config): Contains configuration settings for the package, allowing users to adjust parameters and customize its behavior according to their needs. 12 | 13 | [**📡 Network**](/docs/user/packages/understanding-dappnode-packages/network): Details the network configuration, including port settings and forwarding options. 14 | 15 | [**📝 Logs**](/docs/user/packages/understanding-dappnode-packages/logs): Provides access to various logs generated by each of the package's services, useful for troubleshooting and monitoring package performance. 16 | 17 | [**📁 File Manager**](/docs/user/packages/understanding-dappnode-packages/file-manager): Offers a file management interface that allows users to upload and download files within any of the services that make up the package. 18 | 19 | [**💾 Backup**](/docs/user/packages/understanding-dappnode-packages/backup): Includes backup options to safeguard package data, providing the ability to download and restore backups in a compressed file format. 20 | -------------------------------------------------------------------------------- /docs/user/repository/ethereum.md: -------------------------------------------------------------------------------- 1 | # Ethereum repository 2 | 3 | Dappnode uses smart contracts to distribute the dappnode packages available in the Dappstore. The smart contracts are deployed in the Ethereum blockchain and the Dappnode client interacts with them to get the list of available packages and to download them. Your dappnode will need a connection to an Ethereum node in order to read the smart contracts and download the packages. There are two ways to establish this connection: 4 | 5 | - **Full Node**: By running a Full Node, you host the Ethereum blockchain. This ensures maximum control and independence, but requires syncing and maintaining the blockchain's latest state. 6 | 7 | - **Remote Node**: Using a Remote Node means relying on an external Ethereum node. It's less resource-intensive but demands trust in the node operator. 8 | 9 | 10 | :::tip 11 | To configure your dappnode Ethereum repository go to http://my.dappnode/repository/eth 12 | ::: 13 | 14 | ## Run your own Ethereum node 15 | 16 | When choosing to run your own Ethereum node, you will need to select: 17 | 18 | 1. **Execution client** 19 | 2. **Consensus client** 20 | 21 | Moreover, it is **highly recommended to enable** these additional options: 22 | 23 | 3. **Use remote during syncing or errors**: If enabled, this will auto-switch from your Local node to the Dappnode Remote node under certain conditions. For instance, if your Ethereum node is syncing or if it's unavailable for some reason. Activating this option ensures uninterrupted access to the Dappnode smart contracts even if there's an issue with your Local node. 24 | 25 | 4. **Use checkpointsync**: By enabling this, your consensus client will utilize a checkpoint to fast-track the syncing of the Ethereum blockchain, making the process much quicker. 26 | 27 | :::caution 28 | Making changes here will also modify selections in the [Stakers](http://my.dappnode/stakers) tab. 29 | ::: 30 | 31 | ![ethereum-remote-full](/img/repository-eth-full.png) 32 | 33 | :::caution 34 | Running your own Ethereum node requires a lot of resources. You will need a powerful machine with a lot of storage and a good internet connection. If you don't have a powerful machine, you can use a remote Ethereum node. 35 | ::: 36 | 37 | ## Use a remote Ethereum node 38 | 39 | You can use a remote Ethereum node to connect to the Ethereum network. You will need to trust the node operator. 40 | 41 | ![ethereum-remote-node](/img/repository-eth-remote.png) 42 | 43 | :::note 44 | At the moment, we only support Dappnode official Ethereum node. We are working on a way to allow users to add their own remote Ethereum nodes RPC endpoints. See https://github.com/dappnode/DNP_DAPPMANAGER/issues/1245 45 | ::: 46 | 47 |
48 | 49 | ### Troubleshooting 50 | 51 |
52 | Why did my clients change in the Full Node Repository selection? 53 | 54 | At the moment, Dappnode only supports running one Ethereum mainnet node. If you change your selection in the [Stakers](http://my.dappnode/stakers/ethereum) menu, it will also change in the [Repository](http://my.dappnode/repository/eth) menu. 55 |
56 | -------------------------------------------------------------------------------- /docs/user/rollups/optimism.md: -------------------------------------------------------------------------------- 1 | # Optimism Rollup 2 | 3 | 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. 4 | 5 | ![Optimism Rollup](/img/optimism-menu.png) 6 | 7 | ## Setting Up an Optimism Node 8 | 9 | Optimism stands out as the inaugural choice in the Rollups suite. Initiating an Optimism node on Dappnode parallels the familiar Stakers Menu, yet with some distinctions: 10 | 11 | - Utilize an `op-node` client to link with the Optimism Mainnet. 12 | - Employ `op-geth` or `op-erigon` to bridge your `op-node` to Ethereum's execution layer, echoing the beacon chain/consensus client's role on the mainnet. 13 | - For archive nodes, `op-legacy` is essential for transactions predating the Bedrock upgrade. 14 | - A connection to an Ethereum Mainnet node is required. If your Dappnode already operates one, the Rollups menu will streamline configuration. Otherwise, integrate a public RPC for Ethereum Mainnet connection. 15 | 16 | For a deeper dive, consult Optimism’s documentation: 17 | 18 | - [OP Geth docs](https://op-geth.optimism.io/) 19 | 20 | - [Test In Prod - OP Erigon](https://github.com/testinprod-io/op-erigon) 21 | 22 | - [OP Node Operator](https://community.optimism.io/docs/developers/bedrock/node-operator-guide/) 23 | -------------------------------------------------------------------------------- /docs/user/rollups/overview.md: -------------------------------------------------------------------------------- 1 | # Ethereum Rollups: An Overview 2 | 3 | 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. 4 | 5 | Currently, we support: 6 | 7 | - [**:four_leaf_clover: Optimism**](/docs/user/rollups/optimism): An optimistic Layer 2 solution for Ethereum, enhancing speed and efficiency. 8 | 9 | ## Enable rollups 10 | 11 | To enable this feature, you need to switch on the rollups module in the top bar of the Dappnode UI (Dappmanager): 12 | 13 |

14 | 15 |

16 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/dvt-technologies/diva.md: -------------------------------------------------------------------------------- 1 | # Diva package for Dappnode 2 | 3 | --- 4 | 5 | ### **Introduction** 6 | 7 | Diva is an Ethereum Liquid Staking protocol powered by Distributed Validator Technology (DVT). It extends Ethereum's Proof of Stake providing new functionality for Stakers and Operators: 8 | 9 | - Liquid Stakers receive divETH, a Liquid Staking Token which generates Ethereum Staking Rewards. 10 | - Operators run a Distributed Validation node to fulfill staking duties and earn additional Operator Rewards. 11 | 12 | This package allows you to run a Diva Operator node, and it is available for the [Holesky Testnet](http://my.dappnode/installer/public/diva-holesky.public.dappnode.eth). The Ethereum mainnet version of this package is still undergoing testing and will be available in the DAppStore soon. 13 | 14 | ### **Requirements** 15 | 1. The first thing you'll need to do is set up a fully-synced node. This can be done through the Stakers Menu in Dappnode by selecting: 16 | - 1 Execution Client (Geth, Besu, Erigon or Nethermind) 17 | - 1 Consensus Client (Prysm, Lighhouse, Lodestar, Teku or Nimbus) 18 | - MEV Boost (optional) 19 | 20 | 2. Installing the Diva package for Dappnode. This can be done by visiting the [DAppStore](http://my.dappnode/installer/dnp) in the Dappnode UI. You'll be asked to set two passwords when going through the installation process, as well as your operator's address and Discord handle (for testnet purposes). 21 | 22 | ![Diva config tab](/img/diva-config1.png) 23 | 24 | ### **Registering a Dappnode Diva Operator** 25 | After successfully installing the Diva package, you'll need to access the package's interface by clicking on UI. This will take you to the Diva app where you'll need to connect your wallet to register your Diva node as an operator. You can register multiple operators using the same wallet. 26 | 27 | ![Diva wizard](/img/diva-config2.png) 28 | 29 | :::info 30 | The wallet address used to register the operator is the only address that will hold management permissions for it, so make sure you keep it safe! 31 | ::: 32 | 33 | ### **Monitoring your Diva nodes** 34 | [Divascan](https://divascan.io) is a tool developed to monitor Diva nodes and operators. You can enter your operator address to get information on the validators' performances. You can also get more information on the Diva protocol. 35 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/lsd-pools/lido/performance.md: -------------------------------------------------------------------------------- 1 | # Validator performance monitoring 2 | 3 | The **Performance** tab allows you to monitor the performance of your Lido validators associated with your Node Operator. 4 | 5 | ## Understanding Lido CSM Reports 6 | 7 | Before diving into the details, it's essential to understand what a **Lido CSM report** is. These reports contain performance data for all validators in the CSM and are distributed via IPFS hashes by the Lido team. 8 | 9 | - On **Mainnet**, reports are distributed every **28 days**. 10 | - On **Holesky**, reports are distributed every **7 days**. 11 | 12 | ## Lido Report Cards 13 | 14 | At the top of the **Performance** tab, you'll find two key information cards: 15 | 16 | ![Performance cards](/img/lido-csm-performance-cards.png) 17 | 18 | 1. **Next Lido Report**: Displays the time remaining until the next report is distributed by the Lido CSM team. 19 | 20 | 2. **Pending Data**: As mentioned earlier, reports are distributed by the Lido team via IPFS. The Lido CSM package backend scans for these IPFS hashes and attempts to resolve their content to process the report data. 21 | 22 | - This card shows the **number of reports left to be processed** by the backend. If `reports > 0`, the data in the table and chart below is not fully updated, and some reports are missing. 23 | - The backend processes pending hashes **every 3 hours**. If `reports > 0` for an extended period, the IPFS gateway may not be able to find the remaining hashes. 24 | 25 | :::tip 26 | To resolve this issue, navigate to the **Config** tab of the Lido CSM package and change the `IPFS_URL` to another gateway that may successfully locate the hashes. 27 | ::: 28 | 29 | ## Range Selector 30 | 31 | ![Range Selector](/img/lido-csm-performance-range-selector.png) 32 | 33 | The **Range Selector** controls all the data displayed in the Performance tab. It acts as a filter for the chart and table below. 34 | 35 | ### Available Ranges: 36 | 37 | - **Last month** 38 | - **Last year** 39 | - **Ever** (From the first report that included a validator associated with your Node Operator) 40 | 41 | :::info 42 | On **Holesky**, an additional **week** range is available since reports are distributed weekly. 43 | ::: 44 | 45 | ## Node Operator Efficiency vs. Lido Average Efficiency 46 | 47 | ![Performance Chart](/img/lido-csm-performance-chart.png) 48 | 49 | This chart compares the efficiency of your validators with the **Lido threshold** for the selected range. 50 | 51 | - Includes a **slider** to adjust the number of frames displayed. 52 | 53 | :::info 54 | A frame represents the period between Lido CSM reports 55 | ::: 56 | 57 | - Allows toggling validator visibility by clicking on the validator index in the legend next to the chart. 58 | 59 | ## Summary Table 60 | 61 | ![Performance Tbale](/img/lido-csm-performance-table.png) 62 | 63 | This table provides an overview of the **attestations** assigned and included for each validator within the selected range. 64 | 65 | ### Efficiency Calculation: 66 | 67 | - The **efficiency column** is based on your validator's **attestation rate**. 68 | - If `attestation rate for selected range > Lido average threshold for selected range`, the efficiency is displayed in **green**. Otherwise, it appears in **red**. 69 | 70 | :::caution 71 | Even if efficiency is red, you may still receive rewards for the current report, and vice versa, since this data is based on past reports and can fluctuate significantly between frames. 72 | ::: 73 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/lsd-pools/rocketpool.md: -------------------------------------------------------------------------------- 1 | # Rocketpool 2 | 3 | --- 4 | 5 | ### **Rocketpool Overview** 6 | 7 | Rocketpool is a decentralized Ethereum staking solution that allows users to earn rewards by staking their Ether (ETH). It's designed to be inclusive, allowing those without the full 32 ETH required for an Ethereum validator to be able to participate. Rocketpool achieves this through its innovative "minipool" concept, which facilitates pooled staking among multiple participants. 8 | 9 | --- 10 | 11 | ### **Package Key Features** 12 | 13 | 1. **Decentralized Staking:** The Rocketpool package ensures that staking remains decentralized by using your Dappnode's local Ethereum node, safeguarding the core principles of the Ethereum network. Rocketpool also operates on smart contracts, ensuring that operations are transparent, auditable, and free from centralized control. 14 | 15 | 2. **Minipools:** Users can start a minipool with as little as 16 or 8 ETH, allowing for broader participation in Ethereum's block creation. 16 | 17 | 3. **Integrated with DappNode:** Easy setup, monitoring, and management of Rocketpool directly from your Dappnode interface. 18 | 19 | --- 20 | 21 | ### **First Steps to Start a Minipool with Rocketpool and Dappnode** 22 | 23 | 1. **Package Installation:** 24 | - In your Dappnode's UI, navigate to the DAppStore. 25 | - Find the [Rocketpool package](http://my.dappnode/installer/dnp/rocketpool.dnp.dappnode.eth). 26 | - Click 'Install'. Once installed, the Rocketpool package should appear in your installed packages list. 27 | 28 | 2. **Setting up the Environment:** 29 | - Ensure you're running a full, synced Ethereum node (Execution client + Consensus client). 30 | - If you are not running a full Ethereum node yet, go to the [Stakers Menu](http://my.dappnode/stakers/ethereum), select your clients and apply the configuration to start synchronization. 31 | 32 | 3. **Starting a Minipool:** 33 | - Navigate to the Rocketpool package dashboard. 34 | - Choose the amount of ETH you wish to stake. Remember, you can start a minipool with as little as 16 or 8 ETH. 35 | - Follow the on-screen instructions to initialize your minipool. 36 | 37 | 4. **Funding your Minipool:** 38 | - Send the amount of ETH you’ve chosen to the provided address. Make sure you keep track of this address, as it will be the address of your minipool. 39 | 40 | 5. **Monitoring and Management:** 41 | - Once your minipool is active, you can monitor its performance, rewards, and other details with Dappnode's [DMS](/docs/user/packages/dms). 42 | 43 | --- 44 | 45 | It's essential to remember that while Rocketpool simplifies the staking process, it's crucial to understand the risks involved. Always make sure to do thorough research and ensure the security of your investments. 46 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/lsd-pools/stakehouse.md: -------------------------------------------------------------------------------- 1 | # Stakehouse 2 | 3 | --- 4 | 5 | ### **Stakehouse Overview** 6 | 7 | Stakehouse’s mission is to bring the benefits of ETH staking to the mainstream user. To do this Blockswap developed a public benefit infrastructure favoring solo stakers. Those who are most important to the Ethereum blockchain now have access to the Stakehouse middle layer which is like ETH staking with superpowers. Not only are solo stakers empowered, but anybody who touches staked ETH or its peripheries can benefit from a protocol that creates multichain ETH without a bridge, doesn’t pool users’ assets, doesn’t collect a commission, doesn’t require a particular node, and doesn’t use an oracle. 8 | 9 | --- 10 | 11 | ### **Package Key Features** 12 | 13 | 1. **Integration with Web3Signer:** When being a node operator, you can import your keystores into Web3Signer and select Stakehouse under the "Staking Protocol" field. Web3Signer takes care of the rest! 14 | 15 | 2. **Staking Inclusion:** Users can run a validator for 4 ETH or provide liquidity with as little as 0.001 ETH, to earn Ethereum consensus rewards. The users of LSD Networks can range from DAOs to node operators to general users who have ETH to stake. 16 | 17 | --- 18 | 19 | ### **First Steps to become a Node Runner with Stakehouse and Dappnode** 20 | 21 | 1. **Setup your LSD:** 22 | - Go to [Stakehouse's LSD wizard](https://lsd.joinstakehouse.com/) and click "Deposit" under "Node Operator". 23 | - Follow the steps to [generate your key](https://help.joinstakehouse.com/en/articles/6597493-how-do-i-generate-my-validator-keys-using-wagyu-keygen-mainnet-testnet). 24 | - Make the initial 4 ETH deposit. 25 | 26 | 2. **Import your keystore file into Web3Signer:** 27 | - When you import your keystore, make sure you select Stakehouse under "Staking protocol". This will automatically set your Fee Recipient address and point it to your LSD. 28 | - Pay special attention to this, since failing to properly configure the Fee Recipient may incur in penalties for the Node Runner. 29 | 30 | --- 31 | 32 | Staking, though lucrative, also comes with inherent risks. Stakehouse simplifies the process but doesn't eliminate the risks. It's essential to conduct thorough research and always prioritize safety. 33 | 34 | For further guidance and details, refer to [Stakehouse's official documentation](https://docs.joinstakehouse.com/protocol/learn/Stakehouse), or drop by [Dappnode's Discord server](https://discord.gg/dappnode) for support. 35 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/lsd-pools/stakewise.md: -------------------------------------------------------------------------------- 1 | # StakeWise 2 | 3 | --- 4 | 5 | ### **StakeWise Overview** 6 | 7 | StakeWise is an LSD network service that allows anyone to benefit from the yields available on the Ethereum Beacon Chain. StakeWise runs secure and stable institutional-grade infrastructure, combined with unique tokenomics, to provide the highest possible staking yields for its users. As a liquid staking platform, users are free to un-stake at any time or utilise their staked ETH capital to earn enhanced yields throughout DeFi. There is no minimum ETH requirement to stake with StakeWise and the platform fees are the lowest seen across the industry. 8 | 9 | --- 10 | 11 | ### **Package Key Features** 12 | 13 | 1. **Solo and Pooled Staking:** StakeWise allows users the flexibility to choose between solo staking and joining a staking pool. 14 | 15 | 2. **Tokenized Staking Rewards:** StakeWise tokenizes staking rewards, which users can trade, providing liquidity and flexibility. 16 | 17 | 3. **Comprehensive Dashboard:** Users have access to a detailed dashboard that displays staking performance, rewards, and other essential metrics. 18 | 19 | 4. **Transparent Fee Structure:** StakeWise prides itself on transparent fees with no hidden charges, ensuring users retain maximum rewards. 20 | 21 | 5. **Integrated with DappNode:** Easy setup, monitoring, and management of StakeWise directly from your DappNode interface. 22 | 23 | 6. **Active Community Engagement:** StakeWise boasts an active community, ensuring users get timely support and updates. 24 | 25 | --- 26 | 27 | ### **First Steps to Start Staking with StakeWise and Dappnode** 28 | 29 | 1. **Package Installation:** 30 | - Go to the DappNode Admin UI. 31 | - In the 'Packages' section, search for the StakeWise package. 32 | - Click 'Install'. Once installed, StakeWise should appear in your installed packages list. 33 | 34 | 2. **Setting up the Environment:** 35 | - Ensure you have connected your DappNode to the Ethereum network. 36 | - For best results, secure a stable and fast internet connection for your DappNode. 37 | 38 | 3. **Beginning the Staking Process:** 39 | - Navigate to the StakeWise dashboard in the DappNode UI. 40 | - Decide between solo staking or joining a staking pool. 41 | - Specify the amount of ETH you wish to stake. 42 | - Follow the on-screen instructions to initiate your staking. 43 | 44 | 4. **Funding your Staking:** 45 | - Transfer your chosen ETH amount to the provided staking address. Be sure to safely store and remember this address. 46 | 47 | 5. **Monitoring and Management:** 48 | - With staking active, use the StakeWise dashboard on DappNode to oversee performance, track rewards, and manage other staking aspects. 49 | 50 | --- 51 | 52 | Staking on Ethereum 2.0, though potentially profitable, isn't without risks. While StakeWise makes the process user-friendly, it's vital to understand all potential implications and prioritize your investments' security. 53 | 54 | For more in-depth insights and assistance, consider exploring StakeWise's official documentation and joining the discussions on DappNode's community forums. 55 | -------------------------------------------------------------------------------- /docs/user/staking/ethereum/solo/holesky.md: -------------------------------------------------------------------------------- 1 | # Holesky Testnet 2 | 3 | The **Holesky testnet** is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike. 4 | 5 | Dappnode paves an easy pathway for enthusiasts to operate a node on the Holesky testnet, ensuring practical experience without the risks associated with the mainnet. 6 | 7 | ## Navigating to Holesky in Dappnode 8 | 9 | You can locate the Holesky testnet under the [**Holesky** tab](http://my.dappnode/stakers/holesky) in the **Stakers Menu**. If you want to run Holesky testnet validators, you'll also need to select Web3Signer Holesky. 10 | 11 | ![Holesky - Stakers Menu](/img/holesky-stakers.png) 12 | 13 | ## Why Run a Holesky Testnet Node? 14 | 15 | 1. **Hands-on Experience**: Running a validator on the Holesky testnet offers invaluable practical knowledge. It mimics the mainnet processes, providing a comprehensive understanding of node operation. 16 | 2. **Risk-free Exploration**: As it's a testnet, you're not staking real ETH. This provides an opportunity for experimentation without the financial stakes of the main Ethereum network. 17 | 18 | :::tip 19 | If you're new to Ethereum or wish to familiarize yourself with node operation intricacies, starting with the Holesky testnet is highly recommended. It's the perfect platform for hands-on learning in a risk-free environment. 20 | ::: 21 | 22 | ## Holesky Faucet 23 | If you're interested in getting 32 HolETH for running a test validator, you can get it in the [Holesky PoW Faucet](https://holesky-faucet.pk910.de/). Make sure you understand how the faucet works before doing your request, as it will temporarily impact your computer's performance in the claiming process. 24 | -------------------------------------------------------------------------------- /docs/user/staking/overview.md: -------------------------------------------------------------------------------- 1 | # Earn with Staking in Dappnode 2 | 3 | ## Decentralize Proof-of-Stake chains and earn 4 | 5 | Dappnode makes it **extremely simple** to stake and validate Proof-of-Stake chains such as Ethereum, Gnosis Chain and LUKSO. **Not only do you contribute to the network's security, but you also earn handsome rewards.** 6 | 7 | Dappnode offers you the best UX, through our Stakers UI, with which you can run a validator node in a few simple steps and without ever needing command line or technical knowledge. 8 | 9 | ## The Stakers UI 10 | You can run all the infrastructure for [Ethereum](/docs/user/staking/ethereum/solo/mainnet), [Gnosis Chain](/docs/user/staking/gnosis-chain/solo) and [LUKSO](/docs/user/staking/lukso/solo) in 4 steps through the Stakers UI: 11 | 12 | ![](/img/stakersnumbers.png) 13 | 14 | Apart from installing the nodes, you will need to generate the keys for the validator and deposit (or "stake"!) your crypto. Please refer to each section for Ethereum, Gnosis Chain and LUKSO for step-by-step guides. 15 | 16 | ## Can I stake without 32 ETH? 17 | 18 | Yes! Thanks to LSDs AND DVT tech, you don't need 32 ETH to stake. Or you can stake in Gnosis Chain or LUKSO, which have more affordable cost for a solo validator. 19 | 20 | For more information on LSDs and DVT and how you can stake Ethereum without 32 ETH, please check their dedicated pages on the side menu under Ethereum > LSD Pools or Ethereum > DVT. 21 | 22 | ## What is Staking? 23 | Staking is the act of allocating a portion of your cryptocurrency holdings as collateral to participate in: 24 | 1. **Validating Blocks:** Confirming transaction records and adding them to the blockchain. 25 | 2. **Securing the Chain:** Ensuring the network remains resistant to malicious intentions. 26 | 3. **Earning Rewards:** As a validator, you get paid for your services in the form of more cryptocurrency. 27 | 28 | ## Why Stake with Dappnode? 29 | **Simplicity is our mantra!** We've streamlined the staking process, so all you need to do is: 30 | - Select your desired blockchain. 31 | - Dive into our comprehensive documentation for step-by-step guidance. 32 | - Begin your staking journey. 33 | 34 | **Happy Staking!** 35 | -------------------------------------------------------------------------------- /docs/user/videos-and-tutorials/crash-course.md: -------------------------------------------------------------------------------- 1 | # Crash Course 2 | 3 | :::info 4 | Want to learn more about Dappnode through video tutorials? Check out our **[Dappnode Driving School!](/docs/user/videos-and-tutorials/driving-school/initial-setup.md)** 5 | ::: 6 | 7 | Every now and then we get together in our Dappnode Discord Community to offer live workshops on how to achieve different features and tricks with your Dappnode. These sessions are uploaded to our YouTube channel, so you can watch them at your own pace. Here are a few past editions you might find interesting! 8 | 9 | ## 1. How to set up Dappnode from scratch using your own hardware 10 | 11 |
12 | 13 |
14 | 15 | ## 2. How to set up a validator 16 | 17 |
18 | 19 |
20 | 21 | ## 3. How to setup Stakehouse node operator 22 | 23 |
24 | 25 |
26 | 27 | ## 4. How to withdraw your staked ETH 28 | 29 |
30 | 31 |
32 | 33 | ## 5. How to subscribe your validator to Smooth 😎 34 | 35 |
36 | 37 |
38 | 39 | ## 6. How to earn rewards with your Dappnode without investing 40 | 41 |
42 | 43 |
44 | -------------------------------------------------------------------------------- /docs/user/videos-and-tutorials/driving-school/configuration.md: -------------------------------------------------------------------------------- 1 | # 2. Configuring your Dappnode 2 | 3 | :::info 4 | We recommend going through **[Initial Setup](/docs/user/videos-and-tutorials/driving-school/initial-setup.md)** of Dappnode Driving School before watching these videos, as these videos expect you to have a basic understanding of how your Dappnode works and how to access it. 5 | ::: 6 | 7 | Once you have your Dappnode up and running, you can start configuring it to suit your needs. Here are some videos to help you with that: 8 | 9 | # 🧬 2.1 Repositories 10 | 11 | Your Dappnode uses two technologies in order to stay decentralized and permissionless. In this video we'll go through Ethereum and IPFS and how do they work in Dappnode. 12 | 13 |
14 | 15 |
16 |
17 | 18 | # 🧮 2.2 Dappnode Monitoring Service (DMS) 19 | 20 | This video is about Dappnode Monitoring Service, a tool that will make it easy to monitor your Dappnode's health and activity. 21 | 22 |
23 | 24 | # 🌡 2.3 Ethical Metrics 25 | 26 | Ethical Metrics is Dappnode's private solution to notify you through Email and Telegram when there's unexpected behavior in your Dappnode. 27 | 28 |
29 | -------------------------------------------------------------------------------- /docs/user/videos-and-tutorials/driving-school/initial-setup.md: -------------------------------------------------------------------------------- 1 | # 1. Initial Dappnode Setup 2 | 3 | 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. 4 | 5 | ## 🖥️ 1.1 Booting from the Dappnode ISO 6 | 7 | The first step you will need to take when your hardware is ready for installing Dappnode. If you have experience installing Linux you'll know what this is about, but if you don't there's nothing to worry about, as most of the process is automated. 8 | 9 |
10 | 11 |
12 | 13 |
14 | 15 | ## 🌐 1.2 Accessing the Dappnode User Interface or Dashboard 16 | 17 | The most common way to interact with your dappnode is through a web browser in another computer. This means that Dappnode works as a server, and doesn't have a traditional graphic interface as regular personal computers do, so if you're sitting in front of a login prompt wondering what's next you're doing great so far! 18 | 19 |
20 | 21 |
22 | 23 |
24 | 25 | ## 🔒 1.3 Setting up Dappnode Security 26 | 27 | Now that you're inside your Dappnode we gotta make sure no unauthorized users have access! There are four kinds of security credentials in Dappnode and we'll go through each one of them in this video. 28 | 29 |
30 | 31 |
32 | 33 |
34 | 35 | ## 🔗 1.4 Configuring your Dappnode VPN 36 | 37 | The best way to remotely and safely access your Dappnode is through VPN. Discover the options that Dappnode has to offer for VPNs in this Dappnode Driving School lesson! 38 | 39 |
40 | 41 |
42 | 43 |
44 | 45 | ## 🔄 1.5 Syncing your clients/An overview on node running 46 | 47 | This is what you came here for! Let's start syncing your clients to get your nodes up and running. Whether you want them for better privacy while exploring web3 or because you're interested in validating, syncing your node is a must in your Dappnode journey. 48 | 49 |
50 | 51 |
52 | 53 |
54 | 55 | ## 💾 1.6 Understanding your Dappnode's Hardware 56 | 57 | Now that everything is working as expected, here's some information on what keeps Dappnode running the way it's meant to. This video is also great if you're looking into putting your own hardware together, since it goes through the minimum requirements to run Dappnode. 58 | 59 |
60 | 61 |
62 | 63 | -------------------------------------------------------------------------------- /docs/user/videos-and-tutorials/guides/connect-node.md: -------------------------------------------------------------------------------- 1 | # How to Connect to My Blockchain Node 2 | 3 | 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: 4 | 5 | ## Ethereum Mainnet Node 6 | 7 | If you've selected an Ethereum mainnet node in **Repository > Ethereum** or **Stakers > Ethereum**, here's how to connect: 8 | 9 | 1. The Execution client you have selected will expose its RPC at: 10 | 11 | ``` 12 | http://fullnode.dappnode:8545 13 | ``` 14 | 15 | 2. Do note that this domain is only accessible when you're connected to Dappnode either via WiFi or VPN. 16 | 17 | 3. If you intend to use the RPC externally (i.e., without needing to connect to Dappnode), you'll need to refer to our tutorial on How to expose an RPC externally. 18 | 19 | 20 | ## Other Nodes in Stakers tab 21 | 22 | For blockchain nodes other than Ethereum mainnet: 23 | 24 | 1. Identify the specific network for your node, e.g., `lukso`, `gnosis`, or `prater`. 25 | 26 | 2. The endpoint for these nodes will be: 27 | 28 | ``` 29 | http://.fullnode.dappnode:8545 30 | ``` 31 | 32 | Replace `` with your specific blockchain network name. 33 | 34 | 3. Ensure that the node is correctly set in **Stakers > ``**. 35 | 36 | ## Connecting to Metamask 37 | 38 | To connect your node to Metamask: 39 | 40 | 1. You will need to provide the Chain ID of the blockchain you're connecting to. 41 | 42 | 2. Chain IDs for various blockchains can be found at [Chainlist](https://chainlist.org/). 43 | 44 | 3. In Metamask, navigate to **Settings > Networks > Add Network**. Input the RPC URL (`http://.fullnode.dappnode:8545`) and the Chain ID from Chainlist. 45 | 46 | ## Important Reminders 47 | 48 | - Your node needs to be fully synced to function correctly. This ensures that the latest state of the blockchain and its transactions are available for your applications. 49 | 50 | - Always ensure the safety and privacy of your Dappnode by not unnecessarily exposing ports or services that might be targets for malicious actors. 51 | -------------------------------------------------------------------------------- /docs/user/videos-and-tutorials/overview.md: -------------------------------------------------------------------------------- 1 | # Videos and Tutorials 2 | 3 | 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. 4 | 5 | ## Tutorial docs 6 | 7 | In this section, you will find comprehensive written guides that provide step-by-step instructions on various topics related to Dappnode. These documents are a valuable resource for anyone looking to deepen their understanding and enhance their Dappnode experience. 8 | 9 | 🔗 [How to connect a wallet to my node](/user/videos-and-tutorials/guides/connect-node.md) 10 | 11 | ## Dappnode Driving School 12 | 13 | The Dappnode Driving School is a set of video tutorials that will help you understand the basics about setting up your Dappnode for the first time. These videos are made for newcommers and non-technical users, but if you have questions don't hesitate to drop by our [Dappnode Discord Community](https://discord.gg/dappnode), where the community will be happy to provide as much help as you need. 14 | 15 | ### I. Initial Dappnode Setup 16 | 17 | 🖥️ [Booting from the Dappnode ISO](https://youtu.be/lh5hADm1Iuk) 18 | 19 | 🌐 [Accessing the Dappnode User Interface (UI)/Dashboard](https://youtu.be/Z1uDv_J7wlg) 20 | 21 | 🔒 [Setting up Dappnode Security](https://youtu.be/TZUK39yiZ30) 22 | 23 | 🔗 [Configuring your Dappnode VPN](https://youtu.be/qB0sMaNpXpU) 24 | 25 | 🔄 [Syncing your clients/An overview on node running](https://youtu.be/zJowD3X-MUc) 26 | 27 | 💾 [Understanding your Dappnode's Hardware](https://youtu.be/1GW-GbGKs7o) 28 | 29 | ### II. Configuring your Dappnode 30 | 31 | 🛠️ Coming soon... 32 | 33 | ### III. Dappnode Troubleshooting 34 | 35 | 🔧 Coming soon... 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d-app-node-docs", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "clear": "docusaurus clear", 12 | "serve": "docusaurus serve", 13 | "write-translations": "docusaurus write-translations", 14 | "write-heading-ids": "docusaurus write-heading-ids", 15 | "typecheck": "tsc" 16 | }, 17 | "dependencies": { 18 | "@docusaurus/core": "^3.7.0", 19 | "@docusaurus/plugin-client-redirects": "^3.7.0", 20 | "@docusaurus/preset-classic": "^3.7.0", 21 | "@easyops-cn/docusaurus-search-local": "^0.44.2", 22 | "@mdx-js/react": "^3.0.0", 23 | "clsx": "^1.2.1", 24 | "prism-react-renderer": "^2.1.0", 25 | "react": "^18.2.0", 26 | "react-dom": "^18.2.0", 27 | "react-slick": "^0.30.2", 28 | "slick-carousel": "^1.8.1" 29 | }, 30 | "devDependencies": { 31 | "@docusaurus/module-type-aliases": "^3.7.0", 32 | "@docusaurus/tsconfig": "^3.7.0", 33 | "@docusaurus/types": "^3.7.0", 34 | "@types/react": "^18.2.29", 35 | "typescript": "~5.2.2" 36 | }, 37 | "browserslist": { 38 | "production": [ 39 | ">0.5%", 40 | "not dead", 41 | "not op_mini all" 42 | ], 43 | "development": [ 44 | "last 1 chrome version", 45 | "last 1 firefox version", 46 | "last 1 safari version" 47 | ] 48 | }, 49 | "engines": { 50 | "node": ">=18.0" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/components/HomepageFeatures/styles.module.css: -------------------------------------------------------------------------------- 1 | .features { 2 | display: flex; 3 | align-items: center; 4 | padding: 2rem 0; 5 | width: 100%; 6 | } 7 | 8 | .featureSvg { 9 | height: 200px; 10 | } 11 | -------------------------------------------------------------------------------- /src/pages/index.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * CSS files with the .module.css suffix will be treated as CSS modules 3 | * and scoped locally. 4 | */ 5 | 6 | .heroBanner { 7 | padding: 4rem 0; 8 | text-align: center; 9 | position: relative; 10 | overflow: hidden; 11 | } 12 | 13 | @media screen and (max-width: 996px) { 14 | .heroBanner { 15 | padding: 2rem; 16 | } 17 | } 18 | 19 | .buttons { 20 | display: flex; 21 | align-items: center; 22 | justify-content: center; 23 | } 24 | 25 | /** 26 | * Custom 27 | */ 28 | 29 | .carousel { 30 | display: flex; 31 | overflow-x: auto; 32 | gap: 25px; /* spacing between videos */ 33 | max-width: 89%; /* carousel width */ 34 | margin: auto; 35 | } 36 | 37 | .videoModal { 38 | position: fixed; 39 | top: 0; 40 | left: 0; 41 | right: 0; 42 | bottom: 0; 43 | display: flex; 44 | justify-content: center; 45 | align-items: center; 46 | background: rgba(0, 0, 0, 0.5); /* Semi-transparent black */ 47 | } 48 | 49 | .videoWrapper { 50 | position: relative; 51 | width: 80vw; /* Adjust to your preferred size */ 52 | height: 80vh; /* Adjust to your preferred size */ 53 | } 54 | 55 | .closeButton { 56 | position: absolute; 57 | top: 10px; 58 | right: 10px; 59 | background: none; 60 | border: none; 61 | font-size: 24px; 62 | cursor: pointer; 63 | } 64 | 65 | .videoThumbnail { 66 | pointer-events: none; 67 | } 68 | 69 | .videoOverlay { 70 | position: absolute; 71 | top: 0; 72 | left: 0; 73 | width: 100%; 74 | height: 100%; 75 | display: flex; 76 | align-items: center; 77 | justify-content: center; 78 | pointer-events: none; /* Add this line */ 79 | } 80 | 81 | .playButton { 82 | background: none; 83 | border: none; 84 | color: white; 85 | font-size: 50px; 86 | cursor: pointer; 87 | pointer-events: auto; /* Add this line */ 88 | } 89 | -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/.nojekyll -------------------------------------------------------------------------------- /static/CNAME: -------------------------------------------------------------------------------- 1 | https://docs.dappnode.io 2 | -------------------------------------------------------------------------------- /static/img/Dappnode_internal_IP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Dappnode_internal_IP.png -------------------------------------------------------------------------------- /static/img/Dappnode_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Dappnode_screen.png -------------------------------------------------------------------------------- /static/img/Dappnode_ssh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Dappnode_ssh.png -------------------------------------------------------------------------------- /static/img/Dappnode_wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Dappnode_wifi.png -------------------------------------------------------------------------------- /static/img/Download_Etcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Download_Etcher.png -------------------------------------------------------------------------------- /static/img/Loading_flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Loading_flash.png -------------------------------------------------------------------------------- /static/img/MEV_boost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/MEV_boost.png -------------------------------------------------------------------------------- /static/img/Open_Etcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Open_Etcher.png -------------------------------------------------------------------------------- /static/img/Step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step2.png -------------------------------------------------------------------------------- /static/img/Step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step3.png -------------------------------------------------------------------------------- /static/img/Step4_connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step4_connect.png -------------------------------------------------------------------------------- /static/img/Step5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step5.png -------------------------------------------------------------------------------- /static/img/Step6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step6.png -------------------------------------------------------------------------------- /static/img/Step7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step7.png -------------------------------------------------------------------------------- /static/img/Step8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/Step8.png -------------------------------------------------------------------------------- /static/img/authkey1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/authkey1.png -------------------------------------------------------------------------------- /static/img/authkey2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/authkey2.png -------------------------------------------------------------------------------- /static/img/authkey3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/authkey3.png -------------------------------------------------------------------------------- /static/img/authkey4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/authkey4.png -------------------------------------------------------------------------------- /static/img/browser_UI_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/browser_UI_login.png -------------------------------------------------------------------------------- /static/img/claimNODE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/claimNODE.png -------------------------------------------------------------------------------- /static/img/commands_welcome_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/commands_welcome_message.png -------------------------------------------------------------------------------- /static/img/connect-to-router.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/connect-to-router.png -------------------------------------------------------------------------------- /static/img/connect-two-dappnodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/connect-two-dappnodes.png -------------------------------------------------------------------------------- /static/img/customserver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/customserver.png -------------------------------------------------------------------------------- /static/img/dappnode-ssv1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode-ssv1.png -------------------------------------------------------------------------------- /static/img/dappnode-wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode-wifi.png -------------------------------------------------------------------------------- /static/img/dappnode_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_box.png -------------------------------------------------------------------------------- /static/img/dappnode_package_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_package_network.png -------------------------------------------------------------------------------- /static/img/dappnode_packages1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages1.png -------------------------------------------------------------------------------- /static/img/dappnode_packages2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages2.png -------------------------------------------------------------------------------- /static/img/dappnode_packages3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages3.png -------------------------------------------------------------------------------- /static/img/dappnode_packages4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages4.png -------------------------------------------------------------------------------- /static/img/dappnode_packages5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages5.png -------------------------------------------------------------------------------- /static/img/dappnode_packages6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dappnode_packages6.png -------------------------------------------------------------------------------- /static/img/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dashboard.png -------------------------------------------------------------------------------- /static/img/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/demo.gif -------------------------------------------------------------------------------- /static/img/diva-config1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/diva-config1.png -------------------------------------------------------------------------------- /static/img/diva-config2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/diva-config2.png -------------------------------------------------------------------------------- /static/img/dms-browse-dashboards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dms-browse-dashboards.png -------------------------------------------------------------------------------- /static/img/dms-dashboards-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dms-dashboards-page.png -------------------------------------------------------------------------------- /static/img/dms-docker-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/dms-docker-dashboard.png -------------------------------------------------------------------------------- /static/img/driving-school-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/driving-school-logo.png -------------------------------------------------------------------------------- /static/img/ethereum-exit-validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethereum-exit-validator.png -------------------------------------------------------------------------------- /static/img/ethereum-staking-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethereum-staking-screenshot.png -------------------------------------------------------------------------------- /static/img/ethical-metrics-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethical-metrics-dark.png -------------------------------------------------------------------------------- /static/img/ethical-metrics-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethical-metrics-logo.png -------------------------------------------------------------------------------- /static/img/ethical-metrics-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethical-metrics-setup.png -------------------------------------------------------------------------------- /static/img/ethical-metrics-welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethical-metrics-welcome.png -------------------------------------------------------------------------------- /static/img/ethical-metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/ethical-metrics.png -------------------------------------------------------------------------------- /static/img/getting-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/getting-started.png -------------------------------------------------------------------------------- /static/img/gnosis-deposit-ui-claim-deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-deposit-ui-claim-deposit.png -------------------------------------------------------------------------------- /static/img/gnosis-deposit-ui-connect-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-deposit-ui-connect-wallet.png -------------------------------------------------------------------------------- /static/img/gnosis-deposit-ui-deposit-executed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-deposit-ui-deposit-executed.png -------------------------------------------------------------------------------- /static/img/gnosis-deposit-ui-deposit-submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-deposit-ui-deposit-submitted.png -------------------------------------------------------------------------------- /static/img/gnosis-deposit-ui-upload-deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-deposit-ui-upload-deposit.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad1.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad2.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad3.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad4.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad5.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad6.png -------------------------------------------------------------------------------- /static/img/gnosis-launchpad7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-launchpad7.png -------------------------------------------------------------------------------- /static/img/gnosis-wagyu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-wagyu1.png -------------------------------------------------------------------------------- /static/img/gnosis-wagyu2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosis-wagyu2.png -------------------------------------------------------------------------------- /static/img/gnosischain-staking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosischain-staking.png -------------------------------------------------------------------------------- /static/img/gnosiswithdrawals1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosiswithdrawals1.png -------------------------------------------------------------------------------- /static/img/gnosiswithdrawals2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/gnosiswithdrawals2.png -------------------------------------------------------------------------------- /static/img/holesky-stakers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/holesky-stakers.png -------------------------------------------------------------------------------- /static/img/install_dappnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/install_dappnode.png -------------------------------------------------------------------------------- /static/img/launchpad1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/launchpad1.png -------------------------------------------------------------------------------- /static/img/launchpad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/launchpad2.png -------------------------------------------------------------------------------- /static/img/launchpad3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/launchpad3.png -------------------------------------------------------------------------------- /static/img/launchpad4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/launchpad4.png -------------------------------------------------------------------------------- /static/img/launchpad5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/launchpad5.png -------------------------------------------------------------------------------- /static/img/lido-csm-brain-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-brain-import.png -------------------------------------------------------------------------------- /static/img/lido-csm-config-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-config-tab.png -------------------------------------------------------------------------------- /static/img/lido-csm-ensure-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ensure-notifications.png -------------------------------------------------------------------------------- /static/img/lido-csm-exit-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-exit-failed.png -------------------------------------------------------------------------------- /static/img/lido-csm-exit-request-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-exit-request-warning.png -------------------------------------------------------------------------------- /static/img/lido-csm-exit-requested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-exit-requested.png -------------------------------------------------------------------------------- /static/img/lido-csm-exit-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-exit-success.png -------------------------------------------------------------------------------- /static/img/lido-csm-infra-healthcheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-infra-healthcheck.png -------------------------------------------------------------------------------- /static/img/lido-csm-keys-not-imported-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-keys-not-imported-warning.png -------------------------------------------------------------------------------- /static/img/lido-csm-log-in-already-NO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-log-in-already-NO.png -------------------------------------------------------------------------------- /static/img/lido-csm-notifications-modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-notifications-modal.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-cards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-cards.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-chart.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-notification-above.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-notification-above.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-notification-below.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-notification-below.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-range-selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-range-selector.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-tab.png -------------------------------------------------------------------------------- /static/img/lido-csm-performance-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-performance-table.png -------------------------------------------------------------------------------- /static/img/lido-csm-relay-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-relay-notification.png -------------------------------------------------------------------------------- /static/img/lido-csm-relays-warnings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-relays-warnings.png -------------------------------------------------------------------------------- /static/img/lido-csm-report-submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-report-submitted.png -------------------------------------------------------------------------------- /static/img/lido-csm-setup-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-setup-notifications.png -------------------------------------------------------------------------------- /static/img/lido-csm-ss-docs1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ss-docs1.png -------------------------------------------------------------------------------- /static/img/lido-csm-ss-docs2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ss-docs2.png -------------------------------------------------------------------------------- /static/img/lido-csm-ss-docs3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ss-docs3.png -------------------------------------------------------------------------------- /static/img/lido-csm-ss-docs4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ss-docs4.png -------------------------------------------------------------------------------- /static/img/lido-csm-ss-docs5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-ss-docs5.png -------------------------------------------------------------------------------- /static/img/lido-csm-stuck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-stuck.png -------------------------------------------------------------------------------- /static/img/lido-csm-telegram-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-telegram-update.png -------------------------------------------------------------------------------- /static/img/lido-csm-wallet-connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm-wallet-connected.png -------------------------------------------------------------------------------- /static/img/lido-csm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-csm.jpeg -------------------------------------------------------------------------------- /static/img/lido-infra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-infra.png -------------------------------------------------------------------------------- /static/img/lido-keystore-not-imported.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-keystore-not-imported.png -------------------------------------------------------------------------------- /static/img/lido-notification-ejector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-notification-ejector.png -------------------------------------------------------------------------------- /static/img/lido-notifications-onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lido-notifications-onboarding.png -------------------------------------------------------------------------------- /static/img/local-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/local-network.png -------------------------------------------------------------------------------- /static/img/local-proxy-switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/local-proxy-switch.png -------------------------------------------------------------------------------- /static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/logo.png -------------------------------------------------------------------------------- /static/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/img/lukso-launchpad1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-launchpad1.png -------------------------------------------------------------------------------- /static/img/lukso-launchpad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-launchpad2.png -------------------------------------------------------------------------------- /static/img/lukso-launchpad3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-launchpad3.png -------------------------------------------------------------------------------- /static/img/lukso-launchpad4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-launchpad4.png -------------------------------------------------------------------------------- /static/img/lukso-staking-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-staking-screenshot.png -------------------------------------------------------------------------------- /static/img/lukso-wagyu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-wagyu1.png -------------------------------------------------------------------------------- /static/img/lukso-wagyu2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-wagyu2.png -------------------------------------------------------------------------------- /static/img/lukso-web3signer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/lukso-web3signer.png -------------------------------------------------------------------------------- /static/img/machinelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/machinelist.png -------------------------------------------------------------------------------- /static/img/node_distribution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/node_distribution.png -------------------------------------------------------------------------------- /static/img/nodestream_vesting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/nodestream_vesting.png -------------------------------------------------------------------------------- /static/img/nodestream_vesting_xdai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/nodestream_vesting_xdai.png -------------------------------------------------------------------------------- /static/img/notifications-inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications-inbox.png -------------------------------------------------------------------------------- /static/img/notifications-settings-installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications-settings-installer.png -------------------------------------------------------------------------------- /static/img/notifications-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications-settings.png -------------------------------------------------------------------------------- /static/img/notifications_access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications_access.png -------------------------------------------------------------------------------- /static/img/notifications_inbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications_inbox.png -------------------------------------------------------------------------------- /static/img/notifications_legacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications_legacy.png -------------------------------------------------------------------------------- /static/img/notifications_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/notifications_settings.png -------------------------------------------------------------------------------- /static/img/obol-launchpad1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad1.png -------------------------------------------------------------------------------- /static/img/obol-launchpad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad2.png -------------------------------------------------------------------------------- /static/img/obol-launchpad3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad3.png -------------------------------------------------------------------------------- /static/img/obol-launchpad4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad4.png -------------------------------------------------------------------------------- /static/img/obol-launchpad5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad5.png -------------------------------------------------------------------------------- /static/img/obol-launchpad6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad6.png -------------------------------------------------------------------------------- /static/img/obol-launchpad7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/obol-launchpad7.png -------------------------------------------------------------------------------- /static/img/openvpn_android.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_android.jpg -------------------------------------------------------------------------------- /static/img/openvpn_iphone_import.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_iphone_import.jpg -------------------------------------------------------------------------------- /static/img/openvpn_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_mac.png -------------------------------------------------------------------------------- /static/img/openvpn_ubuntu_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_ubuntu_import.png -------------------------------------------------------------------------------- /static/img/openvpn_ubuntu_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_ubuntu_network.png -------------------------------------------------------------------------------- /static/img/openvpn_windows.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/openvpn_windows.jpg -------------------------------------------------------------------------------- /static/img/optimism-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/optimism-menu.png -------------------------------------------------------------------------------- /static/img/register-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/register-login.png -------------------------------------------------------------------------------- /static/img/register-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/register-token.png -------------------------------------------------------------------------------- /static/img/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/register.png -------------------------------------------------------------------------------- /static/img/registering_operator_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/registering_operator_0.png -------------------------------------------------------------------------------- /static/img/registering_operator_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/registering_operator_2.png -------------------------------------------------------------------------------- /static/img/registering_operator_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/registering_operator_4.png -------------------------------------------------------------------------------- /static/img/registering_operator_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/registering_operator_5.png -------------------------------------------------------------------------------- /static/img/registering_operator_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/registering_operator_7.png -------------------------------------------------------------------------------- /static/img/release-trusted-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/release-trusted-keys.png -------------------------------------------------------------------------------- /static/img/repository-eth-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/repository-eth-full.png -------------------------------------------------------------------------------- /static/img/repository-eth-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/repository-eth-remote.png -------------------------------------------------------------------------------- /static/img/repository-ipfs-local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/repository-ipfs-local.png -------------------------------------------------------------------------------- /static/img/repository-ipfs-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/repository-ipfs-remote.png -------------------------------------------------------------------------------- /static/img/rocketpool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/rocketpool.png -------------------------------------------------------------------------------- /static/img/rollups-module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/rollups-module.png -------------------------------------------------------------------------------- /static/img/setup-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-1.png -------------------------------------------------------------------------------- /static/img/setup-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-2.png -------------------------------------------------------------------------------- /static/img/setup-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-3.png -------------------------------------------------------------------------------- /static/img/setup-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-4.png -------------------------------------------------------------------------------- /static/img/setup-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-5.png -------------------------------------------------------------------------------- /static/img/setup-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/setup-6.png -------------------------------------------------------------------------------- /static/img/signed-safe-switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/signed-safe-switch.png -------------------------------------------------------------------------------- /static/img/smooth-connect-wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-connect-wallet.png -------------------------------------------------------------------------------- /static/img/smooth-fee-recipient-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-fee-recipient-error.png -------------------------------------------------------------------------------- /static/img/smooth-subscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-subscribe.png -------------------------------------------------------------------------------- /static/img/smooth-unsub-initial-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-unsub-initial-dialog.png -------------------------------------------------------------------------------- /static/img/smooth-unsub-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-unsub-table.png -------------------------------------------------------------------------------- /static/img/smooth-unsubscribe-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-unsubscribe-done.png -------------------------------------------------------------------------------- /static/img/smooth-web3signer-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth-web3signer-address.png -------------------------------------------------------------------------------- /static/img/smooth_correct_fee_recipient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_correct_fee_recipient.png -------------------------------------------------------------------------------- /static/img/smooth_fee_recipient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_fee_recipient.png -------------------------------------------------------------------------------- /static/img/smooth_incorrect_fee_recipient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_incorrect_fee_recipient.png -------------------------------------------------------------------------------- /static/img/smooth_make_deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_make_deposit.png -------------------------------------------------------------------------------- /static/img/smooth_mev_blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_mev_blocks.png -------------------------------------------------------------------------------- /static/img/smooth_my_validators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_my_validators.png -------------------------------------------------------------------------------- /static/img/smooth_no_relays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_no_relays.png -------------------------------------------------------------------------------- /static/img/smooth_states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_states.png -------------------------------------------------------------------------------- /static/img/smooth_subscribe_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_subscribe_success.png -------------------------------------------------------------------------------- /static/img/smooth_subscription_norelays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/smooth_subscription_norelays.png -------------------------------------------------------------------------------- /static/img/solo-staking-ethereum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/solo-staking-ethereum.png -------------------------------------------------------------------------------- /static/img/stakehouse-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/stakehouse-logo.png -------------------------------------------------------------------------------- /static/img/stakers-gnosis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/stakers-gnosis.png -------------------------------------------------------------------------------- /static/img/stakers-mainnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/stakers-mainnet.png -------------------------------------------------------------------------------- /static/img/stakersnumbers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/stakersnumbers.png -------------------------------------------------------------------------------- /static/img/stakerstab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/stakerstab.png -------------------------------------------------------------------------------- /static/img/subnetcheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/subnetcheck.png -------------------------------------------------------------------------------- /static/img/tailscale-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/tailscale-2.png -------------------------------------------------------------------------------- /static/img/tailscalewindows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/tailscalewindows.png -------------------------------------------------------------------------------- /static/img/telegram-channel-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/telegram-channel-id.png -------------------------------------------------------------------------------- /static/img/temp_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/temp_dashboard.png -------------------------------------------------------------------------------- /static/img/vpn-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/vpn-1.png -------------------------------------------------------------------------------- /static/img/wagyu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu1.png -------------------------------------------------------------------------------- /static/img/wagyu2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu2.png -------------------------------------------------------------------------------- /static/img/wagyu3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu3.png -------------------------------------------------------------------------------- /static/img/wagyu4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu4.png -------------------------------------------------------------------------------- /static/img/wagyu5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu5.png -------------------------------------------------------------------------------- /static/img/wagyu6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu6.png -------------------------------------------------------------------------------- /static/img/wagyu7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wagyu7.png -------------------------------------------------------------------------------- /static/img/wifi-sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wifi-sidebar.png -------------------------------------------------------------------------------- /static/img/wireguard_android.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_android.jpg -------------------------------------------------------------------------------- /static/img/wireguard_ios_tunnel.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_ios_tunnel.jpeg -------------------------------------------------------------------------------- /static/img/wireguard_macos_credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_macos_credentials.png -------------------------------------------------------------------------------- /static/img/wireguard_macos_tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_macos_tunnel.png -------------------------------------------------------------------------------- /static/img/wireguard_windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_windows.png -------------------------------------------------------------------------------- /static/img/wireguard_windows_activate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_windows_activate.png -------------------------------------------------------------------------------- /static/img/wireguard_windows_tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dappnode/DAppNodeDocs/61026e35c577816dc7fa9de251b1ec1431060eb1/static/img/wireguard_windows_tunnel.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // This file is not used in compilation. It is here just for a nice editor experience. 3 | "extends": "@tsconfig/docusaurus/tsconfig.json", 4 | "compilerOptions": { 5 | "baseUrl": "." 6 | } 7 | } 8 | --------------------------------------------------------------------------------