This commit is contained in:
despiegk 2024-02-23 06:07:41 +03:00
commit a83f4cd5e8
Signed by: despiegk
GPG Key ID: 99E4E1492F73BC18
1963 changed files with 56869 additions and 0 deletions

33
.gitignore vendored Normal file
View File

@ -0,0 +1,33 @@
examples/builder
examples/docker
examples/publisher
examples/texttools
examples/gittools
examples/tmux
examples/vredis2
*dSYM/
publisher/publish
install_publisher
.vmodules/
vex_webserver
publishtools/publishtools
.vscode
*.log
!.env.example
.cache
.DS_Store
src/.temp
content/blog
content/news
content/person
content/project
node_modules
!.env.example
.env
.env.*
yarn.lock
.installed
package-lock.json
dist
.temp

73
LICENSE Normal file
View File

@ -0,0 +1,73 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
Copyright 2024 redz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

58
README.md Normal file
View File

@ -0,0 +1,58 @@
# Info for our new Internet / Social network
> [https://info.ourworld.tf/duniayetu](https://info.ourworld.tf/duniayetu)
## First install hero:
```bash
# Download the hero installer script
curl https://raw.githubusercontent.com/freeflowuniverse/crystallib/development/scripts/installer_hero.sh > /tmp/hero_install.sh
# Run the script as root to properly complete the script (e.g. sudo bash ...)
bash /tmp/hero_install.sh
# Check how to use, can also do on each of the subcommands
hero -help
# If it can't find hero, do the following on osx
source ~/.zprofile
```
There is also a [quick guide](./docs/hero_mdbook_fullvm.md) and a [script](./docs/hero_mdbook_fullvm_script.md) on setting mdbook and hero on a full VM running on the TFGrid. Read the [docs](./docs) for more information.
## to run the book
```bash
hero mdbook -u https://git.ourworld.tf/tfgrid/info_tfgrid/src/branch/main/heroscript
# In case you want to open the generated book and edit
hero mdbook -u https://git.ourworld.tf/tfgrid/info_tfgrid/src/branch/main/heroscript -e
```
## troubleshoot
### for Ubuntu, ...
```bash
apt update
apt install curl -y
```
### for OSX
if you see the following, it means you have an outdated brew on your laptop
```bash
## stderr:
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
```
to fix:
```bash
#uninstall
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
rm -rf /opt/homebrew
#re-install homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

View File

@ -0,0 +1,3 @@
## ThreeFold Grid Manual Developer
- [Intro](owh/intro/intro.md)

View File

@ -0,0 +1,3 @@
## ThreeFold Grid Manual Sysadmin
- [Intro](owh/intro/intro.md)

View File

@ -0,0 +1,15 @@
```js
!!book.generate name:'duniayetu' title:'TFGrid Manual Developer'
url:'https://git.ourworld.tf/tfgrid/info_tfgrid_manual/src/branch/main/books/tfgrid_manual_dev'
!!doctree.add
url:'https://git.ourworld.tf/tfgrid/info_tfgrid_manual/src/branch/main/collections'
```

View File

@ -0,0 +1,11 @@
```js
!!books.configure
buildroot:'~/hero/var/mdbuild'
publishroot:'~/hero/www/info'
install:true
reset:false
```

View File

@ -0,0 +1,14 @@
```js
!!sshagent.key_add
name:'books'
privkey:'
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDXf9Z/2AH8/8a1ppagCplQdhWyQ8wZAieUw3nNcxsDiQAAAIhb3ybRW98m
0QAAAAtzc2gtZWQyNTUxOQAAACDXf9Z/2AH8/8a1ppagCplQdhWyQ8wZAieUw3nNcxsDiQ
AAAEC+fcDBPqdJHlJOQJ2zXhU2FztKAIl3TmWkaGCPnyts49d/1n/YAfz/xrWmlqAKmVB2
FbJDzBkCJ5TDec1zGwOJAAAABWJvb2tz
-----END OPENSSH PRIVATE KEY-----
'
```

View File

@ -0,0 +1,15 @@
```js
!!book.generate name:'duniayetu' title:'TFGrid Manual Developer'
url:'https://git.ourworld.tf/tfgrid/info_tfgrid_manual/src/branch/main/books/tfgrid_manual_sysadmin'
!!doctree.add
url:'https://git.ourworld.tf/tfgrid/info_tfgrid/src/branch/main/collections'
```

View File

@ -0,0 +1,11 @@
```js
!!books.configure
buildroot:'~/hero/var/mdbuild'
publishroot:'~/hero/www/info'
install:true
reset:false
```

View File

@ -0,0 +1,14 @@
```js
!!sshagent.key_add
name:'books'
privkey:'
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDXf9Z/2AH8/8a1ppagCplQdhWyQ8wZAieUw3nNcxsDiQAAAIhb3ybRW98m
0QAAAAtzc2gtZWQyNTUxOQAAACDXf9Z/2AH8/8a1ppagCplQdhWyQ8wZAieUw3nNcxsDiQ
AAAEC+fcDBPqdJHlJOQJ2zXhU2FztKAIl3TmWkaGCPnyts49d/1n/YAfz/xrWmlqAKmVB2
FbJDzBkCJ5TDec1zGwOJAAAABWJvb2tz
-----END OPENSSH PRIVATE KEY-----
'
```

3
sync_production.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
/bin/bash ~/hero/var/mdbuild/duniayetu/build.sh
rsync -rav ~/hero/www/info/duniayetu/ root@info.ourworld.tf:/root/hero/www/info/tfgrid4/

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.

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