> For the complete documentation index, see [llms.txt](https://docs.noports.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.noports.com/installation/cloud-installation-guides.md).

# Cloud Installation Guides

{% hint style="info" %}
This is a generic cloud-init guide, we also have some [cloud specific guides](#cloud-specific-guides) below
{% endhint %}

The NoPorts daemon can be installed on a Linux cloud virtual machine (VM) using a cloud-init script of the form:

```bash
#!/bin/bash
# Modify these lines to set the installation specific variables
ATCLIENT="@changeme_clientatsign"
ATDEVICE="@changeme_deviceatsign"
DEVNAME="changeme_devicename"
OTP="123456"
USER="changeme_user"
# The rest of the script shouldn't be changed
export HOME="/home/${USER}"
export SUDO_USER="${USER}"
mkdir -p /run/atsign
cd /run/atsign
VERSION=$(wget -q -O- "https://api.github.com/repos/atsign-foundation/noports/releases/latest" | grep -Po '"tag_name": "v\K.*?(?=")')
wget https://github.com/atsign-foundation/noports/releases/download/v${VERSION}/universal.sh
sh universal.sh -t device -c ${ATCLIENT} -d ${ATDEVICE} -n ${DEVNAME}
/usr/local/bin/at_activate enroll -a ${ATDEVICE} -s ${OTP} -p noports -k /home/${USER}/.atsign/keys/${ATDEVICE}_key.atKeys -d ${DEVNAME} -n "sshnp:rw,sshrvd:rw"
chown -R ${USER}:${USER} /home/${USER}/.atsign
```

Some clouds, such as Azure and Oracle Cloud will take the script pretty much as presented above. Other clouds, including AWS and GCP need alternate formatting or additional customisation.

In all cases the variables in the first section of the script should be changed to match the Atsigns being used, the desired device name, the Linux username and the one time password (OTP) or semi-permanent passcode (SPP) being used. e.g.:

```bash
#!/bin/bash
# Modify these lines to set the installation specific variables
ATCLIENT="@democlient"
ATDEVICE="@demodevice"
DEVNAME="cloudvm1"
OTP="643791"
USER="ubuntu"
```

Once the VM is started (which will generally take a few minutes) the NoPorts daemon will be waiting for an APKAM key in order to start up. That key can be approved using `at_activate`:

```bash
at_activate approve -a @democlient --arx noports --drx cloudvm1
```

### Cloud Specific Guides

{% content-ref url="/pages/PsSEAPWYUthqOKC2Cyig" %}
[Automated Installation on Amazon Web Services (AWS)](/installation/cloud-installation-guides/automated-installation-on-amazon-web-services-aws.md)
{% endcontent-ref %}

{% content-ref url="/pages/ocDE62yEXrQHHrQOalN5" %}
[Automated Installation on Google Cloud Platform (GCP)](/installation/cloud-installation-guides/automated-installation-on-google-cloud-platform-gcp.md)
{% endcontent-ref %}

{% content-ref url="/pages/ussqaaU7TwK06wpinYrR" %}
[Automated Installation on Microsoft Azure](/installation/cloud-installation-guides/automated-installation-on-microsoft-azure.md)
{% endcontent-ref %}

{% content-ref url="/pages/TaRBDBVzgf6SGbT4MfJk" %}
[Automated Installation on Oracle Cloud Infrastructure (OCI)](/installation/cloud-installation-guides/automated-installation-on-oracle-cloud-infrastructure-oci.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.noports.com/installation/cloud-installation-guides.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
