From 599acfde7cdf17266f4dd57981ed9bc46b3bec32 Mon Sep 17 00:00:00 2001 From: Mik-TF Date: Tue, 14 May 2024 17:42:30 -0400 Subject: [PATCH] manual, update new pr --- books/manual/SUMMARY.md | 3 +- .../cloud/grid_billing/grid_billing.md | 2 +- collections/dashboard/deploy/vm.md | 4 +- .../solutions/basic_environments_readme.md | 4 +- collections/dashboard/solutions/fullvm.md | 2 +- collections/dashboard/solutions/nextcloud.md | 2 +- collections/dashboard/solutions/solutions.md | 4 +- .../farmers/3node_building/gpu_farming.md | 2 +- .../set_additional_fees.md | 2 +- .../advanced/advanced.md | 3 +- .../advanced/ai_ml_workloads.md | 2 +- .../advanced/hummingbot.md | 80 ++++++++++++++++++ .../advanced/img/hummingbot.png | Bin 0 -> 28066 bytes .../getstarted/ssh_guide/ssh_wireguard.md | 6 +- collections/system_administrators/gpu/gpu.md | 4 +- .../system_administrators.md | 3 +- 16 files changed, 103 insertions(+), 20 deletions(-) create mode 100644 collections/system_administrators/advanced/hummingbot.md create mode 100644 collections/system_administrators/advanced/img/hummingbot.png diff --git a/books/manual/SUMMARY.md b/books/manual/SUMMARY.md index 84ebb03..b774903 100644 --- a/books/manual/SUMMARY.md +++ b/books/manual/SUMMARY.md @@ -11,7 +11,7 @@ - [Node Finder](dashboard/deploy/node_finder.md) - [Virtual Machines](dashboard/solutions/vm_intro.md) - [Micro and Full VM Differences ](dashboard/solutions/vm_differences.md) - - [Full Virtual Machine](dashboard/solutions/fullVm.md) + - [Full Virtual Machine](dashboard/solutions/fullvm.md) - [Micro Virtual Machine](dashboard/solutions/microvm.md) - [Nixos MicroVM](dashboard/solutions/nixos_micro.md) - [Add a Domain](dashboard/solutions/add_domain.md) @@ -254,6 +254,7 @@ - [IPFS on a Micro VM](system_administrators/advanced/ipfs/ipfs_microvm.md) - [MinIO Operator with Helm3](system_administrators/advanced/minio_helm3.md) - [AI & ML Workloads](system_administrators/advanced/ai_ml_workloads.md) + - [Hummingbot](system_administrators/advanced/hummingbot.md) - [ThreeFold Token](threefold_token/threefold_token.md) - [TFT Bridges](threefold_token/tft_bridges/tft_bridges.md) - [TFChain-Stellar Bridge](threefold_token/tft_bridges/tfchain_stellar_bridge.md) diff --git a/collections/cloud/grid_billing/grid_billing.md b/collections/cloud/grid_billing/grid_billing.md index f1d56bc..7b7c10e 100644 --- a/collections/cloud/grid_billing/grid_billing.md +++ b/collections/cloud/grid_billing/grid_billing.md @@ -247,7 +247,7 @@ Contract cost/hour = CU cost/hour + SU cost/hour ### Applying the Dedicated Node Discount -There's a default `50%` discount for renting a node, this discount is not related to the staking discount. For more information on dedicated node discounts, please [read this section](dedicated_machines.md). +There's a default `50%` discount for renting a node, this discount is not related to the staking discount. For more information on dedicated node discounts, please [read this section](dashboard@@node_finder). ``` Cost with 50% discount = 35.72532 * 0.5 diff --git a/collections/dashboard/deploy/vm.md b/collections/dashboard/deploy/vm.md index 4b0ee77..fdc0933 100644 --- a/collections/dashboard/deploy/vm.md +++ b/collections/dashboard/deploy/vm.md @@ -9,5 +9,5 @@ On the TFGrid, you can deploy both micro and full virtual machines.

Table of Contents

- [Micro and Full VM Differences ](vm_differences.md) -- [Full Virtual Machine](fullVm.md) -- [Micro Virtual Machine](vm.md) +- [Full Virtual Machine](fullvm.md) +- [Micro Virtual Machine](microvm.md) diff --git a/collections/dashboard/solutions/basic_environments_readme.md b/collections/dashboard/solutions/basic_environments_readme.md index 5bbd8c9..a98cae4 100644 --- a/collections/dashboard/solutions/basic_environments_readme.md +++ b/collections/dashboard/solutions/basic_environments_readme.md @@ -4,8 +4,8 @@ - [Virtual Machines](vm_intro.md) - [Micro and Full VM Differences ](vm_differences.md) - - [Full Virtual Machine](fullVm.md) - - [Micro Virtual Machine](vm.md) + - [Full Virtual Machine](fullvm.md) + - [Micro Virtual Machine](microvm.md) - [Kubernetes](k8s.md) - [NixOS MicroVM](nixos_micro.md) - [Add a Domain](add_domain.md) \ No newline at end of file diff --git a/collections/dashboard/solutions/fullvm.md b/collections/dashboard/solutions/fullvm.md index 1137273..56261a6 100644 --- a/collections/dashboard/solutions/fullvm.md +++ b/collections/dashboard/solutions/fullvm.md @@ -43,7 +43,7 @@ Deploy a new full virtual machine on the Threefold Grid - `Myceluim` to enable mycelium on the virtual machine - `Wireguard Access` to add a wireguard access to the Virtual Machine - `GPU` flag to add GPU to the Virtual machine - - To deploy a Full VM with GPU, you first need to [rent a dedicated node](dashboard@@dedicated_machines) + - To deploy a Full VM with GPU, you first need to [rent a dedicated node](node_finder.md#dedicated-nodes) - `Dedicated` flag to retrieve only dedicated nodes - `Certified` flag to retrieve only certified nodes - Choose the location of the node diff --git a/collections/dashboard/solutions/nextcloud.md b/collections/dashboard/solutions/nextcloud.md index 72f9cb1..d09b077 100644 --- a/collections/dashboard/solutions/nextcloud.md +++ b/collections/dashboard/solutions/nextcloud.md @@ -63,7 +63,7 @@ If you're not sure and just want the easiest, most affordable option, skip the p * **Recommended**: {cpu: 4, memory: 16gb, diskSize: 1000gb } * Or choose a **Custom** plan * If want to reserve a public IPv4 address, click on Network then select **Public IPv4** -* If you want a [dedicated](dedicated_machines.md) and/or a certified node, select the corresponding option +* If you want a [dedicated node](node_finder.md#dedicated-nodes) and/or a certified node, select the corresponding option * Choose the location of the node * `Country` * `Farm Name` diff --git a/collections/dashboard/solutions/solutions.md b/collections/dashboard/solutions/solutions.md index 1a10b1c..bc592b4 100644 --- a/collections/dashboard/solutions/solutions.md +++ b/collections/dashboard/solutions/solutions.md @@ -7,8 +7,8 @@ This section provides a non-code easy way to deploy a whole solution on the TFGr - [Basic Environments](basic_environments_readme.md) - [Virtual Machines](vm_intro.md) - [Micro and Full VM Differences](vm_differences.md) - - [Full Virtual Machine](fullVm.md) - - [Micro Virtual Machine](vm.md) + - [Full Virtual Machine](fullvm.md) + - [Micro Virtual Machine](microvm.md) - [Kubernetes](k8s.md) - [NixOS MicroVM](nixos_micro.md) - [Ready Community Solutions](ready_community_readme.md) diff --git a/collections/farmers/3node_building/gpu_farming.md b/collections/farmers/3node_building/gpu_farming.md index 35cbf8e..cbb0de0 100644 --- a/collections/farmers/3node_building/gpu_farming.md +++ b/collections/farmers/3node_building/gpu_farming.md @@ -65,7 +65,7 @@ You can use the [Node Finder](dashboard@@node_finder) on the [TF Dashboard](http ## Reserving the GPU Node -Now, users can reserve the node in the **Dedicated Nodes** section of the Dashboard and then deploy workloads using the GPU. For more information, read [this documentation](dedicated_machines.md). +Now, users can reserve the node using the **Node Finder** of the Dashboard and then deploy workloads using the GPU. For more information, read [this documentation](dashboard@@node_finder). ## Questions and Feedback diff --git a/collections/farmers/farming_optimization/set_additional_fees.md b/collections/farmers/farming_optimization/set_additional_fees.md index 5da2886..d647571 100644 --- a/collections/farmers/farming_optimization/set_additional_fees.md +++ b/collections/farmers/farming_optimization/set_additional_fees.md @@ -11,7 +11,7 @@ ## Introduction -Farmers can set additional fees for their 3Nodes on the [TF Dashboard](https://dashboard.grid.tf/). By doing so, users will then be able to [reserve the 3Node and use it as a dedicated node](dashboard@@dedicated_machines). +Farmers can set additional fees for their 3Nodes on the [TF Dashboard](https://dashboard.grid.tf/). By doing so, users will then be able to [reserve the 3Node and use it as a dedicated node](dashboard@@node_finder). This can be useful for farmers who provide additional values to their 3Nodes, e.g. a GPU card and/or high-quality hardware. ## Steps diff --git a/collections/system_administrators/advanced/advanced.md b/collections/system_administrators/advanced/advanced.md index f554c42..0edb6dd 100644 --- a/collections/system_administrators/advanced/advanced.md +++ b/collections/system_administrators/advanced/advanced.md @@ -13,4 +13,5 @@ In this section, we delve into sophisticated topics and powerful functionalities - [IPFS on a Full VM](ipfs_fullvm.md) - [IPFS on a Micro VM](ipfs_microvm.md) - [MinIO Operator with Helm3](minio_helm3.md) -- [AI & ML Workloads](ai_ml_workloads.md) \ No newline at end of file +- [AI & ML Workloads](ai_ml_workloads.md) +- [Hummingbot](hummingbot.md) \ No newline at end of file diff --git a/collections/system_administrators/advanced/ai_ml_workloads.md b/collections/system_administrators/advanced/ai_ml_workloads.md index bc5760e..5bd227c 100644 --- a/collections/system_administrators/advanced/ai_ml_workloads.md +++ b/collections/system_administrators/advanced/ai_ml_workloads.md @@ -23,7 +23,7 @@ In the second part, we show how to use PyTorch to run AI/ML tasks. ## Prerequisites -You need to reserve a [dedicated GPU node](../../dashboard/deploy/node_finder.md#dedicated-nodes) on the ThreeFold Grid. +You need to reserve a [dedicated GPU node](dashboard@@node_finder) on the ThreeFold Grid. ## Prepare the System diff --git a/collections/system_administrators/advanced/hummingbot.md b/collections/system_administrators/advanced/hummingbot.md new file mode 100644 index 0000000..1a154b7 --- /dev/null +++ b/collections/system_administrators/advanced/hummingbot.md @@ -0,0 +1,80 @@ +

Hummingbot on a Full VM

+ +

Table of Contents

+ +- [Introduction](#introduction) +- [Prerequisites](#prerequisites) +- [Deploy a Full VM](#deploy-a-full-vm) +- [Preparing the VM](#preparing-the-vm) +- [Setting Hummingbot](#setting-hummingbot) +- [References](#references) + +--- + +## Introduction + +Hummingbot is an open source platform that helps you design, backtest, and deploy fleets of automated crypto trading bots. + +In this guide, we go through the basic steps to deploy a [Hummingbot](https://hummingbot.org/) instance on a full VM running on the TFGrid. + + +## Prerequisites + +- [A TFChain account](../../../dashboard/wallet_connector.md) +- TFT in your TFChain account + - [Buy TFT](../../../threefold_token/buy_sell_tft/buy_sell_tft.md) + - [Send TFT to TFChain](../../../threefold_token/tft_bridges/tfchain_stellar_bridge.md) + +## Deploy a Full VM + +We start by deploying a full VM on the ThreeFold Dashboard. + +* On the [Threefold Dashboard](https://dashboard.grid.tf/#/), go to the [full virtual machine deployment page](https://dashboard.grid.tf/#/deploy/virtual-machines/full-virtual-machine/) +* Deploy a full VM (Ubuntu 22.04) with an IPv4 address and at least the minimum specs for Hummingbot + * IPv4 Address + * Minimum vcores: 1vcore + * Minimum MB of RAM: 4096GB + * Minimum storage: 15GB +* After deployment, note the VM IPv4 address +* Connect to the VM via SSH + * ``` + ssh root@VM_IPv4_address + ``` + +## Preparing the VM + +We prepare the full to run Hummingbot. + +* Update the VM + ``` + apt update + ``` +* [Install Docker](../computer_it_basics/docker_basics.html#install-docker-desktop-and-docker-engine) + +## Setting Hummingbot + +We clone the Hummingbot repo and start it via Docker. + +* Clone the Hummingbot repository + ``` + git clone https://github.com/hummingbot/hummingbot.git + cd hummingbot + ``` +* Start Hummingbot + ``` + docker compose up -d + ``` +* Attach to instance + ``` + docker attach hummingbot + ``` + +You should now see the Hummingbot page. + +![](./img/hummingbot.png) + +## References + +The information to install Hummingbot have been taken directly from their [documentation](https://hummingbot.org/installation/docker/). + +For any advanced configurations, you may refer to the Hummingbot documentation. \ No newline at end of file diff --git a/collections/system_administrators/advanced/img/hummingbot.png b/collections/system_administrators/advanced/img/hummingbot.png new file mode 100644 index 0000000000000000000000000000000000000000..ab81cfa379d02fc07f84dd583f157e6720021cfb GIT binary patch literal 28066 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 AumAu6 literal 0 HcmV?d00001 diff --git a/collections/system_administrators/getstarted/ssh_guide/ssh_wireguard.md b/collections/system_administrators/getstarted/ssh_guide/ssh_wireguard.md index 91cc986..a251f97 100644 --- a/collections/system_administrators/getstarted/ssh_guide/ssh_wireguard.md +++ b/collections/system_administrators/getstarted/ssh_guide/ssh_wireguard.md @@ -25,7 +25,7 @@ Note that WireGuard provides the connection to the 3Node deployment. It is up to # Prerequisites -Make sure to [read the introduction](../tfgrid3_getstarted.md#get-started---your-first-deployment) before going further. +Make sure to [read the introduction](tfgrid3_getstarted.md#get-started---your-first-deployment) before going further. * SSH client of your choice * [Open-SSH](ssh_openssh.md) @@ -36,7 +36,7 @@ Make sure to [read the introduction](../tfgrid3_getstarted.md#get-started---your # Deploy a Weblet with WireGuard Access -For this guide on WireGuard access, we deploy a [Full VM](fullVm.md). Note that the whole process is similar with other types of ThreeFold weblets on the Dashboard. +For this guide on WireGuard access, we deploy a [Full VM](dashboard@fullvm). Note that the whole process is similar with other types of ThreeFold weblets on the Dashboard. * On the [Threefold Dashboard](https://dashboard.grid.tf/), go to: Deploy -> Virtual Machines -> Full Virtual Machine * Choose the parameters you want @@ -102,7 +102,7 @@ To set the WireGuard connection on Windows, add and activate a tunnel with the W # Test the WireGuard Connection -As a test, you can [ping](../../computer_it_basics/cli_scripts_basics.md#test-the-network-connectivity-of-a-domain-or-an-ip-address-with-ping) the virtual IP address of the VM to make sure the WireGuard connection is properly established. Make sure to replace `VM_WireGuard_IP` with the proper WireGuard IP address: +As a test, you can [ping](cli_scripts_basics.md#test-the-network-connectivity-of-a-domain-or-an-ip-address-with-ping) the virtual IP address of the VM to make sure the WireGuard connection is properly established. Make sure to replace `VM_WireGuard_IP` with the proper WireGuard IP address: * Ping the deployment ``` diff --git a/collections/system_administrators/gpu/gpu.md b/collections/system_administrators/gpu/gpu.md index 581d26f..d930a98 100644 --- a/collections/system_administrators/gpu/gpu.md +++ b/collections/system_administrators/gpu/gpu.md @@ -25,7 +25,7 @@ To use a GPU on the TFGrid, users need to rent a dedicated node. Once they have ## Filter and Reserve a GPU Node -You can filter and reserve a GPU node using the [Dedicated Nodes section](dashboard@@dedicated_machines) of the **ThreeFold Dashboard**. +You can filter and reserve a GPU node using the [Dedicated Nodes section](dashboard@@node_finder) of the **ThreeFold Dashboard**. ### Filter Nodes @@ -52,7 +52,7 @@ When you have decided which node to reserve, click on **Reserve** under the colu ## Deploy a VM with GPU -Now that you've reserverd a dedicated GPU node, it's time to deploy a VM to make use of the GPU! There are many ways to proceed. You can use the [Dashboard](fullVm.md), [Go](developers@@grid3_go_gpu), [Terraform](terraform_gpu_support.md), etc. +Now that you've reserverd a dedicated GPU node, it's time to deploy a VM to make use of the GPU! There are many ways to proceed. You can use the [Dashboard](fullvm.md), [Go](developers@@grid3_go_gpu), [Terraform](terraform_gpu_support.md), etc. For example, deploying a VM with GPU on the Dashboard is easy. Simply set the GPU option and make sure to select your dedicated node, as show here: ![image](./img/gpu_3.png) diff --git a/collections/system_administrators/system_administrators.md b/collections/system_administrators/system_administrators.md index fe0d556..cea89ac 100644 --- a/collections/system_administrators/system_administrators.md +++ b/collections/system_administrators/system_administrators.md @@ -83,4 +83,5 @@ For complementary information on ThreeFold grid and its cloud component, refer t - [IPFS on a Full VM](ipfs_fullvm.md) - [IPFS on a Micro VM](ipfs_microvm.md) - [MinIO Operator with Helm3](minio_helm3.md) - - [AI & ML Workloads](ai_ml_workloads.md) \ No newline at end of file + - [AI & ML Workloads](ai_ml_workloads.md) + - [Hummingbot](hummingbot.md) \ No newline at end of file