This commit is contained in:
2024-02-23 06:07:41 +03:00
commit a83f4cd5e8
1963 changed files with 56869 additions and 0 deletions

384
tosort/SUMMARY.md Normal file
View File

@@ -0,0 +1,384 @@
## ThreeFold Manual Summary
- [Introduction](intro/intro_readme.md)
- [Manual](manual/manual.md)
- [General Information](general/general.md)
- [Dashboard](dashboard/dashboard.md)
- [ThreeFold Explorer](dashboard/explorer/explorer_home.md)
- [Find Capacity](dashboard/explorer/explorer_find_capacity.md)
- [A Glimpse Into GraphQL](dashboard/explorer/explorer_graphql_intro.md)
- [GPU Support](dashboard/explorer/explorer_gpu_support.md)
- [TFChain Portal](dashboard/portal/dashboard_portal_home.md)
- [Manage TFTs on TFChain](dashboard/portal/dashboard_portal_ui_tokens.md)
- [Activate Farmer Account and Nodes on TFChain](dashboard/portal/dashboard_portal_ui_farming.md)
- [Dedicated Nodes](dashboard/portal/dashboard_portal_dedicated_nodes.md)
- [DAO Voting](dashboard/dao_voting/dao_voting.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)
- [BSC-Stellar Bridge](./threefold_token/tft_bridges/bsc_stellar_bridge.md)
- [BSC-Stellar Bridge Verification](./threefold_token/tft_bridges/bsc_stellar_bridge_verification.md)
- [Ethereum-Stellar Bridge](./threefold_token/tft_bridges/tft_ethereum/tft_ethereum.md)
- [Storing TFT](./threefold_token/storing_tft/storing_tft.md)
- [ThreeFold Connect App (Stellar)](./threefold_token/storing_tft/tf_connect_app.md)
- [Lobstr Wallet (Stellar)](./threefold_token/storing_tft/lobstr_wallet.md)
- [MetaMask (BSC & ETH)](./threefold_token/storing_tft/metamask.md)
- [Hardware Wallet](./threefold_token/storing_tft/hardware_wallet.md)
- [Buy and Sell TFT](./threefold_token/buy_sell_tft/buy_sell_tft.md)
- [Quick Start (Stellar)](./threefold_token/buy_sell_tft/tft_lobstr/tft_lobstr_short_guide.md)
- [Lobstr Wallet (Stellar)](./threefold_token/buy_sell_tft/tft_lobstr/tft_lobstr_complete_guide.md)
- [MetaMask (BSC & ETH)](./threefold_token/buy_sell_tft/tft_metamask/tft_metamask.md)
- [Pancake Swap (BSC)](./threefold_token/buy_sell_tft/pancakeswap.md)
- [Liquidity Provider (LP)](./threefold_token/liquidity/liquidity_readme.md)
- [Pancake Swap LP](./threefold_token/liquidity/liquidity_pancake.md)
- [1inch.io LP](./threefold_token/liquidity/liquidity_1inch.md)
- [Albedo LP](./threefold_token/liquidity/liquidity_albedo.md)
- [Transaction Fees](threefold_token/transaction_fees.md)
- [FAQ](faq/faq.md)
- [Farmers](farmers/farmers.md)
- [Build a 3Node](farmers/3node_building/3node_building.md)
- [1. Create a Farm](farmers/3node_building/1_create_farm.md)
- [2. Create a Zero-OS Bootstrap Image](farmers/3node_building/2_bootstrap_image.md)
- [3. Set the Hardware](farmers/3node_building/3_set_hardware.md)
- [4. Wipe All the Disks](farmers/3node_building/4_wipe_all_disks.md)
- [5. Set the BIOS/UEFI](farmers/3node_building/5_set_bios_uefi.md)
- [6. Boot the 3Node](farmers/3node_building/6_boot_3node.md)
- [Complete DIY 3Node Guides](farmers/complete_diy_guides/complete_diy_guides_readme.md)
- [3Node Desktop DIY Guide](farmers/complete_diy_guides/3node_diy_desktop/3node_diy_desktop.md)
- [3Node Rack Server DIY Guide](farmers/complete_diy_guides/3node_diy_rack_server/3node_diy_rack_server.md)
- [Farming Optimization](farmers/farming_optimization/farming_optimization.md)
- [GPU Farming](farmers/3node_building/gpu_farming.md)
- [Set Additional Fees](farmers/farming_optimization/set_additional_fees.md)
- [Minting Receipts](farmers/3node_building/minting_receipts.md)
- [Minting Periods](farmers/farming_optimization/minting_periods.md)
- [Room Parameters](farmers/farming_optimization/farm_room_parameters.md)
- [Farming Costs](farmers/farming_optimization/farming_costs.md)
- [Calculate Your ROI](farmers/farming_optimization/calculate_roi.md)
- [Advanced Networking](farmers/advanced_networking/advanced_networking_toc.md)
- [Networking Overview](farmers/advanced_networking/networking_overview.md)
- [Network Considerations](farmers/advanced_networking/network_considerations.md)
- [Network Setup](farmers/advanced_networking/network_setup.md)
- [Farmerbot](farmers/farmerbot/farmerbot_intro.md)
- [Quick Guide](farmers/farmerbot/farmerbot_quick.md)
- [Additional Information](farmers/farmerbot/farmerbot_information.md)
- [Minting and the Farmerbot](farmers/farmerbot/farmerbot_minting.md)
- [Developers](developers/developers.md)
- [Javascript Client](javascript/grid3_javascript_readme.md)
- [Installation](javascript/grid3_javascript_installation.md)
- [Loading Client](javascript/grid3_javascript_loadclient.md)
- [Deploy a VM](javascript/grid3_javascript_vm.md)
- [Capacity Planning](javascript/grid3_javascript_capacity_planning.md)
- [Deploy Multiple VMs](javascript/grid3_javascript_vms.md)
- [Deploy CapRover](javascript/grid3_javascript_caprover.md)
- [Gateways](javascript/grid3_javascript_vm_gateways.md)
- [Deploy a Kubernetes Cluster](javascript/grid3_javascript_kubernetes.md)
- [Deploy a ZDB](javascript/grid3_javascript_zdb.md)
- [Deploy ZDBs for QSFS](javascript/grid3_javascript_qsfs_zdbs.md)
- [QSFS](javascript/grid3_javascript_qsfs.md)
- [Key Value Store](javascript/grid3_javascript_kvstore.md)
- [VM with Wireguard and Gateway](javascript/grid3_wireguard_gateway.md)
- [GPU Support](javascript/grid3_javascript_gpu_support.md)
- [Go Client](go/grid3_go_readme.md)
- [Installation](go/grid3_go_installation.md)
- [Loading Client](go/grid3_go_load_client.md)
- [Deploy a VM](go/grid3_go_vm.md)
- [Deploy Multiple VMs](go/grid3_go_vms.md)
- [Deploy Gateways](go/grid3_go_gateways.md)
- [Deploy Kubernetes](go/grid3_go_kubernetes.md)
- [Deploy a QSFS](go/grid3_go_qsfs.md)
- [GPU and Go](go/grid3_go_gpu.md)
- [GPU Support](go/grid3_go_gpu_support.md)
- [Deploy a VM with GPU](go/grid3_go_vm_with_gpu.md)
- [TFCMD](tfcmd/tfcmd.md)
- [Getting Started](tfcmd/tfcmd_basics.md)
- [Deploy a VM](tfcmd/tfcmd_vm.md)
- [Deploy Kubernetes](tfcmd/tfcmd_kubernetes.md)
- [Deploy ZDB](tfcmd/tfcmd_zdbs.md)
- [Gateway FQDN](tfcmd/tfcmd_gateway_fqdn.md)
- [Gateway Name](tfcmd/tfcmd_gateway_name.md)
- [Contracts](tfcmd/tfcmd_contracts.md)
- [ThreeFold Chain](tfchain/tfchain.md)
- [Introduction](tfchain/introduction.md)
- [Farming Policies](tfchain/farming_policies.md)
- [External Service Contract](tfchain/tfchain_external_service_contract.md)
- [Solution Provider](tfchain/tfchain_solution_provider.md)
- [Grid Proxy](proxy/proxy_readme.md)
- [Introducing Grid Proxy](proxy/proxy.md)
- [Setup](proxy/setup.md)
- [DB Testing](proxy/db_testing.md)
- [Commands](proxy/commands.md)
- [Contributions](proxy/contributions.md)
- [Explorer](proxy/explorer.md)
- [Database](proxy/database.md)
- [Production](proxy/production.md)
- [Release](proxy/release.md)
- [Flist](flist/flist.md)
- [Zero-OS Hub](flist/flist_hub/zos_hub.md)
- [Generate an API Token](flist/flist_hub/api_token.md)
- [Convert Docker Image Into Flist](flist/flist_hub/convert_docker_image.md)
- [Supported Flists](manual3_iac/grid3_supported_flists.md)
- [Flist Case Studies](flist/flist_case_studies/flist_case_studies.md)
- [Case Study: Debian 12](flist/flist_case_studies/flist_debian_case_study.md)
- [Case Study: Nextcloud AIO](flist/flist_case_studies/flist_nextcloud_case_study.md)
- [Internals](internals/internals.md)
- [Reliable Message Bus (RMB)](internals/rmb/rmb_toc.md)
- [Introduction to RMB](internals/rmb/rmb_intro.md)
- [RMB Specs](internals/rmb/rmb_specs.md)
- [RMB Peer](internals/rmb/uml/peer.md)
- [RMB Relay](internals/rmb/uml/relay.md)
- [Zero-OS](internals/zos/readme.md)
- [Manual](internals/zos/manual/manual.md)
- [Workload Types](internals/zos/manual/workload_types.md)
- [`network`](internals/zos/manual/network/readme.md)
- [`ip`](internals/zos/manual/ip/readme.md)
- [`zmount`](internals/zos/manual/zmount/readme.md)
- [`zmachine`](internals/zos/manual/zmachine/readme.md)
- [`zlogs`](internals/zos/manual/zlogs/readme.md)
- [`zdb`](internals/zos/manual/zdb/readme.md)
- [`qsfs`](internals/zos/manual/qsfs/readme.md)
- [`gateway-name-proxy`](internals/zos/manual/gateway/name-proxy.md)
- [`gateway-fqdn-proxy`](internals/zos/manual/gateway/fqdn-proxy.md)
- [Internal Modules](internals/zos/internals/internals.md)
- [Identity](internals/zos/internals/identity/readme.md)
- [Node ID Generation](internals/zos/internals/identity/identity.md)
- [Node Upgrade](internals/zos/internals/identity/upgrade.md)
- [Node](internals/zos/internals/node/readme.md)
- [Storage](internals/zos/internals/storage/readme.md)
- [Network](internals/zos/internals/network/readme.md)
- [Introduction](internals/zos/internals/network/introduction.md)
- [Definitions](internals/zos/internals/network/definitions.md)
- [Mesh](internals/zos/internals/network/mesh.md)
- [Setup](internals/zos/internals/network/setup_farm_network.md)
- [Flist](internals/zos/internals/flist/readme.md)
- [Container](internals/zos/internals/container/readme.md)
- [VM](internals/zos/internals/vmd/readme.md)
- [Provision](internals/zos/internals/provision/readme.md)
- [Capacity](internals/zos/internals/capacity.md)
- [Performance Monitor Package](internals/zos/performance/performance.md)
- [Public IPs Validation Task](internals/zos/performance/publicips.md)
- [CPUBenchmark](internals/zos/performance/cpubench.md)
- [IPerf](internals/zos/performance/iperf.md)
- [Health Check](internals/zos/performance/healthcheck.md)
- [API](internals/zos/manual/api.md)
- [FAQ](internals/zos/faq/readme.md)
- [Playground](developers/playground/playground.md)
- [Deploy the Playground](developers/playground/deploy_playground.md)
- [Weblet Case Study: Nextcloud AIO](developers/playground/weblet_case_study_nextcloud.md)
- [Grid Deployment](grid_deployment/grid_deployment.md)
- [TFGrid Stacks](grid_deployment/tfgrid_stacks.md)
- [Full VM Grid Deployment](grid_deployment/grid_deployment_full_vm.md)
- [Guardians of the Grid](grid_deployment/tfgrid_guardians.md)
<!--- [Grid Snapshots](grid_deployment/snapshots.md)-->
- [System Administrators](system_administrators/system_administrators.md)
- [Getting Started](getstarted/tfgrid3_getstarted.md)
- [ThreeFold Connect](getstarted/TF_Connect/TF_Connect.md)
- [ThreeFold Dashboard](getstarted/TF_Dashboard/TF_Dashboard.md)
- [ThreeFold Nodes Explorer](dashboard/explorer/explorer_find_capacity.md)
- [Tutorial: Deploy Your First VM](weblets/weblets_vm.md)
- [SSH Remote Connection](getstarted/ssh_guide/ssh_guide.md)
- [SSH with OpenSSH](getstarted/ssh_guide/ssh_openssh.md)
- [SSH with PuTTY](getstarted/ssh_guide/ssh_putty.md)
- [SSH with WSL](getstarted/ssh_guide/ssh_wsl.md)
- [WireGuard Access](getstarted/ssh_guide/ssh_wireguard.md)
- [Remote Desktop and GUI](getstarted/remote-desktop_gui/remote-desktop_gui.md)
- [Cockpit: a Web-based Interface for Servers](getstarted/remote-desktop_gui/cockpit_guide/cockpit_guide.md)
- [XRDP: an Open-Source Remote Desktop Protocol](getstarted/remote-desktop_gui/xrdp_guide/xrdp_guide.md)
- [Apache Guacamole: a Clientless Remote Desktop Gateway](getstarted/remote-desktop_gui/guacamole_guide/guacamole_guide.md)
- [Planetary Network](getstarted/planetarynetwork.md)
- [TFGrid Services](TF_Grid_Services/tf_grid_services_readme.md)
- [GPU](gpu/gpu_toc.md)
- [GPU Support](gpu/gpu.md)
- [Terraform](terraform/terraform_toc.md)
- [Overview](terraform/terraform_readme.md)
- [Installing Terraform](terraform/terraform_install.md)
- [Terraform Basics](terraform/terraform_basics.md)
- [Full VM Deployment](terraform/terraform_full_vm.md)
- [GPU Support](terraform/terraform_gpu_support.md)
- [Resources](terraform/resources/terraform_resources_readme.md)
- [Using Scheduler](terraform/resources/terraform_scheduler.md)
- [Virtual Machine](terraform/resources/terraform_vm.md)
- [Web Gateway](terraform/resources/terraform_vm_gateway.md)
- [Kubernetes Cluster](terraform/resources/terraform_k8s.md)
- [Demo](terraform/resources/terraform_k8s_demo.md)
- [ZDB](terraform/resources/terraform_zdb.md)
- [Quantum Safe Filesystem](terraform/resources/terraform_qsfs.md)
- [QSFS on Micro VM](terraform/resources/terraform_qsfs_on_microvm.md)
- [QSFS on Full VM](terraform/resources/terraform_qsfs_on_full_vm.md)
- [CapRover](terraform/resources/terraform_caprover.md)
- [Advanced](terraform/advanced/terraform_advanced_readme.md)
- [Terraform Provider](terraform/advanced/terraform_provider.md)
- [Terraform Provisioners](terraform/advanced/terraform_provisioners.md)
- [Mounts](terraform/advanced/terraform_mounts.md)
- [Capacity Planning](terraform/advanced/terraform_capacity_planning.md)
- [Updates](terraform/advanced/terraform_updates.md)
- [SSH Connection with Wireguard](terraform/advanced/terraform_wireguard_ssh.md)
- [Set a Wireguard VPN](terraform/advanced/terraform_wireguard_vpn.md)
- [Synced MariaDB Databases](terraform/advanced/terraform_mariadb_synced_databases.md)
- [Nomad](terraform/advanced/terraform_nomad.md)
- [Nextcloud Deployments](terraform/advanced/terraform_nextcloud_toc.md)
- [Nextcloud All-in-One Deployment](terraform/advanced/terraform_nextcloud_aio.md)
- [Nextcloud Single Deployment](terraform/advanced/terraform_nextcloud_single.md)
- [Nextcloud Redundant Deployment](terraform/advanced/terraform_nextcloud_redundant.md)
- [Nextcloud 2-Node VPN Deployment](terraform/advanced/terraform_nextcloud_vpn.md)
- [Pulumi](pulumi/pulumi_readme.md)
- [Introduction to Pulumi](pulumi/pulumi_intro.md)
- [Installing Pulumi](pulumi/pulumi_install.md)
- [Deployment Examples](pulumi/pulumi_examples.md)
- [Deployment Details](pulumi/pulumi_deployment_details.md)
- [Computer and IT Basics](computer_it_basics/computer_it_basics.md)
- [CLI and Scripts Basics](computer_it_basics/cli_scripts_basics.md)
- [Docker Basics](computer_it_basics/docker_basics.md)
- [Git and GitHub Basics](computer_it_basics/git_github_basics.md)
- [Firewall Basics](computer_it_basics/firewall_basics/firewall_basics.md)
- [UFW Basics](computer_it_basics/firewall_basics/ufw_basics.md)
- [Firewalld Basics](computer_it_basics/firewall_basics/firewalld_basics.md)
- [File Transfer](computer_it_basics/file_transfer.md)
- [Advanced](advanced/advanced.md)
- [Grid3 Stellar-TFChain Bridge](advanced/grid3_stellar_tfchain_bridge.md)
- [Token Transfer Keygenerator](advanced/token_transfer_keygenerator.md)
- [Cancel Contracts](advanced/cancel_contracts.md)
- [Contract Bills Reports](advanced/contract_bill_report.md)
- [Listing Free Public IPs](advanced/list_public_ips.md)
- [Redis](advanced/grid3_redis.md)
- [IPFS](advanced/ipfs/ipfs_toc.md)
- [IPFS on a Full VM](advanced/ipfs/ipfs_fullvm.md)
- [IPFS on a Micro VM](advanced/ipfs/ipfs_microvm.md)
- [Playground](playground/home.md)
- [Wallet Connector](playground/wallet_connector.md)
- [Contracts List](playground/contracts_list.md)
- [Basic Environments](playground/basic_environments_readme.md)
- [Virtual Machines](playground/vm_intro.md)
- [Micro and Full VM Differences ](playground/vm_differences.md)
- [Full Virtual Machine](playground/fullVm.md)
- [Micro Virtual Machine](playground/vm.md)
- [Kubernetes](playground/k8s.md)
- [Nixos MicroVM](playground/nixos_micro.md)
- [Add a Domain](playground/add_domain.md)
- [Ready Community Solutions](playground/ready_community_readme.md)
- [Algorand](playground/algorand.md)
- [CapRover](playground/caprover.md)
- [CapRover Admin](./playground/caprover_admin.md)
- [CapRover Worker](./playground/caprover_worker.md)
- [CasperLabs](playground/casper.md)
- [Discourse](playground/discourse.md)
- [Funkwhale](playground/funkwhale.md)
- [Mattermost](playground/mattermost.md)
- [Nextcloud](playground/nextcloud.md)
- [Node Pilot](playground/nodepilot.md)
- [ownCloud](playground/owncloud.md)
- [Peertube](playground/peertube.md)
- [Presearch](playground/presearch.md)
- [Subsquid](playground/subsquid.md)
- [Taiga](playground/taiga.md)
- [Umbrel](playground/umbrel.md)
- [WordPress](playground/wordpress.md)
- [Library](library/library.md)
- [How It Works](intro/grid3_howitworks.md)
- [Technology](technology/technology_toc.md)
- [Quantum Safe Storage](technology/qsss/qsss_home.md)
- [Smart Contract IT](technology/smartcontract_it/smartcontract_toc.md)
- [Introduction](technology/smartcontract_it/smartcontract_tfgrid3.md)
- [Infrastructure As Code (IAC)](technology/smartcontract_it/smartcontract_iac.md)
- [3Bot Integration](technology/smartcontract_it/smartcontract_3bot.md)
- [Primitives](technology/primitives/primitives_toc.md)
- [Compute](technology/primitives/compute/compute_toc.md)
- [ZKube](technology/primitives/compute/zkube.md)
- [ZMachine](technology/primitives/compute/zmachine.md)
- [CoreX](technology/primitives/compute/corex.md)
- [Storage](technology/primitives/storage/storage_toc.md)
- [ZOS Filesystem](technology/primitives/storage/zos_fs.md)
- [ZOS Mount](technology/primitives/storage/zmount.md)
- [Quantum Safe File System](technology/primitives/storage/qsfs.md)
- [Zero-DB](technology/primitives/storage/zdb.md)
- [Zero-Disk](technology/primitives/storage/zdisk.md)
- [Network](technology/primitives/network/network_toc.md)
- [ZNET](technology/primitives/network/znet.md)
- [ZNIC](technology/primitives/network/znic.md)
- [WebGateway](technology/primitives/network/webgw3.md)
- [Zero-OS Advantages](technology/zos/benefits/zos_advantages_toc.md)
- [Zero-OS Installation](technology/zos/benefits/zero_install.md)
- [Unbreakable Storage](technology/zos/benefits/unbreakable_storage.md)
- [Zero Hacking Surface](technology/zos/benefits/zero_hacking_surface.md)
- [Booting Process](technology/zos/benefits/zero_boot.md)
- [Deterministic Deployment](technology/zos/benefits/deterministic_deployment.md)
- [Zero-OS Protect](technology/zos/benefits/zos_protect.md)
- [Cloud](wiki/cloudunits/cloudunits_toc.md)
- [Cloud Units](wiki/cloudunits/cloudunits.md)
- [Pricing](wiki/cloudunits/pricing/pricing_toc.md)
- [Pricing Overview](wiki/cloudunits/pricing/pricing.md)
- [Staking Discounts](wiki/cloudunits/pricing/staking_discount_levels.md)
- [Cloud Pricing Compare](wiki/cloudunits/pricing/cloud_pricing_compare.md)
- [Resource Units](wiki/cloudunits/resource_units_calc_cloudunits.md)
- [Resource Units Advanced](wiki/cloudunits/resourceunits_advanced.md)
- [Grid Concepts](concepts/concepts_readme.md)
- [TFGrid Primitives](concepts/grid_primitives.md)
- [TFGrid Component List](concepts/grid3_components.md)
- [Infrastructure as Code](concepts/grid3_iac.md)
- [Proof of Utilization](concepts/proof_of_utilization.md)
- [Contract Grace Period](concepts/contract_grace_period.md)
- [What's New on TFGrid v3.x](concepts/grid3_whatsnew.md)
- [TFChain](concepts/tfchain.md)
- [TFGrid by Design](concepts/tfgrid_by_design.md)
- [Token Overview](./threefold_token/token_overview/token_overview.md)
- [Special Wallets](./threefold_token/token_overview/special_wallets/stats_special_wallets.md)
- [Farming Details](wiki/tfgrid/farming/farming_toc.md)
- [Farming Rewards](wiki/tfgrid/farming/farming_reward.md)
- [Proof-of-Utilization](wiki/tfgrid/farming/proof_of_utilization.md)
- [Proof-of-Capacity](wiki/tfgrid/farming/proof_of_capacity.md)
- [PoC DAO Rules](wiki/tfgrid/farming/poc_dao_rules.md)
- [Farming Reward v2](wiki/tfgrid/farming/farming_reward2.md)
- [Farming Upgrade](wiki/tfgrid/farming/farming_upgrade_2_3.md)
- [Wiki](wiki/terms_conditions_all3.md)
- [ThreeFold History](wiki/threefold_history.md)
- [Token History](wiki/token_history.md)
- [Genesis Pool](wiki/genesis_pool.md)
- [Genesis Pool Dubai](wiki/genesis_pool_dubai.md)
- [Genesis Pool Ghent](wiki/genesis_pool_ghent.md)
- [Genesis Pool Block Details](wiki/genesis_block_pool_details.md)
- [Disclaimer](wiki/disclaimer.md)
- [Definitions](wiki/definitions_legal.md)
- [Privacy Policy](wiki/privacypolicy.md)
- [Terms & Conditions ThreeFold Related Websites](wiki/terms_conditions_websites.md)
- [Terms & Conditions TFGrid Users TFGrid 3](wiki/terms_conditions_griduser.md)
- [TFTA to TFT](wiki/tfta_to_tft.md)
- [Terms & Conditions TFGrid Farmers TFGrid 3](wiki/terms_conditions_farmer3.md)
- [ThreeFold Tech](wiki/threefold_tech.md)
- [Terms & Conditions Sales](wiki/terms_conditions_sales.md)
- [Organisation Structure](wiki/orgstructure.md)
- [ThreeFold Companies](wiki/threefold_companies.md)
- [ThreeFold Dubai](wiki/threefold_dubai.md)
- [ThreeFold VZW](wiki/threefold_vzw.md)
- [ThreeFold AG](wiki/threefold_ag.md)
- [Mazraa](wiki/mazraa.md)
- [BetterToken](wiki/bettertoken.md)
- [DAO](wiki/dao/dao.md)
- [ThreeFold DAO](wiki/dao/tfdao.md)
- [TFChain](wiki/tfchain.md)
- [ThreeFold Roadmap](roadmap/roadmap_readme.md)
- [Release Notes](roadmap/releasenotes/releasenotes_readme.md)
- [TFGrid v3.10.0](roadmap/releasenotes/tfgrid_release_3_10_0.md)
- [TFGrid v3.9.0](roadmap/releasenotes/tfgrid_release_3_9_0.md)
- [TFGrid v3.8.0](roadmap/releasenotes/tfgrid_release_3_8_0.md)
- [TFGrid v3.7.0](roadmap/releasenotes/tfgrid_release_3_7_0.md)
- [TFGrid v3.6.1](roadmap/releasenotes/tfgrid_release_3_6_1.md)
- [TFGrid v3.6.0](roadmap/releasenotes/tfgrid_release_3_6_0.md)
- [TFGrid v3.0.0 Alpha-5](roadmap/releasenotes/tfgrid_release_3_0_a5.md)
- [TFGrid v3.0.0 Alpha-4](roadmap/releasenotes/tfgrid_release_3_0_a4.md)
- [TFGrid v3.0.0 Alpha-2](roadmap/releasenotes/tfgrid_release_3_0_a2.md)
- [TFGrid v3.0.0](roadmap/releasenotes/tfgrid_release_3_0.md)
- [Collaboration](contribute/collaboration_toc.md)
- [How to Contribute](contribute/contribute.md)
- [Development Process](contribute/development_process.md)
- [Feature Request](contribute/feature_request.md)
- [Bug Report](contribute/bug_report.md)
- [Issue Labels](contribute/issue_labels.md)
- [Development Cycle](contribute/development_cycle.md)
- [Release Process](contribute/release_process.md)
- [Pull Request Template](contribute/PULL_REQUEST_TEMPLATE.md)
- [Collaboration Tools](collaboration_tools/collaboration_tools.md)
- [Circle Tool](collaboration_tools/circle_tool.md)
- [Website Deployer](collaboration_tools/website_tool.md)
- [Website Link Checker](collaboration_tools/website_link_checker.md)
- [How to Test](testing/testing_readme.md)
- [TestLodge](testing/testlodge.md)
- [Code of Conduct](contribute/code_conduct.md)

View File

@@ -0,0 +1,85 @@
# ThreeFold Grid Services
On this article we have aggregated a list of all of the services running on Threefold Grid 3 infrastructure for your convenience
> Note: the usage of `dev` indicates a devnet service.
> and usage of `test` indicates a testnet service.
## Devnet
- [TFChain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2F/tfchain.dev.grid.tf#/explorer) `wss://tfchain.dev.grid.tf`
- [GraphQL](https://graphql.dev.grid.tf/graphql)
- [Activation Service](https://activation.dev.grid.tf/activation/)
- [TFGrid Proxy](https://gridproxy.dev.grid.tf)
- [Grid Playground](https://play.dev.grid.tf)
- [Dashboard](https://dashboard.dev.grid.tf)
## QAnet
- [TFChain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2F/tfchain.qa.grid.tf#/explorer) `wss://tfchain.qa.grid.tf`
- [GraphQL](https://graphql.qa.grid.tf/graphql)
- [Activation Service](https://activation.qa.grid.tf/activation/)
- [TFGrid Proxy](https://gridproxy.qa.grid.tf)
- [Grid Playground](https://play.qa.grid.tf)
- [Dashboard](https://dashboard.qa.grid.tf)
## Testnet
- [TFChain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2F/tfchain.test.grid.tf#/explorer) `wss://tfchain.test.grid.tf`
- [GraphQL](https://graphql.test.grid.tf/graphql)
- [Activation Service](https://activation.test.grid.tf/activation/)
- [TFGrid Proxy](https://gridproxy.test.grid.tf)
- [Grid Playground](https://play.test.grid.tf)
- [Dashboard](https://dashboard.test.grid.tf)
## Mainnet
- [TFChain](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2F/tfchain.grid.tf#/explorer) `wss://tfchain.grid.tf`
- [GraphQL](https://graphql.grid.tf/graphql)
- [Activation Service](https://activation.grid.tf/activation/)
- [TFChain-Stellar Bridge](https://bridge.bsc.threefold.io/)
- [TFChain-Ethereum Bridge](https://bridge.eth.threefold.io/)
- [TFGrid Proxy](https://gridproxy.grid.tf)
- [Grid Playground](https://play.grid.tf)
- [Dashboard](https://dashboard.grid.tf)
### Supported Planetary Network Nodes
```
Peers:
[
# Threefold Lochrist
tcp://gent01.grid.tf:9943
tcp://gent02.grid.tf:9943
tcp://gent03.grid.tf:9943
tcp://gent04.grid.tf:9943
tcp://gent01.test.grid.tf:9943
tcp://gent02.test.grid.tf:9943
tcp://gent01.dev.grid.tf:9943
tcp://gent02.dev.grid.tf:9943
# GreenEdge
tcp://gw291.vienna1.greenedgecloud.com:9943
tcp://gw293.vienna1.greenedgecloud.com:9943
tcp://gw294.vienna1.greenedgecloud.com:9943
tcp://gw297.vienna1.greenedgecloud.com:9943
tcp://gw298.vienna1.greenedgecloud.com:9943
tcp://gw299.vienna2.greenedgecloud.com:9943
tcp://gw300.vienna2.greenedgecloud.com:9943
tcp://gw304.vienna2.greenedgecloud.com:9943
tcp://gw306.vienna2.greenedgecloud.com:9943
tcp://gw307.vienna2.greenedgecloud.com:9943
tcp://gw309.vienna2.greenedgecloud.com:9943
tcp://gw313.vienna2.greenedgecloud.com:9943
tcp://gw324.salzburg1.greenedgecloud.com:9943
tcp://gw326.salzburg1.greenedgecloud.com:9943
tcp://gw327.salzburg1.greenedgecloud.com:9943
tcp://gw328.salzburg1.greenedgecloud.com:9943
tcp://gw330.salzburg1.greenedgecloud.com:9943
tcp://gw331.salzburg1.greenedgecloud.com:9943
tcp://gw333.salzburg1.greenedgecloud.com:9943
tcp://gw422.vienna2.greenedgecloud.com:9943
tcp://gw423.vienna2.greenedgecloud.com:9943
tcp://gw424.vienna2.greenedgecloud.com:9943
tcp://gw425.vienna2.greenedgecloud.com:9943
]
```

View File

@@ -0,0 +1,21 @@
<h1> TFGrid Advanced </h1>
In this section, we delve into sophisticated topics and powerful functionalities that empower you to harness the full potential of TFGrid 3.0. Whether you're an experienced user seeking to deepen your understanding or a trailblazer venturing into uncharted territories, this manual is your gateway to mastering advanced concepts on the ThreeFold Grid.
![](img/advanced_.png)
<h2>Table of Contents</h2>
- [Grid3 Stellar-TFChain Bridge](./grid3_stellar_tfchain_bridge.md)
- [Token Transfer Keygenerator](./token_transfer_keygenerator.md)
- [Cancel Contracts](./cancel_contracts.md)
- [Contract Bills Reports](./contract_bill_report.md)
- [Listing Free Public IPs](./list_public_ips.md)
- [Redis](./grid3_redis.md)
- [IPFS](./ipfs/ipfs_toc.md)
- [IPFS on a Full VM](./ipfs/ipfs_fullvm.md)
- [IPFS on a Micro VM](./ipfs/ipfs_microvm.md)
- [RMB Proxy](/proxy/proxy.md)
- [TFChain Extrinsics (Blockchain Functions)](/tfchain/tfchain.md)
- [Create Farm](/dashboard/portal/dashboard_portal_ui_farming.md)
- [Solution Provider](/tfchain/tfchain_solution_provider.md)

View File

@@ -0,0 +1,48 @@
<h1> Cancel Contracts </h1>
<h2>Table of Contents </h2>
- [Introduction](#introduction)
- [Using the Playground](#using-the-playground)
- [Using GraphQL and Polkadot UI](#using-graphql-and-polkadot-ui)
- [Using grid3\_client\_ts](#using-grid3_client_ts)
***
## Introduction
We present different methods to delete contracts on the TFGrid.
## Using the Playground
To cancel contracts with the Playground, consult the [Contracts List](../playground/contracts_list.md) documentation.
## Using GraphQL and Polkadot UI
From the QraphQL service execute the following query.
```
query MyQuery {
nodeContracts(where: {twinId_eq: TWIN_ID, state_eq: Created}) {
contractId
}
}
```
replace `TWIN_ID` with your twin id. The information should be available on the [Dashboard](/dashboard/dashboard.md).
Then from [polkadot UI](https://polkadot.js.org/apps/), add the tfchain endpoint to development.
![](img/polka_web_add_development_url.png)
Go to `Extrinsics`, choose the `smartContract` module and `cancelContract` extrinsic and use the IDs from GraphQL to execute the cancelation.
![](img/polka_web_cancel_contracts.jpg)
## Using grid3_client_ts
In order to use the `grid3_client_ts` module, it is essential to first clone our official mono-repo containing the module and then navigate to it. If you are looking for a quick and efficient way to cancel contracts, we offer a code-based solution that can be found [here](https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/grid_client/scripts/delete_all_contracts.ts).
To make the most of `grid_client`, we highly recommend following our [Grid-Client guide](https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/grid_client/README.md) for a comprehensive overview of the many advanced capabilities offered by this powerful tool. With features like contract creation, modification, and retrieval, `grid_client` provides an intuitive and easy-to-use solution for managing your contracts effectively.

View File

@@ -0,0 +1,65 @@
<h1> Contract Bills Reports </h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Contract Billing Report (GraphQL)](#contract-billing-report-graphql)
- [Consumption](#consumption)
***
## Introduction
Now you can check the billing rate of your contracts directly from the `Contracts` tab in the playground.
> It takes an hour for the contract to display the billing rate (Until it reaches the first billing cycle).
The `Billing Rate` is displayed in `TFT/Hour`
![image](img/billing_rate.png)
## Contract Billing Report (GraphQL)
- you need to find the contract ID
- ask the graphql for the consumption
> example query for all contracts
```graphql
query MyQuery {
contractBillReports {
contractId
amountBilled
discountReceived
}
}
```
And for a specific contract
```graphql
query MyQuery {
contractBillReports(where: {contractId_eq: 10}) {
amountBilled
discountReceived
contractId
}
}
```
## Consumption
```graphql
query MyQuery {
consumptions(where: {contractId_eq: 10}) {
contractId
cru
sru
mru
hru
nru
}
}
```

View File

@@ -0,0 +1,46 @@
<h1> Redis </h1>
<h2> Table of Contents </h2>
- [Introduction](#introduction)
- [Install Redis](#install-redis)
- [Linux](#linux)
- [MacOS](#macos)
- [Run Redis](#run-redis)
***
## Introduction
Redis is an open-source, in-memory data structure store that is widely used as a caching layer, message broker, and database. It is known for its speed, versatility, and support for a wide range of data structures. Redis is designed to deliver high-performance data access by storing data in memory, which allows for fast read and write operations. It supports various data types, including strings, lists, sets, hashes, and more, and provides a rich set of commands for manipulating and querying the data.
Redis is widely used in various use cases, including caching, session management, real-time analytics, leaderboards, task queues, and more. Its simplicity, speed, and flexibility make it a popular choice for developers who need a fast and reliable data store for their applications. In Threefold's ecosystem context, Redis can be used as a backend mechanism to communicate with the nodes on the ThreeFold Grid using the Reliable Message Bus.
***
## Install Redis
### Linux
If you don't find Redis in your Linux distro's package manager, check the [Redis downloads](https://redis.io/download) page for the source code and installation instructions.
### MacOS
On MacOS, [Homebrew](https://brew.sh/) can be used to install Redis. The steps are as follow:
```
brew update
brew install redis
```
Alternatively, it can be built from source, using the same [download page](https://redis.io/download/) as shown above.
***
## Run Redis
You can launch the Redis server with the following command:
```
redis-server
```

View File

@@ -0,0 +1,37 @@
<h1> Transferring TFT Between Stellar and TFChain</h1>
<h2>Table of Contents</h2>
- [Usage](#usage)
- [Prerequisites](#prerequisites)
- [Stellar to TFChain](#stellar-to-tfchain)
- [TFChain to Stellar](#tfchain-to-stellar)
***
## Usage
This document will explain how you can transfer TFT from Tfchain to Stellar and back.
For more information on TFT bridges, read [this documentation](../threefold_token/tft_bridges/tft_bridges.md).
## Prerequisites
- [Stellar wallet](../threefold_token/storing_tft/storing_tft.md)
- [Account on TFChain (use TF Dashboard to create one)](../dashboard/dashboard.md)
## Stellar to TFChain
You can deposit to Tfchain using the bridge page on the TF Dashboard, click deposit:
![bridge](./img/deposit_bridge.png)
## TFChain to Stellar
You can bridge back to stellar using the bridge page on the dashboard, click withdraw:
![withdraw](./img/withdraw_bridge.png)
A withdrawfee of 1 TFT will be taken, so make sure you send a larger amount as 1 TFT.
The amount withdrawn from TFChain will be sent to your Stellar wallet.

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

View File

@@ -0,0 +1,192 @@
<h1> IPFS on a Full VM</h1>
![ipfs_logo](../img/ipfs_logo.png)
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Deploy a Full VM](#deploy-a-full-vm)
- [Create a Root-Access User](#create-a-root-access-user)
- [Set a Firewall](#set-a-firewall)
- [Additional Ports](#additional-ports)
- [Install IPFS](#install-ipfs)
- [Set IPFS](#set-ipfs)
- [Final Verification](#final-verification)
- [Questions and Feedback](#questions-and-feedback)
***
## Introduction
In this ThreeFold guide, we explore how to set an IPFS node on a Full VM using the ThreeFold Playground.
## Deploy a Full VM
We start by deploying a full VM on the ThreeFold Playground.
* Go to the [Threefold Playground](https://playground.grid.tf/#/)
* Deploy a full VM (Ubuntu 20.04) with an IPv4 address and at least the minimum specs
* IPv4 Address
* Minimum vcores: 1vcore
* Minimum MB of RAM: 1024GB
* Minimum storage: 50GB
* After deployment, note the VM IPv4 address
* Connect to the VM via SSH
* ```
ssh root@VM_IPv4_address
```
## Create a Root-Access User
We create a root-access user. Note that this step is optional.
* Once connected, create a new user with root access (for this guide we use "newuser")
* ```
adduser newuser
```
* You should now see the new user directory
* ```
ls /home
```
* Give sudo capacity to the new user
* ```
usermod -aG sudo newuser
```
* Switch to the new user
* ```
su - newuser
```
* Create a directory to store the public key
* ```
mkdir ~/.ssh
```
* Give read, write and execute permissions for the directory to the new user
* ```
chmod 700 ~/.ssh
```
* Add the SSH public key in the file **authorized_keys** and save it
* ```
nano ~/.ssh/authorized_keys
```
* Exit the VM
* ```
exit
```
* Reconnect with the new user
* ```
ssh newuser@VM_IPv4_address
```
## Set a Firewall
We set a firewall to monitor and control incoming and outgoing network traffic. To do so, we will define predetermined security rules. As a firewall, we will be using [Uncomplicated Firewall](https://wiki.ubuntu.com/UncomplicatedFirewall) (ufw).
For our security rules, we want to allow SSH, HTTP and HTTPS (443 and 8443).
We thus add the following rules:
* Allow SSH (port 22)
* ```
sudo ufw allow ssh
```
* Allow port 4001
* ```
sudo ufw allow 4001
```
* To enable the firewall, write the following:
* ```
sudo ufw enable
```
* To see the current security rules, write the following:
* ```
sudo ufw status verbose
```
You now have enabled the firewall with proper security rules for your IPFS deployment.
### Additional Ports
We provided the basic firewall ports for your IPFS instance. There are other more advanced configurations possible.
If you want to access your IPFS node remotely, you can allow **port 5001**. This will allow anyone to access your IPFS node. Make sure that you know what you are doing if you go this route. You should, for example, restrict which external IP address can access port 5001.
If you want to run your deployment as a gateway node, you should allow **port 8080**. Read the IPFS documentation for more information on this.
If you want to run pubsub capabilities, you need to allow **port 8081**. For more information, read the [IPFS documentation](https://blog.ipfs.tech/25-pubsub/).
## Install IPFS
We install the [IPFS Kubo binary](https://docs.ipfs.tech/install/command-line/#install-official-binary-distributions).
* Download the binary
* ```
wget https://dist.ipfs.tech/kubo/v0.24.0/kubo_v0.24.0_linux-amd64.tar.gz
```
* Unzip the file
* ```
tar -xvzf kubo_v0.24.0_linux-amd64.tar.gz
```
* Change directory
* ```
cd kubo
```
* Run the install script
* ```
sudo bash install.sh
```
* Verify that IPFS Kubo is properly installed
* ```
ipfs --version
```
## Set IPFS
We initialize IPFS and run the IPFS daemon.
* Initialize IPFS
* ```
ipfs init --profile server
```
* Increase the storage capacity (optional)
* ```
ipfs config Datastore.StorageMax 30GB
```
* Run the IPFS daemon
* ```
ipfs daemon
```
* Set an Ubuntu systemd service to keep the IPFS daemon running after exiting the VM
* ```
sudo nano /etc/systemd/system/ipfs.service
```
* Enter the systemd info
* ```
[Unit]
Description=IPFS Daemon
[Service]
Type=simple
ExecStart=/usr/local/bin/ipfs daemon --enable-gc
Group=newuser
Restart=always
Environment="IPFS_PATH=/home/newuser/.ipfs"
[Install]
WantedBy=multi-user.target
```
* Enable the service
* ```
sudo systemctl daemon-reload
sudo systemctl enable ipfs
sudo systemctl start ipfs
```
* Verify that the IPFS daemon is properly running
* ```
sudo systemctl status ipfs
```
## Final Verification
We reboot and reconnect to the VM and verify that IPFS is properly running as a final verification.
* Reboot the VM
* ```
sudo reboot
```
* Reconnect to the VM
* ```
ssh newuser@VM_IPv4_address
```
* Check that the IPFS daemon is running
* ```
ipfs swarm peers
```
## Questions and Feedback
If you have any questions or feedback, please let us know by either writing a post on the [ThreeFold Forum](https://forum.threefold.io/), or by chatting with us on the [TF Grid Tester Community](https://t.me/threefoldtesting) Telegram channel.

View File

@@ -0,0 +1,169 @@
<h1> IPFS on a Micro VM</h1>
![ipfs_logo](../img/ipfs_logo.png)
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Deploy a Micro VM](#deploy-a-micro-vm)
- [Install the Prerequisites](#install-the-prerequisites)
- [Set a Firewall](#set-a-firewall)
- [Additional Ports](#additional-ports)
- [Install IPFS](#install-ipfs)
- [Set IPFS](#set-ipfs)
- [Set IPFS with zinit](#set-ipfs-with-zinit)
- [Final Verification](#final-verification)
- [Questions and Feedback](#questions-and-feedback)
***
## Introduction
In this ThreeFold guide, we explore how to set an IPFS node on a micro VM using the ThreeFold Playground.
## Deploy a Micro VM
We start by deploying a micro VM on the ThreeFold Playground.
* Go to the [Threefold Playground](https://playground.grid.tf/#/)
* Deploy a micro VM (Ubuntu 22.04) with an IPv4 address
* IPv4 Address
* Minimum vcores: 1vcore
* Minimum MB of RAM: 1024MB
* Minimum storage: 50GB
* After deployment, note the VM IPv4 address
* Connect to the VM via SSH
* ```
ssh root@VM_IPv4_address
```
## Install the Prerequisites
We install the prerequisites before installing and setting IPFS.
* Update Ubuntu
* ```
apt update
```
* Install nano and ufw
* ```
apt install nano && apt install ufw -y
```
## Set a Firewall
We set a firewall to monitor and control incoming and outgoing network traffic. To do so, we will define predetermined security rules. As a firewall, we will be using [Uncomplicated Firewall](https://wiki.ubuntu.com/UncomplicatedFirewall) (ufw).
For our security rules, we want to allow SSH, HTTP and HTTPS (443 and 8443).
We thus add the following rules:
* Allow SSH (port 22)
* ```
ufw allow ssh
```
* Allow port 4001
* ```
ufw allow 4001
```
* To enable the firewall, write the following:
* ```
ufw enable
```
* To see the current security rules, write the following:
* ```
ufw status verbose
```
You have enabled the firewall with proper security rules for your IPFS deployment.
### Additional Ports
We provided the basic firewall ports for your IPFS instance. There are other more advanced configurations possible.
If you want to access your IPFS node remotely, you can allow **port 5001**. This will allow anyone to access your IPFS node. Make sure that you know what you are doing if you go this route. You should, for example, restrict which external IP address can access port 5001.
If you want to run your deployment as a gateway node, you should allow **port 8080**. Read the IPFS documentation for more information on this.
If you want to run pubsub capabilities, you need to allow **port 8081**. For more information, read the [IPFS documentation](https://blog.ipfs.tech/25-pubsub/).
## Install IPFS
We install the [IPFS Kubo binary](https://docs.ipfs.tech/install/command-line/#install-official-binary-distributions).
* Download the binary
* ```
wget https://dist.ipfs.tech/kubo/v0.24.0/kubo_v0.24.0_linux-amd64.tar.gz
```
* Unzip the file
* ```
tar -xvzf kubo_v0.24.0_linux-amd64.tar.gz
```
* Change directory
* ```
cd kubo
```
* Run the install script
* ```
bash install.sh
```
* Verify that IPFS Kubo is properly installed
* ```
ipfs --version
```
## Set IPFS
We initialize IPFS and run the IPFS daemon.
* Initialize IPFS
* ```
ipfs init --profile server
```
* Increase the storage capacity (optional)
* ```
ipfs config Datastore.StorageMax 30GB
```
* Run the IPFS daemon
* ```
ipfs daemon
```
## Set IPFS with zinit
We set the IPFS daemon with zinit. This will make sure that the IPFS daemon starts at each VM reboot or if it stops functioning momentarily.
* Create the yaml file
* ```
nano /etc/zinit/ipfs.yaml
```
* Set the execution command
* ```
exec: /usr/local/bin/ipfs daemon
```
* Run the IPFS daemon with the zinit monitor command
* ```
zinit monitor ipfs
```
* Verify that the IPFS daemon is running
* ```
ipfs swarm peers
```
## Final Verification
We reboot and reconnect to the VM and verify that IPFS is properly running as a final verification.
* Reboot the VM
* ```
reboot -f
```
* Reconnect to the VM and verify that the IPFS daemon is running
* ```
ipfs swarm peers
```
## Questions and Feedback
If you have any questions or feedback, please let us know by either writing a post on the [ThreeFold Forum](https://forum.threefold.io/), or by chatting with us on the [TF Grid Tester Community](https://t.me/threefoldtesting) Telegram channel.

View File

@@ -0,0 +1,8 @@
<h1>IPFS and ThreeFold</h1>
![ipfs_log](../img/ipfs_logo.png)
<h2>Table of Contents</h2>
- [IPFS on a Full VM](./ipfs_fullvm.md)
- [IPFS on a Micro VM](./ipfs_microvm.md)

View File

@@ -0,0 +1,11 @@
# Listing Public IPs
Listing public IPs can be done by asking graphQL for all IPs that has `contractId = 0`
```graphql
query MyQuery {
publicIps(where: {contractId_eq: 0}) {
ip
}
}
```

View File

@@ -0,0 +1,88 @@
<h1> Transfer TFT Between Networks by Using the Keygenerator </h1>
<h2>Table of Contents </h2>
- [Introduction](#introduction)
- [Prerequisites](#prerequisites)
- [Keypair](#keypair)
- [Stellar to TFChain](#stellar-to-tfchain)
- [Alternative Transfer to TF Chain](#alternative-transfer-to-tf-chain)
- [TFChain to Stellar](#tfchain-to-stellar)
***
## Introduction
Using this method, only transfer is possible between accounts that are generated in the same manner and that are yours. Please find the keygen tooling for it below.
## Prerequisites
### Keypair
- ed25519 keypair
- Go installed on your local computer
Create a keypair with the following tool: <https://github.com/threefoldtech/tfchain_tft/tree/main/tfchain_bridge/tools/keygen>
```sh
go build .
./keygen
```
### Stellar to TFChain
Create a Stellar wallet from the key that you generated.
Transfer the TFT from your wallet to the bridge address. A deposit fee of 1 TFT will be taken, so make sure you send a larger amount as 1 TFT.
Bridge addresses :
- On Mainnet: `GBNOTAYUMXVO5QDYWYO2SOCOYIJ3XFIP65GKOQN7H65ZZSO6BK4SLWSC` on [Stellar Mainnet](https://stellar.expert/explorer/public).
- On testnet: `GA2CWNBUHX7NZ3B5GR4I23FMU7VY5RPA77IUJTIXTTTGKYSKDSV6LUA4` on [Stellar MAINnet](https://stellar.expert/explorer/public)
The amount deposited on TF Chain minus 1 TFT will be transferred over the bridge to the TFChain account.
Effect will be the following :
- Transferred TFTs from Stellar will be sent to a Stellar vault account representing all tokens on TFChain
- TFTs will be minted on the TFChain for the transferred amount
### Alternative Transfer to TF Chain
We also enabled deposits to TF Grid objects. Following objects can be deposited to:
- Twin
- Farm
- Node
- Entity
To deposit to any of these objects, a memo text in format `object_objectID` must be passed on the deposit to the bridge wallet. Example: `twin_1`.
To deposit to a TF Grid object, this object **must** exists. If the object is not found on chain, a refund is issued.
## TFChain to Stellar
Create a TFChain account from the key that you generated. (TF Chain raw seed).
Browse to :
- For mainnet: <https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.grid.tf#/accounts>
- For testnet: <https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.test.grid.tf#/accounts>
- For Devnet: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.dev.grid.tf#/accounts
-> Add Account -> Click on mnemonic and select `Raw Seed` -> Paste raw TF Chain seed.
Select `Advanced creation options` -> Change `keypair crypto type` to `Edwards (ed25519)`. Click `I have saved my mnemonic seed safely` and proceed.
Choose a name and password and proceed.
Browse to the [extrinsics](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.test.grid.tf#/extrinsics) <!--- or [Devnet](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.dev.grid.tf#/extrinsics) -->, select tftBridgeModule and extrinsic: `swap_to_stellar`. Provide your Bridge substrate address and the amount to transfer. Sign using your password.
Again, a withdrawfee of 1 TFT will be taken, so make sure you send an amount larger than 1 TFT.
The amount withdrawn from TFChain will be sent to your Stellar wallet.
Behind the scenes, following will happen:
- Transferred TFTs from Stellar will be sent from the Stellar vault account to the user's Stellar account
- TFTs will be burned on the TFChain for the transferred amount
Example: ![swap_to_stellar](img/swap_to_stellar.png ':size=400')

View File

@@ -0,0 +1,108 @@
<h1> ThreeFold's Circle Tool </h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Prerequisites](#prerequisites)
- [How to Use the Circle Tool](#how-to-use-the-circle-tool)
- [Circle Tool Overview](#circle-tool-overview)
- [Dashboard View](#dashboard-view)
- [Profile view](#profile-view)
- [Projects](#projects)
- [Scrum Module on Project](#scrum-module-on-project)
- [Scrum Backlog](#scrum-backlog)
- [Scrum Sprints](#scrum-sprints)
- [More Info](#more-info)
***
# Introduction
![ ](./img/taiga.png)
[__ThreeFold's Circle Tool__](https://circles.threefold.me ) is our own self-hosted (desktop only) project management tool based on [Taiga](https://www.taiga.io/), an open-source project management tool for cross-functional agile. It offers a lot of different project management kits and features such as the scrum board, kanban board, issues management, and many more.
Our teams at ThreeFold use the Circle Tool to self-manage our tasks, thus it is deemed necessary for the new onboarded team members to learn how to use the tool. Unfortunately we only provide the desktop version of the tool at this moment since we normally manage our projects on the computer.
This manual will be a beneficial thing to read for anyone: our team members, as well as our community members who are interested in using Circle Tool for their projects.
# Prerequisites
You would need to install and create an account on the [TF Connect App](../getstarted/TF_Connect/TF_Connect.md) before being able to register and use the Circle Tool.
# How to Use the Circle Tool
* Go to [Circle Tool's desktop homepage](https://circles.threefold.me) on your computer as shown below. Click on '__Login__' button on the very top right corner of your screen.
![ ](./img/circlehome.png)
* Click on "TF Connect" button to log into the Circle Tool by using your TF Connect Account.
![ ](./img/tfconnect.png)
* Fill in your TF Connect usernames (without adding the '@' sign) on the provided box, and click on the 'Sign in' button.
![ ](./img/signin.png)
* Circle Tool will ask you to verify your login by clicking the right emoji that is sent to your TF Connect App.
![ ](./img/emoji.png)
* Verify your sign in process by loggin in to your TF Connect App on your mobile phone. Click on the same emoji that you see on your circle tool (desktop).
![ ](./img/matchemoji.png)
* Congratulations, you are now officially logged in on the circle tool. The Dashboard view will be the first thing you will see once you are logged in to the tool.
![ ](./img/dashboard.png)
***
# Circle Tool Overview
The Circle Tool always try to make things easy and intuitive for new users but its good to have a nice & quick overview for your first couple of days.
# Dashboard View
![ ](./img/dashboard.png)
Upon login or if you just go to your Circle Tool, youre confronted with your dashboard with quick access to your working on items, a list of watched items and shortcuts to your projects. You can always go back to your dashboard by clicking on the Taiga
icon on the top bar.
# Profile view
![ ](./img/profile.png)
Circle Tool has an additional section to get a multiproject view where you can find and list everything that is accessible to you. Simply click on your avatar and you access your personal profile section where you can check from what your personal bio looks like for people that might have access to it to all sorts of information on your activities and relevant content.
# Projects
![ ](./img/project.png)
You can access your assigned projects by clicking on Projects link at the top left of your screen. You can hover and get an interactive shortlist or click on the link and go to a dedicated page where you can access them as well as rearrange them. Once you have clicked on a project, you access your default view for that project, which is always the Projects Timeline if you havent changed that.
# Scrum Module on Project
![ ](./img/homeproject.png)
Every circle project can activate the Scrum module. This also happens automatically if you chose the Scrum template upon project creation. You can find the scrum module on the sidebar of your project page.
Scrum is an agile framework for developing, delivering, and sustaining complex products. Although it had an initial emphasis on software development, it has been used in other fields including research, sales, marketing and advanced technologies.
## Scrum Backlog
![ ](./img/backlog.png)
There are various so called artifacts in Scrum. The top three are the Backlog, the User Stories and the Sprints. They respectively represent what is to be done ordered by priority and readyness, the pieces of work themselves and the fixed time periods in which we put selected User Stories to be worked upon and finished.
## Scrum Sprints
![ ](./img/sprints.png)
The Scrum Backlog view will always show a summary view of ongoing or closed Sprints but teams generally stick to the Sprint Taskboard view when they are focused on getting things done for that Sprint. Click on either the Sprint name or the “Sprint Taskboard” button so you can access the very important Sprint Taskboard. Open Sprints appear as shortcuts through the left navigation panes Scrum icon.
# More Info
You can read more about the Circle Tool (Taiga), scrum, sprints, and other documentations on Taiga's project management features on Taiga's official documentation [here](https://community.taiga.io/). Happy Project Managing!

View File

@@ -0,0 +1,18 @@
<h1> ThreeFold's Collaboration Tools </h1>
In this section, we will introduce powerful collaboration tools utilized by ThreeFold, such as the Circle Tool and the Website Deployer.
These tools play a crucial role in enhancing as well as simplifying collaboration and communication at ThreeFold. The tools we use at ThreeFold are chosen for their open-source design and their focus on ease of comprehension and use.
<h2>Table of Contents</h2>
- [Circle Tool](./circle_tool.md)
- This ThreeFold's project management tool, made by using Taiga, is an open-source project management platform designed to facilitate collaboration and to streamline workflows for teams. It provides a comprehensive set of features and tools to help teams plan, track, and manage their projects effectively.
- [Website Deployer](./website_tool.md)
- This ThreeFold's website builder tool, made by using Zola, is a static site generator (SSG) and content management system (CMS) that empowers developers and content creators to build and manage websites efficiently. It is an open-source framework written in the Rust programming language, known for its performance, security, and reliability.
- [Website Link Checker](./website_link_checker.md)
- The ThreeFold website link checker is a wrapper around muffet to check for specific link errors on live websites written in Python.

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -0,0 +1,87 @@
<h1> Website Link Checker </h1>
<h2> Table of Contents </h2>
- [Introduction](#introduction)
- [How the Program Exits](#how-the-program-exits)
- [Program Arguments](#program-arguments)
- [How to Use the Program](#how-to-use-the-program)
- [With Python](#with-python)
- [With Docker](#with-docker)
- [With Github Action](#with-github-action)
***
## Introduction
This is a Python program that calls muffet on a whole website and then filters and displays the HTTP errors.
> Note: It can take a couple of minutes to run if the website has a lot of URLs.
## How the Program Exits
Exits with error code 1 if at least one error is found, as specified with --errors
flag. Otherwise exits with code 0. Note that errors set as --warnings will always exit with code 0.
## Program Arguments
* url
* The URL to scan. Please include https:// or http://. (e.g. https://google.com)
* -h, --help
* show this help message and exit
* -e ERRORS [ERRORS ...], --errors ERRORS [ERRORS ...]
* Specify one, many or all error codes to be filtered (e.g. -e 404, -e 403 404, -e all). Use -e all to show all errors.
* -w WARNINGS [WARNINGS ...], --warnings WARNINGS [WARNINGS ...]
* Specify one, many or all error codes to be filtered as warnings (e.g. -w 404, -w 403 404, -w all). Use -w all to show all warnings.
## How to Use the Program
### With Python
* Clone the repository
* ```
git clone https://github.com/threefoldfoundation/website-link-checker
```
* Change directory
* ```
cd website-link-checker
```
* Run the program
* ```
python website-link-checker.py https://example.com -e 404 -w all
```
### With Docker
You can use the following command to run the website link checker with Docker:
```
docker run ghcr.io/threefoldfoundation/website-link-checker https://example.com -e 404 -w all
```
### With Github Action
The website link checker can be run as an action (e.g. `action.yml`) set in `.github/workflows` of a Github repository.
The following action example runs everytime there is a push on the development branch and also every Monday at 6:00AM as set by the cron job.
```
name: link-checker-example
on:
push:
branches: [ development ]
schedule:
- cron: '0 6 * * 1' # e.g. 6:00 AM each Monday
jobs:
job_one:
name: Check for Broken Links
runs-on: ubuntu-latest
steps:
- name: Check for Broken Links
id: link-report
uses: docker://ghcr.io/threefoldfoundation/website-link-checker:latest
with:
args: 'https://example.com -e 404 -w all'
```

View File

@@ -0,0 +1,341 @@
<h1> Zola Website Deployer</h1>
![](./img/websitetool.jpeg)
<h2> Table of Contents </h2>
- [Overview](#overview)
- [What is Zola Framework?](#what-is-zola-framework)
- [Prerequisites](#prerequisites)
- [Important Links](#important-links)
- [Installing Zola Onto Your Machine](#installing-zola-onto-your-machine)
- [Important Links](#important-links-1)
- [Get Started](#get-started)
- [Fork ThreeFold's Website Template to Your Github Account](#fork-threefolds-website-template-to-your-github-account)
- [Clone the Forked Repository Locally](#clone-the-forked-repository-locally)
- [Open and Edit Your Cloned Zola Template with a Code Editor](#open-and-edit-your-cloned-zola-template-with-a-code-editor)
- [Template Guide](#template-guide)
- [Navigating the Template](#navigating-the-template)
- [Top Navbar Made Easy](#top-navbar-made-easy)
- [Replace Logo with your Own logo](#replace-logo-with-your-own-logo)
- [Important Links](#important-links-2)
- [Customization](#customization)
- [Some Tutorials on Markdown](#some-tutorials-on-markdown)
- [Creating A Single-Column Page Section](#creating-a-single-column-page-section)
- [Adding Image](#adding-image)
- [Creating Page Section with Multiple Columns](#creating-page-section-with-multiple-columns)
- [Important Links](#important-links-3)
- [Build and Preview Your Website Locally](#build-and-preview-your-website-locally)
- [Check the Website Links](#check-the-website-links)
- [Important Links](#important-links-4)
- [Publish Your Website (Via Github Pages)](#publish-your-website-via-github-pages)
- [Publish your Github page](#publish-your-github-page)
- [Important Links](#important-links-5)
- [Questions and Feedback](#questions-and-feedback)
***
## Overview
**ThreeFold Website Tool** is a customized open-source Zola-based web deployment framework and static website template repository that is available for anyone to use.
At ThreeFold, we utilized Website Tool to deploy all of our web presences. For example, [**www.threefold.io**](https://threefold.io).
### What is Zola Framework?
[**Zola**](https://www.getzola.org/) is a static site generator (SSG), similar to Hugo, Pelican, and Jekyll (for a comprehensive list of SSGs, please see Jamstack). It is written in Rust and uses the Tera template engine, which is similar to Jinja2, Django templates, Liquid, and Twig. Content is written in CommonMark, a strongly defined, highly compatible specification of Markdown.
While you can also publish a static website using Zola alone, we at ThreeFold have customized the framework and created a static website template that makes it even easier for anyone to build a website by simply cloning template and fill it with their own website content.
***
## Prerequisites
- Github Account
- Zola Framework
- VS Code, or any code editor of choice
- Markdown language knowledge
- Basic Command Line (Terminal) Knowledge
In order to deploy and publish a website using ThreeFold Website Tool, you would need to have an account on github (to store your website data in a github repository), as well as to have Zola framework installed on your machine.
### Important Links
> - [How to Sign Up for a Github Account](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account)
> - [Download VS Code](https://code.visualstudio.com/download)
> - [Learn Markdown Language](https://www.markdownguide.org/)
> - [Command Line Cheat Sheet](https://cs.colby.edu/maxwell/courses/tutorials/terminal/)
***
## Installing Zola Onto Your Machine
To install Zola on your machine, simply go to your terminal and run the following command:
**MacOS (brew)**:
```
$ brew install zola
```
Please make sure you have [Brew](https://brew.sh/) installed on your MacOS machine before installing Zola.
<b>Windows (scoop)</b>:
```
$ scoop install zola
```
Please make sure you have [Scoop](https://scoop.sh/) installed on your Windows machine before installing Zola.
You should see a similar screen as below when successful:
![](./img/scoopsuccess.png)
For more details on Zola Installation, and installation guidelines for other operating systems, please read: [**Zola Installation Manual**](https://www.getzola.org/documentation/getting-started/installation/).
### Important Links
> - [How to Install Brew (MacOS)](https://brew.sh/)
> - [How to Install Scoop (Windows)](https://github.com/ScoopInstaller/Scoop#readme)
> - [Zola Installation for other OS](https://www.getzola.org/documentation/getting-started/installation/)
> - [Command Line Cheat Sheet](https://cs.colby.edu/maxwell/courses/tutorials/terminal/)
> Next Step: [Template Guide: How to use the TF Web Template](#template-guide)
***
## Get Started
Now that you have successfully installed Zola on your machine. You are ready to create and build your own website using ThreeFold Website Tool.
In order to do that you would need to clone [**ThreeFold's Website Template**](https://github.com/threefoldfoundation/www_examplezola) to your own github account, and open it locally on your computer by using VS Code or your code editing program of choice.
### Fork ThreeFold's Website Template to Your Github Account
Our Team has especially created an html/css/markdown based template repository on github, free for anyone to use. To start working on your project, simply fork [this repository](https://github.com/threefoldfoundation/www_examplezola) to your own github account by clicking the 'fork' account on the repository, and rename it with your website's name.
![](./img/fork.png)
### Clone the Forked Repository Locally
After you forked the template, now you can [clone the repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) to your local computer so we can start working on it. Please remember the directory / folder of where you cloned the repository in your computer to make it easier for you to locate and edit it.
![](./img/clone.png)
### Open and Edit Your Cloned Zola Template with a Code Editor
Once the template is forked and cloned, open your code editor and start working on your website. I will explain a little more about the content editing process and procedure on the next pages...
![](./img/vscode.png)
### Template Guide
On this page you will find an introduction on [TF Web Template](https://github.com/threefoldfoundation/www_examplezola) and how to navigate the different template component that enable you to edit the template with your own content.
### Navigating the Template
All editable content of your website would be found under **content** folder.
Each page of your website is a **markdown (.md) file.**
Each page and all the images on the page will be put into its own folder under content/ folder.
![](./img/folderdetail.png)
<br>
For example, here, my homepage (index.md) is put into **content/home** folder.
![](./img/indexmd.png)
If I want to edit the homepage of my website, I would go to the following:
bb
```
content/home/index.md
```
and start editing.
![](./img/vscode.png)
### Top Navbar Made Easy
![](./img/navbar.png)
Every time you make a new page folder, we have designed it in a way that the website would automatically generate a new navbar item using the name of each folder you created.
based on the navbar picture above, it means that I have created 3 separate content subfolders, each with an index.md file on it called Home, ThreeFoldFeed and GetServer.
### Replace Logo with your Own logo
![](./img/logo.png)
To replace the logo, **add your own logo image to home folder.**
And then go to **_index.md** file and replace the **logo_path**: images/yourlogoimagename.jpg
![](./img/placeholder.png)
### Important Links
> - [TF Web Template](https://github.com/threefoldfoundation/www_examplezola)
***
## Customization
We have designed the template in certain ways that it would accommodate different indentation web page style, such as placeholders, footer, header, left-indentation, right-indentation.
All you need to do is just replace the texts and images using markdown language, and use the indentation style you would like to use for your page. Dont know how to markdown? Heres a [**complete markdown syntax guide**](https://www.markdownguide.org/basic-syntax/) for you to begin with.
Happy experimenting!
### Some Tutorials on Markdown
### Creating A Single-Column Page Section
Since we only have one column, Every one column section begins only with row indentation syntax (style, margin, padding).
```
<!-- section 1 (header) -->
{% row(style="" margin="" padding="t") %}
```
for example:
```
<!-- section 1 (header) -->
{% row(style="center" margin="narrow" padding="top") %}
```
and ends with
```
{% end %}
```
### Adding Image
To add image to your page please use
```
![alt_text](yourimagename.png)
```
The Result:
![](./img/mastodon.png)
### Creating Page Section with Multiple Columns
For more than one column section, we need to configure the row and column syntax.
For example:
Sometimes you would like to have a page where you place your texts and buttons on left column and an image on the right column, like:
What you need to do is add:
```
|||
```
in between your text and images for every column you want to create.
For example, this page consist of two columns (left and right):
![](./img/twocolumns.png)
The Result:
![](./img/twocolumnsdone.png)
You can add more than two column like this one, a page section consist of 3 columns.
The code:
![](./img/threecolumns.png)
The Result:
![](./img/threecolumnsdone.png)
### Important Links
> - [Learn Markdown Language](https://www.markdownguide.org/)
### Build and Preview Your Website Locally
After customizing your website, you might want to review and build your website locally before publishing it online. On this page you will find tutorials on how to preview and deploy your website.
To preview your website locally, simply open the terminal via your code editor and type in:
```
./build.sh
```
So that the framework starts building your website.
Then
```
./start.sh
```
So that the framework starts serving your website preview locally. Please make sure you are on located on the right website folder, for example: *$ user/doc/mywebsitename* before typing the command above.
The preview won't successfuly be built if you run the command in the wrong folder.
When successful, it will give you a link to a local preview of your website. Go ahead and copy paste the url onto your web browser to preview your website locally.
![](./img/success.png)
And, Congratulations! You just built your website locally!
![](./img/preview.png)
### Check the Website Links
When you are in the main directory of your Zola website, you can check the following command to check the links of the complete website locally:
```
zola check
```
Once your website is online, you can also use the [Website Link Checker](./website_link_checker.md).
### Important Links
> - [Command Line Cheat Sheet](https://cs.colby.edu/maxwell/courses/tutorials/terminal/)
***
## Publish Your Website (Via Github Pages)
Since we're using github repository to save our website content, the easiest way to publish our website is also through github pages and by using our own domain.
Once all commits have been pushed back to your github repository online, you can start publishing your website.
The first thing you need to do is to go back to your code editor, and find **config.toml** file on your website repo.
Edit the **base_url** on the **config.toml** file on your repo to your own domain.
![](./img/config.png)
Save all your changes and push all your commits to its origin again.
### Publish your Github page
Later on, go to your github repo **settings**, go to **Pages** on the left navigation sidebar. Add your own custom domain to start publishing your website.
![](./img/gitpages.png)
And you are done! Your website will be published, and it will take only a minute or so to complete the process. Refresh page, and you will see a link to your newly published website.
![](./img/done.png)
***
## Important Links
> - [Pushing Changes to Github](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/making-changes-in-a-branch/pushing-changes-to-github)
> - [Github Pages How-to](https://docs.github.com/en/pages)
> - [Adding Custom Domain to my Github Page](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
***
## Questions and Feedback
If you have any question or feedback, you can write a post on the [ThreeFold Forum](http://forum.threefold.io/).

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
<h1> Computer and IT Basics </h1>
Welcome to the *Computer and IT Basics* section of the ThreeFold Manual!
In this section, tailored specifically for system administrators, we'll delve into fundamental concepts and tools that form the backbone of managing and securing infrastructure. Whether you're a seasoned sysadmin or just starting your journey, these basics are essential for navigating the intricacies of the ThreeFold Grid.
<h2> Table of Contents </h2>
- [CLI and Scripts Basics](./cli_scripts_basics.md)
- [Docker Basics](./docker_basics.md)
- [Git and GitHub Basics](./git_github_basics.md)
- [Firewall Basics](./firewall_basics/firewall_basics.md)
- [UFW Basics](./firewall_basics/ufw_basics.md)
- [Firewalld Basics](./firewall_basics/firewalld_basics.md)
- [File Transfer](./file_transfer.md)

View File

@@ -0,0 +1,458 @@
<h1>Docker Basic Commands</h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Basic Commands](#basic-commands)
- [Install Docker Desktop and Docker Engine](#install-docker-desktop-and-docker-engine)
- [Remove completely Docker](#remove-completely-docker)
- [List containers](#list-containers)
- [Pull an image](#pull-an-image)
- [Push an image](#push-an-image)
- [Inspect and pull an image with GHCR](#inspect-and-pull-an-image-with-ghcr)
- [See a docker image (no download)](#see-a-docker-image-no-download)
- [Build a container](#build-a-container)
- [List all available docker images](#list-all-available-docker-images)
- [Run a container](#run-a-container)
- [Run a new command in an existing container](#run-a-new-command-in-an-existing-container)
- [Bash shell into container](#bash-shell-into-container)
- [Pass arguments with a bash script and a Dockerfile](#pass-arguments-with-a-bash-script-and-a-dockerfile)
- [Copy files from a container to the local computer](#copy-files-from-a-container-to-the-local-computer)
- [Delete all the containers, images and volumes](#delete-all-the-containers-images-and-volumes)
- [Kill all the Docker processes](#kill-all-the-docker-processes)
- [Output full logs for all containers](#output-full-logs-for-all-containers)
- [Resources Usage](#resources-usage)
- [Examine containers with size](#examine-containers-with-size)
- [Examine disks usage](#examine-disks-usage)
- [Wasted Resources](#wasted-resources)
- [Prune the Docker logs](#prune-the-docker-logs)
- [Prune the Docker containers](#prune-the-docker-containers)
- [Remove unused and untagged local container images](#remove-unused-and-untagged-local-container-images)
- [Clean up and delete all unused container images](#clean-up-and-delete-all-unused-container-images)
- [Clean up container images based on a given timeframe](#clean-up-container-images-based-on-a-given-timeframe)
- [Command Combinations](#command-combinations)
- [Kill all running containers](#kill-all-running-containers)
- [Stop all running containers](#stop-all-running-containers)
- [Delete all stopped containers](#delete-all-stopped-containers)
- [Delete all images](#delete-all-images)
- [Update and stop a container in a crash-loop](#update-and-stop-a-container-in-a-crash-loop)
- [References](#references)
***
## Introduction
We present here a quick introduction to Docker. We cover basic commands, as well as command combinations. Understanding the following should give system administrators confidence when it comes to using Docker efficiently.
The following can serve as a quick reference guide when deploying workloads on the ThreeFold Grid and using Docker in general.
We invite the readers to consult the [official Docker documentation](https://docs.docker.com/) for more information.
***
## Basic Commands
### Install Docker Desktop and Docker Engine
You can install [Docker Desktop](https://docs.docker.com/get-docker/) and [Docker Engine](https://docs.docker.com/engine/install/) for Linux, MAC and Windows. Follow the official Docker documentation for the details.
Note that the quickest way to install Docker Engine is to use the convenience script:
```
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
***
### Remove completely Docker
To completely remove docker from your machine, you can follow these steps:
* List the docker packages
* ```
dpkg -l | grep -i docker
```
* Purge and autoremove docker
* ```
apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
```
* Remove the docker files and folders
* ```
rm -rf /var/lib/docker /etc/docker
rm /etc/apparmor.d/docker
groupdel docker
rm -rf /var/run/docker.sock
```
You can also use the command **whereis docker** to see if any Docker folders and files remain. If so, remove them with
***
### List containers
* List only running containers
* ```
docker ps
```
* List all containers (running + stopped)
* ```
docker ps -a
```
***
### Pull an image
To pull an image from [Docker Hub](https://hub.docker.com/):
* Pull an image
* ```
docker pull <image_name>
```
* Pull an image with the tag
* ```
docker pull <image_name>:tag
```
* Pull all tags of an image
* ```
docker pull <image_name> -a
```
***
### Push an image
To pull an image to [Docker Hub](https://hub.docker.com/):
* Push an image
* ```
docker push <image_name>
```
* Push an image with the tag
* ```
docker push <image_name>:tag
```
* Push all tags of an image
* ```
docker pull <image_name> -a
```
***
### Inspect and pull an image with GHCR
* Inspect the docker image
* ```
docker inspect ghcr.io/<repository>/<image>:<tag>
```
* Pull the docker image
* ```
docker pull ghcr.io/<repository>/<image>:<tag>
```
***
### See a docker image (no download)
If you want to see a docker image without downloading the image itself, you can use Quay's [Skopeo tool](https://github.com/containers/skopeo), a command line utility that performs various operations on container images and image repositories.
```
docker run --rm quay.io/skopeo/stable list-tags docker://ghcr.io/<repository>/<image>
```
Make sure to write the proper information for the repository and the image.
To install Skopeo, read [this documentation](https://github.com/containers/skopeo/blob/main/install.md).
***
### Build a container
Use **docker build** to build a container based on a Dockerfile
* Build a container based on current directory Dockerfile
* ```
docker build .
```
* Build a container and store the image with a given name
* Template
* ```
docker build -t "<image_name>:<tag>"
```
* Example
* ```
docker build -t newimage:latest
```
* Build a docker container without using the cache
* ```
docker build --no-cache
```
***
### List all available docker images
```
docker images
```
***
### Run a container
To run a container based on an image, use the command **docker run**.
* Run an image
* ```
docker run <image_name>
```
* Run an image in the background (run and detach)
* ```
docker run -d <image_name>
```
* Run an image with CLI input
* ```
docker run -it <image_name>
```
You can combine arguments, e.g. **docker run -itd**.
You can also specify the shell, e.g. **docker run -it <image_name> /bin/bash**
***
### Run a new command in an existing container
To run a new command in an existing container, use **docker exec**.
* Execute interactive shell on the container
* ```
docker exec -it <container_name> sh
```
***
### Bash shell into container
* Bash shell into a container
* ```
docker exec -i -t /bin/bash
```
* Bash shell into a container with root
* ```
docker exec -i -t -u root /bin/bash
```
Note: if bash is not available, you can use `/bin/sh`
***
### Pass arguments with a bash script and a Dockerfile
You can do the following to pass arguments with a bash script and a Dockerfile.
```sh
# script_example.sh
#!/bin/sh
echo This is the domain: $env_domain
echo This is the name: $env_name
echo This is the password: $env_password
```
* File `Dockerfile`
```Dockerfile
FROM ubuntu:latest
ARG domain
ARG name
ARG password
ENV env_domain $domain
ENV env_name $name
ENV env_password $password
COPY script_example.sh .
RUN chmod +x /script_example.sh
CMD ["/script_example.sh"]
```
***
### Copy files from a container to the local computer
```
docker cp <container_id>:<file_path> <file_path_destination>
```
***
### Delete all the containers, images and volumes
* To delete all containers:
* ```
docker compose rm -f -s -v
```
* To delete all images:
* ```
docker rmi -f $(docker images -aq)
```
* To delete all volumes:
* ```
docker volume rm $(docker volume ls -qf dangling=true)
```
* To delete all containers, images and volumes:
* ```
docker compose rm -f -s -v && docker rmi -f $(docker images -aq) && docker volume rm $(docker volume ls -qf dangling=true)
```
***
### Kill all the Docker processes
* To kill all processes:
* ```
killall Docker && open /Applications/Docker.app
```
***
### Output full logs for all containers
The following command output the full logs for all containers in the file **containers.log**:
```
docker compose logs > containers.log
```
***
## Resources Usage
### Examine containers with size
```
docker ps -s
```
***
### Examine disks usage
* Basic mode
* ```
docker system df
```
* Verbose mode
* ```
docker system df -v
```
***
## Wasted Resources
### Prune the Docker logs
```
docker system prune
```
### Prune the Docker containers
You can use the prune function to delete all stopped containers:
```
docker container prune
```
### Remove unused and untagged local container images
The following is useful if you want to clean up local filesystem:
```
docker image prune
```
### Clean up and delete all unused container images
```
docker image prune -a
```
### Clean up container images based on a given timeframe
To clean up container images created X hours ago, you can use the following template (replace <X> with a number):
```
docker image prune -a --force --filter "until=<X>h"
```
To clean up container images created before a given date, you can use the following template (replace <date> with the complete date):
```
docker image prune -a --force --filter "until=<date>"
```
Note: An example of a complete date would be `2023-01-04T00:00:00`
***
## Command Combinations
### Kill all running containers
```
docker kill $(docker ps -q)
```
***
### Stop all running containers
```
docker stop $(docker ps -a -q)
```
***
### Delete all stopped containers
```
docker rm $(docker ps -a -q)
```
***
### Delete all images
```
docker rmi $(docker images -q)
```
***
### Update and stop a container in a crash-loop
```
docker update restart=no && docker stop
```
***
## References
* Docker Manual - https://docs.docker.com/
* Code Notary - https://codenotary.com/blog/extremely-useful-docker-commands

View File

@@ -0,0 +1,271 @@
<h1>File Transfer</h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [SCP](#scp)
- [File transfer with IPv4](#file-transfer-with-ipv4)
- [File transfer with IPv6](#file-transfer-with-ipv6)
- [Rsync](#rsync)
- [File transfer](#file-transfer)
- [Adjust reorganization of files and folders before running rsync](#adjust-reorganization-of-files-and-folders-before-running-rsync)
- [Automate backup with rsync](#automate-backup-with-rsync)
- [Parameters --checksum and --ignore-times with rsync](#parameters---checksum-and---ignore-times-with-rsync)
- [Trailing slashes with rsync](#trailing-slashes-with-rsync)
- [SFTP](#sftp)
- [SFTP on the Terminal](#sftp-on-the-terminal)
- [SFTP Basic Commands](#sftp-basic-commands)
- [SFTP File Transfer](#sftp-file-transfer)
- [SFTP with FileZilla](#sftp-with-filezilla)
- [Install FileZilla](#install-filezilla)
- [Add a Private Key](#add-a-private-key)
- [FileZilla SFTP Connection](#filezilla-sftp-connection)
- [Questions and Feedback](#questions-and-feedback)
***
## Introduction
Deploying on the TFGrid with tools such as the Playground and Terraform is easy and it's also possible to quickly transfer files between local machine and VMs deployed on 3Nodes on the TFGrid. In this section, we cover different ways to transfer files between local and remote machines.
## SCP
### File transfer with IPv4
* From local to remote, write the following on the local terminal:
* ```
scp <path_to_local_file>/<filename> <remote_username>@<remote_IPv4_address>:/<remote_username>/<path_to_remote_file>/<filename>
```
* From remote to local, you can write the following on the local terminal (more secure):
* ```
scp <remote_username>@<remote_IPv4_address>:/<remote_username>/<path_to_remote_file>/<filename> <path_to_local_file>/<file>
* From remote to local, you can also write the following on the remote terminal:
* ```
scp <path_to_remote_file>/<file> <local_user>@<local_IPv4_address>:/<local_username>/<path_to_local_file>/<filename>
### File transfer with IPv6
For IPv6, it is similar to IPv4 but you need to add `-6` after scp and add `\[` before and `\]` after the IPv6 address.
## Rsync
### File transfer
[rsync](https://rsync.samba.org/) is a utility for efficiently transferring and synchronizing files between a computer and a storage drive and across networked computers by comparing the modification times and sizes of files.
We show here how to transfer files between two computers. Note that at least one of the two computers must be local. This will transfer the content of the source directory into the destination directory.
* From local to remote
* ```
rsync -avz --progress --delete /path/to/local/directory/ remote_user@<remote_host_or_ip>:/path/to/remote/directory
```
* From remote to local
* ```
rsync -avz --progress --delete remote_user@<remote_host_or_ip>:/path/to/remote/directory/ /path/to/local/directory
```
Here is short description of the parameters used:
* **-a**: archive mode, preserving the attributes of the files and directories
* **-v**: verbose mode, displaying the progress of the transfer
* **-z**: compress mode, compressing the data before transferring
* **--progress** tells rsync to print information showing the progress of the transfer
* **--delete** tells rsync to delete files that aren't on the sending side
### Adjust reorganization of files and folders before running rsync
[rsync-sidekick](https://github.com/m-manu/rsync-sidekick) propagates changes from source directory to destination directory. You can run rsync-sidekick before running rsync. Make sure that [Go is installed](#install-go).
* Install rsync-sidekick
* ```
sudo go install github.com/m-manu/rsync-sidekick@latest
```
* Reorganize the files and folders with rsync-sidekick
* ```
rsync-sidekick /path/to/local/directory/ username@IP_Address:/path/to/remote/directory
```
* Transfer and update files and folders with rsync
* ```
sudo rsync -avz --progress --delete --log-file=/path/to/local/directory/rsync_storage.log /path/to/local/directory/ username@IP_Address:/path/to/remote/directory
```
### Automate backup with rsync
We show how to automate file transfers between two computers using rsync.
* Create the script file
* ```
nano rsync_backup.sh
```
* Write the following script with the proper paths. Here the log is saved in the same directory.
* ```
# filename: rsync_backup.sh
#!/bin/bash
sudo rsync -avz --progress --delete --log-file=/path/to/local/directory/rsync_storage.log /path/to/local/directory/ username@IP_Address:/path/to/remote/directory
```
* Give permission
* ```
sudo chmod +x /path/to/script/rsync_backup.sh
```
* Set a cron job to run the script periodically
* Copy your .sh file to **/root**:
```
sudo cp path/to/script/rsync_backup.sh /root
```
* Open the cron file
* ```
sudo crontab -e
```
* Add the following to run the script everyday. For this example, we set the time at 18:00PM
* ```
0 18 * * * /root/rsync_backup.sh
```
### Parameters --checksum and --ignore-times with rsync
Depending on your situation, the parameters **--checksum** or **--ignore-times** can be quite useful. Note that adding either parameter will slow the transfer.
* With **--ignore time**, you ignore both the time and size of each file. This means that you transfer all files from source to destination.
* ```
rsync --ignore-time source_folder/ destination_folder
```
* With **--checksum**, you verify with a checksum that the files from source and destination are the same. This means that you transfer all files that have a different checksum compared source to destination.
* ```
rsync --checksum source_folder/ destination_folder
```
### Trailing slashes with rsync
rsync does not act the same whether you use or not a slash ("\/") at the end of the source path.
* Copy content of **source_folder** into **destination_folder** to obtain the result: **destination_folder/source_folder_content**
* ```
rsync source_folder/ destination_folder
```
* Copy **source_folder** into **destination_folder** to obtain the result: **destination_folder/source_folder/source_folder_content**
* ```
rsync source_folder destination_folder
```
## SFTP
### SFTP on the Terminal
Using SFTP for file transfer on the terminal is very quick since the SSH connection is already enabled by default when deploying workloads on the TFGrid.
If you can use the following command to connect to a VM on the TFGrid:
```
ssh root@VM_IP
```
Then, it means you can use SFTP to access the same VM:
```
sftp root@VM_IP
```
Once in the server via SFTP, you can use the command line to get all the commands with `help` or `?`:
```
help
```
### SFTP Basic Commands
Here are some common commands for SFTP.
| Command | Function |
| --------------------------- | ----------------------------------- |
| bye | Quit sftp |
| cd path | Change remote directory to 'path' |
| help | Display this help text |
| pwd | Display remote working directory |
| lpwd | Print local working directory |
| ls [-1afhlnrSt] [path] | Display remote directory listing |
| mkdir path | Create remote directory |
| put [-afpR] local [remote] | Upload file |
| get [-afpR] remote [local] | Download file |
| quit | Quit sftp |
| rm path | Delete remote file |
| rmdir path | Remove remote directory |
| version | Show SFTP version |
| !command | Execute 'command' in local shell |
### SFTP File Transfer
Using SFTP to transfer a file from the local machine to the remote VM is as simple as the following line:
```
put /local/path/file
```
This will transfer the file in the current user home directory of the remote VM.
To transfer the file in a given directory, use the following:
```
put /local/path/file /remote/path/
```
To transfer a file from the remote VM to the local machine, you can use the command `get`:
```
get /remote/path/file /local/path
```
To transfer (`get` or `put`) all the files within a directory, use the `-r` argument, as shown in the following example
```
get -r /remote/path/to/directory /local/path
```
## SFTP with FileZilla
[FileZilla](https://filezilla-project.org/) is a free and open-source, cross-platform FTP application, consisting of FileZilla Client and FileZilla Server.
It is possible to use FileZilla Client to transfer files between your local machine and a remote VM on the TFGrid.
Since SSH is set, the user basically only needs to add the private key in FileZilla and enter the VM credentials to connect using SFTP in FileZilla.
### Install FileZilla
FileZilla is available on Linux, MAC and Windows on the [FileZilla website](https://filezilla-project.org/download.php?type=client). Simply follow the steps to properly download and install FileZilla Client.
### Add a Private Key
To prepare a connection using FileZilla, you need to add the private key of the SSH key pair.
Simply add the file `id_rsa` in **SFTP**.
- Open FileZilla Client
- Go to **Edit** -> **Settings** -> **Connection** -> **SFTP**
- Then click on **Add key file...**
- Search the `id.rsa` file usually located in `~/.ssh/id_rsa`
- Click on **OK**
### FileZilla SFTP Connection
You can set a connection between your local machine and a remote 3Node with FileZilla by using **root** as **Username** and the VM IP address as **Host**.
- Enter the credentials
- Host
- `VM_IP_Address`
- Username
- `root`
- Password
- As set by the user. Can be empty.
- Port
- `22`
- Click on **Quickconnect**
You can now transfer files between the local machine and the remote VM with FileZilla.
## Questions and Feedback
If you have any questions, you can ask the ThreeFold community for help on the [ThreeFold Forum](http://forum.threefold.io/) or on the [ThreeFold Grid Tester Community](https://t.me/threefoldtesting) on Telegram.

View File

@@ -0,0 +1,8 @@
<h1> Firewall Basics </h1>
In this section, we cover the basic information concerning Firewall uses on Linux, most notably, we give basic commands and information on UFW and Firewalld.
<h2> Table of Contents </h2>
- [UFW Basics](./ufw_basics.md)
- [Firewalld Basics](./firewalld_basics.md)

View File

@@ -0,0 +1,149 @@
<h1>Firewalld Basic Commands</h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Firewalld Basic Commands](#firewalld-basic-commands)
- [Install Firewalld](#install-firewalld)
- [See the Status of Firewalld](#see-the-status-of-firewalld)
- [Enable Firewalld](#enable-firewalld)
- [Stop Firewalld](#stop-firewalld)
- [Start Firewalld](#start-firewalld)
- [Disable Firewalld](#disable-firewalld)
- [Mask Firewalld](#mask-firewalld)
- [Unmask Firewalld](#unmask-firewalld)
- [Add a Service to Firewalld](#add-a-service-to-firewalld)
- [Remove a Service to Firewalld](#remove-a-service-to-firewalld)
- [Remove the Diles of a Service to Firewalld](#remove-the-diles-of-a-service-to-firewalld)
- [See if a Service is Available](#see-if-a-service-is-available)
- [Reload Firewalld](#reload-firewalld)
- [Display the Services and the Open Ports for the Public Zone](#display-the-services-and-the-open-ports-for-the-public-zone)
- [Display the Open Ports by Services and Port Numbers](#display-the-open-ports-by-services-and-port-numbers)
- [Add a Port for tcp](#add-a-port-for-tcp)
- [Add a Port for udp](#add-a-port-for-udp)
- [Add a Port for tcp and udp](#add-a-port-for-tcp-and-udp)
- [References](#references)
## Introduction
We present a quick introduction to [firewalld](https://firewalld.org/), a free and open-source firewall management tool for Linux operating systems. This guide can be useful for users of the TFGrid deploying on full and micro VMs as well as other types of deployment.
## Firewalld Basic Commands
### Install Firewalld
* ```
apt install firewalld -y
```
### See the Status of Firewalld
* ```
firewall-cmd --state
```
### Enable Firewalld
* ```
systemctl enablefirewalld
```
### Stop Firewalld
* ```
systemctl stop firewalld
```
### Start Firewalld
* ```
systemctl start firewalld
```
### Disable Firewalld
* ```
systemctl disable firewalld
```
### Mask Firewalld
* ```
systemctl mask --now firewalld
```
### Unmask Firewalld
* ```
systemctl unmask --now firewalld
```
### Add a Service to Firewalld
* Temporary
* ```
firewall-cmd --add-service=<service_name>
```
* Permanent
* ```
firewall-cmd --add-service=<service_name> --permanent
```
### Remove a Service to Firewalld
* Temporary
* ```
firewall-cmd --remove-service=<service_name>
```
* Permanent
* ```
firewall-cmd --remove-service=<service_name> --permanent
```
### Remove the Diles of a Service to Firewalld
* ```
rm -f /etc/firewalld/services/<service_name>.xml*
```
### See if a Service is Available
* ```
firewall-cmd --info-service=<service_name>
```
### Reload Firewalld
* ```
firewall-cmd --reload
```
### Display the Services and the Open Ports for the Public Zone
* ```
firewall-cmd --list-all --zone=public
```
### Display the Open Ports by Services and Port Numbers
* By services
* ```
firewall-cmd --list-services
```
* By port numbers
* ```
firewall-cmd --list-ports
```
### Add a Port for tcp
* ```
firewall-cmd --zone=public --add-port=<port>/tcp
```
### Add a Port for udp
* ```
firewall-cmd --zone=public --add-port=<port>/udp
```
### Add a Port for tcp and udp
* ```
firewall-cmd --zone=public --add-port=<port>
```
## References
ufw man pages - https://firewalld.org/documentation/man-pages/firewalld.html

View File

@@ -0,0 +1,256 @@
<h1> Uncomplicated Firewall (ufw) Basic Commands</h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Basic Commands](#basic-commands)
- [Install ufw](#install-ufw)
- [Enable ufw](#enable-ufw)
- [Disable ufw](#disable-ufw)
- [Reset ufw](#reset-ufw)
- [Reload ufw](#reload-ufw)
- [Deny Incoming Connections](#deny-incoming-connections)
- [Allow Outgoing Connections](#allow-outgoing-connections)
- [Allow a Specific IP address](#allow-a-specific-ip-address)
- [Allow a Specific IP Address to a Given Port](#allow-a-specific-ip-address-to-a-given-port)
- [Allow a Port for tcp](#allow-a-port-for-tcp)
- [Allow a Port for tcp and udp](#allow-a-port-for-tcp-and-udp)
- [Allow a Subnet to a Given Port](#allow-a-subnet-to-a-given-port)
- [Deny an IP Address](#deny-an-ip-address)
- [Block Incoming Connections to a Network Interface](#block-incoming-connections-to-a-network-interface)
- [Delete a Rule with Number](#delete-a-rule-with-number)
- [Get App Info](#get-app-info)
- [Allow a Specific App](#allow-a-specific-app)
- [References](#references)
## Introduction
We present a quick introduction to [Uncomplicated Firewall (ufw)](https://firewalld.org/), a free and open-source firewall management tool for Linux operating systems. This guide can be useful for users of the TFGrid deploying on full and micro VMs as well as other types of deployment.
## Basic Commands
We show here basic commands to set a firewall on Linux with Uncomplicated Firewall (ufw).
### Install ufw
* Update
* ```
apt update
```
* Install ufw
* ```
apt install ufw
```
### Enable ufw
* ```
ufw enable
``````
### Disable ufw
* ```
ufw disable
```
### Reset ufw
* ```
ufw reset
```
### Reload ufw
* ```
ufw reload
```
### Deny Incoming Connections
* ```
ufw default deny incoming
```
### Allow Outgoing Connections
* ```
ufw default allow outgoing
```
### Allow a Specific IP address
* ```
ufw allow from <IP_Address>
```
### Allow a Specific IP Address to a Given Port
* ```
ufw allow from <IP_Address> to any port <port>
```
### Allow a Port for tcp
* ```
ufw allow <port>/tcp
```
### Allow a Port for udp
* ```
ufw allow <port>/udp
```
### Allow a Port for tcp and udp
* ```
ufw allow <port>
```
### Allow Ports: Examples
Here are some typical examples of ports to allow with ufw:
* Allow SSH (port 22)
* ```
ufw allow ssh
```
* Allow HTTP (port 80)
* ```
ufw allow http
```
* Allow HTTPS (port 443)
* ```
ufw allow https
```
* Allow mysql (port 3306)
* ```
ufw allow 3306
```
### Allow Port Ranges
* Template
* ```
ufw allow <port_range_floor>:<port_range_ceiling>
```
* Example
* ```
ufw allow 6000:6005
```
### Allow a Subnet
* ```
ufw allow from <subnet>
```
### Allow a Subnet to a Given Port
* ```
ufw allow from <subnet> to any port <port>
```
### Deny a Port
* ```
ufw deny <port>
```
### Deny an IP Address
* ```
ufw deny <IP_Address>
```
### Deny a Subnet
* ```
ufw deny from <subnet>
```
### Block Incoming Connections to a Network Interface
* ```
ufw deny in on <network_interface> from <IP_Address>
```
### Check Rules
Use **status** to check the current firewall configurations. Add **verbose** for more details.
* ```
ufw status
```
* ```
ufw status verbose
```
### Check Rules (Numbered)
It can be useful to see the numbering of the rules, to remove more easily a rule for example.
* ```
ufw status numbered
```
### Delete a Rule with Number
It can be useful to see the numbering of the rules, to remove more easily a rule for example.
* ```
ufw delete <rule_number>
```
### Delete a Rule with the Rule Name and Parameters
You can also delete a rule by writing directly the rule name you used to add the rule.
* Template
* ```
ufw delete <rule_name> <rule_parameters>
```
* Example
* ```
ufw delete allow ssh
```
* ```
ufw delete allow 22
```
You can always check the current rules with **ufw status** to see if the rules are properly removed.
### List the Available Profiles Available
* ```
ufw app list
```
This command will give you the names of the apps present on the server. You can then use **ufw app info** to get information on the app, or allow the app with **ufw allow**
### Get App Info
* ```
ufw app info <app_name>
```
### Set ufw in Verbose Mode
* ```
ufw verbose
```
### Allow a Specific App
* Template
* ```
ufw allow "<app_name>"
```
* Example
* ```
ufw allow "NGINX Full"
```
## References
ufw man pages - https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html

View File

@@ -0,0 +1,450 @@
<h1> Git and GitHub Basics </h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Install Git](#install-git)
- [Install on Linux](#install-on-linux)
- [Install on MAC](#install-on-mac)
- [Install on Windows](#install-on-windows)
- [Basic Commands](#basic-commands)
- [Check Git version](#check-git-version)
- [Clone a repository](#clone-a-repository)
- [Clone a single branch](#clone-a-single-branch)
- [Check all available branches](#check-all-available-branches)
- [Check the current branch](#check-the-current-branch)
- [Go to another branch](#go-to-another-branch)
- [Add your changes to a local branch](#add-your-changes-to-a-local-branch)
- [Push changes of a local branch to the remote Github branch](#push-changes-of-a-local-branch-to-the-remote-github-branch)
- [Reverse modifications to a file where changes haven't been staged yet](#reverse-modifications-to-a-file-where-changes-havent-been-staged-yet)
- [Download binaries from Github](#download-binaries-from-github)
- [Resolve conflicts between branches](#resolve-conflicts-between-branches)
- [Download all repositories of an organization](#download-all-repositories-of-an-organization)
- [Revert a push commited with git](#revert-a-push-commited-with-git)
- [Make a backup of a branch](#make-a-backup-of-a-branch)
- [Revert to a backup branch](#revert-to-a-backup-branch)
- [Start over local branch and pull remote branch](#start-over-local-branch-and-pull-remote-branch)
- [Overwrite local files and pull remote branch](#overwrite-local-files-and-pull-remote-branch)
- [Stash command and parameters](#stash-command-and-parameters)
- [Code Editors](#code-editors)
- [VS-Code](#vs-code)
- [VS-Codium](#vs-codium)
- [References](#references)
***
## Introduction
In this section, we cover basic commands and aspects of [GitHub](https://github.com/) and [Git](https://git-scm.com/).
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
GitHub is a platform and cloud-based service for software development and version control using Git, allowing developers to store and manage their code.
***
## Install Git
You can install git on MAC, Windows and Linux. You can consult Git's documentation learn how to [install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
### Install on Linux
* Fedora distribution
* ```
dnf install git-all
```
* Debian-based distribution
* ```
apt install git-all
```
* Click [here](https://git-scm.com/download/linux) for other Linux distributions
### Install on MAC
* With Homebrew
* ```
brew install git
```
### Install on Windows
You can download Git for Windows at [this link](https://git-scm.com/download/win).
***
## Basic Commands
### Check Git version
```
git --version
```
***
### Clone a repository
```
git clone <repository_url>
```
***
### Clone a single branch
```
git clone <repository_url> --branch <branch> --single-branch <folder>
```
***
### Check all available branches
```
git branch -r
```
***
### Check the current branch
```
git branch
```
***
### Go to another branch
```
git checkout <branch_name>
```
***
### Add your changes to a local branch
* Add all changes
* ```
git add .
```
* Add changes of a specific file
* ```
git add <path_to_file>/<file_name>
```
***
### Push changes of a local branch to the remote Github branch
To push changes to Github, you can use the following commands:
* ```
git add .
```
* ```
git commit -m "write your changes here in comment"
```
* ```
git push
```
***
### Count the differences between two branches
Replace **branch1** and **branch2** with the appropriate branch names.
```
git rev-list --count branch1..branch2
```
### See the default branch
```
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
```
***
### Force a push
```
git push --force
```
***
### Merge a branch to a different branch
* Checkout the branch you want to copy content TO
* ```
git checkout branch_name
```
* Merge the branch you want content FROM
* ```
git merge origin/dev_mermaid
```
* Push the changes
* ```
git push -u origin/head
```
***
### Clone completely one branch to another branch locally then push the changes to Github
For this example, we copy **branchB** into **branchA**.
* See available branches
* ```
git branch -r
```
* Go to **branchA**
* ```
git checkout branchA
```
* Copy **branchB** into **branchA**
* ```
git git reset --hard branchB
```
* Force the push
* ```
git push --force
```
***
### The 3 levels of the command reset
* ```
git reset --soft
```
* Bring the History to the Stage/Index
* Discard last commit
* ```
git reset --mixed
```
* Bring the History to the Working Directory
* Discard last commit and add
* ```
git reset --hard
```
* Bring the History to the Working Directory
* Discard last commit, add and any changes you made on the codes
Note 1: If you're using **--hard**, make sure to run git status to verify that your directory is clean, otherwise you will lose your uncommitted changes.
Note 2: The argument **--mixed** is the default option, so **git reset** is equivalent to **git reset --mixed**.
***
### Reverse modifications to a file where changes haven't been staged yet
You can use the following to reverse the modifications of a file that hasn't been staged:
```
git checkout <filename>
```
***
### Download binaries from Github
* Template:
* ```
wget -O <file_name> https://raw.githubusercontent.com/<user_name>/<repository>/<path_to_file>/<file_name>
```
***
### Resolve conflicts between branches
We show how to resolve conflicts in a development branch (e.g. **branch_dev**) and then merging the development branch into the main branch (e.g. **branch_main**).
* Clone the repo
* ```
git clone <repo_url>
```
* Pull changes and potential conflicts
* ```
git pull origin branch_main
```
* Checkout the development branch
* ```
git checkout branch_dev
```
* Resolve conflicts in a text editor
* Save changes in the files
* Add the changes
* ```
git add .
```
* Commit the changes
* ```
git commit -m "your message here"
```
* Push the changes
* ```
git push
```
***
### Download all repositories of an organization
* Log in to gh
* ```
gh auth login
```
* Clone all repositories. Replace <organization> with the organization in question.
* ```
gh repo list <organization> --limit 1000 | while read -r repo _; do
gh repo clone "$repo" "$repo"
done
```
***
### Revert a push commited with git
* Find the commit ID
* ```
git log -p
```
* Revert the commit
* ```
git revert <commit_ID>
```
* Push the changes
* ```
git push
```
***
### Make a backup of a branch
```
git clone -b <branch_name> --single-branch /<path_to_repo>/<repo_name>.git
```
***
### Revert to a backup branch
* Checkout the branch you want to update (**branch**)
* ```
git checkout <branch>
```
* Do a reset of your current branch based on the backup branch
* ```
git reset --hard <backup_branch>
```
***
### Start over local branch and pull remote branch
To start over your local branch and pull the remote branch to your working environment, thus ignoring local changes in the branch, you can do the following:
```
git fetch
git reset --hard
git pull
```
Note that this will not work for untracked and new files. See below for untracked and new files.
***
### Overwrite local files and pull remote branch
This method can be used to overwrite local files. This will work even if you have untracked and new files.
* Save local changes on a stash
* ```
git stash --include-untracked
```
* Discard local changes
* ```
git reset --hard
```
* Discard untracked and new files
* ```
git clean -fd
```
* Pull the remote branch
* ```
git pull
```
Then, to delete the stash, you can use **git stash drop**.
***
### Stash command and parameters
The stash command is used to record the current state of the working directory.
* Stash a branch (equivalent to **git stash push**)
* ```
git stash
```
* List the changes in the stash
* ```
git stash list
```
* Inspect the changes in the stash
* ```
git stash show
```
* Remove a single stashed state from the stash list and apply it on top of the current working tree state
* ```
git stash pop
```
* Apply the stash on top of the current working tree state without removing the state from the stash list
* ```
git stash apply
```
* Drop a stash
* ```
git stash drop
```
***
## Code Editors
There are many code editors that can work well when working with git.
### VS-Code
[VS-Code](https://code.visualstudio.com/)is a source-code editor made by Microsoft with the Electron Framework, for Windows, Linux and macOS.
To download VS-Code, visit their website and follow the given instructions.
### VS-Codium
[VS-Codium ](https://vscodium.com/) is a community-driven, freely-licensed binary distribution of Microsofts editor VS Code.
There are many ways to install VS-Codium. Visit the [official website](https://vscodium.com/#install) for more information.
* Install on MAC
* ```
brew install --cask vscodium
```
* Install on Linux
* ```
snap install codium --classic
```
* Install on Windows
* ```
choco install vscodium
```
***
## References
Git Documentation - https://git-scm.com/docs/user-manual

View File

@@ -0,0 +1,32 @@
![](./img/tft.png)
# Buying and Storing TFTs
If you're looking to navigate the [TFT Ecosystem](https://library.threefold.me/info/manual/#/tokens/threefold__tft_ecosystem), this collection of tutorials and manuals is here to help. Learn how to purchase, trade, and securely store your TFTs with ease.
For a comprehensive introduction to TFT, we recommend exploring the [TFT Home Section in the ThreeFold Library](https://library.threefold.me/info/threefold#/tokens/threefold__tokens_home).
## Manuals on How to Buy TFT
Discover step-by-step instructions on buying and storing TFTs across different platforms. Our manuals cover:
- [BSC - Pancake Swap](https://library.threefold.me/info/manual/#/tokens/threefold__tft_binance_defi)
- [BSC - 1inch.io](https://library.threefold.me/info/manual/#/tokens/threefold__tft_1inch)
- [GetTFT.com](https://gettft.com/gettft/#how-it-works)
- [Albedo Wallet](https://library.threefold.me/info/manual/#/tokens/threefold__albedo)
- [Solar Wallet](https://library.threefold.me/info/manual/#/tokens/threefold__solar_wallet)
- [Lobstr Wallet](https://library.threefold.me/info/manual/#/tokens/threefold__lobstr_wallet)
- [StellarTerm](https://library.threefold.me/info/manual/#/tokens/threefold__tft_stellarterm)
- [Interstellar](https://library.threefold.me/info/manual/#/tokens/threefold__tft_interstellar)
- [BTC-Alpha Exchange](https://library.threefold.me/info/manual/#/tokens/threefold__tft_btc_alpha)
- [StellarX Exchange](https://library.threefold.me/info/manual/#/tokens/threefold__tft_stellarx)
- [TF Live Desk (OTC)](https://library.threefold.me/info/manual/#/tokens/threefold__tft_otc)
- [Mazraa (Farmers)](https://library.threefold.me/info/manual/#/tokens/threefold__tft_mazraa)
- [Bettertoken (Farmers)](https://library.threefold.me/info/manual/#/tokens/threefold__tft_bettertoken)
## Other Related Manuals on TFT
- [Store TFTs on Hardware Wallets](../threefold_token/storing_tft/hardware_wallet.md)
- [Storing TFTs on TF Connect App](../threefold_token/storing_tft/tf_connect_app.md)
- [TFT Bridges](../threefold_token/tft_bridges/tft_bridges.md)
- [TFChain-Stellar Bridge](../threefold_token/tft_bridges/tfchain_stellar_bridge.md)
- [BSC-Stellar Bridge](../threefold_token/tft_bridges/bsc_stellar_bridge.md)
- [Ethereum-Stellar Bridge](../threefold_token/tft_bridges/tft_ethereum/tft_ethereum.md)

View File

@@ -0,0 +1,19 @@
# ThreeFold Grid Concepts
On this section we will explore the fundamental principles and concepts behind the ThreeFold Grid. This comprehensive resource will take you on a journey through the core technologies that underpin the ThreeFold Grid, empowering you to understand and leverage the decentralized nature of this groundbreaking infrastructure.
## Learn the Basics
- [TFGrid Primitives](./grid_primitives.md)
- [TFGrid Component List](./grid3_components.md)
- [ThreeFold's Infrastructure as Code (IaC)](./grid3_iac.md)
- [Proof of Utilization](./proof_of_utilization.md)
- [Contract Grace Period](./contract_grace_period.md)
- [What's New on TFGrid v3.x](./grid3_whatsnew.md)
- [TFChain](./tfchain.md)
- [TFGrid by Design](./tfgrid_by_design.md)
## Take an In-Depth Looks
- [TF Technology](../technology/technology_toc.md)
- [What's New on TFGrid v3.x](./grid3_whatsnew.md)

View File

@@ -0,0 +1,70 @@
# Grace Period: Ensuring Seamless Operations
__The Grace Period__ serves as a crucial aspect of the ThreeFold ecosystem, providing a safety net for users when their funds run low. Let's explore the key details in a user-friendly manner:
## What is the Grace Period?
When a contract owner exhausts their wallet funds required for their deployment, the contract enters a Grace Period. During this time, the deployment becomes temporarily inaccessible to the user. However, once the wallet is replenished with TFT (ThreeFold Tokens), the contract resumes normal operation.
It's important to note that if the Grace Period expires (typically after 2 weeks), the user's deployment and data will be deleted from the node.
## How does it work?
When a ``twin`` (a user account) depletes its funds, all linked contracts enter a Grace Period during the next billing cycle.
By default, the Grace Period lasts for 14 days. Throughout this period, users cannot utilize any deployments associated with the twin.
Additionally, users cannot delete contracts during the Grace Period, whether they are related to nodes, names, or rent.
Workloads become usable again when the twin is funded with the required amount of TFT.
If the twin is not funded during the Grace Period, the contracts will be automatically deleted after this period.
## When does the Grace Period kick in?
The Grace Period commences when the twin balance falls below the minimum required for the respective deployments or workloads.
## How to resume your workloads:
To regain access to workloads within the Grace Period, it is essential to fund your twin with sufficient TFT tokens. This action ensures the resumption of operations and allows you to continue your work seamlessly.
The Grace Period feature acts as a safeguard, providing users with the opportunity to manage their funds effectively and maintain uninterrupted operations within the ThreeFold ecosystem.
## Grace Period Contract State: Easily Accessible Information
Checking the state of your contracts within the ``Grace Period`` is simple and convenient. Here's how you can do it:
### Grid Weblets:
The Contracts tab on the Playground provides an easy way to monitor your contracts. Here, you can find comprehensive details about the desired ``contract``, including its ``State`` and ``Expiration date`` if the node is in the Grace Period.
![](./img/manual__grace_period_weblets.png)
### ThreeFold Grid Proxy:
Access the Grace Period contracts through the following endpoint:
``https://gridproxy.grid.tf/contracts?state=GracePeriod&twin_id=<YOUR_TWIN_ID>``
![](./img/manual__grace_period_gridproxy.png)
This allows you to retrieve information about contracts that are currently in the Grace Period.
## TFChain GraphQL:
You can also check the Contract State using [__GraphQL queries__](https://graphql.grid.tf/graphql). Depending on the contract type, utilize the appropriate queries available for ``Node Contract`` and ``Rent Contract``.
### Node Contract
![](./img/manual__grace_period_graphql_node.png)
### Rent Contract
These queries provide insights into the status and details of the contracts.
![](./img/manual__grace_period_graphql_rent.png)
## PolkadotJS UI:
Another option is to check the Contract state using the [__PolkadotJS UI__](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Ftfchain.grid.tf#/chainstate). Simply navigate to ``chainstate`` -> ``SmartContractModule`` -> ``Contracts(ID_OF_CONTRACT)`` to view the relevant contract information.
![](./img/manual__grace_period_polkadot_ui.png)
With these user-friendly options at your disposal, you can effortlessly track and monitor the state of your contracts within the Grace Period.

View File

@@ -0,0 +1,351 @@
<h1> TFGrid Component List (Last Updated May 2023) </h1>
<h2> Table of Contents </h2>
- [Introduction](#introduction)
- [TFGrid Components (Alphabetical Orders)](#tfgrid-components-alphabetical-orders)
- [TF Admin Portal](#tf-admin-portal)
- [AtomicSwap](#atomicswap)
- [Builders](#builders)
- [TF Capacity Explorer](#tf-capacity-explorer)
- [Cloud Container](#cloud-container)
- [Cloud Console](#cloud-console)
- [TF Dashboard](#tf-dashboard)
- [Farm Management](#farm-management)
- [TF Farming Calculator](#tf-farming-calculator)
- [Farmerbot](#farmerbot)
- [Freeflow Twin Main App or Freeflow Connect (previously Uhuru)](#freeflow-twin-main-app-or-freeflow-connect-previously-uhuru)
- [GetTFT Shop](#gettft-shop)
- [TF Grid3 Client TS](#tf-grid3-client-ts)
- [TF Grid Proxy](#tf-grid-proxy)
- [TF Grid-SDK-Go](#tf-grid-sdk-go)
- [TF Grid-SDK-TS](#tf-grid-sdk-ts)
- [TF Grid Simulator](#tf-grid-simulator)
- [TF Grid Stats](#tf-grid-stats)
- [JS-SDK](#js-sdk)
- [JS-NG](#js-ng)
- [Itenv\_TFGridv2](#itenv_tfgridv2)
- [Libp2p-relay](#libp2p-relay)
- [Minting v3](#minting-v3)
- [Node-Pilot](#node-pilot)
- [Oauth-Proxy](#oauth-proxy)
- [TF Planetary Network Tool](#tf-planetary-network-tool)
- [TF Playground and Weblets](#tf-playground-and-weblets)
- [QSFS](#qsfs)
- [Reliable Message Bus Relay (RMB-RS)](#reliable-message-bus-relay-rmb-rs)
- [RMB-SDK-Go](#rmb-sdk-go)
- [Terraform Provider](#terraform-provider)
- [TCP-Router](#tcp-router)
- [TFChain](#tfchain)
- [TFChain Activation Service](#tfchain-activation-service)
- [TFChain Explorer](#tfchain-explorer)
- [TFChain Block Explorer](#tfchain-block-explorer)
- [TFChain-GraphQL](#tfchain-graphql)
- [TFChain TFT Bridge](#tfchain-tft-bridge)
- [3Bot or Threebot](#3bot-or-threebot)
- [Threebot-deployer or 3Bot Deployer](#threebot-deployer-or-3bot-deployer)
- [ThreeFold Wallet](#threefold-wallet)
- [ThreeFold Connect App](#threefold-connect-app)
- [Zinit](#zinit)
- [0-OS or ZOS](#0-os-or-zos)
- [0-bootstrap](#0-bootstrap)
- [0-Bus or ZBus](#0-bus-or-zbus)
- [0-DB](#0-db)
- [0-DB-FS](#0-db-fs)
- [0-Flist](#0-flist)
- [0-Hub](#0-hub)
- [0-InitramFS](#0-initramfs)
- [0-stor\_v2](#0-stor_v2)
***
## Introduction
This list serves as a comprehensive glossary that provides an overview of the various components and tools within the ThreeFold Grid ecosystem. It serves as a valuable reference for developers, stakeholders, and enthusiasts who want to gain a deeper understanding of the building blocks that power the ThreeFold Grid.
The glossary covers a wide range of components, including infrastructure elements, software tools, protocols, and services that are integral to the functioning and expansion of the grid. From blockchain-based technologies like TFChain and TFGrid Explorer to networking components like RMB-RS and Zinit, the TFGrid Component List offers concise explanations of each component's purpose and functionality.
***
## TFGrid Components (Alphabetical Orders)
### TF Admin Portal
A tool within TF Dashboard provided by ThreeFold for administrators to manage and monitor various aspects of the ThreeFold Grid ecosystem. It serves as a central hub where administrators can access and control different components of the grid, including nodes, capacity, workloads, and user management.
The TF Admin Portal provides a comprehensive set of tools and features to configure, deploy, and monitor resources within the grid, ensuring efficient management and utilization of the decentralized infrastructure. Through the portal, administrators can track the performance and health of the grid, allocate resources, manage user permissions, and gain insights into the grid's utilization and usage patterns.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/tfgrid_dashboard)
### AtomicSwap
A component within the ThreeFold ecosystem that refers to Atomic Swaps, a cryptographic technology that enables the peer-to-peer exchange of cryptocurrencies or digital assets between different blockchain networks without the need for intermediaries. Atomic swaps use smart contracts to facilitate trustless and secure transactions, ensuring that both parties involved in the swap fulfill their obligations. By leveraging atomic swaps, users can seamlessly exchange digital assets across different blockchains, fostering interoperability and eliminating the reliance on centralized exchanges.
> [Component Repository on Github](https://github.com/threefoldtech/atomicswap)
### Builders
A Docker-based component within the ThreeFold Grid ecosystem. This particular aspect of Builders involves leveraging Docker containers to package and deploy applications and services on the ThreeFold Grid. Docker is an open-source platform that enables developers to build, package, and distribute applications as lightweight, portable containers.
By using Builders as a Docker-based component, developers can easily containerize their applications, ensuring consistency and compatibility across different environments. This approach simplifies the deployment process, allowing developers to quickly deploy their applications on the ThreeFold Grid with minimal configuration and setup. The Builders component takes care of managing the underlying infrastructure and orchestrating the deployment of Docker containers, making it an efficient and convenient way to leverage the capabilities of the ThreeFold Grid for hosting and running applications.
> [Component Repository on Github](https://github.com/threefoldtech/builders)
### TF Capacity Explorer
A tool within the TF Dashboard provided by ThreeFold that allows users to explore and analyze the available capacity within the ThreeFold Grid. It provides insights into the distributed computing resources, including storage, processing power, and network bandwidth, that are available for utilization within the ThreeFold network.
The TF Capacity Explorer enables users to discover and assess the capacity of different nodes and data centers within the ThreeFold Grid, helping them make informed decisions when deploying their workloads or applications.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/tfgrid_dashboard)
### Cloud Container
A containerization technology provided by ThreeFold that enables the deployment and management of applications and services in a cloud environment. It offers a lightweight and isolated execution environment for running applications, ensuring scalability, portability, and efficient resource utilization.
With ThreeFold's Cloud Container, developers and organizations can package their applications along with their dependencies and configurations, making it easier to deploy and manage them in a cloud-native manner. The Cloud Container technology provides features such as automated scaling, load balancing, and resource allocation, allowing for efficient utilization of computing resources and optimal performance of applications.
> [Component Repository on Github](https://github.com/threefoldtech/cloud-container)
### Cloud Console
A web-based graphical user interface (GUI) provided by ThreeFold that allows users to manage and control their cloud infrastructure and resources. It serves as a central hub for managing various aspects of the cloud environment, including virtual machines, storage, networking, and other services.
Through the cloud console, users can perform a wide range of tasks, such as provisioning and configuring virtual machines, managing storage volumes, creating and managing networks, monitoring resource usage, and accessing logs and metrics. It provides an intuitive and user-friendly interface that simplifies the management and administration of the cloud infrastructure.
> [Component Repository on Github](https://github.com/threefoldtech/cloud-console)
### TF Dashboard
A Graphical user interface (GUI) provided by ThreeFold for users to access and manage their ThreeFold Grid resources. It serves as a centralized control panel where users can monitor and control various aspects of their infrastructure, including their deployed workloads, storage capacity, network connectivity, and overall system health. The TF Dashboard provides real-time statistics, logs, and metrics to help users gain insights into the performance and utilization of their resources. It also offers tools for managing user accounts, configuring security settings, and accessing support and documentation.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/tfgrid_dashboard)
### Farm Management
A set of tools, processes, and functionalities provided by ThreeFold to manage and operate farms within the ThreeFold Grid. Farms are the physical locations where ThreeFold Farmers deploy and maintain the infrastructure that powers the decentralized network. TF Farm Management offers a comprehensive suite of features that enable farmers to efficiently manage their resources, monitor the health and performance of their infrastructure, and handle various administrative tasks. This includes functionalities such as capacity allocation, monitoring and reporting tools, farmer reputation management, billing and invoicing systems, and overall farm administration.
Note: This is a feature that involves multiple component repositories. It is listed here to give a complete picture of ThreeFold's component list.
### TF Farming Calculator
A tool provided by ThreeFold that allows users to estimate and calculate potential earnings from farming on the ThreeFold Grid. Farming refers to the process of providing computing resources, such as storage and processing power, to the ThreeFold Grid and earning tokens in return. The tf-farming-calculator takes into account various factors, including the amount of resources contributed, the duration of farming, and the current market conditions, to provide users with an estimate of their potential earnings in terms of ThreeFold Tokens (TFT).
> [Component Repository on Github](https://github.com/threefoldtech/tf-farming-calculator)
### Farmerbot
A software tool developed by ThreeFold that serves as a management and monitoring system for ThreeFold farmers. It is designed to automate various tasks related to operating and managing the ThreeFold Grid infrastructure. The TF Farmerbot helps farmers to efficiently manage their resources, including storage capacity, compute power, and network bandwidth. It provides real-time monitoring of the farmer's nodes, ensuring optimal performance and availability.
> [Component Repository on Github](https://github.com/threefoldtech/farmerbot)
### Freeflow Twin Main App or Freeflow Connect (previously Uhuru)
FFTwin is a component of the ThreeFold ecosystem that serves as the main interface for users to access and utilize the features of Freeflow Twin. Freeflow Twin is a decentralized communication and collaboration platform developed by ThreeFold.
The Twin Main App allows users to securely communicate, share files, and collaborate with others in a decentralized manner, ensuring privacy and data sovereignty. Users can create chat channels, join communities, and engage in real-time messaging with end-to-end encryption. The app also supports file sharing, voice and video calls, and other collaborative features. With the Freeflow Twin Main App, users can experience a decentralized and secure communication platform that empowers them to connect and collaborate with others while maintaining control over their data.
> [Component Repository on Github](https://github.com/threefoldtech/freeflow_twin_main_app)
### GetTFT Shop
An official, online platform provided by ThreeFold where users can purchase ThreeFold Tokens (TFT) directly. It serves as a dedicated marketplace for individuals and organizations to buy TFT tokens using various payment methods. The GetTFT Shop ensures a seamless and user-friendly experience for acquiring TFT, which is the native cryptocurrency of the ThreeFold ecosystem.
Note: This repository is private. You can visit the GetTFT Shop [here](https://gettft.com/gettft/shop/).
### TF Grid3 Client TS
A software component that serves as a client library for interacting with the Grid3 platform. It provides developers with a set of tools, functions, and interfaces to communicate with the ThreeFold Grid and utilize its resources. The Grid3 Client TS allows users to perform various operations, such as creating and managing virtual machines, deploying applications, accessing storage services, and interacting with the decentralized network. It acts as a bridge between developers and the ThreeFold Grid, enabling them to leverage the platform's decentralized infrastructure and harness its capabilities programmatically.
### TF Grid Proxy
A fundamental component which serves as a gateway that allows external applications and users to interact with the grid. Acting as a bridge between the decentralized infrastructure of the ThreeFold Grid and external networks, GridProxy facilitates seamless communication and integration. It provides a standardized interface for accessing and managing resources within the grid, enabling developers, businesses, and users to leverage the power and scalability of the ThreeFold Grid in their applications and workflows. By abstracting the complexities of the grid infrastructure, GridProxy simplifies the process of interacting with the grid, making it more accessible and user-friendly.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/tfgridclient_proxy)
### TF Grid-SDK-Go
ThreeFold Grid Software Development Kit (SDK) for the Go programming language. It is a collection of tools, libraries, and APIs provided by ThreeFold to facilitate the development and integration of applications with the ThreeFold Grid. The TFGrid-SDK-Go allows developers to interact with the ThreeFold Grid infrastructure, such as provisioning and managing compute resources, accessing storage, and interacting with blockchain-based services. It provides a standardized and efficient way to leverage the features and capabilities of the ThreeFold Grid within Go applications.
> [Component Repository on Github](https://github.com/threefoldtech/tfgrid-sdk-go)
### TF Grid-SDK-TS
ThreeFold Grid Software Development Kit (SDK) for TypeScript. It is a set of tools, libraries, and APIs provided by ThreeFold to simplify the development and integration of applications with the ThreeFold Grid. The TFGrid-SDK-TS enables developers to interact with the ThreeFold Grid infrastructure, such as provisioning and managing compute resources, accessing storage, and interacting with the blockchain-based services. It provides a standardized and convenient way to leverage the features and capabilities of the ThreeFold Grid within TypeScript applications.
> [Component Repository on Github](https://github.com/threefoldtech/tfgrid-sdk-ts)
### TF Grid Simulator
A component or tool within the ThreeFold ecosystem that allows for the simulation of the ThreeFold Grid infrastructure. It provides a simulated environment where users can test and evaluate the behavior and performance of the grid without the need for actual hardware or network resources. The tfgrid_simulator mimics the functionalities of the real ThreeFold Grid, enabling users to experiment with various configurations, scenarios, and workloads. This simulation tool is valuable for developers, administrators, and users who want to understand and optimize the behavior of the ThreeFold Grid, test applications, and evaluate the impact of different factors on grid performance. It helps in fine-tuning the grid setup and ensuring optimal resource allocation and utilization.
> [Component Repository on Github](https://github.com/threefoldtech/tfgrid_simulator)
### TF Grid Stats
A component or tool within the ThreeFold ecosystem that is designed to gather and provide statistics and metrics related to the ThreeFold Grid. It collects data on various aspects of the grid, such as the number of active nodes, their capacities, network performance, usage patterns, and other relevant information. tfgrid_stats allows users and administrators to monitor the health and performance of the grid, track its growth and utilization, and make informed decisions based on the collected data.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/tfgrid_stats)
### JS-SDK
A software development kit (SDK) provided by ThreeFold that enables developers to interact with and utilize the ThreeFold Grid infrastructure using JavaScript. It provides a set of libraries, tools, and APIs that simplify the integration and interaction with various ThreeFold services and functionalities.
With the JS-SDK, developers can programmatically manage and deploy resources, interact with the ThreeFold Grid's decentralized storage, perform transactions on the ThreeFold Chain blockchain, and access other platform features. The JS-SDK empowers developers to build decentralized applications (dApps), create custom automation scripts, and leverage the capabilities of the ThreeFold Grid using the familiar JavaScript programming language.
> [Component Repository on Github](https://github.com/threefoldtech/js-sdk)
### JS-NG
JavaScript Next-Generation (js-ng) framework, which is a modern and advanced framework for building web applications using JavaScript. It provides developers with a set of tools, libraries, and utilities to streamline the development process and create high-performance, scalable, and maintainable web applications. The js-ng framework incorporates the latest features and best practices of JavaScript, allowing developers to write clean and efficient code. It offers a modular architecture, allowing for easy integration of third-party libraries and extensions.
With js-ng, developers can build interactive user interfaces, handle data management, perform client-server communication, and implement various functionalities required for robust web applications. The framework promotes code reusability, testability, and code organization, making it an ideal choice for developing modern web applications.
> [Component Repository on Github](https://github.com/threefoldtech/js-ng)
### Itenv_TFGridv2
The development and testing environment for the TFGrid v2, which is the second version of the ThreeFold Grid. It is a comprehensive set of tools, configurations, and resources that enable developers to create, test, and deploy applications on the ThreeFold Grid infrastructure. The itenv_tfgridv2 environment provides developers with the necessary tools and utilities to set up a local development environment that closely resembles the production environment of the ThreeFold Grid. It includes various components such as virtual machines, containers, networking configurations, and monitoring tools, all specifically tailored for the development and testing of applications on the ThreeFold Grid.
Note: This repository is private.
### Libp2p-relay
A component within the ThreeFold ecosystem that refers to the libp2p relay functionality. libp2p is a modular networking stack that allows peer-to-peer communication and data transfer between nodes in a decentralized network. The libp2p-relay component specifically focuses on providing relay services, which enable nodes that are behind firewalls or NATs (Network Address Translators) to establish direct connections with other nodes in the network. This relaying functionality helps overcome network obstacles and facilitates seamless communication between nodes, ensuring that the ThreeFold Grid operates efficiently and nodes can interact with each other effectively.
> [Component Repository on Github](https://github.com/threefoldtech/libp2p-relay)
### Minting v3
The third version of the ThreeFold Token (TFT) minting process. It is a protocol implemented by ThreeFold to create new TFT tokens and manage the token supply. TF Minting v3 incorporates various features and improvements over its previous versions to enhance the functionality and security of token creation. It involves the issuance of new TFT tokens according to predefined rules and algorithms, such as token distribution, inflation rates, and token unlocking schedules. TF Minting v3 ensures a fair and transparent distribution of tokens while maintaining the integrity and stability of the ThreeFold ecosystem.
> [Component Repository on Github](https://github.com/threefoldtech/minting_v3)
### Node-Pilot
A software package provided by ThreeFold for running and managing individual nodes on the ThreeFold Grid. It is designed to enable users to set up and operate their own decentralized infrastructure nodes. TFNode-Pilot provides the necessary tools and functionality to deploy, configure, and monitor nodes, allowing users to contribute their computing resources to the ThreeFold Grid and participate in the decentralized ecosystem.
With TFNode-Pilot, users can easily transform their hardware into powerful nodes that contribute to the storage, compute, and networking capabilities of the ThreeFold Grid. The software package includes features such as node management, resource monitoring, security measures, and integration with other components of the ThreeFold ecosystem.
> [Component Repository on Github](https://github.com/threefoldtech/node-pilot-light)
### Oauth-Proxy
A component specifically developed by ThreeFold to enhance security and facilitate the authentication process for accessing ThreeFold services and resources. It acts as a middleware between users, applications, and the ThreeFold infrastructure, implementing the OAuth protocol. By using the oauth-proxy, applications can securely obtain authorization to access protected resources on the ThreeFold network without directly handling user credentials. The oauth-proxy handles the authentication flow, obtaining consent from users, and issuing access tokens to authorized applications. This helps ensure that access to ThreeFold's services and resources is controlled and secure, protecting user data and privacy.
> [Component Repository on Github](https://github.com/threefoldtech/oauth-proxy)
### TF Planetary Network Tool
A software application or platform that provides users with the necessary tools and functionalities to interact with and utilize the ThreeFold Planetary Network. The ThreeFold Planetary Network is a decentralized and distributed infrastructure network that spans across the globe. It is built on the principles of autonomy, neutrality, and sustainability. The network consists of a vast number of interconnected computing resources, including servers, storage devices, and networking equipment, which are owned and operated by individuals and organizations called farmers.
> [Component Repository on Github](https://github.com/threefoldtech/planetary_network)
### TF Playground and Weblets
TF Playground and TF Weblets are two interconnected components of the ThreeFold ecosystem. TF Playground is a user-friendly web-based interface that serves as a sandbox environment for developers, allowing them to experiment, test, and deploy their applications on the ThreeFold Grid. It provides an intuitive interface where users can write, compile, and execute code, explore various programming languages and frameworks, and interact with the ThreeFold infrastructure.
TF Weblets, on the other hand, are modular, lightweight applications that run on the ThreeFold Grid. They are designed to be decentralized, secure, and easily deployable, enabling users to create and deploy their own web-based services and applications on the ThreeFold network.
> [Component Repository on Github (Archived)](https://github.com/threefoldtech/grid_weblets)
### QSFS
It is ThreeFold's innovative storage solution designed to address the security challenges posed by quantum computing. QSFS employs advanced cryptographic techniques that are resistant to attacks from quantum computers, ensuring the confidentiality and integrity of stored data. By utilizing quantum-resistant algorithms, QSFS offers long-term data protection, even in the face of quantum threats. This technology is crucial in a future where quantum computers could potentially break traditional encryption methods. With ThreeFold's QSFS, users can have peace of mind knowing that their data is safeguarded against emerging quantum computing risks, reinforcing the security and resilience of the ThreeFold ecosystem.
> [Component Repository on Github](https://github.com/threefoldtech/quantum-storage)
### Reliable Message Bus Relay (RMB-RS)
A component or system that facilitates the reliable and secure transfer of messages between different entities or systems within the ThreeFold ecosystem. It acts as a relay or intermediary, ensuring that messages are delivered accurately and efficiently, even in the presence of network disruptions or failures. The RMB-RS employs robust protocols and mechanisms to guarantee message reliability, integrity, and confidentiality. It plays a crucial role in enabling seamless communication and data exchange between various components, applications, or nodes within the ThreeFold network, enhancing the overall reliability and performance of the system.
> [Component Repository on Github](https://github.com/threefoldtech/rmb-rs)
### RMB-SDK-Go
Software development kit (SDK) for interacting with the Reliable Message Bus (RMB) in the Go programming language. The Reliable Message Bus is a messaging system used within the ThreeFold ecosystem to enable reliable and secure communication between different components and services. The rmb-sdk-go provides a set of tools, libraries, and APIs that developers can use to integrate their Go applications with the RMB infrastructure. It simplifies the process of sending and receiving messages, managing subscriptions, and handling the reliability and security aspects of messaging within the ThreeFold environment.
> [Component Repository on Github](https://github.com/threefoldtech/rmb-sdk-go)
### Terraform Provider
A software tool that integrates with the popular infrastructure-as-code platform, Terraform. It enables users to provision and manage resources on the ThreeFold Grid using Terraform's declarative configuration language. The provider acts as a bridge between Terraform and the ThreeFold Grid, allowing users to define and deploy infrastructure components such as virtual machines, storage, and networking resources with ease. This integration simplifies the process of building and managing infrastructure on the ThreeFold Grid, offering users the familiar and powerful capabilities of Terraform while leveraging the decentralized and scalable nature of the ThreeFold technology.
> [Component Repository on Github](https://github.com/threefoldtech/terraform-provider-grid)
### TCP-Router
A component of the ThreeFold technology stack that acts as a TCP (Transmission Control Protocol) router and load balancer. It serves as a network gateway for incoming TCP connections, routing them to the appropriate destinations based on predefined rules and configurations. The TCP-Router component is responsible for distributing incoming network traffic across multiple backend services or nodes, ensuring efficient load balancing and high availability. It helps optimize network performance by evenly distributing the workload and preventing any single node from being overwhelmed. By managing and balancing TCP connections, tcprouter contributes to the overall scalability, reliability, and performance of applications running on the ThreeFold Grid.
> [Component Repository on Github](https://github.com/threefoldtech/tcprouter)
### TFChain
A blockchain developed by the ThreeFold Foundation. It serves as the underlying technology for managing the ThreeFold Grid. TFChain is built on Parity Substrate. It is responsible for storing information related to the ThreeFold Grid, including identity information of entities, 3Node and farmer details, reputation information, digital twin registry, and more. TFChain also acts as the backend for the TFChain database and supports smart contracts for provisioning workloads on top of the ThreeFold Grid.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain)
### TFChain Activation Service
A component within the ThreeFold ecosystem that facilitates the activation of TFChain accounts. TFChain is a blockchain developed by ThreeFold that serves as the backbone of the ThreeFold Grid. The Activation Service provides the necessary infrastructure and processes to activate and onboard users onto the TFChain network. It ensures that users can securely create and manage their TFChain accounts, including generating cryptographic keys, validating user identities, and enabling the activation of TFChain functionalities.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain_activation_service)
### TFChain Explorer
A web-based tool that allows users to explore and interact with the TFChain blockchain. It provides a graphical interface where users can view transaction history, account balances, smart contracts, and other blockchain-related information. The TFChain Explorer offers transparency and visibility into the TFChain ecosystem, enabling users to track transactions, verify balances, and monitor the overall health of the network.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain_explorer)
### TFChain Block Explorer
A web-based tool provided by ThreeFold that allows users to explore and interact with the TFChain blockchain. It provides a user-friendly interface to browse through blocks, transactions, and addresses on the TFChain network. Users can view detailed information about individual blocks and transactions, including timestamps, transaction amounts, and involved addresses. The block explorer also enables searching for specific transactions or addresses, making it easier to track and verify transactions on the TFChain blockchain. With the TFChain Block Explorer, users can gain transparency and visibility into the TFChain network, facilitating better understanding and analysis of blockchain activities.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain_block_explorer)
### TFChain-GraphQL
The integration of GraphQL, a query language for APIs, with TFChain, the blockchain technology used by ThreeFold. It enables developers and users to interact with the TFChain blockchain using GraphQL queries and mutations. GraphQL provides a flexible and efficient way to retrieve and manipulate data from the TFChain blockchain, allowing for customized and precise data retrieval. With TFChain-GraphQL, users can easily query blockchain information, such as transaction details, account balances, or smart contract data, and perform mutations, such as submitting transactions or updating contract states.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain_graphql)
### TFChain TFT Bridge
The bridge mechanism that enables the conversion of TFT tokens between different blockchain networks, specifically between the ThreeFold Chain (TFChain) and other blockchain networks such as Ethereum or Stellar. The TFChain TFT Bridge allows TFT tokens to be transferred seamlessly and securely across different blockchain platforms, maintaining their value and integrity. This bridge plays a crucial role in interoperability, enabling users to leverage TFT tokens on multiple blockchain networks, unlocking new possibilities for decentralized applications and token ecosystems.
> [Component Repository on Github](https://github.com/threefoldtech/tfchain_tft_bridge)
### 3Bot or Threebot
3Bot is a component of the ThreeFold ecosystem that refers to a personal digital assistant. It is a software entity that acts as a virtual representation of an individual or organization, providing various services and performing tasks on their behalf. The 3Bot is designed to be decentralized and secure, running on the ThreeFold Grid infrastructure. It can handle functions such as managing personal data, interacting with other digital entities, executing transactions, and offering a range of services through its customizable capabilities. The 3Bot component enables individuals and organizations to have their own private and secure digital assistant, tailored to their specific needs and preferences.
Note: This is a feature that involves multiple component repositories. It is listed here to give a complete picture of ThreeFold's component list.
### Threebot-deployer or 3Bot Deployer
A tool provided by ThreeFold that facilitates the deployment of ThreeFold's ThreeBot applications. A ThreeBot is a personal digital assistant that can perform various tasks and provide services to users. The threebot-deployer simplifies the process of setting up and configuring a ThreeBot instance by automating many of the steps involved. It allows users to specify the desired configuration and parameters for their ThreeBot, such as the domain name, authentication settings, and available services. The threebot-deployer then handles the deployment process, ensuring that the ThreeBot is properly installed and configured according to the specified parameters. This tool streamlines the deployment process and enables users to quickly and easily set up their own personalized ThreeBot instances.
> [Component Repository on Github](https://github.com/threefoldtech/threebot-deployer)
### ThreeFold Wallet
A digital wallet designed to securely store and manage ThreeFold Tokens (TFT) and other digital assets inside the ThreeFold Connect App (TFConnect App). It provides users with a convenient and user-friendly interface to interact with their tokens, perform transactions, and track their token balances. The ThreeFold Wallet offers features such as wallet creation, private key management, token transfers, and transaction history. It ensures the security of users' assets through encryption and various authentication methods. The wallet serves as a gateway for users to access and engage with the ThreeFold ecosystem, enabling them to participate in token transactions, staking, and other activities.
> [Component Repository on Github](https://github.com/threefoldtech/threefold_connect_wallet)
### ThreeFold Connect App
Mobile application developed by ThreeFold that serves as a gateway to the ThreeFold Grid. It provides users with a secure and user-friendly wallet interface to access and manage their digital assets, such as ThreeFold Tokens (TFT), and interact with various services and applications within the ThreeFold ecosystem. The ThreeFold Connect App also provides an authenticator feature that ensures secure access and authentication to various services within the ThreeFold ecosystem. As an authenticator, it verifies the identity of users and provides them with secure access to their accounts and associated resources.
> [Component Repository on Github](https://github.com/threefoldtech/threefold_connect)
### Zinit
A lightweight, fast, and versatile package manager designed to simplify the installation and management of software components within the ThreeFold ecosystem. It provides a user-friendly interface for developers and system administrators to easily install, update, and remove software packages on their ThreeFold nodes. Zinit supports various package sources, including remote repositories, local files, and even directly from Git repositories, allowing users to easily fetch and install the desired software components. It also supports dependency resolution, ensuring that all required dependencies are installed correctly.
> [Component Repository on Github](https://github.com/threefoldtech/zinit)
### 0-OS or ZOS
ZOS (Zero Operating System) is a lightweight and secure operating system designed specifically for running workloads on the ThreeFold Grid. ZOS provides a minimalistic and containerized environment for applications, enabling efficient resource allocation and management. With ZOS, developers can deploy their applications easily and take advantage of the scalability and resilience offered by the ThreeFold Grid.
> [Component Repository on Github](https://github.com/threefoldtech/zos)
### 0-bootstrap
Also known as Zero-Bootstrap, is a component of the ThreeFold Grid infrastructure. It serves as the initial bootstrap mechanism for setting up and initializing the ThreeFold Grid network. 0-bootstrap provides the necessary tools and processes to deploy the core components of the ThreeFold Grid, including the Zero-OS operating system and other essential services. It helps in establishing the foundational layer of the grid network, enabling the deployment and management of compute resources, storage, and other decentralized services.
> [Component Repository on Github](https://github.com/threefoldtech/0-bootstrap)
### 0-Bus or ZBus
A component that facilitates interprocess communication (IPC) within the ThreeFold technology stack. It provides a lightweight and efficient messaging system that allows different software components or services to communicate with each other in a distributed environment. zbus implements a message bus architecture, where components can publish messages to topics and subscribe to receive messages from those topics. It enables decoupled and asynchronous communication between various parts of the system, promoting modularity and scalability. zbus plays a crucial role in enabling communication and coordination between different components of the ThreeFold infrastructure, such as the ThreeBot, ThreeFold Chain, and storage services, allowing them to work together seamlessly to deliver the desired functionality.
> [Component Repository on Github](https://github.com/threefoldtech/zbus)
### 0-DB
a distributed key-value database system. It is designed to provide efficient and secure storage for data in a decentralized environment.
In 0-db, data is stored as key-value pairs, allowing for fast and efficient retrieval of information. It provides high-performance read and write operations, making it suitable for applications that require quick access to data. The distributed nature of 0-db ensures that data is replicated and stored across multiple nodes, enhancing data availability and durability.
> [Component Repository on Github](https://github.com/threefoldtech/0-db)
### 0-DB-FS
A storage system that allows for efficient and secure storage of files on the ThreeFold Grid. 0-db-fs is built on top of 0-db, which is a key-value store optimized for high performance and scalability. It provides a decentralized and distributed approach to file storage, ensuring data redundancy and availability. With 0-db-fs, users can securely store and retrieve files, benefiting from the decentralized nature of the ThreeFold Grid, which enhances data privacy, security, and resilience.
> [Component Repository on Github](https://github.com/threefoldtech/0-db-fs)
### 0-Flist
Also known as Zero-Flist, is a file system image format used in the ThreeFold Grid infrastructure. It represents a compressed and immutable snapshot of a specific file system configuration or application stack. 0-Flist files are used to package and distribute software, data, and configurations within the ThreeFold Grid. They contain all the necessary files and dependencies required to run an application or service. 0-Flist files are lightweight, portable, and easy to distribute, making them ideal for deploying applications across the decentralized network.
> [Component Repository on Github](https://github.com/threefoldtech/0-flist)
### 0-Hub
Also known as Zero-Hub, is a key component of the ThreeFold Grid infrastructure. It serves as the central hub or entry point for users and applications to connect with the decentralized network. 0-hub provides a user-friendly interface and API endpoints that allow users to interact with the ThreeFold Grid and access its resources. It acts as a bridge between the users and the underlying infrastructure, enabling them to deploy and manage their workloads, access decentralized storage, and utilize other services provided by the ThreeFold Grid. 0-hub also plays a crucial role in facilitating peer-to-peer communication and collaboration within the network, connecting users and allowing them to share and exchange resources securely.
> [Component Repository on Github](https://github.com/threefoldtech/0-hub)
### 0-InitramFS
Initial RAM file system used in the ThreeFold ecosystem. An initramfs is a temporary file system that is loaded into memory during the boot process before the root file system is mounted. It contains essential files and utilities needed to initialize the system and prepare it for the boot process. In the context of ThreeFold, the 0-initramfs is a customized initial RAM file system specifically designed for the ThreeFold Grid infrastructure. It includes necessary components and configurations to ensure a smooth and efficient boot process for ThreeFold nodes. By utilizing the 0-initramfs, the ThreeFold ecosystem can optimize the boot sequence and ensure the proper initialization of the system components before transitioning to the main operating system.
> [Component Repository on Github](https://github.com/threefoldtech/0-initramfs)
### 0-stor_v2
A component of the ThreeFold technology stack that refers to the second version of the 0-stor storage system. 0-stor_v2 is a distributed and decentralized storage solution that enables data storage and retrieval on the ThreeFold Grid. It utilizes erasure coding and sharding techniques to distribute data across multiple storage nodes, ensuring high availability and data redundancy. The 0-stor_v2 component provides an efficient and secure way to store data on the ThreeFold Grid, with features such as data encryption, replication, and integrity checks. It is designed to be scalable and fault-tolerant, allowing for the seamless expansion of storage capacity as needed. Developers and users can leverage 0-stor_v2 to store and manage their data in a decentralized and resilient manner, ensuring data privacy and accessibility on the ThreeFold Grid.
> [Component Repository on Github](https://github.com/threefoldtech/0-stor_v2)

View File

@@ -0,0 +1,47 @@
<h1> Infrastructure as Code (IaC) </h1>
<h2> Table of Contents </h2>
- [What is IaC?](#what-is-iac)
- [Benefits of IaC](#benefits-of-iac)
- [ThreeFold's IaC](#threefolds-iac)
- [How it Works](#how-it-works)
- [Dive Deeper](#dive-deeper)
- [Manuals](#manuals)
***
## What is IaC?
Infrastructure as Code (IaC) is a concept that revolutionizes the way infrastructure is provisioned and managed in the world of IT. It involves the use of declarative scripts or configuration files to define and automate the deployment, configuration, and management of infrastructure resources. With IaC, organizations can treat infrastructure provisioning as code, applying software development principles and practices to infrastructure management. This approach brings numerous benefits, such as increased efficiency, consistency, scalability, and reproducibility.
## Benefits of IaC
Using IaC in the ThreeFold ecosystem brings several benefits.
- __Streamlined operations and increased efficiency__: One of the key benefits of Infrastructure as Code (IaC) is the significant improvement in speed and consistency. By eliminating manual processes and automating infrastructure provisioning through code, tasks can be completed faster and with greater accuracy. There is no longer a need to wait for IT administrators to manually perform tasks or worry about their availability. This allows for quicker iterations and faster deployments, enabling organizations to be more agile in their development processes. Consistency is also enhanced as infrastructure configurations are defined in code, ensuring that the same setup is replicated across environments and reducing the risk of configuration drift.
- __Empowered software development lifecycle__: IaC places more control in the hands of developers, enabling them to focus on application development rather than spending time on infrastructure management. With reliable and consistent infrastructure provisioning, developers can leverage reusable code scripts to deploy and manage resources efficiently. This streamlines the software development lifecycle, enabling faster development cycles and reducing the time and effort spent on manual infrastructure tasks. Developers can quickly spin up development and testing environments, experiment with different configurations, and roll out changes with ease.
- __Reduced management overhead__: IaC eliminates the need for multiple roles dedicated to managing different layers of hardware and middleware in traditional data center environments. With IaC, the management overhead is significantly reduced as infrastructure is defined and managed through code. This frees up administrators to focus on exploring and implementing new technologies and innovations, rather than being tied down by routine maintenance tasks. It simplifies the operational structure and allows for a more efficient allocation of resources, ultimately leading to cost savings and increased productivity.
Overall, IaC brings faster speed, improved consistency, efficient software development, and reduced management overhead. It empowers organizations to accelerate their deployment processes, enhance collaboration between development and operations teams, and optimize resource utilization. By adopting IaC practices, organizations can achieve greater agility, scalability, and cost efficiency in their infrastructure management, enabling them to stay competitive in today's fast-paced digital landscape.
## ThreeFold's IaC
At ThreeFold, IaC plays a crucial role in the deployment and management of the ThreeFold Grid infrastructure. ThreeFold leverages popular IaC tools and methodologies to enable users to define and manage their infrastructure resources in a programmatic and scalable way. The IaC mechanism in ThreeFold involves components like __Terraform__, __TypeScript Client__, __GraphQL Client__, and __Grid Proxy REST API__.
__Terraform__ acts as the foundation for infrastructure provisioning, allowing users to define their desired infrastructure state using declarative configuration files. __The TypeScript and GraphQL clients__ provide interfaces for interacting with the ThreeFold Grid and managing resources programmatically, while the__ Grid Proxy REST API__ enables integration with external systems and applications.
## How it Works
Firstly, __Terraform__ acts as the primary infrastructure provisioning tool. It provides a declarative language for defining infrastructure resources and their configurations, enabling users to express their infrastructure requirements in a human-readable and version-controlled manner.
__TypeScript Client and GraphQL Client__ serve as interfaces for interacting with the ThreeFold Grid, allowing users to create, update, and manage their infrastructure resources programmatically. These clients offer rich functionality and flexibility for managing various aspects of the ThreeFold Grid, including node deployment, capacity allocation, networking, and more.
__Grid Proxy REST API__ further enhances the extensibility of the IaC mechanism by enabling integration with external systems and applications, allowing for seamless automation and orchestration of infrastructure tasks. Together, these components form a robust and efficient IaC framework within the ThreeFold ecosystem, empowering users to manage their infrastructure as code with ease and precision.
## Dive Deeper
- [How the Grid Works](../intro/grid3_howitworks.md)
- [ThreeFold's Component List](./grid3_components.md)
- [Grace Periods](./contract_grace_period.md)
## Manuals
- [Terraform](../terraform/terraform_readme.md)
- [Typescript Client](../javascript/grid3_javascript_readme.md)

View File

@@ -0,0 +1,48 @@
> Click [here](../concepts/grid3_components.md) to see the complete TFGrid Component List
# What's new on ThreeFold Grid v3.x
The ThreeFold Grid v3.x is packed with exciting new features and enhancements. This marks a significant milestone in the evolution of our decentralized grid infrastructure, bringing even more power, flexibility, and innovation to our users. In this introduction, we will highlight some of the key new features that make ThreeFold Grid v3.x a game-changer in the world of decentralized technologies.
## TFChain v3.x
[__TFChain v3.x__](../concepts/tfchain.md) is a decentralized chain that holds all the information about the entities comprising the ThreeFold Grid. It operates on the Parity Substrate blockchain infrastructure.
### Key Features of TFChain v3.x:
- Your identity and proofs/reputation are stored on our blockchain.
- All information about TFGrid, including nodes and farmers, is made available.
- A GraphQL interface that allows easy querying of the blockchain.
- Provide Side chains supports, enabling unlimited scalability and allowing others to run their own blockchains.
- TFT now exists on TFChain, addressing scalability issues with Stellar.
- A bridge facilitates the transfer of TFT between Stellar and TFChain.
- Blockchain-based provisioning process/
- TFChain API that is available in JavaScript, Golang, and Vlang.
- 'Infrastructure as Code' (IAC) framework support for:
- Terraform
- Kubernetes, Helm, Kubernetes
- Ansible (planned)
- Support for App deployment using CapRover
- The use of RMB (Reliable Message Bus) that ensures secure peer-to-peer communication with Zero-OS.
Please note that the above list summarizes the key features introduced in TFChain v3.0.
## Proof of Utilization: Enhancing Your Cloud Experience
Experience the benefits of Proof of Utilization, a user-friendly feature that optimizes your cloud usage and rewards your pre-purchases. Here are the key features:
### Key Features:
- __Hourly Resource Utilization__: Your resource utilization is accurately captured and calculated on an hourly basis, ensuring transparency and precision in tracking your cloud usage.
- __Secure Storage on TFChain__: Your resource utilization data is securely stored in TFChain, our dedicated blockchain, providing a reliable and tamper-proof record of your usage history.
- __Automated Discount System__: Our innovative automated discount system acknowledges your pre-purchased cloud needs. Based on the amount of TFT (ThreeFold Tokens) you hold in your account and the duration you maintain these tokens, you can enjoy significant price discounts.
- __Personalized Discounts__: The discount you receive is customized to your TFT holdings and usage patterns. For instance, if you hold TFT tokens equivalent to 12 months' worth of usage, you receive a generous 40% discount. Holding TFT tokens for 36 months unlocks an impressive 60% discount on your cloud services.
### New TFGrid Explorer UI
- The TFGrid Explorer v3.x has an updated user interface that is now nicer and easier to use.
- It utilizes the GraphQL layer of TFChain.

View File

@@ -0,0 +1,62 @@
<h1> ThreeFold Grid Primitives: Empowering Your Solutions </h1>
![layers](./img/layers.jpeg)
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [Compute](#compute)
- [Storage](#storage)
- [Network](#network)
- [Zero-OS Advantages](#zero-os-advantages)
- [Conclusion](#conclusion)
***
## Introduction
Within the ThreeFold Grid, we offer a range of __low-level constructs known as Primitives__. These powerful functionalities enable you to create diverse and customized solutions atop the grid, opening up a world of possibilities. It's important to note that any application compatible with Linux can seamlessly run on the ThreeFold Grid, ensuring maximum flexibility.
## Compute
Harness the power of computation with our compute primitives, measured in [compute units](../wiki/cloudunits/cloudunits_toc.md) (CU).
- [ZKube](../technology/primitives/compute/zkube.md): Deploy and manage Kubernetes clusters effortlessly.
- [ZMachine](../technology/primitives/compute/zmachine.md): Run your applications within containers or virtual machines powered by the Zero-OS operating system.
- [CoreX](../technology/primitives/compute/corex.md) (optional): Gain remote access to your ZMachine by utilizing the CoreX process manager.
## Storage
Leverage our robust storage Primitives, measured in [storage units](../wiki/cloudunits/cloudunits_toc.md) (SU), to meet your data storage requirements efficiently.
- [ZOS Filesystem](../technology/primitives/storage/zos_fs.md): Enjoy a deduplicated and immutable filesystem for secure and reliable data storage.
- [ZOS Mount](../technology/primitives/storage/zmount.md): Utilize a portion of a high-speed SSD (Solid State Drive) as a mounted disk directly accessible within your ZMachine.
- [Quantum Safe Filesystem](../technology/primitives/storage/qsfs.md): Secure your data with an unbreakable storage system, ideal for secondary storage needs.
- [Zero-DB](../technology/primitives/storage/zdb.md): Experience a powerful key-value storage mechanism that serves as the foundation for other storage mechanisms.
- [Zero-Disk](../technology/primitives/storage/zdisk.md) (OEM only): Employ a virtual disk format designed exclusively for original equipment manufacturers.
## Network
Harness our network Primitives, measured in [network units](../wiki/cloudunits/cloudunits_toc.md) (CU), to enable seamless communication and connectivity.
- [ZNET](../technology/primitives/network/znet.md): Establish private networks between ZMachines, ensuring secure and efficient communication.
- [ZNIC](../technology/primitives/network/znic.md): Access and manage network interfaces within the Planetary Network, enabling efficient data transfer and communication.
- [WebGateway](../technology/primitives/network/webgw3.md): Connect your ZNET to the internet with ease, facilitating seamless integration with the wider network.
## Zero-OS Advantages
Enjoy the numerous advantages that Zero-OS brings to the table.
- [Zero Install](../technology/zos/benefits/zero_install.md): Experience hassle-free deployment without the need for complex installations.
- [Unbreakable Storage](../technology/zos/benefits/unbreakable_storage.md): Ensure the integrity and security of your data with our robust storage mechanisms.
- [Zero Hacking Surface](../technology/zos/benefits/zero_hacking_surface.md): Benefit from a minimized attack surface, bolstering the security of your infrastructure.
- [Zero Boot](../technology/zos/benefits/zero_boot.md): Enjoy lightning-fast boot times, allowing for swift and efficient system initialization.
- [Deterministic Deployment](../technology/zos/benefits/deterministic_deployment.md): Achieve consistent and predictable deployments, streamlining your development process.
- [ZOS Protect](../technology/zos/benefits/zos_protect.md): Experience enhanced protection and security measures to safeguard your infrastructure.
## Conclusion
With these powerful Primitives and Zero-OS advantages, the ThreeFold Grid empowers you to build, scale, and secure your solutions with ease. Unleash your creativity and unlock limitless possibilities within the ThreeFold ecosystem.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
tosort/concepts/img/tft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 KiB

View File

@@ -0,0 +1,15 @@
# Proof of Utilization
The ThreeFold Grid employs a unique mechanism called __Proof of Utilization__ to track and measure resource utilization within its decentralized network. This system records resource usage on an hourly basis and serves as a transparent and reliable way to validate and verify the utilization of various components of the grid.
The Proof of Utilization concept encompasses the monitoring and tracking of three key types of resources within the ThreeFold Grid:__Compute Resources (CU)__, __Storage Resources (SU)__, and __Network resources (NU)__. These resources are essential for supporting the diverse needs of users and applications on the grid.
## CU, SU, NU
__Compute resources (CU)__ refer to the computational power and processing capabilities provided by the ThreeFold Grid. This includes the ability to run applications, execute tasks, and perform complex computations in a distributed and decentralized manner.
__Storage resources (SU)__ encompass the capacity to store and manage data within the ThreeFold Grid. It enables users to securely store and retrieve their data, ensuring reliable and scalable data management solutions.
__Network resources (NU)__ focus on the network connectivity and bandwidth available within the ThreeFold Grid. This includes the transmission of data, communication between nodes, and facilitating the seamless flow of information across the decentralized network.
In addition to the resources mentioned above, the Proof of Utilization system also tracks network utilization parameters such as __IPv4 addresses__, __DNS services__, and __name-on-web gateways__. These elements play a crucial role in enabling effective communication and accessibility within the ThreeFold Grid.

View File

@@ -0,0 +1,25 @@
# ThreeFold Chain
__TFChain__, also known as __ThreeFold Chain__, is the blockchain at the core of managing the ThreeFold Grid, which operates as a decentralized autonomous organization (DAO). Built on Substrate, TFChain provides the infrastructure to support the seamless functioning of the ThreeFold Grid ecosystem.
One of the key features of TFChain is its __compatibility with multiple blockchains__. The native token of the ThreeFold ecosystem, TFT, can be utilized across different blockchain networks including TFChain, Stellar, and Binance Smart Chain. This compatibility enables users to transfer their TFT tokens seamlessly between these blockchains, providing flexibility and convenience.
To leverage the Internet Capacity available on the ThreeFold Grid, users are required to transfer funds to their TFChain account. This ensures that users have the necessary financial resources to access and utilize the storage, compute, and network services offered by the ThreeFold Grid. By transferring money to their TFChain account, users can seamlessly tap into the vast potential of the decentralized Internet Capacity provided by the ThreeFold Grid.
TFChain serves as the backbone of the ThreeFold ecosystem, facilitating efficient transactions, secure transfers of value, and the management of user accounts. It plays a vital role in supporting the seamless interaction between users and the ThreeFold Grid, enabling them to leverage the available Internet Capacity and contribute to the growth of the decentralized network.
## Key Functionalities
__TFChain (Threefold Chain)__ is a powerful blockchain that orchestrates the interactions within the ThreeFold Grid ecosystem, providing users with a range of key functions. Let's explore some of these user-friendly functions:
- __Users Registration__: TFChain allows seamless registration for users to join the ThreeFold Grid. By creating an account, users can easily become part of the decentralized network and access the various resources and services available.
- __Farms Management__: TFChain simplifies the process of managing node farms within the ThreeFold Grid. It provides a streamlined registration system, enabling farmers to register their nodes and effectively contribute to the grid. Additionally, TFChain facilitates IP management, allowing farmers to efficiently manage and allocate IP addresses to their nodes.
- __Fund Transfers__: TFChain supports secure and efficient fund transfers within the ThreeFold ecosystem. Users can seamlessly transfer funds, including the native TFT token, between accounts on TFChain. This feature enables easy financial transactions and fosters a thriving economy within the ThreeFold Grid.
- __Billing and Consumption Reports__: TFChain offers detailed billing and consumption reports, providing users with insights into their resource usage and associated costs. Users can easily track their consumption, monitor usage patterns, and access comprehensive reports, ensuring transparency and accountability in resource management.
And More: TFChain is continuously evolving and expanding its functionality. In addition to the key functions mentioned above, TFChain provides a robust foundation for other essential features within the ThreeFold Grid. This includes __facilitating secure transactions, maintaining a transparent ledger, enabling governance mechanisms,__ and supporting various interactions and operations within the decentralized ecosystem.
TFChain's user-friendly functions empower users to participate actively in the ThreeFold Grid, seamlessly manage their resources, and engage in secure and efficient transactions.

View File

@@ -0,0 +1,152 @@
<h1>TFGrid by Design: Deployment Architectures and Solution Categories</h1>
<h2>Table of Contents</h2>
- [Introduction](#introduction)
- [TFGrid by Design](#tfgrid-by-design)
- [Capacity and Connectivity](#capacity-and-connectivity)
- [TFGrid Main Components Overview and Examples](#tfgrid-main-components-overview-and-examples)
- [Storage Units](#storage-units)
- [0-DB-FS](#0-db-fs)
- [0-stor\_v2](#0-stor_v2)
- [QSFS](#qsfs)
- [Compute Units](#compute-units)
- [Virtual CPUs (vCPUs)](#virtual-cpus-vcpus)
- [Kubernetes](#kubernetes)
- [TF Grid-SDK-Go and TF Grid-SDK-TS](#tf-grid-sdk-go-and-tf-grid-sdk-ts)
- [Network Units](#network-units)
- [Reliable Message Bus Relay (RMB-RS)](#reliable-message-bus-relay-rmb-rs)
- [TCP-Router](#tcp-router)
- [Solution Categories](#solution-categories)
- [DIY Workloads](#diy-workloads)
- [Independent Commercial Offerings](#independent-commercial-offerings)
- [ThreeFold Commercial Offerings](#threefold-commercial-offerings)
- [Best Practices](#best-practices)
- [Questions and Feedback](#questions-and-feedback)
***
# Introduction
Before starting a project on the TFGrid, it can be good idea to consider the overall design of the grid itself, and to ponder the potential solution designs you can come up with to ensure reliable and resilient deployments. This text will explore some of the main components of the TFGrid as well as its inherent design in order to provide sufficient information for system administrators to deploy effective and reliable solutions. We will also cover the three main solution categories that can be built on top of the TFGrid.
## TFGrid by Design
At its core, the TFGrid is composed of thousands of 3Nodes. 3Nodes provide storage, compute and network units to the TFGrid. By design, 3Nodes are not reliable in themselves, in the sense that a 3Node online today could be offline tomorrow if hardware or connection failures arise. This reality is inherent to any cloud enterprises. But this does not mean that reliability is not possible on the TFGrid. To the contrary, the TFGrid is composed of different components that can be utilized to provide reliability in all aspects of the grid: storage, compute and network. It is the role of system administrators to develop solutions that will be reliable in themselves.
A myriad of possibilities and configurations are possible within the TFGrid ecosystem and, by understanding the interconnectedness between the grid components, one can knowingly build a solid deployment that will respond to the needs of a given project.
## Capacity and Connectivity
When it comes to deployments, we must consider two major aspects of the Internet infrastructure: capacity and connectivity. While capacity can be thought as the individual 3Nodes composing the TFGrid, where information is processed and stored within the 3Nodes, connectivity can be thought as the links and information transfers between the 3Nodes and the public Internet.
As a general consideration, the TFGrid works mostly on the capacity side, whereas a 3Node will always be connected to the Internet by ways of different Internet Service Providers (ISP) depending on the farmer's location and resources. The 3Nodes provide storage and compute units where users can store information on SSD and HDD disks and where they can generate compute processes with CPUs. Another major component of the TFGrid would be network units. While, as said before, the TFGrid does not provide directly connectivity as per the traditional ISP services, elements such as gateways and Wireguard VPNs are further related to network units than compute or storage units.
To build a reliable deployment on the TFGrid, you need to take into consideration the three different types of unit on the TFGrid: storage, compute and network. Let's delve into these a little bit more.
# TFGrid Main Components Overview and Examples
We provide here an overview of some of the main components of the TFGrid. We also provide examples for each of those components in order for the reader to obtain a clear understanding of the TF Ecosystem. By understanding the different components of the TFGrid, system administrators will be able to deploy resilient, redundant and reliable solutions on the grid.
For a complete list of the TFGrid components, read [this documentation](./grid3_components.md).
## Storage Units
Storage units are related to the data stored in SSD and HDD disks. The Quantum Safe Filesystem (QSFS) technology developed by ThreeFold ensures redundancy and resilience in storage units. If one disk of the QSFS array goes offline, the rest of the system can still function properly. To the contrary, if a user stores information on one single 3Node and this 3Node has a drastic disk failure, the user will lose the data. Another way to achieve redundancy in the storage category would be to deploy a solution with real-time synced databases of two or more 3nodes connected via a wireguard VPN. Note that other configurations offering reliability and redundancy are possible.
Let's explore some storage components of the ThreeFold Grid.
### 0-DB-FS
[0-DB-FS](./grid3_components.md#0-db-fs) is storage system that allows for efficient and secure storage of files on the ThreeFold Grid. 0-DB-FS is built on top of 0-DB, which is a key-value store optimized for high performance and scalability. It provides a decentralized and distributed approach to file storage, ensuring data redundancy and availability.
### 0-stor_v2
[0-stor_v2](./grid3_components.md#0-stor_v2) is a distributed and decentralized storage solution that enables data storage and retrieval on the ThreeFold Grid.
### QSFS
[Quantum Safe Filesystem (QSFS)](./grid3_components.md#qsfs) is ThreeFold's innovative storage solution designed to address the security challenges posed by quantum computing. QSFS employs advanced cryptographic techniques that are resistant to attacks from quantum computers, ensuring the confidentiality and integrity of stored data. By its design, QSFS also offers a high level of redundancy.
## Compute Units
Compute units are related to the CPUs doing calculations during the deployment. If a user deploys on a 3Node and uses the CPUs of the units while those CPUs experience failure, the user will lose compute power. as a main example, a way to achieve redundancy in the compute category would be to deploy a solution via Kubernetes. In this case, the CPU workload is balanced between the different 3Nodes of the Kubernetes cluster and if one 3Node fails, the deployment can still function properly.
Let's explore some compute components of the ThreeFold Grid.
### Virtual CPUs (vCPUs)
Virtual CPUs (vCPUs) are virtual representations of physical CPUs that allow multiple virtual machines (VMs) to run concurrently on a single physical server or host. Virtualization platforms allocate vCPUs to each VM, enabling them to execute tasks and run applications as if they were running on dedicated physical hardware. The number of vCPUs assigned to a VM determines its processing power and capacity to handle workloads. On the TFGrid, the number of vCPUs is limited to the physical number of CPUs on the host (i.e. the 3Node). Since this limitation is done per VM, this means that a node with 8 cores can still have 2 VMs each with 8 vCPUs.
### Kubernetes
[Kubernetes](../playground/k8s.md) is an open-source container orchestration system for automating software deployment, scaling, and management. On the TFGrid, Kubernetes clusters can be deployed out of the box. Thus, system administrators can seamlessly deploy solutions on the TFGrid that are reliable in terms of compute units.
### TF Grid-SDK-Go and TF Grid-SDK-TS
The [TFGrid-SDK-Go](./grid3_components.md#tf-grid-sdk-go) and [TFGrid-SDK-TS](./grid3_components.md#tf-grid-sdk-ts) enable developers to interact with the ThreeFold Grid infrastructure, such as provisioning and managing compute resources, accessing storage, and interacting with the blockchain-based services. They provide a standardized and convenient way to leverage the features and capabilities of the ThreeFold Grid within Go and Typescript applications.
## Network Units
Network units are related to the data transmitted over the Internet. While TFGrid does not provide direct ISP services, elements such as gateways are clearly related to the network. [Gateways](../terraform/resources/terraform_vm_gateway.md) can be used to balance network workloads. A deployment could consist of two different gateways with a master node gateway and a worker node gateway. If the master gateway would fail, the worker gateway would take the lead and become the master gateway. Deploying solutions with several gateways can help system administrators build reliable solutions.
Note that it is also possible to deploy a Wireguard virtual private network (VPN) between different 3Nodes and synchronize their databases. This provides resilience and redundancy. Read more on VPN and synced databases [here](../terraform/advanced/terraform_mariadb_synced_databases.md).
Let's explore some network components of the ThreeFold Grid.
### Reliable Message Bus Relay (RMB-RS)
[Reliable Message Bus Relay (RMB-RS)](./grid3_components.md#reliable-message-bus-relay-rmb-rs) is a component or system that facilitates the reliable and secure transfer of messages between different entities or systems within the ThreeFold ecosystem. It acts as a relay or intermediary, ensuring that messages are delivered accurately and efficiently, even in the presence of network disruptions or failures. The RMB-RS employs robust protocols and mechanisms to guarantee message reliability, integrity, and confidentiality.
### TCP-Router
[TCP-Router](./grid3_components.md#tcp-router) is a component of the ThreeFold technology stack that acts as a TCP (Transmission Control Protocol) router and load balancer. It serves as a network gateway for incoming TCP connections, routing them to the appropriate destinations based on predefined rules and configurations. The TCP-Router component is responsible for distributing incoming network traffic across multiple backend services or nodes, ensuring efficient load balancing and high availability.
# Solution Categories
There are three main solution categories on the TFGrid: DIY workloads, independent commercial offerings, and ThreeFold commercial offerings. Let's take a look at them and discuss their basic properties.
## DIY Workloads
Out-of-the-box weblets are available on the [TF Playground](../playground/ready_community_readme.md) and [Terraform](../terraform/terraform_readme.md), where anyone can [buy TFTs](../threefold_token/buy_sell_tft/buy_sell_tft.md) and deploy on the decentralized and open-source grid. The reliability of those deployments depend on the capacity and resources of each DIY system administrator.
In essence, when you deploy on the decentralized and open-source TFGrid, you act as a centralized entity building the solution architecture. You must design the solution in a way that it can be reliable with high-availability and resilience levels that suit the needs of your project.
Note that when you deploy on the ThreeFold Grid, you are doing so in accordance with the [ThreeFold Terms and Conditions](https://library.threefold.me/info/legal/#/).
## Independent Commercial Offerings
Since the TFGrid is open-source, anyone could decide to build a commercial offering on top of the grid. In this case, it would be recommended for the commercial offering to provide Terms and Conditions, clear support, a website to advertise the product and a marketing strategy to obtain customers.
In this case, the commercial offering is the centralized entity and if the company makes a mistake, it would be liable to the users to the extent discussed in the T&C.
The ThreeFold Manual already contains a lot of resourceful information on how to [deploy solutions](../playground/ready_community_readme.md) on the TFGrid. We invite everyone to develop independent commercial offerings on top of the ThreeFold Grid.
## ThreeFold Commercial Offerings
ThreeFold is building commercial offerings on top of the TFGrid. Those commercial offerings are for-profit organizations. Each of those organizations would function as a centralized entity.
ThreeFold Ventures will be the branch exploring this aspect of the TF Ecosystem. A major project on the way is [ThreeFold Cloud](https://cloud.threefold.io/). ThreeFold Cloud is thus a centralized entity that will generate its own Terms and Conditions, support, marketing and website strategy. Furthermore, ThreeFold Cloud will be liable to its users to the extent developed in the ThreeFold Cloud Terms and Conditions.
# Best Practices
This text provided an introduction to some deployment architectures and solution categories possible on the TFGrid. In the future, we will expand on some of the main TFGrid best practices. Stay tuned for more on this topic.
Some of the best practices to be covered are the following:
* Use Kubernetes to deploy redundant workloads
* Use multi-gateways deployments for redundancy
* Deploy manually two VMs
* Use two webgateways to access the VMs
* Choose a data replication strategy to have content on both places (e.g. syncing databases)
* Use continous deployment and integration workloads
* Deploy on 2 different VMs
* Ensure continuous deployment and integration when changes occur
* Use DNS with redundancy
* Use QSFS for storage resilience and redundancy
These are only a few of the many possibilities that the TFGrid offers. We invite everyone to explore the TFGrid and share their experience and learning.
# Questions and Feedback
If you have any questions or feedback, we invite you to discuss with the ThreeFold community on the [ThreeFold Forum](http://forum.threefold.io/) or on the [ThreeFold Grid Tester Community](https://t.me/threefoldtesting) chat on Telegram.

View File

@@ -0,0 +1,18 @@
### Description
Describe the changes introduced by this PR and what does it affect
### Changes
List of changes this PR includes
### Related Issues
List of related issues
### Checklist
- [ ] Tests included
- [ ] Build pass
- [ ] Documentation
- [ ] Code format and docstring

View File

@@ -0,0 +1,29 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
## Describe the bug
A clear and concise description of what the bug is.
## To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
## Expected behavior
A clear and concise description of what you expected to happen.
## Screenshots
If applicable, add screenshots to help explain your problem.

View File

@@ -0,0 +1,318 @@
<h1> Code of Conduct</h1>
<h2>Table of Contents</h2>
- [Introduction: Collaboration Manifest](#introduction-collaboration-manifest)
- [Code of Conduct](#code-of-conduct)
- [Forum \& Chat Rules](#forum--chat-rules)
- [Moderation Rights](#moderation-rights)
- [Contribution](#contribution)
- [Keep It Simple and Relevant](#keep-it-simple-and-relevant)
- [Content Verification Guidelines](#content-verification-guidelines)
- [Freedom of Speech.](#freedom-of-speech)
- [Contribution Guidelines](#contribution-guidelines)
- [This is a Civilized Place for Public Discussion](#this-is-a-civilized-place-for-public-discussion)
- [Improve the Discussion](#improve-the-discussion)
- [Be Agreeable, Even When You Disagree](#be-agreeable-even-when-you-disagree)
- [Your Participation Counts](#your-participation-counts)
- [If You See a Problem, Flag It](#if-you-see-a-problem-flag-it)
- [Always Be Civil](#always-be-civil)
- [Keep It Tidy](#keep-it-tidy)
- [Post Only Your Own Stuff](#post-only-your-own-stuff)
- [Powered by You](#powered-by-you)
- [Terms of Service](#terms-of-service)
- [Terms of Service (TOS)](#terms-of-service-tos)
- [Important Terms](#important-terms)
- [Your Permission to Use the Forum)](#your-permission-to-use-the-forum)
- [Conditions for Use of the Forum](#conditions-for-use-of-the-forum)
- [Acceptable Use](#acceptable-use)
- [Content Standards](#content-standards)
- [Enforcement](#enforcement)
- [Your Account](#your-account)
- [Your Content](#your-content)
- [Your Responsibility](#your-responsibility)
- [Disclaimers](#disclaimers)
- [Limits on Liability](#limits-on-liability)
- [Feedback](#feedback)
- [Termination](#termination)
- [Disputes](#disputes)
- [General Terms](#general-terms)
- [Contact](#contact)
- [Changes](#changes)
***
# Introduction: Collaboration Manifest
FreeFlow nation created this collaboration manifest which can be freely used by any organization who finds them useful. If you would like to see any changes to this document please email to **info@freeflownation.org**.
We at ThreeFold want to follow these guidelines.
This document has been created honoring the [FreeFlow Nation Manifesto](https://www.freeflownation.org/manifesto.html).
# Code of Conduct
## Forum & Chat Rules
We are committed to making participation a harassment-free experience for everyone, regardless of level of experience, gender, gender identity or expression, sexual orientation, disability, personal appearance, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior include, but are not limited to:
* Use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing private information without explicit permission (e.g. physical or electronic address)
## Moderation Rights
Content moderators have the right and responsibility to remove, edit, or reject all posts, comments, and other contributions that are not aligned to this Code of Conduct. They may also suspend or ban any forum member for behaviors that they deem inappropriate, threatening, offensive, or harmful.
By adopting this Code of Conduct, moderators commit themselves to fairly and consistently applying these principles to every aspect of managing this community. Moderators who do not follow or enforce the Code of Conduct may be permanently removed from the moderation team.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by flagging the post or comment in question. All complaints will be reviewed and investigated and will result in a response deemed both necessary and appropriate to the circumstances. Moderators are obligated to maintain confidentiality regarding the identity of the reporting party.
The forum is a place where we bring people together that share the same values and want to make the world a better place. Positive feedback is well appreciated but must always stay respectful and helpful. Moderators thus have the right to remove any posts spreading negativity and/or attacking the project and its founders.
## Contribution
We welcome everyone to contribute and thank you for your content contribution.
Content can be chat, questions, answers, blogs, articles, knowledge base information, tutorials, …
The more people collaborate the more relevant set of information will be created.
Creating content constitutes your agreement to release submitted content as public domain ([CC0 10 4](https://creativecommons.org/publicdomain/zero/1.0/)).
## Keep It Simple and Relevant
Overload of information is maybe even worse as not enough information.
Please keep your discussions and contributions information-rich. If your signal-to-noise ratio gets too low, you will be muted or banned from the forum or relevant chat. This is up to the discretion of ThreeFold moderators.
## Content Verification Guidelines
We believe its in the best interest of our community to know the origin and authenticity of any information contributed. We want to do everything possible to verify the authenticity of the content created (e.g. messages, knowledge-base, chats, etc.). As such its our right to block a contributor from creating any content if identity cannot be verified.
## Freedom of Speech.
We believe in freedom of speech as long as its not in contradiction with our Content Verification Guidelines.
# Contribution Guidelines
## This is a Civilized Place for Public Discussion
Please treat this discussion forum with the same respect you would a public park. We, too, are a shared community resource — a place to share skills, knowledge and interests through ongoing conversation.
These are not hard and fast rules, merely guidelines to aid the human judgment of our community and keep this a clean and well-lighted place for civilized public discourse.
## Improve the Discussion
Help us make this a great place for discussion by always working to improve the discussion in some way, however small. If you are not sure your post adds to the conversation, think over what you want to say and try again later.
The topics discussed here matter to us, and we want you to act as if they matter to you, too. Be respectful of the topics and the people discussing them, even if you disagree with some of what is being said.
One way to improve the discussion is by discovering ones that are already happening. Spend time browsing the topics here before replying or starting your own, and youll have a better chance of meeting others who share your interests.
## Be Agreeable, Even When You Disagree
You may wish to respond to something by disagreeing with it. Thats fine. But remember to criticize ideas, not people. Please avoid any of the following:
* Name-calling
* Ad hominem attacks
* Responding to a posts tone instead of its actual content
* Knee-jerk contradiction
Instead, provide reasoned counter-arguments that improve the conversation.
## Your Participation Counts
The conversations we have here set the tone for every new arrival. Help us influence the future of this community by choosing to engage in discussions that make this forum an interesting place to be — and avoiding those that do not.
The forum we use (Discourse) provides tools that enable the community to collectively identify the best (and worst) contributions: bookmarks, likes, flags, replies, edits, and so forth. Use these tools to improve your own experience, and everyone elses, too.
Lets leave our community better than we found it.
## If You See a Problem, Flag It
Moderators have special authority: they are responsible for this forum, but so are you. With your help, moderators can be community facilitators, not just janitors or police.
When you see bad behavior, dont reply. It encourages bad behavior by acknowledging it, consumes your energy, and wastes everyones time. Just flag it. If enough flags accrue, action will be taken, either automatically or by moderator intervention.
In order to maintain our community, moderators reserve the right to remove any content and any user account for any reason at any time. Moderators do not preview new posts: the moderators and site operators take no responsibility for any content posted by the community.
## Always Be Civil
Nothing sabotages a healthy conversation like rudeness:
* Be civil. Dont post anything that a reasonable person would consider offensive, abusive, or hate speech.
* Keep it clean. Dont post anything obscene or sexually explicit.
* Respect each other. Dont harass or grief anyone, impersonate people, or expose their private information.
* Respect our forum. Dont post spam or otherwise vandalize the forum.
These are not concrete terms with precise definitions — avoid even the appearance of any of these things. If youre unsure, ask yourself how you would feel if your post was featured on the front page of the New York Times.
This is a public forum, and search engines index these discussions. Keep the language, links, and images safe for family and friends.
## Keep It Tidy
Make the effort to put things in the right place, so that we can spend more time discussing and less time cleaning up.
In brief:
* Dont start a topic in the wrong category.
* Dont cross-post the same thing in multiple topics.
* Dont post no-content replies.
* Dont divert a topic by changing it midstream.
* Dont sign your posts — every post has your profile information attached to it.
* Rather than posting “+1” or “Agreed”, use the Like button. Rather than taking an existing topic in a radically different direction, use Reply as a Linked Topic.
## Post Only Your Own Stuff
You may not post anything digital that belongs to someone else without permission. You may not post descriptions of, links to, or methods for stealing someones intellectual property (e.g. software, video, audio, images, etc.), or for breaking any other law.
## Powered by You
This site is operated by your friendly local staff and you, the community. If you have any further questions about how things should work here, open a new topic in the site feedback category and lets discuss! If theres a critical or urgent issue that cant be handled by a meta topic or flag, contact us via the support live chat.
## Terms of Service
Yes, legalese is boring, but we must protect ourselves and by extension, you and your data against unfriendly folks. We have a Terms of Service describing your (and our) behavior and rights related to content, privacy, and laws. To use this service, you must agree to abide by our TOS. See below for more information on this.
# Terms of Service (TOS)
These terms include a number of important provisions that affect your rights and responsibilities, such as the disclaimers in Disclaimers, limits on the companys liability to you in Limits on Liability, your agreement to cover the company for damages caused by your misuse of the forum in Responsibility for Your Use, and an agreement to arbitrate disputes in Disputes.
Please read:
To use this forum, or any other collaboration/communication tool of ThreeFold you must agree to these terms with threefold, the company that runs the forum or any other tool (FreeFlow Pages and others).
The company may offer other products and services, under different terms. These terms apply only to use of the forum.
## Important Terms
These terms include a number of important provisions that affect your rights and responsibilities, such as the disclaimers in [Disclaimers](#disclaimers), limits on the companys liability to you in [Limits on Liability](#limits-on-liability), your agreement to cover the company for damages caused by your misuse of the forum in [Responsibility for Your Use](#your-responsibility), and an agreement to arbitrate disputes in [Disputes](#disputes).
## Your Permission to Use the Forum)
Subject to these terms, the company gives you permission to use the forum. Everyone needs to agree to these terms to use the forum.
## Conditions for Use of the Forum
Your permission to use the forum is subject to the following conditions:
1. You must be at least thirteen years old.
2. You may no longer use the forum if the company contacts you directly to say that you may not.
3. You must use the forum in accordance with [Acceptable Use](#acceptable-use) and [Content Standards](#content-standards).
## Acceptable Use
1. You may not break the law using the forum.
2. You may not use or try to use anothers account on the forum without their specific permission.
3. You may not buy, sell, or otherwise trade in user names or other unique identifiers on the forum.
4. You may not send advertisements, chain letters, or other solicitations through the forum, or use the forum to gather addresses or other personal data for commercial mailing lists or databases.
5. You may not automate access to the forum, or monitor the forum, such as with a web crawler, browser plug-in or add-on, or other computer program that is not a web browser. You may crawl the forum to index it for a publicly available search engine, if you run one.
6. You may not use the forum to send e-mail to distribution lists, newsgroups, or group mail aliases.
7. You may not falsely imply that youre affiliated with or endorsed by the company.
8. You may not hyperlink to images or other non-hypertext content on the forum on other webpages.
9. You may not remove any marks showing proprietary ownership from materials you download from the forum.
10. You may not show any part of the forum on other websites with \<iframe\>.
11. You may not disable, avoid, or circumvent any security or access restrictions of the forum.
12. You may not strain infrastructure of the forum with an unreasonable volume of requests, or requests designed to impose an unreasonable load on information systems underlying the forum.
13. You may not impersonate others through the forum.
14. You may not encourage or help anyone in violation of these terms.
## Content Standards
1. You may not submit content to the forum that is illegal, offensive, or otherwise harmful to others. This includes content that is harassing, inappropriate, or abusive.
2. You may not submit content to the forum that violates the law, infringes anyones intellectual property rights, violates anyones privacy, or breaches agreements you have with others.
3. You may not submit content to the forum containing malicious computer code, such as computer viruses or spyware.
4. You may not submit content to the forum as a mere placeholder, to hold a particular address, user name, or other unique identifier.
5. You may not use the forum to disclose information that you dont have the right to disclose, like others confidential or personal information.
## Enforcement
The company may investigate and prosecute violations of these terms to the fullest legal extent. The company may notify and cooperate with law enforcement authorities in prosecuting violations of the law and these terms.
The company reserves the right to change, redact, and delete content on the forum for any reason. If you believe someone has submitted content to the forum in violation of these terms, [contact us immediately](#contact).
## Your Account
You must create and log into an account to use some features of the forum.
To create an account, you must provide some information about yourself. If you create an account, you agree to provide, at a minimum, a valid e-mail address, and to keep that address up-to-date. You may close your account at any time by e-mailing **info@threefold.io**.
You agree to be responsible for all action taken using your account, whether authorized by you or not, until you either close your account or notify the company that your account has been compromised. You agree to notify the company immediately if you suspect your account has been compromised. You agree to select a secure password for your account, and keep it secret.
The company may restrict, suspend, or close your account on the forum according to its policy for handling copyright-related takedown requests, or if the company reasonably believes that youve broken any rule in these terms.
## Your Content
Nothing in these terms gives the company any ownership rights in intellectual property that you share with the forum, such as your account information, posts, or other content you submit to the forum. Nothing in these terms gives you any ownership rights in the companys intellectual property, either.
Between you and the company, you remain solely responsible for content you submit to the forum. You agree not to wrongly imply that content you submit to the forum is sponsored or approved by the company. These terms do not obligate the company to store, maintain, or provide copies of content you submit, and to change it, according to these terms.
Content you submit to the forum belongs to you, and you decide what permission to give others for it. But at a minimum, you license the company to provide content that you submit to the forum to other users of the forum. That special license allows the company to copy, publish, and analyze content you submit to the forum.
When content you submit is removed from the forum, whether by you or by the company, the companys special license ends when the last copy disappears from the companys backups, caches, and other systems. Other licenses you apply to content you submit, such as [Creative Commons](https://creativecommons.org/) licenses, may continue after your content is removed. Those licenses may give others, or the company itself, the right to share your content through the forum again.
Others who receive content you submit to the forum may violate the terms on which you license your content. You agree that the company will not be liable to you for those violations or their consequences.
## Your Responsibility
You agree to indemnify the company from legal claims by others related to your breach of these terms, or breach of these terms by others using your account on the forum. Both you and the company agree to notify the other side of any legal claims for which you might have to indemnify the company as soon as possible. If the company fails to notify you of a legal claim promptly, you wont have to indemnify the company for damages that you could have defended against or mitigated with prompt notice. You agree to allow the company to control investigation, defense, and settlement of legal claims for which you would have to indemnify the company, and to cooperate with those efforts. The company agrees not to agree to any settlement that admits fault for you or imposes obligations on you without your prior agreement.
## Disclaimers
You accept all risks of using the forum and content on the forum. As far as the law allows, the company and its suppliers provide the forum as is, without any warranty whatsoever.
The forum may hyperlink to and integrate forums and services run by others. The company does not make any warranty about services run by others, or content they may provide. Use of services run by others may be governed by other terms between you and the one running service.
## Limits on Liability
Neither the company nor its suppliers will be liable to you for breach-of-contract damages their personnel could not have reasonably foreseen when you agreed to these terms.
As far as the law allows, the total liability to you for claims of any kind that are related to the forum or content on the forum will be limited to $50.
## Feedback
The company welcomes your feedback and suggestions for the forum. See the [Contact](#contact) section below for ways to get in touch with us.
You agree that the company will be free to act on feedback and suggestions you provide, and that the company wont have to notify you that your feedback was used, get your permission to use it, or pay you. You agree not to submit feedback or suggestions that you believe might be confidential or proprietary, to you or others.
## Termination
Either you or the company may end the agreement written out in these terms at any time. When our agreement ends, your permission to use the forum also ends.
The following provisions survive the end of our agreement: [Your Content](#your-content), [Feedback](#feedback), [Your Responsibility](#your-responsibility), [Disclaimers](#disclaimers), [Limits on Liability](#limits-on-liability), and [General Terms](#general-terms).
## Disputes
ascsac will govern any dispute related to these terms or your use of the forum.
You and the company agree to seek injunctions related to these terms only in state or federal court in city_for_disputes. Neither you nor the company will object to jurisdiction, forum, or venue in those courts.
Other than to seek an injunction or for claims under the Computer Fraud and Abuse Act, you and the company will resolve any dispute by binding American Arbitration Association arbitration. Arbitration will follow the AAAs Commercial Arbitration Rules and Supplementary Procedures for Consumer Related Disputes. Arbitration will happen in city_for_disputes. You will settle any dispute as an individual, and not as part of a class action or other representative proceeding, whether as the plaintiff or a class member. No arbitrator will consolidate any dispute with any other arbitration without the companys permission.
Any arbitration award will include costs of the arbitration, reasonable attorneys fees, and reasonable costs for witnesses. You and the company may enter arbitration awards in any court with jurisdiction.
## General Terms
If a provision of these terms is unenforceable as written, but could be changed to make it enforceable, that provision should be modified to the minimum extent necessary to make it enforceable. Otherwise, that provision should be removed.
You may not assign your agreement with the company. The company may assign your agreement to any affiliate of the company, any other company that obtains control of the company, or any other company that buys assets of the company related to the forum. Any attempted assignment against these terms has no legal effect.
Neither the exercise of any right under this Agreement, nor waiver of any breach of this Agreement, waives any other breach of this Agreement.
These terms embody all the terms of agreement between you and the company about use of the forum. These terms entirely replace any other agreements about your use of the forum, written or not.
## Contact
You may notify the company under these terms, and send questions to the company, at **info@threefold.io**.
The company may notify you under these terms using the e-mail address you provide for your account on the forum, or by posting a message to the homepage of the forum or your account page.
## Changes
The company last updated these terms on Aug, 2020, and may update these terms again. For updates that contain substantial changes, the company agrees to e-mail you, if youve created an account and provided a valid e-mail address. The company may also announce updates with special messages or alerts on the forum.
Once you get notice of an update to these terms, you must agree to the new terms in order to keep using the forum.

View File

@@ -0,0 +1,18 @@
<h1> Collaboration </h1>
Welcome to the *Collaboration* section of the ThreeFold Manual, the doorway to collaboration and creation on the organic ThreeFold ecosystem.
*All Aboard!*
ThreeFold strongly believes in the power of open-source projects and community-driven collaboration. Do you want to collaborate to the ThreeFold project?
<h2>Table of Contents</h2
- [How to Contribute](./contribute.md)
- [Development Process](./development_process.md)
- [Collaboration Tools](../collaboration_tools/collaboration_tools.md)
- [Circle Tool](../collaboration_tools/circle_tool.md)
- [Website Deployer](../collaboration_tools/website_tool.md)
- [Website Link Checker](../collaboration_tools/website_link_checker.md)
- [How to Test](../testing/testing_readme.md)
- [TestLodge](../testing/testlodge.md)

View File

@@ -0,0 +1,119 @@
<h1> How to Contribute to the Threefold Manual </h1>
<h2>Table of Contents</h2>
- [Quick Method: Create an Issue](#quick-method-create-an-issue)
- [Advanced Method: Create a Pull Request](#advanced-method-create-a-pull-request)
- [Main Steps to Add Content](#main-steps-to-add-content)
- [How to View the mdbook Locally](#how-to-view-the-mdbook-locally)
- [How to Install git and mdbook](#how-to-install-git-and-mdbook)
- [Markdown File Template (Optional)](#markdown-file-template-optional)
- [Questions and Feedback](#questions-and-feedback)
***
## Quick Method: Create an Issue
If you've found some issues or typos in the ThreeFold Manual, feel free to [create an issue on the ThreeFold Manual repository](https://github.com/threefoldtech/info_grid/issues) to let us know. We will then be able to fix it as soon as possible.
The steps are simple:
* Go to the [issues section of ThreeFold Manual](https://github.com/threefoldtech/info_grid/issues) repository on GitHub
* Click on `New Issue`
* Choose an appropriate title
* Explain briefly the issue you found
* Click `Submit New Issue`
***
## Advanced Method: Create a Pull Request
If you found an issue in the manual and you wish to fix the issue yourself, you can always fork the repository and propose the changes in a pull request. We present the main steps in this section as well as further details on how to proceed efficiently.
***
### Main Steps to Add Content
***
We present here the main steps to add content to the Threefold Manual by forking the repository [`threefoldtech/info_grid`](https://github.com/threefoldtech/info_grid) to your own Github account.
* Go to the Threefold Manual repository: [https://github.com/threefoldtech/info_grid](https://github.com/threefoldtech/info_grid)
* Fork the Development branch
* On the top right corner, click `Fork -> Create a new fork`
* Make changes in the forked repository
* To add a new section
* Add a new Markdown file to the [src](https://github.com/threefoldtech/info_grid/blob/development/src) directory
* Add the path of the Markdown file to [SUMMARY](https://github.com/threefoldtech/info_grid/blob/development/src/SUMMARY.md).
* To modify an existing section:
* Make the changes directly in the Markdown file
* Ask for a pull request
* In the forked repository, click `Contribute -> Open pull request`
* Once the pull request is accepted, the changes of the Development branch will be available here: [https://www2.manual.grid.tf](https://www2.manual.grid.tf)
* The Threefold team will regularly update the [Development branch](https://github.com/threefoldtech/info_grid) to the [Master branch](https://github.com/threefoldtech/info_grid/tree/master)
* The new content will thus be available here: [https://www.manual.grid.tf](https://www.manual.grid.tf)
Note: You can update your forked repository by clicking `Sync fork -> Update branch`.
***
### How to View the mdbook Locally
***
Once you've forked the TF Manual repository to your Github account, you might want to see the changes you've made before asking for a pull request. This will ensure that the final output is exactly what you have in mind.
To do so, you simply need to clone the forked repository on your local computer and serve the mdbook on a given port.
The steps are the following:
* In the terminal, write the following line to clone the forked `info_grid` repository:
* ```
git clone https://github.com/YOUR_GIT_ACCOUNT/info_grid
```
* make sure to write your own Github account in the URL
* To deploy the mdbook locally, first go to the **info_grid** directory:
* ```
cd info_grid
```
* Then write the following line. It will open the manual automatically.
* ```
mdbook serve -o
```
* Note that, by default, the URL is the following, using port `3000`, `http://localhost:3000/`
* You should now be able to see your changes.
***
### How to Install git and mdbook
***
To install git, follow the steps provided [here](https://github.com/git-guides/install-git).
To install mdbook, you can download the executable binaries available on the [GitHub Releases Page](https://github.com/rust-lang/mdBook/releases). Simply download the binary for your platform (Windows, macOS, or Linux) and extract the archive. The archive contains an mdbook executable which you can run to build your books. To make it easier to run, you can put the path to the binary into your PATH.
For more information, read the [mdbook Documentation](https://rust-lang.github.io/mdBook/guide/installation.html).
***
### Markdown File Template (Optional)
***
Here are some suggestions on how to organize a Markdown file (`.md`) when you submit contents to the ThreeFold Manual. This is not necessary, but it will ease the whole process.
* Title: Heading 1 (`#` in Markdown syntax)
* Main sections: Heading 2 (`##` in Markdown syntax)
* For Markdown files that contain a *Table of Contents*:
* Use `<h1>` instead of `#` for the _Title_ , and `<h2>` instead of `##` for the _Table of Contents_.
* This quickens editing when creating and updating the ToC ([read this for more details](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one#table-of-contents)).
* Other heading labels should use standard Markdown headings (`##`, etc.).
* If your text reaches heading level 4, you might want to separate your file into two or more files.
* A long article can be spread in many subsections.
***
## Questions and Feedback
If you have any questions or if you would like to share some feedback, let us know in this [Threefold forum post](https://forum.threefold.io/t/new-grid-manual/3783).

View File

@@ -0,0 +1,36 @@
The development cycle is explained below:
![Untitled presentation (1)](https://user-images.githubusercontent.com/8425762/170034170-7247a737-9d99-481d-9289-88d361275043.png)
Devnet:
- continuous development for active version
- can be reset
- should be against a branch named with the version being developed (example: 10.2.3)
Nextnet:
- for parallel version development
- oftentimes, the next major version while development has bugfixes
- should be against a branch named with the version being developed (example: 10.3.1)
QAnet:
- once development is complete, each component is tagged with an rc (example: 10.2.3-rc1) and the new version to be tested is deployed on QAnet
- this net is for INTERNAL QA
- Here, we expect most bugs to be reported
- Once QA signs off, it moves to testnet
Testnet:
- tag as beta release (example: 10.2.3-rc3-beta)
- This is for the community and stability testing
- should be almost completely stable
Mainnet:
- if testnet has no blockers for 2 weeks, community votes to move to mainnet
- everything is merged to main
- final release is tagged (example: 10.2.3)
## GOAL:
moving away from that model to be able to use ephermal environments instead of maintaining such environments, but now they're available for simplicity

View File

@@ -0,0 +1,422 @@
<h1> Development Process </h1>
Our project development process is characterized by agility, collaboration, and, most importantly, respect. We firmly believe in harnessing the collective ingenuity of our team, recognizing that each individual contributes invaluable insights to our codebase, our development process is completely managed on Github, using Github based projects.
<h2>Table of Contents</h2>
- [Quality Assurance (QA) Process](#quality-assurance-qa-process)
- [QA Responsibilities](#qa-responsibilities)
- [Daily Standups](#daily-standups)
- [Provide Test Plans](#provide-test-plans)
- [Test Execution](#test-execution)
- [Test Documentation](#test-documentation)
- [Verification and Closure](#verification-and-closure)
- [Cross-Environment Testing](#cross-environment-testing)
- [Bug Assessment Meetings (BAM)](#bug-assessment-meetings-bam)
- [Additional Testing Types](#additional-testing-types)
- [Expectations for QA Leads](#expectations-for-qa-leads)
- [Test Planning](#test-planning)
- [Test Strategy](#test-strategy)
- [Review and Closure](#review-and-closure)
- [Communication](#communication)
- [QA Verification and Testing](#qa-verification-and-testing)
- [Testplan](#testplan)
- [Verification Process](#verification-process)
***
## Product Definition on Home
`Home` repo serves a special role in the organization, it's the starting point of all development.
- It links to all products & components
- Put only stories, identified with tag `type_story` in the home repo
To streamline our development workflow, we have adopted the GitHub-style projects framework, with all repositories linked to the ThreeFold Grid (tfgrid) product (e.g., version 3.6.0).
- Various views, such as StoryCards for a high-level overview, repository-specific views, and prioritized views, enhance project visibility.
- All repositories are managed within a centralized project, ensuring unified control and coordination.
- Milestones, aligned with semantic versioning, serve as a means to categorize and organize issues, providing versioning per component.
- Each product is clearly outlined in a dedicated project section within the "home" repository.
- The home page in the home repository serves as a hub linking to individual product pages.
- Products are associated with relevant components slated for the upcoming release.
- Product release milestones are clearly marked on the product page.
- Release notes, accessible through each product, offer a historical overview with links to specific components used in each release.
- Interlinked relationships between products and components, as well as links to third-party products with specified version numbers, provide comprehensive tracking.
- Components are meticulously monitored within the same product project.
- A commitment to [semantic versioning](https://semver.org) is mandated for all components.
## Github Project
When creating a new project, please use the grid template project (private repository) available at `https://github.com/orgs/threefoldtech/projects/205`.
### Github project columns
- `No Status`
- Stakeholder or project owner suggests a feature/story/bug to be resolved in this release
- `Accepted`
- The project owner accepts the item, the issue will be worked on and he commits to solve within the release
- Once accepted = then escalation is needed if it can not be done in time
- `In progress`
- The issue is being worked on
- `Blocked`
- We are using the Kanban way of thinking - something in this swimlane needs to be resolved asap, can be e.g. a question
- Means issue cannot be completed, attention from e.g. stakeholders is needed
- `Verification` : work is being verified
- The team delivered the feature/bug/story
- Stakeholders need to agree that the issue has been resolved appropriately
- Project owner can never go from 'Verification' to 'Done' without approval from stakeholders (often represented by QA team)
- `Done`
- Everyone agreed (project owner and stakeholders) agreed that the issue was done ok
##### Project Special Columns
Some projects require special columns like the following
- `Pending Review`: Work is done, waiting for review; no need for daily progress updates.
- `Pending Deployment`: If deployment is needed for QA testing on the staging instance.
### Repository
Creating a repository involves establishing a foundation for collaborative development. Follow these guidelines to ensure consistency and best practices in repository creation.
#### Naming
- Choose a clear and descriptive name for the repository.
- Use lowercase letters and hyphens for improved readability.
#### README
- Include a comprehensive README.md file.
- Provide essential information about the project, including setup instructions, dependencies, and usage guidelines.
#### License
- Include a LICENSE file specifying the project's licensing terms, threefoldtech is using [Apache2 License](https://github.com/threefoldtech/info_grid/blob/master/LICENSE).
#### Github Templates
- Use github templates to provide proper template for issues [bug_report](./bug_report.md) or [feature request](./feature_request.md)
- Use github templates to provide proper template for [pull requests](./PULL_REQUEST_TEMPLATE.md)
#### Expected Workflows
- Set up a continuous integration (CI) pipeline using a tool like GitHub Actions.
- Include linting, tests and code quality checks in the CI process.
- Set up automation to deployment on staging, and production server
- Building docker images
- Building flists
- Pushing to the hub
- Publishing packages
### Issues
Consider the following for Effective Issue Reporting
1. **Title:**
- Provide a clear and concise title that summarizes the issue.
2. **Description:**
- Offer a detailed description of the issue, including what you expected to happen and what actually occurred.
- Provide steps to reproduce the issue, if possible.
- Include any error messages received.
3. **Environment:**
- Specify the environment in which the issue occurred (e.g., operating system, browser, version).
4. **Attachments:**
- Attach relevant files or screenshots to help visualize the problem.
5. **Issue Type:**
- Label the issue with an appropriate type (e.g., bug, feature request, question).
6. **Priority:**
- If applicable, assign a priority level to indicate the urgency of the issue.
7. **Version Information:**
- Include information about the version of the software or application where the issue was encountered.
8. **Labels:**
- Apply relevant labels to categorize the issue (e.g., priority levels, type of issue).
9. **Reproducibility:**
- Clearly state whether the issue is reproducible and under what conditions.
10. **Additional Context:**
- Provide any additional context that might help in understanding and addressing the issue.
11. **Assigned:**
- If known, assign the issue to the responsible team member or developer.
12. **Discussion:**
- Engage in discussions with the development team and other stakeholders to gather insights and potential solutions.
By following these guidelines, you contribute to a more efficient issue resolution process, enabling developers and the team to address concerns promptly and effectively.
#### Issue Labels
See [issue labels](issue_labels.md)
#### Branch Names in Issue titles
Each issue has the name of a branch in the title as [development_something], the name 'development' can be skipped and its the default or previous could also be written as [something] but don't forget branch is development_...
If not specified, it is to be fixed/developed on development.
#### Milestones for Issues
We use milestones for version numbers e.g `1.4.2` means this issue is going to be part of the release of `1.4.2` of the component.
> It's very important that nobody works on any issue in milestones not part of the global project plan
- No milestone means need to be sorted
- Number e.g `1.4.2` means
So issues with no milestones can only be in 1 condition: new and not sorted out yet where (repo) it belongs
### Branching
We encourage collaborative branching. Meaning any group of people working within the same scope are highly encouraged to work on the same branch, trusting and communicating with one another.
Our branching strategy is:
- `master` is the last stable release
- `master_$hotfix` is only for solving BLOCKING issues which are in the field on the last release
- short living
- `development` is where all stories branch from, and the one that has hotfixes if needed
- `development_$storyname`
- branch for a story
- always updated from development(_hotfixes)
- `development_$storyname_$reviewname`
- short living branch for when reviews are needed for a story
- `development_hotfixes` short living hotfix(es) to allow people to review and then put on development
- now everyone should update from or development or development_hotfixes
- development_hotfixes is always newer than development
- `integration` is a branch used to integrate development branches
- never develop on it, its for verifying & doing tests
We have branches for new features/disruptive changes. These have a prefix of `development_<relevantname>`
Each project and story should define which branches to use & the branching strategy.
There should never be any branch on the system which can not be found back by looking at the stories in the `home` repo.
Title of the story : in between []
### Pull Requests
When developers or a group initiate work on a separate branch and seek input from their peers, it is recommended to promptly open a `draft pull request` for seamless communication. Upon completion of the work, opening a pull request signals that the work is:
- Complete as Defined in the Project: The work aligns with the predefined goals and specifications outlined in the project.
- Well Tested: Thorough testing has been conducted to ensure the reliability and functionality of the code.
- Well Documented: Comprehensive documentation accompanies the code, aiding in understanding and future maintenance.
#### Pull Requests Best Practices
When creating pull requests (PRs), adhere to the following best practices for effective collaboration:
- Early Draft PRs: Open a draft pull request as soon as work begins on a different branch. This allows for ongoing communication and collaboration with peers throughout the development process.
- Timely Updates: Regularly update the PR as new changes are made to keep reviewers informed of progress.
- Clear and Concise Title: Use a clear and concise title that summarizes the purpose or goal of the pull request.
- Detailed Description: Provide a comprehensive description of the changes made, the problem solved, and any relevant context. This aids reviewers in understanding the purpose and impact of the changes.
- Link to Issues: If the pull request addresses specific issues, link them to provide additional context and traceability.
- Reviewers and Assignees: Assign the appropriate reviewers and, if applicable, assignees to ensure that the right people are involved in the review process.
- Complete Work: Ensure that the work is complete as defined in the project requirements. Address any outstanding issues before marking the PR as ready for review.
- Thorough Testing: Verify that the code has undergone thorough testing. Include details about the testing strategy and results in the PR description.
- Documentation: Confirm that the changes are well-documented. Documentation should not only explain how the code works but also guide future developers on its usage and maintenance.
- Address Feedback: Be responsive to feedback from reviewers. Address comments and concerns promptly to facilitate a smooth review process.
- Code Style and Standards: Ensure that the code follows established style guidelines and coding standards. Consistent formatting contributes to maintainability.
- Status Checks: Ensure that automated status checks, such as continuous integration (CI) tests, pass successfully before merging.
By adhering to these best practices, you contribute to a collaborative and efficient development process, fostering a culture of high-quality code and effective communication within the team.
### Commits
Clear and informative commit messages are essential for understanding the history of a project. Follow these guidelines to create meaningful commit messages.
## Message Structure
### Header
- Start with a concise one-line summary
- Use present-tense verbs (e.g., "Add," "Fix," "Update") to describe the action.
### Body
- Optionally, provide a more detailed explanation.
- Break long explanations into bullet points if needed.
## Be Descriptive
- Clearly describe the purpose of the commit.
- Include information about why the change is necessary.
## Reference Issues
- If the commit is related to an issue, reference it in the message.
- Use keywords like "Fixes," "Closes," or "Resolves."
## Consistency
- Be consistent with your writing style and formatting.
- Use the imperative mood consistently throughout.
## Examples
### Good Example
Here's a good example of a commit message
```
Add user authentication feature
- Implement user login functionality
- Enhance user registration form
- Fixes #123
```
### Bad Example
```
Changes
- Bug fix
- Update
- Important changes
```
### Merge or Rebase
If you're the sole developer on the branch, you can use rebase, if more people are collaborating together, use merge
### Merge or Squash merge
Squash only when it makes the history cleaner. Feature branch is a good example, because it is often short-lived, small, and authored by 1 developer.
On the other hand, use regular merge for big feature co-authored by multiple developers eg. long-lived branches, please be aware of the [Disadvantages of squash merges](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/about-merge-methods-on-github#squashing-your-merge-commits)
### Releasing Process
Before tagging a release, open a branch named with the intended version e.g 10.5.x with the quality level
- alpha: doesn't have all the features, but you can use the features in there
- beta: no major, or blocking bugs. All features working for the customer as promised, no blocking bugs
- production: no major, no blocking, no minor bugs and the documentation is ready
check the [release process document](release_process.md) for more information
#### Blocking
Issues categorized as blockers include:
- Inability of the customer to access the functionality as described in the manual.
- Stability concerns that impede progress, particularly instances where the system crashes.
- Security issues that act as barriers to further development.
- Stability issues that hinder smooth operation.
- Performance concerns labeled as blockers when they prevent continuation.
- Performance issues classified as major when they allow for continued work.
#### Progress Reporting
In teams operating remotely, complete transparency is of utmost importance.
Visibility into development progress is crucial and is best achieved through the use of storycards and issues.
To facilitate clear communication, commenting daily is a critical aspect of our process. We advocate for the following format, which aids in asynchronous communication:
```
## Work Completed:
Summarize the tasks successfully finished in relation to the issue. Provide specific details to ensure clarity.
## Work in Progress (WIP):
Detail ongoing efforts and remaining tasks related to this issue. Clearly outline items currently being worked on and those still needing attention.
## Investigation and Solution:
If no work has been completed or is in progress, elaborate on the investigative work undertaken to address the issue. Provide insights into the problem, and if a solution was reached, include it.
```
For issues or stories labeled with `priority_critical`, continuous updates should be at least two updates per day to keep stakeholders informed.
Including an Estimated Time of Arrival (ETA) in the comments is essential. While it serves as an estimation subject to change with new findings, it provides a valuable projection of completion.
# Quality Assurance (QA) Process
QA plays a crucial role in delivering high-quality software. This document outlines responsibilities, expectations, and best practices.
## QA Responsibilities
### Daily Standups
- Attend daily standups for progress updates, issue discussions, and coordination.
### Provide Test Plans
- Collaborate on test plans for each sprint.
### Test Execution
- Execute test plans manually and through automated testing.
- Log and prioritize defects.
- Track nightly tests.
### Test Documentation
- Maintain updated test documentation.
### Verification and Closure
- Verify issues and user stories before closure.
### Cross-Environment Testing
- Conduct test runs across different environments.
### Bug Assessment Meetings (BAM)
- Conduct BAM sessions twice weekly to address community feedback, covering both `test_feedback` repository and active projects.
### Additional Testing Types
- Expand responsibilities to include various testing types such as:
- Performance testing
- Security testing
- Compatibility testing
- Usability testing
- Regression testing
## Expectations for QA Leads
### Test Planning
- Lead the creation of detailed test plans.
### Test Strategy
- Define a testing strategy, emphasizing automation.
### Review and Closure
- Review and close issues, ensuring alignment with the test plan.
### Communication
- Facilitate communication between QA and development teams.
## QA Verification and Testing
### Testplan
- Provide a comprehensive test plan, authored exclusively by the QA lead that serves as the source of truth for the verification process
### Verification Process
- Verify stories in a two-step process
- As soon as the story is moved to In Verification column, QA team can pickup the issue, they need to log their scenarios, executions and link to the testcase in the testplan.
- QA lead can then verify it's aligned to the original requirements and it was properly verified before closing
- QA leads need to test the main features by themselves.
- Automate regression testing through github workflows, and any other means needed.

View File

@@ -0,0 +1,16 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
## Is your feature request related to a problem? Please describe
A clear and concise description of what the problem is. Ex. I'm always frustrated when \[...]
## Describe the solution you'd like
A clear and concise description of what you want to happen.

View File

@@ -0,0 +1,24 @@
# Issue Labels Usage Guidelines
Kindly refrain from using labels other than the specified ones.
## Priority-based Labels
- `priority_critical`: This label indicates that the issue requires immediate attention, with a maximum resolution timeframe of the same day.
- If the assigned developer deems this timeline unachievable, they must escalate the issue immediately.
- The term "critical" implies that the resolution is of utmost urgency, and everyone involved should prioritize it until it is resolved.
- `priority_major`: This label designates issues that are very urgent and should be addressed within a minimal timeframe, typically within 1-2 days but no more than 3 days.
- If the developer anticipates challenges in meeting this timeframe, they are required to escalate the issue promptly.
- `priority_minor`: Issues labeled as such are given a lower priority and are typically positioned towards the end of the sprint cycle.
## Types Labels
- `type_bug`
- `type_feature`
- `type_question`
- `type_story`: This label is used to distinguish story cards, providing an overview of a use case the team aims to achieve.
### For monorepos
Repository owners are free to create labels per component in the monorepo for easier repo management

View File

@@ -0,0 +1,53 @@
<h1> Release Process </h1>
<h2>Table of Contents</h2>
- [Github projects](#github-projects)
- [Releasing the Grid](#releasing-the-grid)
- [Environments](#environments)
- [Versions](#versions)
- [Branching/Tagging](#branchingtagging)
- [Blocking Bugfixes for Mainnet](#blocking-bugfixes-for-mainnet)
***
## Github projects
- We are going to use new github style projects to manage the development process, all repos are linked against tfgrid product e.g 3.6.0
- You can have different views e.g StoryCards only view for Highlever overview, a view by repositories, priorities
- We will drive all repos from that one project
- We should use milestones (semantic version to sort out the issues)
## Releasing the Grid
### Environments
- Grid releases are no longer linked to an environment in a pipeline, while this makes sense in lots of scenarios, it won't scale
- An environment hosts a specific grid version based on the components it has
- In the future, we should be able to create ephermal environments e.g deploy this grid version on these X number of nodes
### Versions
- Releasing should follow [semantic versioning](https://semver.org/)
- Every grid release is linked to X number of components. For example, TFGrid 3.6.1 is linked to terraform 1.0.0, portal 2.0.1, .. etc
### Branching/Tagging
- As mentioned above, releases should should follow semantic versioning. The tag itself is prefixed with a `v`. so vx.y.z or vx.y.z-rc1
- Devnet(s) should host development branches and once it reaches a specific quality they get verified on that branch
- THIS IS NOT TRUE: it can be that on a dev net you have production components
- Once verification happens and everything goes ok, we should tag a release of a component
- Once all components are ready a grid release is complete and we can host that release on whatever environment
- Container image tags must not contain the `v`-prefix
### Blocking Bugfixes for Mainnet
- In case of a blocking bug happening only on mainnet, we branch out of the tag on the affected component repository
- do the fix on that branch
- host a new grid release on a testing environment to verify
- tag the new component
- merge to trunk
- create a new grid release
- host that grid release (its components) on mainnet

View File

@@ -0,0 +1,51 @@
<h1>DAO Voting</h1>
<h2>Table of Contents</h1>
- [An Introduction to the DAO concept](#an-introduction-to-the-dao-concept)
- [Prerequisites to Vote](#prerequisites-to-vote)
- [How to Vote for a Proposal](#how-to-vote-for-a-proposal)
- [The Goal of the Threefold DAO](#the-goal-of-the-threefold-dao)
***
## An Introduction to the DAO concept
[A decentralized autonomous organization (DAO)](https://library.threefold.me/info/threefold#/decentralization/dao/threefold__dao_why) is an entity with no central leadership. Decisions get made from the bottom-up, governed by a community organized around a specific set of rules enforced on a blockchain.
DAOs are internet-native organizations collectively owned and managed by their members. They have built-in treasuries that are only accessible with the approval of their members. Decisions are made via proposals the group votes on during a specified period.
***
## Prerequisites to Vote
Voting for a DAO proposal is very simple. You first need to meet certain requirements to be able to vote.
* Have a [Threefold farm](../../farmers/3node_building/1_create_farm.md)
* Have at least one active [3node server](../../faq/faq.md#i-want-to-farm-tft-with-a-3node-what-are-my-choices) on the farm
* If you created your farm with the Threefold Connect app
* [Import your farm on the Threefold Dashboard](../../threefold_token/storing_tft/tf_connect_app.md#move-farm-from-the-tf-connect-app-to-the-tf-portal-polkadotjs)
***
## How to Vote for a Proposal
To vote, you need to log into your Threefold Dashboard account, go to the DAO section of Portal and vote. Make sure to read the proposition and ask questions on the Threefold Forum proposition post if you have any.
You can watch this short video to learn how to vote for a Threefold DAO proposal:
<div class="youtubeVideoWrapper">
<iframe title="Threefold Dashboard DAO Voting" width="560" height="315" src="https://www.youtube-nocookie.com/embed/8RvBpmloVV0" frameborder="0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups"></iframe>
</div>
If you have any questions, ask around on the [Threefold forum DAO section](https://forum.threefold.io/c/dao/).
***
## The Goal of the Threefold DAO
The goal of DAO voting system is to gather the thoughts and will of the Threefold community and build projects that are aligned with the ethos of the project.
We encourage anyone to share their ideas. Who knows? Your sudden spark of genius might lead to an accepted proposal on the Threefold DAO!
For more information on the Threefold DAO, read the [Threefold Library](https://library.threefold.me/info/threefold#/tfgrid/threefold__dao).

Some files were not shown because too many files have changed in this diff Show More