diff --git a/README.md b/README.md
index 40cbf10e..11fdf8b0 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ Want to dive straight in? Start with our [**Quick Start Guide**](guides/cli.md).
### What is the Akash Deployment Marketplace?
-The [Akash Marketplace](glossary/marketplace.md) is where users lease computing resources from Cloud providers before deploying a Docker container on the Akash Container Platform. The marketplace stores on-chain records of requests, bids, leases, and settlement payments using the Akash Token \(AKT\). Akash's blockchain is a [tendermint](https://github.com/tendermint/tendermint)-based application based on the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk).
+The [Akash Marketplace](glossary/marketplace.md) is where users lease computing resources from Cloud providers before deploying a Docker container on the Akash Container Platform. The marketplace stores on-chain records of requests, bids, leases, and settlement payments using the Akash Token (AKT). Akash's blockchain is a [tendermint](https://github.com/tendermint/tendermint)-based application based on the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk).
### What is the Akash Container Platform?
@@ -27,7 +27,7 @@ The [Akash Container Platform](glossary/platform.md) is a deployment platform fo
### What is the cost to use Akash?
-The cost of hosting your application using Akash is about one-third the cost of Amazon AWS, Google Cloud Platform \(GCP\), and Microsoft Azure. You can check the prices live using the [Akashlytics.com price comparison tool](https://akashlytics.com/price-compare).
+The cost of hosting your application using Akash is about one-third the cost of Amazon AWS, Google Cloud Platform (GCP), and Microsoft Azure. You can check the prices live using the [Akashlytics.com price comparison tool](https://akashlytics.com/price-compare).
### Why is Akash cheaper than Amazon?
@@ -39,9 +39,9 @@ If you're new to Akash, start with the [**Getting Started guide**](cli/install.m
### Why is Akash different than other Cloud platforms?
-The decentralized cloud is a shift from computing resources being owned and operated by the three large Cloud companies \(Amazon, Google, and Microsoft\) to a decentralized network of Cloud providers running **open source** **software** developed by a community and creating competition in an **open** **marketplace** with more providers.
+The decentralized cloud is a shift from computing resources being owned and operated by the three large Cloud companies (Amazon, Google, and Microsoft) to a decentralized network of Cloud providers running **open source** **software** developed by a community and creating competition in an **open** **marketplace** with more providers.
-Like Airbnb for server hosting, Akash is a marketplace that gives you control over the price you pay and the amenities included \(we call them attributes\). Akash gives app developers a command-line tool for leasing and deploying apps right from a terminal. Akash taps into the massive market of underutilized resources sitting idle in the estimated 8.4 million data centers globally. Any cloud-native and containerized applications running on the centralized cloud can run faster and at a lower cost on the Akash decentralized cloud.
+Like Airbnb for server hosting, Akash is a marketplace that gives you control over the price you pay and the amenities included (we call them attributes). Akash gives app developers a command-line tool for leasing and deploying apps right from a terminal. Akash taps into the massive market of underutilized resources sitting idle in the estimated 8.4 million data centers globally. Any cloud-native and containerized applications running on the centralized cloud can run faster and at a lower cost on the Akash decentralized cloud.
### Why is Akash different than other decentralized platforms?
@@ -49,19 +49,18 @@ Akash hosts [containers](./#what-is-a-container) where users can run _**any**_ C
-### What is the Stack Definition Language \(SDL\)?
+### What is the Stack Definition Language (SDL)?
-You can define the deployment services, datacenters, requirements, and pricing parameters, in a "manifest" file \(deploy.yaml\). The file is written in a declarative language called [Software Definition Language \(SDL\)](stack-definition-language.md). SDL is a human friendly data standard for declaring deployment attributes. The SDL file is a "form" to request resources from the Network. SDL is compatible with the YAML standard and similar to Docker Compose files.
+You can define the deployment services, datacenters, requirements, and pricing parameters, in a "manifest" file (deploy.yaml). The file is written in a declarative language called [Software Definition Language (SDL)](stack-definition-language.md). SDL is a human friendly data standard for declaring deployment attributes. The SDL file is a "form" to request resources from the Network. SDL is compatible with the YAML standard and similar to Docker Compose files.
#### How do I configure Networking for my container?
-Networking - allowing connectivity to and between workloads - can be configured via the Stack Definition Language \([SDL](stack-definition-language.md)\) file for a deployment. By default, workloads in a deployment group are isolated - nothing else is allowed to connect to them. This restriction can be relaxed.
+Networking - allowing connectivity to and between workloads - can be configured via the Stack Definition Language ([SDL](stack-definition-language.md)) file for a deployment. By default, workloads in a deployment group are isolated - nothing else is allowed to connect to them. This restriction can be relaxed.
**Do I need to close and re-create my deployment if I want to update the deployment?**
-No. You can update your deployment. However, only some fields in the Akash stack definition file are mutable. The **image**, **command**, **args**, **env** and **exposed ports** can be modified, but compute resources and placement criteria cannot.
+No. You can update your deployment. However, only some fields in the Akash stack definition file are mutable. The **image**, **command**, **args**, **env** and **exposed ports **can be modified, but compute resources and placement criteria cannot.
## Is there an Akash Testnet?
Yes, but currently it does not have providers. We encourage developers to use Mainnet and provide tokens to do that. To request tokens, please follow the [Activation Funding](using-akash-tokens/funding.md#activation-funding) guide.
-
diff --git a/SUMMARY.md b/SUMMARY.md
index ad3ba20e..8d381694 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -23,7 +23,6 @@
* [Marketplace](glossary/marketplace.md)
* [Payments](glossary/escrow.md)
* [Authentication](glossary/mtls.md)
-* [Interoperability (IBC)](glossary/akashnet-relayer.md)
## Command Line Interface (CLI)
diff --git a/cli/deployment.md b/cli/deployment.md
index 3078c94c..f9c0ce4d 100644
--- a/cli/deployment.md
+++ b/cli/deployment.md
@@ -23,19 +23,19 @@ Shell variables will be used throughout these guides to make the instructions so
Because of this, it is important to type the commands into a terminal where the variables have been defined. Closing or changing terminals will mean that you have to re-define the variable.
-| Name | Description |
-| :--- | :--- |
-| `AKASH_NET` | Akash network configuration base URL. |
-| `AKASH_VERSION` | Akash version to install for your network. |
-| `AKASH_CHAIN_ID` | Chain ID of the Akash network for [IBC](../glossary/akashnet-relayer.md). |
-| `AKASH_NODE` | Akash RPC endpoint URL and port number. |
-| `AKASH_ACCOUNT_ADDRESS` | The address of your account. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md#account-address). |
-| `AKASH_KEYRING_BACKEND` | Keyring backend to use for local keys. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md) |
-| `AKASH_KEY_NAME` | The name of the key you will be deploying from. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md) if you haven't yet setup a key |
+| Name | Description |
+| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `AKASH_NET` | Akash network configuration base URL. |
+| `AKASH_VERSION` | Akash version to install for your network. |
+| `AKASH_CHAIN_ID` | Chain ID of the Akash network for [IBC](broken-reference). |
+| `AKASH_NODE` | Akash RPC endpoint URL and port number. |
+| `AKASH_ACCOUNT_ADDRESS` | The address of your account. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md#account-address). |
+| `AKASH_KEYRING_BACKEND` | Keyring backend to use for local keys. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md) |
+| `AKASH_KEY_NAME` | The name of the key you will be deploying from. See [here](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/README.md) if you haven't yet setup a key |
#### Network
-First configure the base URL \(`$AKASH_NET`\) for the Akash Network; copy and paste the command below:
+First configure the base URL (`$AKASH_NET`) for the Akash Network; copy and paste the command below:
```bash
AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
@@ -125,7 +125,7 @@ akash query bank balances --node $AKASH_NODE $AKASH_ACCOUNT_ADDRESS
You should see a response similar to:
-```text
+```
balances:
- amount: "93000637"
denom: uakt
@@ -134,7 +134,7 @@ pagination:
total: "0"
```
-If you don't have a balance, please see the [funding guide](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/funding.md). Please note the balance indicated is denominated in uAKT \(AKT x 10^-6\), in the above example, the account has a balance of _93 AKT_. We're now setup to deploy.
+If you don't have a balance, please see the [funding guide](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/wallet/funding.md). Please note the balance indicated is denominated in uAKT (AKT x 10^-6), in the above example, the account has a balance of _93 AKT_. We're now setup to deploy.
{% hint style="info" %}
Your account must have a minimum balance of 5 AKT to create a deployment. This 5 AKT funds the escrow account associated with the deployment and is used to pay the provider for their services. It is recommended you have more than this minimum balance to pay for transaction fees. For more information on escrow accounts, see [here](../glossary/escrow.md)
@@ -146,13 +146,13 @@ Create a deployment configuration [deploy.yaml](https://github.com/ovrclk/docs/t
You can use cURL to download the file:
-```text
+```
curl -s https://raw.githubusercontent.com/ovrclk/docs/master/guides/deploy/deploy.yaml > deploy.yaml
```
### What's in the Configuration?
-You may use the sample deployment file as-is or modify it for your own needs as desscribed in our [SDL \(Stack Definition Language\)](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/deploy/documentation/sdl/README.md) documentation. A typical modification would be to reference your own image instead of our demo app image.
+You may use the sample deployment file as-is or modify it for your own needs as desscribed in our [SDL (Stack Definition Language)](https://github.com/ovrclk/docs/tree/b65f668b212ad1976fb976ad84a9104a9af29770/guides/deploy/documentation/sdl/README.md) documentation. A typical modification would be to reference your own image instead of our demo app image.
```bash
## DO NOT COPY PASTE THIS INTO TERMINAL
@@ -214,7 +214,7 @@ On the `akashnet-2` network, to ensure tenants have smooth and reliable service
- "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"
```
---or--
+\--or--
```bash
attributes:
@@ -226,17 +226,17 @@ On the `akashnet-2` network, to ensure tenants have smooth and reliable service
Please note that all of the following can be substituted in the `datacenter` field above and should be chosen based on your needs:
-| Datacenter | Location |
-| :--- | :--- |
+| Datacenter | Location |
+| -------------------- | ------------------------- |
| `equinix-metal-ewr1` | New Jersey, United States |
| `equinix-metal-sjc1` | California, United States |
-| `equinix-metal-ams1` | Amsterdam, Netherlands |
+| `equinix-metal-ams1` | Amsterdam, Netherlands |
## Create a Certificate
Before you can create a deployment, a [certificate](../glossary/mtls.md) must first be created. **Your certificate needs to be created only once per account** and can be used across all deployments.To do this, run:
-```text
+```
akash tx cert create client --chain-id $AKASH_CHAIN_ID --keyring-backend $AKASH_KEYRING_BACKEND --from $AKASH_KEY_NAME --node $AKASH_NODE --fees 5000uakt
```
@@ -404,11 +404,11 @@ You should see a response similar to:
Now you need to extract the values below to shell variables. Find the DSEQ, OSEQ, and GSEQ in the deployment you just created. We will be using these to reference the deployment when signing the lease.
-| Attribute | Value |
-| :--- | :--- |
+| Attribute | Value |
+| ------------ | -------- |
| `AKASH_DSEQ` | `140324` |
-| `AKASH_OSEQ` | `1` |
-| `AKASH_GSEQ` | `1` |
+| `AKASH_OSEQ` | `1` |
+| `AKASH_GSEQ` | `1` |
Remember to replace the **AKASH\_DSEQ, AKASH\_OSEQ, and AKASH\_GSEQ** with the numbers from your deployment and configure the shell variable. Note that if this is your first time, OSEQ and GSEQ will be 1.
@@ -507,7 +507,7 @@ akash query market order get --node $AKASH_NODE --owner $AKASH_ACCOUNT_ADDRESS -
You should see a response similar to:
-```text
+```
created_at: "140325"
order_id:
dseq: "140324"
@@ -557,7 +557,7 @@ akash query market bid list --owner=$AKASH_ACCOUNT_ADDRESS --node $AKASH_NODE --
You should see a response similar to:
-```text
+```
bids:
- bid:
bid_id:
@@ -619,8 +619,8 @@ For this example, we will choose `akash10cl5rm0cqnpj45knzakpa4cnvn5amzwp4lhcal`.
For convenience and clarity for future referencing, we can extract the below value to a shell variable that we will be using to reference the deployment:
-| Attribute | Value |
-| :--- | :--- |
+| Attribute | Value |
+| ---------------- | ---------------------------------------------- |
| `AKASH_PROVIDER` | `akash10cl5rm0cqnpj45knzakpa4cnvn5amzwp4lhcal` |
Replace the Value with the provider you select, and then run this command to set the provider shell variable:
@@ -664,7 +664,7 @@ akash query market lease list --owner $AKASH_ACCOUNT_ADDRESS --node $AKASH_NODE
You should see a response similar to:
-```text
+```
leases:
- escrow_payment:
account_id:
@@ -765,100 +765,99 @@ Updating active deployments is a two step process. First, edit your deployment Y
Akash Groups are translated into Kubernetes Deployments, this means that only a few fields from the Akash SDL are mutable. For example image, command, args, env and exposed ports can be modified, but compute resources and placement criteria cannot.
{% endhint %}
-1. Update your deployment by running:
-
- ```bash
- akash tx deployment update deploy.yaml --dseq $AKASH_DSEQ --from $AKASH_KEY_NAME --chain-id $AKASH_CHAIN_ID --node $AKASH_NODE --fees=5000uakt
- ```
-
- After confirming your transaction, you should see a response similar to this:
-
- ```javascript
- {
- "height":"98503",
- "txhash":"94FEF5ACB39145BB41ECB1FC224480ED5C80414D0757FC07C844B16EC246D304",
- "codespace":"",
- "code":0,
- "data":"0A130A117570646174652D6465706C6F796D656E74",
- "raw_log":"[{\"events\":[{\"type\":\"akash.v1\",\"attributes\":[{\"key\":\"module\",\"value\":\"deployment\"},{\"key\":\"action\",\"value\":\"deployment-updated\"},{\"key\":\"version\",\"value\":\"2b86f778de8cc9df415490efa162c58e7a0c297fbac9cdb8d6c6600eda56f17e\"},{\"key\":\"owner\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"},{\"key\":\"dseq\",\"value\":\"98199\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"update-deployment\"},{\"key\":\"sender\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"akash17xpfvakm2amg962yls6f84z3kell8c5lazw8j8\"},{\"key\":\"sender\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"},{\"key\":\"amount\",\"value\":\"5000uakt\"}]}]}]",
- "logs":[
- {
- "msg_index":0,
- "log":"",
- "events":[
- {
- "type":"akash.v1",
- "attributes":[
- {
- "key":"module",
- "value":"deployment"
- },
- {
- "key":"action",
- "value":"deployment-updated"
- },
- {
- "key":"version",
- "value":"2b86f778de8cc9df415490efa162c58e7a0c297fbac9cdb8d6c6600eda56f17e"
- },
- {
- "key":"owner",
- "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
- },
- {
- "key":"dseq",
- "value":"98199"
- }
- ]
- },
- {
- "type":"message",
- "attributes":[
- {
- "key":"action",
- "value":"update-deployment"
- },
- {
- "key":"sender",
- "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
- }
- ]
- },
- {
- "type":"transfer",
- "attributes":[
- {
- "key":"recipient",
- "value":"akash17xpfvakm2amg962yls6f84z3kell8c5lazw8j8"
- },
- {
- "key":"sender",
- "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
- },
- {
- "key":"amount",
- "value":"5000uakt"
- }
- ]
- }
- ]
- }
- ],
- "info":"",
- "gas_wanted":"200000",
- "gas_used":"58833",
- "tx":null,
- "timestamp":""
- }
- ```
+1. Update your deployment by running:
+
+ ```bash
+ akash tx deployment update deploy.yaml --dseq $AKASH_DSEQ --from $AKASH_KEY_NAME --chain-id $AKASH_CHAIN_ID --node $AKASH_NODE --fees=5000uakt
+ ```
- Note the `code: 0` shown in the successful deployment update output above.
+ After confirming your transaction, you should see a response similar to this:
-2. Send the updated manifest by running:
+ ```javascript
+ {
+ "height":"98503",
+ "txhash":"94FEF5ACB39145BB41ECB1FC224480ED5C80414D0757FC07C844B16EC246D304",
+ "codespace":"",
+ "code":0,
+ "data":"0A130A117570646174652D6465706C6F796D656E74",
+ "raw_log":"[{\"events\":[{\"type\":\"akash.v1\",\"attributes\":[{\"key\":\"module\",\"value\":\"deployment\"},{\"key\":\"action\",\"value\":\"deployment-updated\"},{\"key\":\"version\",\"value\":\"2b86f778de8cc9df415490efa162c58e7a0c297fbac9cdb8d6c6600eda56f17e\"},{\"key\":\"owner\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"},{\"key\":\"dseq\",\"value\":\"98199\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"update-deployment\"},{\"key\":\"sender\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"akash17xpfvakm2amg962yls6f84z3kell8c5lazw8j8\"},{\"key\":\"sender\",\"value\":\"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj\"},{\"key\":\"amount\",\"value\":\"5000uakt\"}]}]}]",
+ "logs":[
+ {
+ "msg_index":0,
+ "log":"",
+ "events":[
+ {
+ "type":"akash.v1",
+ "attributes":[
+ {
+ "key":"module",
+ "value":"deployment"
+ },
+ {
+ "key":"action",
+ "value":"deployment-updated"
+ },
+ {
+ "key":"version",
+ "value":"2b86f778de8cc9df415490efa162c58e7a0c297fbac9cdb8d6c6600eda56f17e"
+ },
+ {
+ "key":"owner",
+ "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
+ },
+ {
+ "key":"dseq",
+ "value":"98199"
+ }
+ ]
+ },
+ {
+ "type":"message",
+ "attributes":[
+ {
+ "key":"action",
+ "value":"update-deployment"
+ },
+ {
+ "key":"sender",
+ "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
+ }
+ ]
+ },
+ {
+ "type":"transfer",
+ "attributes":[
+ {
+ "key":"recipient",
+ "value":"akash17xpfvakm2amg962yls6f84z3kell8c5lazw8j8"
+ },
+ {
+ "key":"sender",
+ "value":"akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj"
+ },
+ {
+ "key":"amount",
+ "value":"5000uakt"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "info":"",
+ "gas_wanted":"200000",
+ "gas_used":"58833",
+ "tx":null,
+ "timestamp":""
+ }
+ ```
+
+ Note the `code: 0` shown in the successful deployment update output above.
+2. Send the updated manifest by running:
- ```bash
- akash provider send-manifest deploy.yaml --keyring-backend $AKASH_KEYRING_BACKEND --node $AKASH_NODE --from $AKASH_KEY_NAME --provider $AKASH_PROVIDER --dseq $AKASH_DSEQ --log_level info --home ~/.akash
- ```
+ ```bash
+ akash provider send-manifest deploy.yaml --keyring-backend $AKASH_KEYRING_BACKEND --node $AKASH_NODE --from $AKASH_KEY_NAME --provider $AKASH_PROVIDER --dseq $AKASH_DSEQ --log_level info --home ~/.akash
+ ```
Between the first and second step, the prior deployment's containers will continue to run until the new manifest file is received, validated, and new container group operational. After health checks on updated group are passing; the prior containers will be terminated - this process may take a couple minutes to complete.
@@ -946,9 +945,9 @@ After confirming the transaction, you should see a response similar to:
## Find deployments
-The following commands will filter the full deployment list \(requires jq to be installed\)
+The following commands will filter the full deployment list (requires jq to be installed)
-```text
+```
akash query deployment list -o json | jq '[.deployments[] | .deployment | select(.state == "closed") | .deployment_id]'
akash query deployment list -o json | jq '[.deployments[] | .deployment | select(.state == "active") | .deployment_id]'
```
@@ -959,7 +958,7 @@ When you are done with your application, close the deployment. This will deprovi
Close deployment using deployment by creating a `deployment-close` transaction:
-```text
+```
akash tx deployment close --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --dseq $AKASH_DSEQ --owner $AKASH_ACCOUNT_ADDRESS --from $AKASH_KEY_NAME --keyring-backend $AKASH_KEYRING_BACKEND -y --fees 5000uakt
```
@@ -1206,13 +1205,13 @@ You should see a response similar to below as a confirmation your deployment is
Additionally, you can also query the market to check if your lease is closed:
-```text
+```
akash query market lease list --owner $AKASH_ACCOUNT_ADDRESS --node $AKASH_NODE --dseq $AKASH_DSEQ
```
You should see a response similar to:
-```text
+```
leases:
- escrow_payment:
account_id:
@@ -1248,4 +1247,3 @@ pagination:
```
As you can notice from the above, you lease will be marked `closed`.
-
diff --git a/cli/shell-variables.md b/cli/shell-variables.md
index 7ef411a6..cb5611ad 100644
--- a/cli/shell-variables.md
+++ b/cli/shell-variables.md
@@ -6,14 +6,14 @@ Note it is important to type the commands into a terminal where the variables ha
### Environment Variables
-| Name | Description |
-| :--- | :--- |
-| `AKASH_NET` | Akash network configuration base URL. |
-| `AKASH_VERSION` | Akash version to install for your network. |
-| `AKASH_CHAINID` | Chain ID of the Akash network for [IBC](../glossary/akashnet-relayer.md). |
-| `AKASH_NODE` | Akash RPC endpoint URL and port number. |
-| `AKASH_KEY_NAME` | Key name of your choosing. This documentation uses a value of "alice". |
-| `AKASH_KEYRING_BACKEND` | Keyring backend to use for local keys. One of `os` \(default\), `file`, `test`. |
+| Name | Description |
+| ----------------------- | ------------------------------------------------------------------------------ |
+| `AKASH_NET` | Akash network configuration base URL. |
+| `AKASH_VERSION` | Akash version to install for your network. |
+| `AKASH_CHAINID` | Chain ID of the Akash network for [IBC](broken-reference). |
+| `AKASH_NODE` | Akash RPC endpoint URL and port number. |
+| `AKASH_KEY_NAME` | Key name of your choosing. This documentation uses a value of "alice". |
+| `AKASH_KEYRING_BACKEND` | Keyring backend to use for local keys. One of `os` (default), `file`, `test`. |
### Environment Variables and flags
@@ -27,32 +27,32 @@ for example flag `--keyring-backend` binds to `AKASH_KEYRING_BACKEND` environmen
The precedence is defined in the table below. 0 means highest priority
-| Priority | Type |
-| :--- | :--- |
-| 0 | Environment variable |
-| 1 | Flag |
-| 2 | Config file |
-| 3 | Default value |
+| Priority | Type |
+| -------- | -------------------- |
+| 0 | Environment variable |
+| 1 | Flag |
+| 2 | Config file |
+| 3 | Default value |
Example below shows value precedence for `--keyring-backend` parameter.
* use default value set to `os`
-```text
+```
akash tx deployment create ...
#keyring-backend=os is used
```
* use value set by flag `--keyring-backend=file`
-```text
+```
akash tx deployment create --keyring-backend=file ...
#keyring-backend=file is used
```
* use value set by environment variable `AKASH_KEYRING_BACKEND=test`
-```text
+```
AKASH_KEYRING_BACKEND=test
akash tx deployment create --keyring-backend=file ...
#keyring-backend=test is used
@@ -76,7 +76,7 @@ AKASH_KEYRING_BACKEND=os
## Network
-First, configure the base URL \(`$AKASH_NET`\) for the Akash Network; copy and paste the command below:
+First, configure the base URL (`$AKASH_NET`) for the Akash Network; copy and paste the command below:
```bash
AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
@@ -115,4 +115,3 @@ Print a random API endpoint.
```bash
curl -s "$AKASH_NET/api-nodes.txt" | shuf -n 1
```
-
diff --git a/deploy/unstoppable-web-2.0.md b/deploy/unstoppable-web-2.0.md
index 9980ccb4..330c5f0c 100644
--- a/deploy/unstoppable-web-2.0.md
+++ b/deploy/unstoppable-web-2.0.md
@@ -1,6 +1,6 @@
# Unstoppable Web 2.0
-**Repository:** [https://github.com/coffeeroaster/unstoppable-web2.0/ ](https://github.com/coffeeroaster/unstoppable-web2.0/%20)
+**Repository:** [https://github.com/coffeeroaster/unstoppable-web2.0/ ](https://github.com/coffeeroaster/unstoppable-web2.0/)
This repository serves as a general guide and proof of concept for **deploying a full-stack web application onto blockchain-based decentralized infrastructure**.
@@ -8,18 +8,18 @@ The repository is structured as a **monorepo** - with **infrastructure configura
### Decentralized infrastructure
-| DNS | Frontend | Backend | Redundant Database |
-| :--- | :--- | :--- | :--- |
-| | | | |
-| [Handshake](https://handshake.org/) | [Skynet](https://siasky.net/) | [Akash](https://akash.network/) | [Postgresql](http://postgresql.org/) |
+| DNS | Frontend | Backend | Redundant Database |
+| ---------------------------------- | ---------------------------- | ------------------------------ | ----------------------------------- |
+| | | | |
+| [Handshake](https://handshake.org) | [Skynet](https://siasky.net) | [Akash](https://akash.network) | [Postgresql](http://postgresql.org) |
### Web application
The demo application deployed in this guide is a note app - with create, read, delete functionality. It serves as a minimal proof of concept for deploying a multi-tier web application to decentralized infrastructure.
-| Frontend | Backend | Database |
-| :--- | :--- | :--- |
-| [React](https://reactjs.org/) | [Python FastAPI](https://fastapi.tiangolo.com/) | [PostgreSQL](https://www.postgresql.org/) |
+| Frontend | Backend | Database |
+| ---------------------------- | ---------------------------------------------- | ---------------------------------------- |
+| [React](https://reactjs.org) | [Python FastAPI](https://fastapi.tiangolo.com) | [PostgreSQL](https://www.postgresql.org) |
The application structure is bootstrapped using this **cookiecutter** template [https://github.com/Buuntu/fastapi-react](https://github.com/Buuntu/fastapi-react). The **docker** image is based on [tiangolo/uvicorn-gunicorn-fastapi-docker](https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker).
@@ -29,9 +29,9 @@ The application code, technology choices, and configuration used in this reposit
A deployed **live demo** was deployed using the steps in this guide. Link below:
-| Frontend URL | Backend URL |
-| :--- | :--- |
-| [**Skynet URL**](https://0000ac8v9uf92otn28omnuqfan0qd05f3gjrsfoonjpjl3m3ir7qds8.siasky.net/#) | [https://unstoppablestack.coffeeroaster.me/](https://unstoppablestack.coffeeroaster.me/) |
+| Frontend URL | Backend URL |
+| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
+| [**Skynet URL**](https://0000ac8v9uf92otn28omnuqfan0qd05f3gjrsfoonjpjl3m3ir7qds8.siasky.net/#) | [https://unstoppablestack.coffeeroaster.me/](https://unstoppablestack.coffeeroaster.me) |
## Guide
@@ -39,15 +39,14 @@ A deployed **live demo** was deployed using the steps in this guide. Link below:
There are a few simple options for registering a **Handshake** domain name:
-1. Use a platform like **Namebase** [https://www.namebase.io/](https://www.namebase.io/) or a tool like **Bob Wallet** [https://github.com/kyokan/bob-wallet](https://github.com/kyokan/bob-wallet) to purchase a top-level Handshake domain.
+1. Use a platform like **Namebase** [https://www.namebase.io/](https://www.namebase.io) or a tool like **Bob Wallet** [https://github.com/kyokan/bob-wallet](https://github.com/kyokan/bob-wallet) to purchase a top-level Handshake domain.
- Domain purchases using Handshake are achieved through an [auction process](https://www.namebase.io/blog/tutorial-3-basics-of-handshake-auction-and-bidding). It will take **10 days** for your auction to finalize. and a winning bid, before you can make use of the domain.
-
-2. Use **gateway.io** [https://gateway.io/](https://gateway.io/) to purchase a domain under one of gateway's existing top-level Handshake domains, like **.c** or **.api**. Domains purchased in this way are **usable immediately**.
+ Domain purchases using Handshake are achieved through an [auction process](https://www.namebase.io/blog/tutorial-3-basics-of-handshake-auction-and-bidding). It will take **10 days** for your auction to finalize. and a winning bid, before you can make use of the domain.
+2. Use **gateway.io** [https://gateway.io/](https://gateway.io) to purchase a domain under one of gateway's existing top-level Handshake domains, like **.c** or **.api**. Domains purchased in this way are **usable immediately**.
### Step 2 - Push Docker image
-1. Make sure **Docker** [https://www.docker.com/](https://www.docker.com/) is installed.
+1. Make sure **Docker** [https://www.docker.com/](https://www.docker.com) is installed.
2. **CD** to the directory where your `Dockerfile` is. For this repository, it is in `application/backend/Dockerfile`.
3. **Build** and **tag** docker image `docker build -t/: .`
4. **Login** to dockerhub `docker login --username=`. You will be prompted for a password.
@@ -59,17 +58,16 @@ If you haven't already, take the time to read through the **Akash deployment doc
You can deploy to Akash using the **standard Akash CLI** directly [https://docs.akash.network/guides/install](https://docs.akash.network/guides/install) but for the purpose of this guide, I am using **tombeynon's Akash Deploy UI** [https://github.com/tombeynon/akash-deploy](https://github.com/tombeynon/akash-deploy) which is a great tool built on top of the standard CLI. Steps for deploying to Akash using this tool are below.
-1. Start the **Akash Deploy UI** tool by running the following:
-
- ```text
- docker run -v ~/.akash-ui:/root/akash -p 3000:3000 --rm -it tombeynon/akash-deploy
- ```
+1. Start the **Akash Deploy UI** tool by running the following:
+ ```
+ docker run -v ~/.akash-ui:/root/akash -p 3000:3000 --rm -it tombeynon/akash-deploy
+ ```
2. Visit [http://localhost:3000](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main) to access the tool
3. Use the tool to **create a new wallet**. Make sure to record your mnemonic phrase so that you can restore the wallet if needed in the future.
-4. **Fund this new wallet with at least 5 AKT** \(5,000,000 UAKT\) by transferring 5 AKT or more to the displayed wallet address.
+4. **Fund this new wallet with at least 5 AKT** (5,000,000 UAKT) by transferring 5 AKT or more to the displayed wallet address.
5. **Create a new certificate**. This certificate only needs to be created once and will be used for all future deployments.
-6. **Create a new deployment** using `akash/deploy-sample.yml` as a template. The Akash Stack Definition Language \(SDL\)
+6. **Create a new deployment** using `akash/deploy-sample.yml` as a template. The Akash Stack Definition Language (SDL)
7. Once you have created your deployment, you will start to receive bids. You can view these in the tool.
8. Chose a bid and **Create a lease**, then **Send manifest**.
9. At this point, the tool will show you your **Web URIs** which you can use to access your application.
@@ -91,9 +89,9 @@ You now need to copy those param values and create your `skyns://` URL in the fo
If using **Namebase**, you can now configure your Handshake domain to point to your Skynet hosted frontend by adding a TXT record under the _Blockchain DNS Records_ section on your domain manage page. The value of this record is the `skyns:///` URL that you just generated above.
-This **initial DNS configuration can take up to ~6 hours to be synced**. For all future code changes pushed to the _master_ branch, the _Deploy to Skynet_ Action will automatically update your Skynet Registry data and you should see the changes reflected very quickly.
+This **initial DNS configuration can take up to \~6 hours to be synced**. For all future code changes pushed to the _master_ branch, the _Deploy to Skynet_ Action will automatically update your Skynet Registry data and you should see the changes reflected very quickly.
-**Once the DNS change takes effect**, your site will be accessible at `https://.hns.siasky.net`. For example, the demo application for this guide is accessible at [https://unstoppable-stack.hns.siasky.net/](https://unstoppable-stack.hns.siasky.net/)
+**Once the DNS change takes effect**, your site will be accessible at `https://.hns.siasky.net`. For example, the demo application for this guide is accessible at [https://unstoppable-stack.hns.siasky.net/](https://unstoppable-stack.hns.siasky.net)
### Step 6 - Setup HTTPS URL for API
@@ -101,7 +99,7 @@ Although you can now make requests directly to your Akash URL over HTTP successf
It is likely possible to enabled an HTTPS connection just using Akash deployment configuration but I was unable to find any documentation on this functionality.
-The approach used in this guide is to sign up a free [Cloudflare](https://cloudflare.com/) account and set up their **flexible** SSL/TLS encryption mode on a secondary \(non-Handshake\) domain in order to provide an HTTPS entrypoint that proxies requests to the Akash API server.
+The approach used in this guide is to sign up a free [Cloudflare](https://cloudflare.com) account and set up their **flexible** SSL/TLS encryption mode on a secondary (non-Handshake) domain in order to provide an HTTPS entrypoint that proxies requests to the Akash API server.
Support for HTTPS with Akash is something that I expect to explore further.
@@ -109,7 +107,7 @@ Support for HTTPS with Akash is something that I expect to explore further.
### Backend Redundant Postgresql infrastructure
-The backend runs on [Akash](https://akash.network/). Take a moment to review the Akash [config](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml). The backend stores the database on Akash. Currently, Akash does not have a persistent storage solution. This solution provides the capability to perform regular backups and database restoration via [Skynet](https://siasky.net/). This reference architecture provides the following capability:
+The backend runs on [Akash](https://akash.network). Take a moment to review the Akash [config](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml). The backend stores the database on Akash. Currently, Akash does not have a persistent storage solution. This solution provides the capability to perform regular backups and database restoration via [Skynet](https://siasky.net). This reference architecture provides the following capability:
* Provide a redundant Postgresql configuration. **pg-0** is replicated to **pg-1**
* `pg-0` - the postgres master starts up. When it first starts up, it will download an encrypted db backup from Skynet.
@@ -129,11 +127,11 @@ The backend runs on [Akash](https://akash.network/). Take a moment to review the
#### Architecture
-Based off the [Bitnami pgpool project](https://github.com/bitnami/bitnami-docker-pgpool/), this approach sets up three containers. **pg-0** as a postgresql master, **pg-1** as a postgresql secondary \( running as a hot standby\), and **pg-pool** will determine which postgres container to connect to.
+Based off the [Bitnami pgpool project](https://github.com/bitnami/bitnami-docker-pgpool/), this approach sets up three containers. **pg-0** as a postgresql master, **pg-1** as a postgresql secondary ( running as a hot standby), and **pg-pool** will determine which postgres container to connect to.
#### Testing Postgresql cluster in a test environment
-```text
+```
# run the backend
$docker-compose up -d
# run the front end
@@ -143,7 +141,7 @@ $ cd application/frontend/ && npm install && npm start
#### Shut down **pg-0** container
-```text
+```
$ docker-compose stop pg-0
## verify that things are working as planned
# Connect to the browser at http://localhost:3000
@@ -156,7 +154,7 @@ $ docker-compose stop pg-0
To retrieve a live encrypted backup of the data, you can run the following command against the API:
-```text
+```
# For testing locally with docker-compose
curl -v http://localhost/getsnapshot > dbout.zip
# For testing against AKASH deployment
@@ -174,7 +172,7 @@ Make sure to update the **`$BACKUP_PASS`** env variable in docker-compose.yml, a
Upload the backup to Skynet with [skynet-cli](https://github.com/vbstreetz/skynet-cli) and store URL as **BACKUP\_SKYNET\_URL**
-```text
+```
$ npm install -g skynet-cli
## send it to Skynet!
$ skynet-cli dbout.zip
@@ -183,20 +181,20 @@ $ skynet-cli dbout.zip
#### Tell Unstoppable Stack to load it up next time.
-Update [docker-compose.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/docker-compose.yml) \(for testing locally\) and [akash/deploy-sample.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml) environment variables section and update **BACKUP\_SKYNET\_URL** with the value from the previous step.
+Update [docker-compose.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/docker-compose.yml) (for testing locally) and [akash/deploy-sample.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml) environment variables section and update **BACKUP\_SKYNET\_URL** with the value from the previous step.
**Shutdown and destroy your entire deployment**
-```text
+```
# For test environment
$docker-compose down -v
# For Akash deployment
(Consult Akash [documentation](https://docs.akash.network/guides/deploy)
```
-**Start it back up \(development env\)**
+**Start it back up (development env)**
-```text
+```
$docker-compose up -d
# run the front end
$ cd application/frontend/ && npm start
@@ -205,49 +203,47 @@ $ cd application/frontend/ && npm start
You should now see the values from the database that you backed up.
-**Start it back up \(production env\)**
+**Start it back up (production env)**
-* Update [akash/deploy-sample.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml) with updated ENV variables \(namely the **BACKUP\_SKYNET\_URL** \)
+* Update [akash/deploy-sample.yml](https://github.com/coffeeroaster/unstoppable-web2.0/blob/main/akash/deploy-sample.yml) with updated ENV variables (namely the **BACKUP\_SKYNET\_URL** )
* Redeploy backend to Akash following `step 3` in this guide.
-* If using Handshake \(Step 5\) Use the same Front END URL.
+* If using Handshake (Step 5) Use the same Front END URL.
### Database replication next steps
-* Investigate [NuCypher](https://nucypher.com/) for better key management
+* Investigate [NuCypher](https://nucypher.com) for better key management
* Look into the [SkyNet registry](https://siasky.net/docs/?javascript--node#setting-data-on-the-registry) for a simpler way to provide backup / restoration. Right now, each provision to Akash requires updating a new SkyLink URL. Using a Skylink Registry will allow the container to use a consistent `skyns URL` to retrieve the latest backup for ease of use.
### Run demo application locally
To run the application locally, you can follow the steps below.
-1. Stand up FastAPI and PostgreSQL **backend**
+1. Stand up FastAPI and PostgreSQL **backend**
- ```text
- cd backend
- docker-compose up --build
- ```
+ ```
+ cd backend
+ docker-compose up --build
+ ```
+2. In a separate terminal, stand up the React **frontend**
-2. In a separate terminal, stand up the React **frontend**
+ ```
+ cd frontend
+ npm install
+ npm run start
+ ```
- ```text
- cd frontend
- npm install
- npm run start
- ```
-
-You can now **visit** [**http://localhost:3000**](http://localhost:3000/) in the browser to **access the UI**. For testing the **API**, requests can be made to port 80, **Example**: `GET http://localhost:80/api/v1/notes`
+You can now **visit** [**http://localhost:3000**](http://localhost:3000) in the browser to **access the UI**. For testing the **API**, requests can be made to port 80, **Example**: `GET http://localhost:80/api/v1/notes`
### Sources and resources
**Akash**
* Akash deployment documentation [https://docs.akash.network/guides/deploy](https://docs.akash.network/guides/deploy)
-* Akash multi-tier SDL guide [https://github.com/ovrclk/docs/blob/master/guides/multi-tier-app.md](https://github.com/ovrclk/docs/blob/master/guides/multi-tier-app.md)
+* Akash multi-tier SDL guide [https://github.com/ovrclk/docs/blob/master/guides/multi-tier-app.md](../guides/multi-tier-app.md)
* SDL examples [https://github.com/ovrclk/awesome-akash](https://github.com/ovrclk/awesome-akash)
* In-depth walkthrough guide [https://medium.com/coinmonks/guide-to-deploying-applications-to-akash-decloud-b35dc97e5ca4](https://medium.com/coinmonks/guide-to-deploying-applications-to-akash-decloud-b35dc97e5ca4)
-* Akash Discord [http://discord.akash.network/](http://discord.akash.network/)
+* Akash Discord [http://discord.akash.network/](http://discord.akash.network)
**Skynet**
* Detailed Skynet deployment guide [https://blog.sia.tech/automated-deployments-on-skynet-28d2f32f6ca1](https://blog.sia.tech/automated-deployments-on-skynet-28d2f32f6ca1)
-
diff --git a/glossary/akashnet-relayer.md b/glossary/akashnet-relayer.md
deleted file mode 100644
index f5102ff7..00000000
--- a/glossary/akashnet-relayer.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# Interoperability \(IBC\)
-
-This guide will give you information about IBC connections between Akashnet-2 and other Cosmos SDK based networks.
-
-Please check [relayer repo](https://github.com/cosmos/relayer) for installation and starting relayer instructions.
-
-Below tables represent information of path config with client, connection and channel identifiers between `akashnet-2` and other network.
-
-You can add path between two chains using relayer by running this command:
-
-```bash
-rly paths add [src-chain-id] [dst-chain-id] [path-name]
-```
-
-And it will prompt for path config values. Please enter below values based on destination chain with `akashnet-2`.
-
-## akashnet-2 <> cosmoshub-4 \(Akash Network and Cosmos Hub\)
-
-Here source chain is `akashnet-2` and destination chain is `cosmoshub-4`.
-
-| Key | Value | Description |
-| :--- | :--- | :--- |
-| `chain-id` | akashnet-2 | Chain-ID of source chain. |
-| `client-id` | 07-tendermint-14 | Client-ID of source chain. |
-| `connection-id` | connection-7 | Connection-ID of source chain. |
-| `channel-id` | channel-5 | Channel-ID of source chain. |
-| `port-id` | transfer | Port-ID of source chain. |
-| `order` | unordered | Order of source chain. |
-| `version` | ics20-1 | Version of source chain. |
-| `chain-id` | cosmoshub-4 | Chain-ID of destination chain. |
-| `client-id` | 07-tendermint-180 | Client-ID of destination chain. |
-| `connection-id` | connection-219 | Connection-ID of destination chain. |
-| `channel-id` | channel-116 | Channel-ID of destination chain. |
-| `port-id` | transfer | Port-ID of destination chain. |
-| `order` | unordered | Order of destination chain. |
-| `version` | ics20-1 | Version of destination chain. |
-| `strategy.type` | naive | Strategy type of path. |
-
-Above path config values in `yaml` format:
-
-```text
- src:
- chain-id: akashnet-2
- client-id: 07-tendermint-14
- connection-id: connection-7
- channel-id: channel-5
- port-id: transfer
- order: unordered
- version: ics20-1
- dst:
- chain-id: cosmoshub-4
- client-id: 07-tendermint-180
- connection-id: connection-219
- channel-id: channel-116
- port-id: transfer
- order: unordered
- version: ics20-1
- strategy:
- type: naive
-```
-
-## akashnet-2 <> core-1 \(Akash Network and Persistence Network\)
-
-Here source chain is `akashnet-2` and destination chain is `core-1`.
-
-| Key | Value | Description |
-| :--- | :--- | :--- |
-| `chain-id` | akashnet-2 | Chain-ID of source chain. |
-| `client-id` | 07-tendermint-15 | Client-ID of source chain. |
-| `connection-id` | connection-8 | Connection-ID of source chain. |
-| `channel-id` | channel-6 | Channel-ID of source chain. |
-| `port-id` | transfer | Port-ID of source chain. |
-| `order` | unordered | Order of source chain. |
-| `version` | ics20-1 | Version of source chain. |
-| `chain-id` | cosmoshub-4 | Chain-ID of destination chain. |
-| `client-id` | 07-tendermint-5 | Client-ID of destination chain. |
-| `connection-id` | connection-4 | Connection-ID of destination chain. |
-| `channel-id` | channel-5 | Channel-ID of destination chain. |
-| `port-id` | transfer | Port-ID of destination chain. |
-| `order` | unordered | Order of destination chain. |
-| `version` | ics20-1 | Version of destination chain. |
-| `strategy.type` | naive | Strategy type of path. |
-
-Above path config values in `yaml` format:
-
-```text
- src:
- chain-id: akashnet-2
- client-id: 07-tendermint-15
- connection-id: connection-8
- channel-id: channel-6
- port-id: transfer
- order: unordered
- version: ics20-1
- dst:
- chain-id: core-1
- client-id: 07-tendermint-5
- connection-id: connection-4
- channel-id: channel-5
- port-id: transfer
- order: unordered
- version: ics20-1
- strategy:
- type: naive
-```
-
diff --git a/guides/wallet.md b/guides/wallet.md
index 66c49a09..83ac9b64 100644
--- a/guides/wallet.md
+++ b/guides/wallet.md
@@ -6,55 +6,54 @@ description: Original content produced by Anthony Rosa as part of the community
#### Why do I need a wallet?
-When using cryptocurrency, one of the things you need is to set up a “wallet” in order to hold your coins and use them. A wallet is simply software or hardware that enables you to take your cryptocurrency from an exchange \(where you buy crypto\) and transfer it to a place where it is usable. Using your own wallet instead of storing crypto on an exchange is important because it reduces your risk of losing funds from an exchange hack, and it allows you to deploy your crypto into Decentralized Finance \(DeFi\) applications like [Osmosis DEX](https://app.osmosis.zone/) or stake \(lock up your funds to secure the network to earn rewards\) at higher rates. Exchange wallets are great for buying crypto, non-exchange wallets are better for just about everything else!
+When using cryptocurrency, one of the things you need is to set up a “wallet” in order to hold your coins and use them. A wallet is simply software or hardware that enables you to take your cryptocurrency from an exchange (where you buy crypto) and transfer it to a place where it is usable. Using your own wallet instead of storing crypto on an exchange is important because it reduces your risk of losing funds from an exchange hack, and it allows you to deploy your crypto into Decentralized Finance (DeFi) applications like [Osmosis DEX](https://app.osmosis.zone) or stake (lock up your funds to secure the network to earn rewards) at higher rates. Exchange wallets are great for buying crypto, non-exchange wallets are better for just about everything else!
-The Cosmos Ecosystem has a few compatible wallets, but one that is extremely easy to use is [Keplr](https://keplr.app/). Keplr comes pre-installed with support for Cosmos, Osmosis, Secret Network, Akash, Crypto.org, Starname, Sifchain, Certik, Irisnet, Regen, Persistence, Sentinel, Kava, Cyber, and Straightedge. That’s a lot of options! But, in fact, you can actually add any Cosmos based token through a few extra steps. This tutorial will show you how to download keplr on a browser extension.
+The Cosmos Ecosystem has a few compatible wallets, but one that is extremely easy to use is [Keplr](https://keplr.app). Keplr comes pre-installed with support for Cosmos, Osmosis, Secret Network, Akash, Crypto.org, Starname, Sifchain, Certik, Irisnet, Regen, Persistence, Sentinel, Kava, Cyber, and Straightedge. That’s a lot of options! But, in fact, you can actually add any Cosmos based token through a few extra steps. This tutorial will show you how to download keplr on a browser extension.
-**Here is a YouTube version of this guide where I show you how to download, fund, and trade Akash with a Keplr wallet.** [**Here**](https://www.youtube.com/watch?v=KGu3wiwcxNc&t=642s) **is a video about how to deploy on Akash with a Keplr wallet.**
+**Here is a YouTube version of this guide where I show you how to download, fund, and trade Akash with a Keplr wallet. **[**Here**](https://www.youtube.com/watch?v=KGu3wiwcxNc\&t=642s)** is a video about how to deploy on Akash with a Keplr wallet.**
-## How to Download and Install Keplr for Google Chrome:
+## How to Download and Install Keplr for Google Chrome:
1. Navigate to the [Google Chrome Extension Store](https://chrome.google.com/webstore/category/extensions?hl=en).
2. Search for [Keplr](https://chrome.google.com/webstore/detail/keplr/dmkamcknogkgcdfhhbddcghachkejeap?hl=en).
3. Click “Add to Chrome”
-![](https://miro.medium.com/max/60/1*b-gl3aaJpxx4_VAK4T58QA.png?q=20)![](https://miro.medium.com/max/1400/1*b-gl3aaJpxx4_VAK4T58QA.png)
+![](https://miro.medium.com/max/60/1\*b-gl3aaJpxx4\_VAK4T58QA.png?q=20)![](https://miro.medium.com/max/1400/1\*b-gl3aaJpxx4\_VAK4T58QA.png)
-4. Click the puzzle piece icon in the top right corner of the browser. These are your extensions.![](https://miro.medium.com/max/408/1*6TXuj66rkr9uDZ3K3U6x_A.png)
+4\. Click the puzzle piece icon in the top right corner of the browser. These are your extensions.![](https://miro.medium.com/max/408/1\*6TXuj66rkr9uDZ3K3U6x\_A.png)
-5. Pin Keplr.
+5\. Pin Keplr.
-![](https://miro.medium.com/max/600/1*A3LlAK2TNjx4jGEgK5HCiw.png)
+![](https://miro.medium.com/max/600/1\*A3LlAK2TNjx4jGEgK5HCiw.png)
-6. Click the Keplr icon.
+6\. Click the Keplr icon.
-![](https://miro.medium.com/max/272/1*fUjYWaDxVltwkbu_LWjsvg.png)
+![](https://miro.medium.com/max/272/1\*fUjYWaDxVltwkbu\_LWjsvg.png)
-7. Click “Create new account”
+7\. Click “Create new account”
-![](https://miro.medium.com/max/1288/1*eu6QM_p5jbeorJQTWXMNXg.png)
+![](https://miro.medium.com/max/1288/1\*eu6QM\_p5jbeorJQTWXMNXg.png)
-8. **Write down your Mnemonic Seed 12 word phrase on a piece of paper.** You’ll need these for the next step and if you loose your account information the mnemonic is the only way to get it back. Give your account a name and type in a password of choice. Click Next.
+8\. **Write down your Mnemonic Seed 12 word phrase on a piece of paper.** You’ll need these for the next step and if you loose your account information the mnemonic is the only way to get it back. Give your account a name and type in a password of choice. Click Next.
-![](https://miro.medium.com/max/1400/1*3j8sS3D8YIJbBhNsb2uiig.png)
+![](https://miro.medium.com/max/1400/1\*3j8sS3D8YIJbBhNsb2uiig.png)
-9. Use your piece of paper to click the boxes to arrange the Mnemonic Seed in its proper order. Once complete, **store your Mnemonic Seed in a safe, protected place**. Click “Register”.
+9\. Use your piece of paper to click the boxes to arrange the Mnemonic Seed in its proper order. Once complete, **store your Mnemonic Seed in a safe, protected place**. Click “Register”.
-![](https://miro.medium.com/max/1400/1*8ax_97-t6IRo2mWw7HV1cg.png)
+![](https://miro.medium.com/max/1400/1\*8ax\_97-t6IRo2mWw7HV1cg.png)
-10. Click the Keplr icon.
+10\. Click the Keplr icon.
-![](https://miro.medium.com/max/272/1*OFgsSrkW2yYXQHujo9uI4Q.png)
+![](https://miro.medium.com/max/272/1\*OFgsSrkW2yYXQHujo9uI4Q.png)
-11. Click the dropdown Cosmos menu. Click “Akash”.
+11\. Click the dropdown Cosmos menu. Click “Akash”.
-![](https://miro.medium.com/max/744/1*PPobLOFbdYCNhXEyWmTxxw.png)
+![](https://miro.medium.com/max/744/1\*PPobLOFbdYCNhXEyWmTxxw.png)
-12. You have now downloaded Keplr wallet and are ready to fund your wallet with Akash!
+12\. You have now downloaded Keplr wallet and are ready to fund your wallet with Akash!
-![](https://miro.medium.com/max/736/1*kF2UUXQgSei23dqutkDNVg.png)
+![](https://miro.medium.com/max/736/1\*kF2UUXQgSei23dqutkDNVg.png)
-13. Fund Wallet.
-
-All that is left is to send AKT tokens to the wallet address provided by Keplr.
+13\. Fund Wallet.
+All that is left is to send AKT tokens to the wallet address provided by Keplr.
diff --git a/release-notes/v0.14.0.md b/release-notes/v0.14.0.md
index 08e40393..95c516ae 100644
--- a/release-notes/v0.14.0.md
+++ b/release-notes/v0.14.0.md
@@ -14,116 +14,116 @@ Abilities to manage deployed Akash containers have been accentuated greatly with
* Ability to gain access to the CLI/shell of a running Linux container/Akash deployment.
* Ability to remote copy files from running Linux containers/Akash deployments to a local file instance for inspection.
-In the subsections which follow granular details of these introduced features will be explored with example executions and depictions.
+In the subsections which follow granular details of these introduced features will be explored with example executions and depictions.
### **Remote Shell Command Execution**
_Execute command sets within a running Akash deployment_
-* Command template with variable bracketing as such <variable-name>
+* Command template with variable bracketing as such \
* Notes of interest pertaining to command execution:
* The service-name variable must match the service value in the deployment’s SDL. For example - in the depicted segment of an SDL file below - the service-name in remote shell execution would be “web”
![](https://lh3.googleusercontent.com/BgF4dAJD-W3HKaLJM4xvmLk-BWxN7-OjD5QknE7kWV9K938u3MTZj0slv5VgFd8eC41QF0JmUtzcc4pCcu5PbG-HhgtDp7QCfIokY5AI1vlewgDo1E4QMKo4AXsUMMQOw7USXjSa=s0)
-```text
+```
akash provider lease-shell --from --dseq --provider=
```
* Example command fully populated
-```text
+```
akash provider lease-shell --from mykey --dseq 226186 --provider=akash1gx4aevud37w4d6kfd5szgp87lmkqvumaz57yww web cat /etc/passwd
```
* Example command fully populated using environment variables
* Prior establishment of the AKASH\_KEY\_NAME and AKASH\_PROVIDER environment variables would be necessary to allow this syntax
-```text
+```
akash provider lease-shell --from $AKASH_KEY_NAME --dseq 226186 --provider=$AKASH_PROVIDER web cat /etc/passwd
```
* Expected output example
-![](https://lh4.googleusercontent.com/ME0D00NtelEkGHbiFQYO66gBbrPGs3IvyeNADitplLF2AE6h4JK-iaNCGEQ2C5qd2636lYvdRJRAXTnfFwGdYcJSKOe5TVtF_sb3jDvbtfaQOFeyod8m3d146FB9Ga6eTJ49Cvu4=s0)
+![](https://lh4.googleusercontent.com/ME0D00NtelEkGHbiFQYO66gBbrPGs3IvyeNADitplLF2AE6h4JK-iaNCGEQ2C5qd2636lYvdRJRAXTnfFwGdYcJSKOe5TVtF\_sb3jDvbtfaQOFeyod8m3d146FB9Ga6eTJ49Cvu4=s0)
-### **Access the Deployment Shell \(CLI\)**
+### **Access the Deployment Shell (CLI)**
_Gain access to an active Akash deployment’s CLI/shell_
-* Command template with variable bracketing as such <variable-name>
+* Command template with variable bracketing as such \
* Command notes of interest:
* The service-name variable must match the service value in the deployment’s SDL. For example - in the depicted segment of an SDL file below - the service-name in remote shell execution would be “web”
* Note the “tty” switch dictating desire for shell/CLI access
![](https://lh3.googleusercontent.com/BgF4dAJD-W3HKaLJM4xvmLk-BWxN7-OjD5QknE7kWV9K938u3MTZj0slv5VgFd8eC41QF0JmUtzcc4pCcu5PbG-HhgtDp7QCfIokY5AI1vlewgDo1E4QMKo4AXsUMMQOw7USXjSa=s0)
-```text
+```
akash provider lease-shell --from --dseq --tty --provider= /bin/sh
```
* Example command fully populated
* Note - the container instance must have a /bin/sh shell for the command to work in this exact syntax. If this were an Alpine container base image /bin/sh would need to become /bin/ash and this serves as an example of possible edit to the command syntax based on container type.
-```text
+```
akash provider lease-shell --from mykey --dseq 226186 --tty --provider=akash1gx4aevud37w4d6kfd5szgp87lmkqvumaz57yww web /bin/sh
```
* Example command fully populated using environment variables
* Prior establishment of the AKASH\_KEY\_NAME and AKASH\_PROVIDER environment variables would be necessary to allow this syntax
-```text
+```
akash provider lease-shell --from $AKASH_KEY_NAME --dseq 226186 --tty --provider=$AKASH_PROVIDER web /bin/sh
```
* Expected output example
* Note - Linux commands “pwd” and “ls” are included and as executed within the deployment to validate Akash container shell access
-![](https://lh6.googleusercontent.com/6Bd4MCrhU71vIM5OzREMlV8DdxaSEO2T80PNzFJVO91mVrkDYzdBIZ45V10Crcazvpi6afl3ojocnUu_8bnPgxHflJ6WJuZFvZsZpfcf19wna1xs1akzCEnNzghJLJP_xYsVOB2F=s0)
+![](https://lh6.googleusercontent.com/6Bd4MCrhU71vIM5OzREMlV8DdxaSEO2T80PNzFJVO91mVrkDYzdBIZ45V10Crcazvpi6afl3ojocnUu\_8bnPgxHflJ6WJuZFvZsZpfcf19wna1xs1akzCEnNzghJLJP\_xYsVOB2F=s0)
### **Copy File from Akash Container/Deployment**
_Copy a file from an active Akash deployment to a local file instance for inspection_
-* Command template with variable bracketing as such <variable-name>
+* Command template with variable bracketing as such \
* Command notes of interest:
* The service-name variable must match the service value in the deployment’s SDL. For example - in the depicted segment of an SDL file below - the service-name in remote shell execution would be “web”
![](https://lh3.googleusercontent.com/BgF4dAJD-W3HKaLJM4xvmLk-BWxN7-OjD5QknE7kWV9K938u3MTZj0slv5VgFd8eC41QF0JmUtzcc4pCcu5PbG-HhgtDp7QCfIokY5AI1vlewgDo1E4QMKo4AXsUMMQOw7USXjSa=s0)
-```text
+```
akash provider lease-shell --from --dseq --provider= >
```
* Example command fully populated
-```text
+```
akash provider lease-shell --from mykey --dseq 226186 --provider=akash1gx4aevud37w4d6kfd5szgp87lmkqvumaz57yww web cat /etc/passwd > local_copy_of_passwd
```
* Example command fully populated using environment variables
* Prior establishment of the AKASH\_KEY\_NAME and AKASH\_PROVIDER environment variables would be necessary to allow this syntax
-```text
+```
akash provider lease-shell --from $AKASH_KEY_NAME --dseq 226186 --provider=$AKASH_PROVIDER web cat /etc/passwd > local_copy_of_passwd
```
* Expected output example
* Note - Linux command “ls” and “cat” are included in the depiction to validate successful file copy from remote Akash container/deployment to local file
-![](https://lh4.googleusercontent.com/cJd-e86o-vYhhPNsfLsOjxEXDM7Sb8d-AMkpjj5W8VJ9E0ynO-6RN_nzHQIinb00vPgm8xfj0njYBw5-_CqBuajPqE-sKcxrqkaehfF5Gf9RXiVJf27khnNxbm3lmYWtqTLN2Rfy=s0)
+![](https://lh4.googleusercontent.com/cJd-e86o-vYhhPNsfLsOjxEXDM7Sb8d-AMkpjj5W8VJ9E0ynO-6RN\_nzHQIinb00vPgm8xfj0njYBw5-\_CqBuajPqE-sKcxrqkaehfF5Gf9RXiVJf27khnNxbm3lmYWtqTLN2Rfy=s0)
-## **Deployment HTTP Options \(SDL Definitions\)**
+## **Deployment HTTP Options (SDL Definitions)**
Akash deployment SDL services stanza definitions have been augmented to include “http\_options” allowing granular specification of HTTP endpoint parameters. Inclusion of the parameters in this section are optional but will afford detailed definitions of attributes such as body/payload max size where necessary.
### **Overview**
-The following “http\_options” have been introduced in this version. In subsequent sections of this guide the placement of “http\_options” within the SDL services stanza will be detailed.
+The following “http\_options” have been introduced in this version. In subsequent sections of this guide the placement of “http\_options” within the SDL services stanza will be detailed.\
* _**Max\_body\_size**_ - sets the maximum size of an individual HTTP request body
-* _**Read\_timeout**_ - duration the proxy will wait for a response from the service
+* _**Read\_timeout**_ - duration the proxy will wait for a response from the service
* _**Send\_timeout**_ - duration the proxy will wait for the service to accept a request
* _**Next\_cases**_ - defines the cases where the proxy will try another replica in the service. Reference the upcoming “Next Cases Attribute Usage” section for details pertaining to allowed values.
* _**Next\_tries**_ - number of attempts the proxy will attempt another replica
@@ -133,15 +133,15 @@ The following “http\_options” have been introduced in this version. In subs
* Depiction displays the placement and structure of the http\_options key within the greater services section and within a specific service’s expose key.
* Service section of the greater SDL isolated for focus.
-![](https://lh4.googleusercontent.com/oXXBUSlWyFomOTKfA0z38maeEkdc-Y264KAukd0bnLByiQRDB6l3Qwa43jYmfk-Q4N6CXC7p5PPwqSobCOuVBKlaQUko9HTAJU1SJq_Yyv6AOgv2Z3dKOlQxkoHwJ-yyMv0eRy_e=s0)
+![](https://lh4.googleusercontent.com/oXXBUSlWyFomOTKfA0z38maeEkdc-Y264KAukd0bnLByiQRDB6l3Qwa43jYmfk-Q4N6CXC7p5PPwqSobCOuVBKlaQUko9HTAJU1SJq\_Yyv6AOgv2Z3dKOlQxkoHwJ-yyMv0eRy\_e=s0)
* Depiction displays the placement of http\_options within the entire, greater SDL definition
-![](https://lh3.googleusercontent.com/cOrxEtOvXzyhPHbEpA_DI06km8v627RJZEmGlPFqE41k8N5I53DBGsEi3lXbxYewvjCUiN9fP9qItPC5E0zNOV8jkQYrl2sIREPnafu_k9zleNN1HKSYboFQR40U01o_P22limIC=s0)
+![](https://lh3.googleusercontent.com/cOrxEtOvXzyhPHbEpA\_DI06km8v627RJZEmGlPFqE41k8N5I53DBGsEi3lXbxYewvjCUiN9fP9qItPC5E0zNOV8jkQYrl2sIREPnafu\_k9zleNN1HKSYboFQR40U01o\_P22limIC=s0)
### **Next Cases Attribute Usage**
-The “http\_options” key of “next\_cases” accepts an array of values which may contain one or more of the following values. When included in the “next\_cases” array value - the specified HTTP response code/message will provoke an attempt to service the request by one of the other container members/replicas of the deployment. The “next\_cases” attempt to service via an additional container will only provoke if the SDL defines a count of greater than one \(1\). A deployment with a count of one \(1\) would have no other replicas to facilitate the additional service attempt.
+The “http\_options” key of “next\_cases” accepts an array of values which may contain one or more of the following values. When included in the “next\_cases” array value - the specified HTTP response code/message will provoke an attempt to service the request by one of the other container members/replicas of the deployment. The “next\_cases” attempt to service via an additional container will only provoke if the SDL defines a count of greater than one (1). A deployment with a count of one (1) would have no other replicas to facilitate the additional service attempt.
* “error”
* “timeout”
@@ -162,40 +162,40 @@ Deployment of an updated workload encounters a challenge when the DNS hostname r
In this scenario two identical deployments will be launched mimicking an initial instance/deployment and a secondary updated deployment.
-The following SDL is utilized in this example. Note the presence of the highlighted accept key dictating the DNS name of the deployment \(supermariotest.akash.network\).
+The following SDL is utilized in this example. Note the presence of the highlighted accept key dictating the DNS name of the deployment (supermariotest.akash.network).\
****
-![](https://lh6.googleusercontent.com/aXCyB9D5ScqRmD6ZfBQbI56wZkpQdlxj38AKc3wKB-_tmJR2DXbsPNo1S7nQgqByR5ejykf_MgxO57HUghtFqeKLZVYfBtKT-rb8gIcLiVPKQ9updFikKNRm-aSZeQ31vXyT-MXP=s0)
+![](https://lh6.googleusercontent.com/aXCyB9D5ScqRmD6ZfBQbI56wZkpQdlxj38AKc3wKB-\_tmJR2DXbsPNo1S7nQgqByR5ejykf\_MgxO57HUghtFqeKLZVYfBtKT-rb8gIcLiVPKQ9updFikKNRm-aSZeQ31vXyT-MXP=s0)
-* Two instances of the deployment are provoked \(referred to as “OriginalDeployment” and “UpdatedDeployment” in this guide for clarity\)
-* The OriginalDeployment lease status displays URIs for both the Akash full domain name \(ending in akashian.io\) and the SDL specified domain name of “supermariotest.akash.network”
+* Two instances of the deployment are provoked (referred to as “OriginalDeployment” and “UpdatedDeployment” in this guide for clarity)
+* The OriginalDeployment lease status displays URIs for both the Akash full domain name (ending in akashian.io) and the SDL specified domain name of “supermariotest.akash.network”
* Note - the DSEQ for this deployment is - 241027. The DSEQ reference point will be of importance for later validations.
-![](https://lh6.googleusercontent.com/xaohN1p97gj1v_kyGOX5-4CtMxf25bZp9GGom9s8JH-KFwZ_zSE6O_o0yBiNavdaeMtUS15bfsuZEJCo0Qe7PBtebU8CPuAVcQXavfWa_N1zMAU2EcpQHDRUUhT-RcFS8jb9QEuT=s0)
+![](https://lh6.googleusercontent.com/xaohN1p97gj1v\_kyGOX5-4CtMxf25bZp9GGom9s8JH-KFwZ\_zSE6O\_o0yBiNavdaeMtUS15bfsuZEJCo0Qe7PBtebU8CPuAVcQXavfWa\_N1zMAU2EcpQHDRUUhT-RcFS8jb9QEuT=s0)
-* The UpdatedDeployment lease status displays a single URI - the Akash full domain name \(ending in akashian.io\) - and the SDL specified domain name of “supermariotest.akash.network” is not present
+* The UpdatedDeployment lease status displays a single URI - the Akash full domain name (ending in akashian.io) - and the SDL specified domain name of “supermariotest.akash.network” is not present
* The hostname of “supermariotest.akash.network” was not migrated when the new deployment generated despite the declaration of the hostname in the SDL’s accept key-value pair
-* If the initial deployment \(OriginalDeployment\) had been destroyed prior to the creation of the upgraded instance \(UpdatedDeployment\) the hostname would have been free and the new deployment would have assumed this domain name per the SDL specification.
+* If the initial deployment (OriginalDeployment) had been destroyed prior to the creation of the upgraded instance (UpdatedDeployment) the hostname would have been free and the new deployment would have assumed this domain name per the SDL specification.
* But often to ensure continuity of services the desirable strategy would be to activate the new instance prior to removing a pre-existing instance and only migrate production traffic to a readied upgraded instance.
* The hostname migration commands introduced - and discussed subsequently - allows such graceful migration.
* Note - the DSEQ for the UpdatedDeployment is - 241064. The DSEQ reference point will be of importance for later validations.
-![](https://lh5.googleusercontent.com/lofd32uDsrfnWKWeUwxtxkgj9B_z0hSwJevZJ5YHusIlXPLm-TXYoFmxiM6XCeWiG0IEOm7OD0qnWBpfN47uTcnIT8bxQGsEJ0VXgETiZLrqXVJ5qOhjst9QOcOVhX6cfVG-DeW9=s0)
+![](https://lh5.googleusercontent.com/lofd32uDsrfnWKWeUwxtxkgj9B\_z0hSwJevZJ5YHusIlXPLm-TXYoFmxiM6XCeWiG0IEOm7OD0qnWBpfN47uTcnIT8bxQGsEJ0VXgETiZLrqXVJ5qOhjst9QOcOVhX6cfVG-DeW9=s0)
### **Hostname Migration Command**
The example hostname migration will continue with the two deployment scenarios provoked in the prior sub-section.
-* Hostname migration command syntax with variable bracketing as such <variable-name>
+* Hostname migration command syntax with variable bracketing as such \
-```text
+```
akash provider migrate-hostnames --from --dseq --provider=
```
* Example, populated hostname migration command
-* In referencing the deployment DSEQ the hostname is migrated to the UpdatedDeployment instance with a DSEQ of 241064 and simultaneously removing the hostname from OriginalDeployment \(DSEQ 241027\)
+* In referencing the deployment DSEQ the hostname is migrated to the UpdatedDeployment instance with a DSEQ of 241064 and simultaneously removing the hostname from OriginalDeployment (DSEQ 241027)
-```text
+```
akash provider migrate-hostnames --from mykey --dseq 241064 --provider=akash1gx4aevud37w4d6kfd5szgp87lmkqvumaz57yww supermariotest.akash.network
```
@@ -203,13 +203,13 @@ akash provider migrate-hostnames --from mykey --dseq 241064 --provider=akash1gx4
#### **Hostname/URI Configuration Validations**
-Validations of hostname migration are provided in the sample OriginalDeployment and UpdatedDeployment scenario.
+Validations of hostname migration are provided in the sample OriginalDeployment and UpdatedDeployment scenario.\
* The lease-status command is utilized in the section to display active URIs/hostnames associated with specific deployments
* The syntax for the lease-status command is as follows
-```text
+```
akash provider lease-status --node $AKASH_NODE --home ~/.akash --dseq $AKASH_DSEQ --from $AKASH_KEY_NAME --provider $AKASH_PROVIDER
```
@@ -218,33 +218,33 @@ akash provider lease-status --node $AKASH_NODE --home ~/.akash --dseq $AKASH_DSE
* The migrate-hostnames command is invoked specifying the DSEQ of the upgraded deployment instance
* Post invoke of migrate-hostnames the SDL specified hostname is no longer married to the original instance
-![](https://lh3.googleusercontent.com/NjH7BDfxfVsmlG7ct9jmf2yPBJmGGKyt4jwJ4_N9d2Zpqv1Xlr9MaXCjNlI9jGWduoDwieu2324H91qxI7Kuwau8yNGLOFYYyHtnQhXqTol8ApStJkOD3l6ZtUqa07n1o_8IgtoY=s0)
+![](https://lh3.googleusercontent.com/NjH7BDfxfVsmlG7ct9jmf2yPBJmGGKyt4jwJ4\_N9d2Zpqv1Xlr9MaXCjNlI9jGWduoDwieu2324H91qxI7Kuwau8yNGLOFYYyHtnQhXqTol8ApStJkOD3l6ZtUqa07n1o\_8IgtoY=s0)
* In the depiction which follows the state of the UpgradedDeployment instance proves:
* Post migrate-hostnames command invoke the hostname has been migrated to the upgraded deployment instance
* If desired and in an event in which the upgrade deployment was not servicing traffic correctly - the hostname could be migrated back to OriginalDeployment using the identical migrate-hostname command set but with the OriginalDeployment DSEQ specified
-![](https://lh5.googleusercontent.com/hfSpUr7G2msOv-IseXC-thWYLtNNeRU46ZwmwPdMq94duq_DzpVjQlN-tkBOyNvFau788DzsdS2HfDmWTBnjLFKdg8gudVv6aID9YOFjdMA4uyGp0iePaPYV4C0S0z80f_G3Pz0F=s0)
+![](https://lh5.googleusercontent.com/hfSpUr7G2msOv-IseXC-thWYLtNNeRU46ZwmwPdMq94duq\_DzpVjQlN-tkBOyNvFau788DzsdS2HfDmWTBnjLFKdg8gudVv6aID9YOFjdMA4uyGp0iePaPYV4C0S0z80f\_G3Pz0F=s0)
#### **Connectivity Test Validations**
-As discussed prior - in a production environment it may be advantageous to leave the pre-existing deployment \(I.e. OriginalDeployment in this guide’s scenario\) in place post migration for possible fallback scenarios. But to validate connectivity has migrated successfully - the legacy deployment will be removed in our example scenario to prove connectivity to the upgraded deployment post hostname migration.
+As discussed prior - in a production environment it may be advantageous to leave the pre-existing deployment (I.e. OriginalDeployment in this guide’s scenario) in place post migration for possible fallback scenarios. But to validate connectivity has migrated successfully - the legacy deployment will be removed in our example scenario to prove connectivity to the upgraded deployment post hostname migration.
-* Prior to hostname migration a CuRL test was conducted to the pre-existing deployment \(OriginalDeployment\). At the time of this test the upgraded deployment did not exist. A CuRL header rewrite is utilized to successfully test connectivity to the hostname \(supermariotest.akash.network\).
+* Prior to hostname migration a CuRL test was conducted to the pre-existing deployment (OriginalDeployment). At the time of this test the upgraded deployment did not exist. A CuRL header rewrite is utilized to successfully test connectivity to the hostname (supermariotest.akash.network).
-```text
+```
curl --header 'Host: supermariotest.akash.network' 2gkpg7qhghetb7tu1ku9aspbl8.wwwp1.h18.akashian.io
```
-![](https://lh5.googleusercontent.com/UNii0_mjtEGvVNxuh-u3-h41kAKuCWJWtIMJtM3URMwxfsVcYHN8JhevX7XiZ3HqLnNMrIIviYiAUzbURD2uM71xwiJ6s6pkbZNNd54od_xSps4cTRnRd1eh6We1F7XoWSVFpXRo=s0)
+![](https://lh5.googleusercontent.com/UNii0\_mjtEGvVNxuh-u3-h41kAKuCWJWtIMJtM3URMwxfsVcYHN8JhevX7XiZ3HqLnNMrIIviYiAUzbURD2uM71xwiJ6s6pkbZNNd54od\_xSps4cTRnRd1eh6We1F7XoWSVFpXRo=s0)
* Post deployment of the upgraded instance and hostname migration - the pre-existing deployment is removed, connectivity to the hostname via CuRL is conducted anew, and the successful HTML response validates the hostname was migrated properly.
-```text
+```
curl -v --header 'Host: supermariotest.akash.network' t3r1sn9c5991beqe90hfu6facg.wwwp1.h18.akashian.io
```
-![](https://lh5.googleusercontent.com/WplSAKrIfP_NK6sMP7XoJMKRdwtKyA0Q6g2rhdOl1SgMh02KV0l3w1aE0KGwNH_uhW9_x-9YFJRUwwTynGJ_gJ31L3sDHtkYEoNYNXpwB5u72yko9stYE8n_Es-PzK1wJDlRnkaN=s0)
+![](https://lh5.googleusercontent.com/WplSAKrIfP\_NK6sMP7XoJMKRdwtKyA0Q6g2rhdOl1SgMh02KV0l3w1aE0KGwNH\_uhW9\_x-9YFJRUwwTynGJ\_gJ31L3sDHtkYEoNYNXpwB5u72yko9stYE8n\_Es-PzK1wJDlRnkaN=s0)
### **Requirements and Limitations of Migrate Hostname**
@@ -252,13 +252,13 @@ curl -v --header 'Host: supermariotest.akash.network' t3r1sn9c5991beqe90hfu6facg
* When planning a hostname migration ensure that proper public DNS record updates are planned and executed to limit interruption in services.
* In the example scenario utilized and to highlight necessary public DNS record adjustments:
- * The organization owning the akash.network DNS record would have a DNS canonical name \(CNAME\) record for supermariotest.akash.network pointing to the Akash deployment destination of 2gkpg7qhghetb7tu1ku9aspbl8.wwwp1.h18.akashian.io \(OriginalDeployment\)
- * The organization would need to update the CNAME record once the hostname migration was completed to the destination of t3r1sn9c5991beqe90hfu6facg.wwwp1.h18.akashian.io \(UpgradedDeployment\)
+ * The organization owning the akash.network DNS record would have a DNS canonical name (CNAME) record for supermariotest.akash.network pointing to the Akash deployment destination of 2gkpg7qhghetb7tu1ku9aspbl8.wwwp1.h18.akashian.io (OriginalDeployment)
+ * The organization would need to update the CNAME record once the hostname migration was completed to the destination of t3r1sn9c5991beqe90hfu6facg.wwwp1.h18.akashian.io (UpgradedDeployment)
* An interruption in service may be provoked as the public DNS records are published and distributed
#### **Requirements**
-* A domain name migration may be migrated to any deployment associated with the same wallet.
+* A domain name migration may be migrated to any deployment associated with the same wallet.
* The hostname must be declared in the SDL’s accept key-value pair of the deployment to allow use of the migrate-hostnames command.
#### **Limitations**
@@ -269,7 +269,7 @@ curl -v --header 'Host: supermariotest.akash.network' t3r1sn9c5991beqe90hfu6facg
Full SDL code samples used throughout this guide
-```text
+```
---
version: "2.0"
services:
@@ -313,4 +313,3 @@ deployment:
profile: web
count: 1
```
-