> For the complete documentation index, see [llms.txt](https://docs.unluckytech.com/unluckytech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.unluckytech.com/unluckytech/knowledge-base/guides/virtual-private-servers-vps/cloudpanel-and-digital-ocean.md).

# CloudPanel & Digital Ocean

<figure><img src="/files/jxWeWM3y1wyvfMTsqfFW" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Video" %}

<figure><img src="/files/IiYmGm58oSeavNaCWmfm" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="References" %}

* <https://www.cloudpanel.io/docs/v2/introduction/>
  {% endtab %}

{% tab title="Related Videos" %}

{% endtab %}

{% tab title="Credits" %}
ME
{% endtab %}
{% endtabs %}

In this guide, we'll walk through the process of installing and configuring CloudPanel on DigitalOcean. With CloudPanel, you can efficiently manage multiple websites using a single interface equipped with essential day-to-day maintenance tools.

## Required Services

* [PorkBun](https://porkbun.com/) - Domain Registration
* [CloudFlare](https://www.cloudflare.com/) - DNS Provider
* [Digital Ocean](https://www.digitalocean.com/) - Virtual Private Server (VPS)

## The Plan

<figure><img src="/files/ChEHHOL5MLMtTgPmOfg5" alt=""><figcaption><p>Flowchart</p></figcaption></figure>

We'll start by purchasing a domain from [PorkBun ](https://porkbun.com/)and direct it to [Cloudflare ](https://www.cloudflare.com/)for DNS management. Then, we'll create a droplet on [DigitalOcean ](https://www.digitalocean.com/)and point our domain from [Cloudflare ](https://www.cloudflare.com/)to this droplet. [CloudPanel](https://www.cloudpanel.io/) will be installed on the droplet to manage everything, including websites, NGINX, Let's Encrypt certificates, and more. Essentially, all user traffic will be routed through [Cloudflare ](https://www.cloudflare.com/)to the droplet, where NGINX will handle redirection to the requested websites.

***

## Purchase Domain

Create a new account on [PorkBun ](https://porkbun.com/)and search for the domain you are interested in purchasing.

<figure><img src="/files/3j5b29I7LyJ7UaQIVMHW" alt=""><figcaption></figcaption></figure>

On [Cloudflare ](https://www.cloudflare.com/)select "Add a site" and follow the prompts to connect your new domain.

<figure><img src="/files/qzriZhcrE2QRybF2MQ97" alt=""><figcaption></figcaption></figure>

Once [Cloudflare ](https://www.cloudflare.com/)provides the NameServers return back to [PorkBun ](https://porkbun.com/)and replace whats shown with the ones from [Cloudflare](https://www.cloudflare.com/).

<figure><img src="/files/Rnq24EdRqZFqD26a11FW" alt=""><figcaption></figcaption></figure>

Usually this takes 1-2 hours to update and at the most takes 24 hours. Once completed you will then use [CloudFlare ](https://www.cloudflare.com/)for DNS.

***

## Create a Droplet

When deploying a [CloudPanel](https://www.cloudpanel.io/) Droplet, you have two options. You can either launch a droplet with [CloudPanel](https://www.cloudpanel.io/) preinstalled or manually install it yourself. I initially attempted to use the marketplace version, but encountered issues when needing to restart the server. Hence, in this tutorial, we'll opt for manual installation to avoid such interruptions.

{% hint style="info" %}
NOTE: You can either continue following the guide or refer to the official documentation [here](https://www.cloudpanel.io/docs/v2/getting-started/digital-ocean/installation/installer/) for the most up to date information.
{% endhint %}

### Launch a Droplet

1. Login to your [Digital Ocean](https://cloud.digitalocean.com/login) account.
2. In the left navigation, click on **Droplets** and then on **Create Droplet**.

### Choose Region

Select the region closest to you for the lowest latency.

<figure><img src="/files/113PbmN3anARzT3Ue0Dk" alt=""><figcaption></figcaption></figure>

### Choose an Image

Select **Ubuntu 22.04 (LTS) x64.**

<figure><img src="/files/VxbdWcC1t8cdFHr4lnoC" alt=""><figcaption></figcaption></figure>

### Choose Plan

Pick the plan you prefer. You can increase or decrease the CPU and RAM at anytime but Storage can ONLY be increased.

<figure><img src="/files/BOMMQiwKqa29HS7oCnKs" alt=""><figcaption></figcaption></figure>

### Authentication Method

Either create a new password or [create](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/) and add an SSH Key.

<figure><img src="/files/K9LEUkJQ9RA6i0A0sb28" alt=""><figcaption></figcaption></figure>

### Launch Droplet

Enter a hostname and select Create Droplet.

<figure><img src="/files/jG1iGPjiSRFruVg4jtLk" alt=""><figcaption></figcaption></figure>

***

## Assign a Reserved IP

A **Reserved IP** (static ip) is recommended to have the same IP after changing the size of your **Droplet**. From your droplet...

1. &#x20;Select "Enable now" next to **Reserved IP**.
2. &#x20;Click **Assign Reserved IP**.

<figure><img src="/files/yoJ6DVTgZmIgxiaVEscg" alt=""><figcaption></figcaption></figure>

***

## Install CloudPanel

Login via SSH to the Droplet

```
ssh root@IpAddress
```

Update & install prerequisites

```
apt update && apt -y upgrade && apt -y install curl wget sudo
```

Reboot your Droplet

```
reboot
```

Log back into the Droplet

```
ssh root@IpAddress
```

Run the Installer

```
curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh; \
echo "85762db0edc00ce19a2cd5496d1627903e6198ad850bbbdefb2ceaa46bd20cbd install.sh" | \
sha256sum -c && sudo CLOUD=do bash install.sh
```

{% hint style="info" %}
We are using MySQL for our websites. If you require an alternative then refer [here](https://www.cloudpanel.io/docs/v2/getting-started/digital-ocean/installation/installer/).
{% endhint %}

***

## Configure Cloudflare DNS

While [CloudPanel ](https://www.cloudpanel.io/)installs lets return back to [CloudFlare ](https://www.cloudflare.com/)and add a few DNS records that will point to our droplet.

1. From the left sidebar select **DNS** -> **Records**
2. Select **Add record** and input these three records.

<figure><img src="/files/0KtCHHCHZ3KPCWOSibbv" alt=""><figcaption></figcaption></figure>

* Type - **A** | Name - **cloud** | Target - **IpAddress**
* Type - **A** | Name - **@** | Target - **IpAddress**
* Type - **CNAME** | Name - **www** | Target - **DOMAIN**

{% hint style="danger" %}
Make sure you set **SSL/TLS encryption mode** to **FULL**. If you do not then you will not be able to access your website.
{% endhint %}

***

## Access CloudPanel

{% hint style="warning" %}
Access [**CloudPanel** ](https://www.cloudpanel.io/)as fast as possible to create the admin user. There is a small time window where bots can create the user.
{% endhint %}

You can now access [**CloudPanel** ](https://www.cloudpanel.io/)via Browser: **<https://yourIpAddress:8443>**

Ignore the self-signed certificate warning and click on **Advanced** and **Proceed** to continue to [**CloudPanel**](https://www.cloudpanel.io/).

***

## Create Admin

Follow prompts to create the admin for [CloudPanel](https://www.cloudpanel.io/). Note the admin is not a user created on the system it is only for [CloudPanel](https://www.cloudpanel.io/).

<figure><img src="/files/dn4s3IDUxbNpp37IBJsi" alt=""><figcaption></figcaption></figure>

***

## Add a WordPress Website

Once logged into [CloudPanel](https://www.cloudpanel.io/)...

1. select **+ADD SITE** -> **Create a WordPress Site**
2. Enter the necessary credentials.

<figure><img src="/files/IchKGtVEuYJChK6hFdaK" alt=""><figcaption></figcaption></figure>

Site User - The user where all of wordpress files will be delegated to. You can use this user to ssh into the droplet and access these files.

Admin User - The user you will use to access and configure wordpress.

Multisite - WordPress has the ability to manage multiple websites. Change this if you wish to do such.

Once created save the credentials for the wordpress site.

<figure><img src="/files/HJ8RrgM4AganugtTwwQZ" alt=""><figcaption></figcaption></figure>

***

## Let's Encrypt

[CloudPanel ](https://www.cloudpanel.io/)makes it simple to issue Let's Encrypt certificates. Select your website and head over to the **SSL/TLS** tab. From there select **Actions** -> **New Let's Encrypt Certificate**.

<figure><img src="/files/i84mJzd1Agaz0db9vxDm" alt=""><figcaption></figcaption></figure>

***

## Set CloudPanel Domain

Last thing we will do is make [CloudPanel ](https://www.cloudpanel.io/)accessible from our domain. Since we already defined cloud within our DNS records we are going to use that to access cloud panel. From the panel...

Admin Area -> Settings -> CloudPanel Custom Domain

<figure><img src="/files/0pGDB2qpuJ14dUXIIFvV" alt=""><figcaption></figcaption></figure>

&#x20;Now you can access [CloudPanel ](https://www.cloudpanel.io/)from your domain. **<https://cloud.domain.com>**

## Conclusion

Now you have CloudPanel installed and configured on a Droplet.


---

# 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:

```
GET https://docs.unluckytech.com/unluckytech/knowledge-base/guides/virtual-private-servers-vps/cloudpanel-and-digital-ocean.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
