Skip to content

Commit

Permalink
Dappnode cloud documentation (#406)
Browse files Browse the repository at this point in the history
* Dappnode cloud docu

* Update overview.md

* some corrections

* removing comment

---------

Co-authored-by: Lanski <[email protected]>
  • Loading branch information
mateumiralles and Pol-Lanski committed Jul 8, 2024
1 parent db297fb commit 09d28e5
Show file tree
Hide file tree
Showing 6 changed files with 406 additions and 5 deletions.
56 changes: 56 additions & 0 deletions docs/user/dappnode-cloud/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# What is Dappnode Cloud?

Dappnode Cloud is a service that allows users to deploy a Dappnode in a cloud provider so it can be tested without the need for physical hardware. We provide easy pre-configured instances for the main cloud providers (AWS for now, more to come later) to continue to make the deployment of web3 infrastructrure accessible and hassle-free for everyone. It consists of a Dappnode image deployed on a machine instance from a cloud provider, eliminating the need to invest in hardware in order to test Dappnode.
:::tip
This allows you to run your decentralized applications more efficiently and cost-effectively, as you can customize your hardware specifications to meet your needs.
:::

## Why using Dappnode Cloud?

Dappnode Cloud offers numerous advantages over traditional hardware-based setups. By leveraging cloud infrastructure, you can bypass the complexities and limitations associated with physical hardware. Here are the key benefits that make Dappnode Cloud an attractive option:

### No Initial Hardware Investment 💰

With Dappnode Cloud, there is no need to purchase an entire new machine every time you need a new Dappnode. This significantly reduces the initial cost barrier, allowing you to test Dappnode before you decide to install it in a physical machine or to quickly deploy a new Dappnode without having to purchase a new machine.

### Stop when you want 🧑‍🔧️

For short stints, Dappnode Cloud allows you to deploy and also to stop running your Dappnode as soon as you have performed the tasks you wanted to do, with no electronic waste or an unallocated physical machine on your side.

### Scalability 📈

With Dappnode Cloud, you can easily scale your resources up or down based on your current needs. Whether you're experiencing a lack of storage or you need a few more nodes quickly, you can adjust your cloud resources accordingly without the constraints of physical hardware limitations.

## Physical or Cloud?

It is much better to run a physical Dappnode at your place for these 2 main reasons:

### 1. Economics 💲

A physical machine has a higher initial cost, but leverages your existing internet connection and consumes less energy than your fridge. This initial cost is pretty much the only cost you will have for the lifetime of the hardware you use.
Cloud servers have monthly costs associated with it that never go away, resulting in higher cost in the long term.

In summary, you will be better off with a physical machine if you plan to use your Dappnode for a long time, and better off with a Dappnode Cloud if you only want to use the instance for a short period of time.

### 2. Decentralization 🗽

The networks you will run on your Dapppnode become more resilient to corporate capture, government interference and localized events the more decentralized their nodes are. By running a Node in the cloud it is very likely that there is already a node of that network in the same data center, therefore adding no extra value to the decentralization of the network.
If instead you run the same node in a home setup from your home, you are adding a node that is much harder to censor, block, locate and subjugate than a node controlled by a big infrastructure corporation.

Remember, "The Cloud" is just someone else's computer.

## Use cases

Dappnode Cloud offers versatile solutions for various users, providing the flexibility and reliability needed to meet your goals. Here are some of the primary use cases:

### Blockchain participation & Solo Staking ⛓️

If obtaining hardware is not an option, Dappnode Cloud allows you to run a full node or even host your Ethereum or Gnosis validators without worrying about hardware requirements, internet connectivity, or power outages. This ensures continuous participation in the blockchain network with minimal hassle.

### Testing 🧪

For those considering purchasing their own Dappnode but still uncertain, Dappnode Cloud provides an excellent opportunity to run a temporary Dappnode. This allows you to demo the system without facing the initial cost barrier, helping you make an informed decision.

### Developing 🧑‍💻️

Dappnode Cloud is an excellent choice for developers who need a reliable and scalable environment to test and deploy dApps. Without the constraints of local hardware, developers can quickly iterate and deploy their applications, leveraging the power of cloud computing to simulate real-world conditions.
109 changes: 109 additions & 0 deletions docs/user/dappnode-cloud/providers/aws/faqs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# FAQs & Troubleshooting

<details>
<summary><strong>Which machine should I choose?</strong></summary>

All available machines on AWS when launching an instance are suitable for running Dappnode. However, the best choice depends on your specific needs and intentions. Here's a general guide to help you decide:

- **Basic Testing and Development:** For basic testing or development purposes, where you don't need high performance or large storage, a smaller instance with 2 vCPUs and 4 GB RAM should be sufficient. This setup allows you to explore Dappnode functionalities without significant resource investment.

- **Running a Node**: For running a full node in any network, a more powerful instance is required. We recommend an instance with at least 2 vCPUs and 8 GB RAM, but to handle the heavy computational, an instance with 4 vCPUs, 16 GB RAM would be the perfect option.

Evaluate your use case and choose an instance that aligns with your performance and scalability requirements.

</details>

<details>
<summary><strong>How much storage do I need?</strong></summary>

The storage requirements for your Dappnode instance depend largely on your intended use. Here are some guidelines for different scenarios:

- **Dappnode Testing:** For basic testing purposes, a minimum of 30 GB of disk space is recommended. This is sufficient for exploring the Dappnode environment and testing small applications without significant data storage needs.

- **Running a Node in Mainnet:** If you plan to run a full node in the Ethereum mainnet, you will need approximately 1.4 TB (1304 GiB)

- **Running a Node in Holesky:** For running a node in the Holesky testnet, you should allocate around 180 GB (168 GiB)
- **Running a Node in Lukso:** If your goal is to run a node in the Lukso network, you will need about 40 GB (38 GiB)
- **Running a Node in Gnosis:** To run a node in the Gnosis network, you should provision around 503 GB (469 GiB)

:::tip
Regardless of your initial choice, AWS EC2 allows you to scale your storage as needed after the instance is launched. You can easily adjust the storage size through the AWS EC2 UI to meet your growing needs.
:::

</details>

<details>
<summary><strong>Is it safe to have those security groups? Why are they needed?</strong></summary>

Setting the security groups as explained in the <a href='/docs/user/dappnode-cloud/providers/aws/set-up-instance#instance-configuration'>Launch an instance</a> section does not automatically open the specified ports. This configuration allows services from your Dappnode to open the specified ports when needed. It's crucial to understand that having these inbound rules does not mean those ports are constantly exposed.
<br />
<br />

**SSH (Port 22):**

- Purpose: Allows you to securely connect to your instance via SSH.
- Why Needed: Essential for remote management and troubleshooting of your instance.

**HTTP (Port 80):**

- Purpose: Enables HTTP traffic to your instance.
- Why Needed: Required for accessing web services and interfaces hosted on your Dappnode.

**HTTPS (Port 443):**

- Purpose: Enables HTTPS traffic, providing secure access to web services.
- Why Needed: Ensures secure connections to web interfaces and services, protecting data in transit.

**Wireguard (Port 51820):**

- Purpose: Facilitates Wireguard VPN connections.
- Why Needed: Necessary for establishing secure VPN connections to your Dappnode instance.

**General TCP (Ports 1024-65535):**

- Purpose: Allows various TCP services to communicate over a wide range of ports.
- Why Needed: Ensures that your Dappnode instance can communicate effectively with other nodes and services, enhancing overall performance.

**General UDP (Ports 1024-65535):**

- Purpose: Allows various UDP services to communicate over a wide range of ports.
- Why Needed: Similar to TCP, but for UDP traffic, this rule ensures that your Dappnode instance can efficiently handle peer-to-peer connections and other UDP-based communications.\

:::tip
We recommend including all the ports mentioned in your security group inbound rules. This ensures that your Dappnode instance can perform optimally and access all necessary services. However, if you are an experienced user, you can customize these rules to suit your specific needs. You can control which ports to expose based on your security preferences and operational requirements.
:::

</details>

<details>
<summary><strong>Why is it necessary to provide my Telegram user ID if I also provide my bot token?</strong></summary>

<p>If you want to run commands to your Dappnode via Telegram is it essential to provide your Telegram user ID. Even if you already provide the bot token, anyone with the bot's username could send messages (and running commands so) to your dappnode. This could lead on someone getting the wireguard credentials of your Dappnode and connecting to it.</p>
<p>That is why its mandatory to provide it, so your bot only listens to commands given by the account linked to your Telegram user ID.</p>
</details>

<details>
<summary><strong>Why do I want to connect via SSH to my Dappnode?</strong></summary>

Connecting via SSH to your Dappnode allows you to access your instance's terminal directly. Even if you have obtained your Wireguard credentials via Telegram, having SSH access is important for several reasons:

- **Full Control:** SSH access gives you complete control over your Dappnode instance, allowing you to perform advanced configurations and manage the system directly.

- **Troubleshooting:** In case of potential issues or errors, accessing the terminal via SSH enables you to diagnose and fix problems efficiently.
- **Advanced Management:** You can run commands, update software, monitor system performance, and manage services that may not be accessible through the standard Dappnode UI.

Having SSH access is crucial for maintaining and managing your Dappnode instance effectively, ensuring you can handle any technical challenges that arise.

</details>

<details>
<summary><strong>I've already launched my instance and I'm not getting my Wireguard credentials</strong></summary>

If you are not receiving your Wireguard credentials immediately after launching your instance, the Dappnode Image might still be installing. If this happens, wait a few minutes and try again.

- **Via SSH**: If you encounter this issue, exit your SSH session with the `exit` command in your instance terminal and reconnect as explained in the guide.
- **Via Telegram Bot**: Simply retry the `/get_wireguard_credentials` command after a short wait.

Additionally, ensure that your instance storage has not filled up during the installation. For a testing Dappnode (a Dappnode not intended to run a node in any network), we recommend at least 30 GB of storage.

</details>
33 changes: 33 additions & 0 deletions docs/user/dappnode-cloud/providers/aws/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# AWS

Amazon Web Services (AWS) is a cloud computing platform provided by Amazon. It offers a wide range of services, including computing power, storage options, and networking capabilities, enabling users to build and deploy applications and services efficiently.

## Dappnode AWS AMI

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.

:::info
An Amazon Machine Image (AMI) is a pre-configured template used to create a virtual machine within the AWS cloud.
:::

### Pricing

When using Dappnode Cloud on AWS, there are two main charges to consider:

#### Dappnode AMI 📀

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.

#### AWS Machines 🖥

In addition to the Dappnode AMI fee, you will incur charges for the AWS infrastructure itself. These costs vary based on several factors:

- **Instance Type:** The specifications of the machine you choose, such as CPU and memory will affect the pricing.

- **Storage:** The amount and type of storage you select for your instance, will also influence the cost.

- **Region:** AWS pricing varies by region, so the location where you launch your instance can impact the overall cost.

:::info
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.
:::
Loading

0 comments on commit 09d28e5

Please sign in to comment.