# Generic VPS Installation

{% hint style="warning" %}
Alma Linux is the only version of Linux that is officially unsupported due to issues it consistently causes with Docker, but please use Ubuntu.  &#x20;
{% endhint %}

{% hint style="success" %}
**Here's a preview of the steps we will be taking throughout this document to get your ESP Platform up and running on your VPS in only 2 or 3 minutes:**&#x20;
{% endhint %}

* [ ] Find your VPS IP Address and root password
* [ ] Connect to your VPS using SSH from macOS terminal or PuTTY on Windows&#x20;
* [ ] Install curl
* [ ] Download your software to the VPS from your portal at <https://appsumo.emaildelivery.com> using curl&#x20;
* [ ] Exact your software archive like you would a zip or rar file
* [ ] Run our automated installation tool for Docker (Zero effort)
* [ ] Run our automated EZ Setup tool to install your software (1 out of 10 effort)
* [ ] Log into your new ESP platform as the administrator in your web browser
* [ ] Brag to everyone you know about running your own ESP 😎

{% hint style="info" %}
**To access your VPS you'll need the IP address and root password**

We'll show you how to use this information to connect to your server using ssh on both macOS and Windows
{% endhint %}

{% hint style="info" %}
**To connect to your VPS on macOS, you'll open terminal and use the ssh command.**
{% endhint %}

{% hint style="info" %}
**To connect to your VPS on Windows, you'll download a tool called PuTTY:**

<https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html>
{% endhint %}

{% hint style="info" %}
**For this example we'll use macOS.**&#x20;
{% endhint %}

{% hint style="info" %}
**Copy the IP of your VPS, open terminal, type ssh root@ and paste the IP in after the @, like the screenshot below:**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F2oi1u4yIfZngY5O5BmRt%2FScreenshot%202023-10-26%20at%2010.54.09%E2%80%AFPM.png?alt=media&#x26;token=80e7313b-3186-412e-8dc0-715b28af43fa" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FuOavTqyUVH2Db65KaUuC%2FScreenshot%202023-10-26%20at%2011.27.00%E2%80%AFPM.png?alt=media&#x26;token=de8a0283-267d-46e6-96bf-ee906757e799" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Now copy the root password, paste it into the password prompt, and hit enter.**&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2Fj2l3f28tt4kEOuFPFjKn%2FScreenshot%202023-10-26%20at%2010.54.58%E2%80%AFPM.png?alt=media&#x26;token=5e838d26-4aa9-4004-84be-413945e5053e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Once you're logged in as the root user, the first thing you're going to need to do is install curl with this command:**
{% endhint %}

```
apt-get install -y curl
```

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FUI76wVIiwNsiHg6b1ocs%2FScreenshot%202023-10-26%20at%2011.30.24%E2%80%AFPM.png?alt=media&#x26;token=61e37464-aa1d-400b-b4b7-9abaeeabc449" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Once you've installed curl, you're ready to download your ESP platform from the portal at** [https://appsumo.emaildelivery.com ](https://appsumo.emaildelivery.com)
{% endhint %}

{% hint style="info" %}
**Click the clipboard link next to "ESP Platform Download Command", and paste it into your terminal window to download the software.**&#x20;
{% endhint %}

**Copy:**

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FJ3YK0VfyDiMcKKoNZKfR%2FScreenshot%202023-10-26%20at%2010.58.27%E2%80%AFPM.png?alt=media&#x26;token=2319b250-18a4-4a20-b87c-becf6f849cb3" alt=""><figcaption></figcaption></figure>

**Paste**&#x20;

{% hint style="info" %}
**Hit enter and wait for the download to complete:**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FkDg1SlZj1XTqA0M7pZH4%2FScreenshot%202023-10-26%20at%2011.00.30%E2%80%AFPM.png?alt=media&#x26;token=f78b9604-2277-44bf-a7f8-a6a0cde5b7e1" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**You've just downloaded our software archive, this is similar to a zip file or a rar, so you're going to need to extract it to access its files.**
{% endhint %}

{% hint style="info" %}
**Run the following command to unpack the platform archive:**
{% endhint %}

```
tar xzvf edcom-install.tgz
```

{% hint style="info" %}
**You'll see output like the following**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FeyZS75xnFPlbbIsG8YWh%2FScreenshot%202023-10-26%20at%2011.01.17%E2%80%AFPM.png?alt=media&#x26;token=f790a5cc-a24d-4164-aa5f-625055ac2154" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Once the extraction process is finished, change directory to edcom-install:**
{% endhint %}

```
cd edcom-install
```

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FKDr74v3mD5vbOoiMEaQO%2FScreenshot%202023-10-27%20at%2012.39.15%E2%80%AFPM.png?alt=media&#x26;token=d7f6e439-8490-4163-ba18-7a151ad7e080" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Now run our automated Docker installation script:**
{% endhint %}

<pre><code><strong>./install_docker_on_ubuntu.sh
</strong></code></pre>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FXKUPAzPOKSNtk5qUpSP0%2FScreenshot%202023-10-27%20at%2012.41.25%E2%80%AFPM.png?alt=media&#x26;token=c3b57ece-5439-44f5-96a2-0193324e221e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FQDFrCVMilKjx0Vizicyb%2FScreenshot%202023-10-27%20at%2012.41.45%E2%80%AFPM.png?alt=media&#x26;token=fcf67719-40f3-4fdd-82ca-db6252f26474" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Now that Docker is installed, you're ready to run the EZ Setup installer:**
{% endhint %}

```
./ez_setup.sh
```

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FXWIH2oh4JBCYJwyyF1dF%2Fimage.png?alt=media&#x26;token=988d5bb1-10f7-4cb2-8312-794fab88e499" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**The EZ Setup script is going to ask you a series of questions it uses to automate the installation, and then you'll be done.**
{% endhint %}

First question:

{% hint style="info" %}
**Do you want to proceed with the automated setup? \[y/n]: y**&#x20;
{% endhint %}

Type **y**

Second question:&#x20;

{% hint style="info" %}
**Is a recent version of Docker already installed on this server (if you don't know the answer, type "n") \[y/n]? y**
{% endhint %}

Type **y**

{% hint style="success" %}
**The Docker images which contain your ESP platform will begin loading:**&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FvJEDJQHpyCwRabkK80Mi%2FScreenshot%202023-10-27%20at%2012.50.24%E2%80%AFPM.png?alt=media&#x26;token=78d37d2a-26b5-47ec-89a6-48e5a6791218" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Now you'll be asked for an IP address to use for the ESP, use the same you connected with over ssh:**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FwQo2vNqDXhdRBfD7J3Nu%2Fimage.png?alt=media&#x26;token=2927efac-eec3-411d-bbe0-2119ee34ee9c" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**It's time to enter the subdomain and domain you're going to create for your ESP after you've completed this installation process.**&#x20;
{% endhint %}

{% hint style="info" %}
**The DNS record doesn't need to exist right now, but you need to tell the platform that you'll be accessing it using that domain in the future.**&#x20;
{% endhint %}

{% hint style="info" %}
**After installation, you can access your ESP platform using the IP address in a web browser to get started, until you've added the DNS.** &#x20;
{% endhint %}

{% hint style="info" %}
**Just make the subdomain "esp" for simplicity.**&#x20;
{% endhint %}

{% hint style="info" %}
**So if your domain name is fivetacofiesta.com, name your platform esp.fivetacofiesta.com**.&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FrD2GxxB5uWccTXULWvRV%2FScreenshot%202023-10-27%20at%2012.53.46%E2%80%AFPM.png?alt=media&#x26;token=8b6b2876-3b22-4415-8dd1-07b2b33fb9fd" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**To enter your license key you're going to need to head back over to the portal again:**&#x20;
{% endhint %}

{% hint style="info" %}
**This time copy and paste from the "ESP Platform License Key" up at the top, instead of where you copied it from last time.**&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FWFgLy2yAvEewwsw6jk3b%2FScreenshot%202023-10-27%20at%2012.56.53%E2%80%AFPM.png?alt=media&#x26;token=5e2d9bf0-bb9d-4526-b919-a415f4b7f6ad" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2Fu8O2ar5v9Giw2CdilVWM%2FScreenshot%202023-10-27%20at%2012.58.38%E2%80%AFPM.png?alt=media&#x26;token=e4bcd068-e2ee-4eff-9f75-1ea7150a831c" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**We give professional IT people the chance to opt out of a technical optimization used for our software, but you'll want to accept and just hit y when asked about vm.overcommit\_memory.**&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F0hSsmUnPAyWlfcsbOUKO%2Fimage.png?alt=media&#x26;token=ba3b42a1-548c-4a0f-8b8c-115ab8dfcdfd" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Your platform should boot up now without errors:**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FFCscjm9rAwhfuwgG3o8s%2Fimage.png?alt=media&#x26;token=814a7a93-14f5-4404-be89-740fea08d7a7" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Enter your desired Name, Company Name, and your Administrator Email Address.**

**The administrator email address doesn't have to exist, you can make it up:**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FI9GWqCv0ezyOAJeFCtW0%2FScreenshot%202023-10-27%20at%201.03.46%E2%80%AFPM.png?alt=media&#x26;token=807195fc-9995-401c-8a94-530405b02bbb" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**When you enter the password for your administrator email address, it won't look like you're typing anything, this is fine, it's working.**&#x20;
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F4JuWsR3TxGXj9JQh29q5%2FScreenshot%202023-10-27%20at%201.04.09%E2%80%AFPM.png?alt=media&#x26;token=ad1fb60d-eb69-4cce-979d-2b61db375abe" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FATlneEKIjEBZRpQXbZ4D%2FScreenshot%202023-10-27%20at%201.04.23%E2%80%AFPM.png?alt=media&#x26;token=ce5526b3-2638-4de6-b150-78c94d55f46f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2FdABxnaWzkIHtAR2Viw4G%2Fimage.png?alt=media&#x26;token=9b16a9dc-5f0f-482b-b9a0-47186ef11174" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Your ESP platform is now online and can be accessed in any web browser using it's IP address**
{% endhint %}

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F2UYZkJ1kKpIDDpcSfGRS%2FScreenshot%202023-10-27%20at%201.16.27%E2%80%AFPM.png?alt=media&#x26;token=7427aada-361a-4ef6-a4d8-9bb3e84441df" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Next, we're going to set up DNS for your ESP so you'll be able to access it from your web browser using the domain name you entered earlier, instead of the IP address.**
{% endhint %}

{% hint style="info" %}
**Using Cloudflare in our example, we're going to create a DNS "A" record for the subdomain entered during installation, and point it at our VPS IP.**&#x20;
{% endhint %}

{% hint style="info" %}
**You'll have a similar DNS record creation process on your own DNS hosting provider, however, you should switch to Cloudflare if you can (it's free).**&#x20;
{% endhint %}

Create a new DNS "A" record:

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2Fp2kePNSxA0ZDr0toRxYA%2FScreenshot%202023-12-09%20at%2012.37.51%E2%80%AFAM.png?alt=media&#x26;token=dd7422f5-16ee-44b4-8af9-503a587d8961" alt=""><figcaption></figcaption></figure>

Enter the subdomain you used during the ESP installation and your Racknerd VPS IP address

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F6oaXVnBkpoJLs1Df6BwX%2FScreenshot%202023-12-09%20at%2012.39.09%E2%80%AFAM.png?alt=media&#x26;token=43ca4e5f-5c18-4281-9212-c17b42070809" alt=""><figcaption></figcaption></figure>

Save and verify the new DNS record was created successfully.

<figure><img src="https://2024949584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHNgw7cfnOYHQr0B6GDXr%2Fuploads%2F3CtonFS6T8YwsGV2d9iT%2FScreenshot%202023-12-09%20at%2012.39.23%E2%80%AFAM.png?alt=media&#x26;token=bb72b29d-5148-42dd-9adb-c4b2dff1580c" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Access your ESP platform using the DNS record you just created at <http://esp.yourdomainname.com>
{% endhint %}

**\*\*\* Note:** Use the actual domain name you entered during the ESP installation, not esp.yourdomainname.com, it's just a placeholder.&#x20;

{% hint style="warning" %}
**Something to remember for troubleshooting purposes after you've set up DNS is when it seems like your ESP platform might be down, try the IP address as a backup to verify you can still connect ok and it's isolated to a DNS failure or another related issue.**&#x20;
{% endhint %}
