# How to use Proxmox VE remotely over Meshnet

## Introduction <a href="#introduction" id="introduction"></a>

[Virtual machines](https://nordvpn.com/blog/virtual-machines/) (VMs) are emulated computers that operate within a physical machine, enabling multiple operating systems to run simultaneously on a single computer. VMs are useful for developers, system administrators, and organizations that need to create and manage multiple environments for testing, development, and production purposes. A popular [hypervisor](https://www.redhat.com/en/topics/virtualization/what-is-a-hypervisor) for personal and enterprise solutions is Proxmox.

[Proxmox Virtual Environment](https://www.proxmox.com/en/proxmox-ve) (VE) is a free and open-source virtualization platform that allows for centralized management of virtual machines, containers, and other virtualized resources. It supports a wide range of virtualization technologies, providing flexibility in managing virtual infrastructure. By including [Meshnet](https://nordvpn.com/meshnet/) in the Proxmox setup, you can enable secure remote control of the hypervisor. This configuration allows you to maintain and manage your virtual infrastructure from anywhere in the world.

This article describes how you can install Meshnet on your Proxmox system and remotely control your VMs.

## Installing Proxmox VE <a href="#installing-proxmox-ve" id="installing-proxmox-ve"></a>

Proxmox provides you with two installation methods:

* Installing Proxmox VE as a standalone operating system (OS).
* Installing Proxmox VE on top of an already present Debian system.

For most users, a standalone Promox VE OS is recommended. However, enthusiasts may opt to choose the second method. For the purpose of this article, a standalone Proxmox VE 7.4 installation is used.

To install Proxmox VE:

1. Download the Proxmox VE ISO installer from the [Proxmox downloads page](https://www.proxmox.com/en/downloads/category/iso-images-pve).
2. Follow the instructions provided in the [Proxmox installation wiki](https://pve.proxmox.com/wiki/Installation).

Once the installation finishes, you should see the local IP address and port of your Proxmox VE web interface.

<div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FSvelKpagWbtk7uK7X1dM%2Fproxmox_install_finish.png?alt=media&#x26;token=ba6a9259-fe4b-46cf-8d44-7a3be34cb130" alt="Proxmox installation screen showing the web interface&#x27;s IP address and port number."><figcaption></figcaption></figure></div>

## Accessing the Proxmox web interface <a href="#accessing-the-proxmox-web-interface" id="accessing-the-proxmox-web-interface"></a>

Proxmox is fully controlled from the web interface. While you can manage some of the settings via the command line, the web interface provides a convenient alternative with a graphical user interface (GUI). To access Proxmox VE:

1. On another local device, open your internet browser.
2. In the URL bar, enter the previously presented local IP and port combination and press **Enter**.
3. Enter the password you created during Proxmox installation and click **Login**.\
   \
   ![Entering the root user password and logging in to Proxmox VE.](https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FBLtMiziozSVLZmVFL3PW%2Fproxmox_login.png?alt=media\&token=58819e0b-063d-4055-a0d0-8c9e6f936978)&#x20;

Now you should see the Proxmox VE web interface.

{% hint style="info" %}
**Note**

Since Proxmox is using self-signed SSL certificates, you may see a “Your connection is not private” message. To proceed further:

1. Click **Advanced**.
2. Select **Proceed to \<IP> (unsafe)**.\
   \
   ![](https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FGmfc5qP4WvFPWVzP5Mkg%2Fproxmox_connection_not_private.png?alt=media\&token=713d3ca3-a4b7-4694-942d-0ed4a0a95c6e)<br>

For more information, see the [Proxmox certificate management](https://pve.proxmox.com/wiki/Certificate_Management) documentation page.
{% endhint %}

### Install system updates <a href="#install-system-updates" id="install-system-updates"></a>

The first thing you should do after installing a new OS is fetch and install all available system updates. They can range from simple dependency updates to security upgrades.

#### Changing the Proxmox repository <a href="#changing-the-proxmox-repository" id="changing-the-proxmox-repository"></a>

By default, the Proxmox VE installation uses an enterprise Proxmox update repository, which requires an enterprise subscription to access. To use the free version of Proxmox, you can change the update repository by taking the following steps:

1. From the menu on the left, under **Datacenter**, select **proxmox**.

2. Expand the **Updates** section and click **Repositories**.\
   \
   ![Going to the 'Repositories' page.](https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FpJUrB6rW9Vw4keULvhnZ%2Fproxmox_repositories.png?alt=media\&token=4ee52e11-ce65-4db8-b2b7-1871ef363d81)

   &#x20;

3. Select the enterprise Proxmox repository entry and click **Disable**.

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FkNxLn6GCqYKP1BavqKuU%2Fproxmox_disable_enterprise_repo.png?alt=media&#x26;token=ba222c70-1a13-4f71-9dec-ab6f0b41e22e" alt="Disabling the enterprise Proxmox update repository."><figcaption></figcaption></figure></div>

4. Click the **Add** button.

5. From the **Repository** dropdown list, select **No-subscription** and click **Add**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2Fbwv62ZvZal4WZ20Eh79T%2Fproxmox_add_repo.png?alt=media&#x26;token=2aec1788-74b2-4080-8acc-e02e3550e684" alt="Adding the &#x27;No-Subscription&#x27; repository." width="508"><figcaption></figcaption></figure></div>

The No-subscription repository is now added to your Proxmox VE.

#### Updating the system <a href="#updating-the-system" id="updating-the-system"></a>

After changing the Proxmox repository, you can update your system by taking these steps:

1. Switch to the **Updates** section.

2. Click the **Refresh** button to fetch all available updates. Close the pop-up window when the scan finishes.

3. Click the **Upgrade** button to install the available updates.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F0Bh7R69rwfPsOfI6HsTH%2Fproxmox_install_updates.png?alt=media&#x26;token=3e3cad87-ca21-4d71-820b-2cf00e26d5ee" alt="Clicking &#x27;Upgrade&#x27; to install all available system updates." width="563"><figcaption></figcaption></figure></div>

4. In the **Proxmox Console** window, type in **Y** and press **Enter** to proceed.

Once the process is finished, close the Proxmox Console window and reboot your Proxmox machine.

## Setting up Meshnet <a href="#setting-up-meshnet" id="setting-up-meshnet"></a>

With your Proxmox VE instance updated, you can start setting up Meshnet. Because Proxmox is based on [Debian](https://www.debian.org/), you can install NordVPN the same way as on a standard Linux machine.

### Install NordVPN <a href="#install-nordvpn" id="install-nordvpn"></a>

Follow these steps to set up NordVPN on your Proxmox VE:

1. Open your Proxmox VE web interface.

2. From the list on the left, select **Shell**.

3. Download and install the NordVPN Linux client by running this command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sh &#x3C;(wget -qO - https://downloads.nordcdn.com/apps/linux/install.sh)
   </code></pre>

   &#x20;&#x20;

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FTEJlO19gJsEsR4krjD3V%2Fproxmox_install_nordvpn.png?alt=media&#x26;token=6d037e95-1d06-44d2-96b7-710a286bcf61" alt="Executing the NordVPN installation script in the Proxmox VE shell."><figcaption></figcaption></figure></div>

4. Log in to your NordVPN account.

### Log in to NordVPN <a href="#log-in-to-nordvpn" id="log-in-to-nordvpn"></a>

You can log in to your NordVPN account without the use of a graphical user interface (GUI) in two ways:

* By running the `nordvpn login` command with the `--token` flag
* By running the `nordvpn login` command with the `--callback` flag

{% tabs %}
{% tab title="Log in using a token" %}

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard.&#x20;

2. Under **NordVPN Meshnet free**, select **View details**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2Fsn49VgeZ6NMI13J7Ki1N%2Ftoken_generate0.png?alt=media&#x26;token=a773ba2c-27a9-4e88-b7bf-c4fe60cd2d42" alt="Clicking the &#x27;View details&#x27; button under NordVPN Meshnet free." width="563"><figcaption></figcaption></figure></div>

3. Scroll down until your see **Access token**.

4. Select the **Generate new token** button.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F4PoIcgMGswTyRI8d8b0i%2Ftoken_generate.png?alt=media&#x26;token=c0502a41-fdea-4212-bb19-5e1eb19638ba" alt="Clicking &#x27;Generate new token&#x27;." width="563"><figcaption></figcaption></figure></div>

5. In the dialog that appears, choose either a token that expires in 30 days or one that never expires, and then select **Generate token**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2Fw2MaEvL5cIVshJPYkTbG%2Ftoken_generate2.png?alt=media&#x26;token=82907065-348b-4f0b-bee2-9ea49245a74a" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

6. Select **Copy and close**.

7. On your NAS, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   \
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn login --token 3fe460cefb8dcf1478c92e45903cec9f9bdbadf7a456a6dfb35dc2c58ee39d5b
   </code></pre>

You should now see a welcome message.

{% hint style="success" %}
**Tip**

To preserve your token when logging out of the NordVPN app, use the `nordvpn logout --persist-token` command. Otherwise, your token will be revoked.&#x20;
{% endhint %}
{% endtab %}

{% tab title="Log in using a URL" %}

1. Run the `nordvpn login` command.
2. Open the provided link in your browser on any device.
3. Complete the login procedure.
4. Right-click the **Continue** button and select **Copy link address**.
5. Run the `nordvpn login --callback "<URL>"` command, replacing `<URL>` with the previously copied link address.\
   \
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn login --callback "nordvpn://login?action=login&#x26;exchange_token=MGFlY2E1NmE4YjM2NDM4NjUzN2VjOWIzYWM3ZTU3ZDliNDdiNzRjZTMwMjE5YjkzZTNhNTI3ZWZlOTIwMGJlOQ%3D%3D&#x26;status=done"
   </code></pre>

You should now see a welcome message.
{% endtab %}
{% endtabs %}

### Enable Meshnet <a href="#enable-meshnet" id="enable-meshnet"></a>

Upon logging in, [enable Meshnet](https://meshnet.nordvpn.com/~/changes/otYJMg7qFzDy0nWn86iM/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#enable-meshnet-on-linux) with this command:

{% code overflow="wrap" %}

```bash
nordvpn set meshnet on
```

{% endcode %}

To view the Nord name and Meshnet IP address of your instance, enter the following command:

```bash
nordvpn meshnet peer list
```

<div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FmNq8uPY2DxsmVDOucfI7%2Fproxmox_mesh_peer_list.png?alt=media&#x26;token=68c3ba7a-88c8-4e7f-8ce8-0bce0440d509" alt="Nord name and Meshnet IP address of the Proxmox VE."><figcaption></figcaption></figure></div>

## Accessing Proxmox over Meshnet <a href="#accessing-proxmox-over-meshnet" id="accessing-proxmox-over-meshnet"></a>

With Meshnet enabled on your Proxmox machine, you can access the Proxmox web interface remotely by following these steps:

1. Copy the Nord name of the Proxmox machine from the NordVPN application.
2. Open your internet browser.
3. In the URL bar, paste the copied Nord name followed by `:8006/` and press **Enter**.
4. On the **Your connection is not private** page, select **Advanced** > **Proceed to** **\<Nord Name>**.
5. Log in to your Proxmox account.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FQA2SkabZvignH7uUDEyJ%2Fproxmox_login_meshnet.png?alt=media&#x26;token=17ccded5-8268-45d2-b6da-895b8697027c" alt="Logging in to the Proxmox VE over Meshnet."><figcaption></figcaption></figure></div>

Now you can remotely use Proxmox and its features, such as creating VMs, from any device connected to your Meshnet.

## Deploying VMs <a href="#deploying-vms" id="deploying-vms"></a>

With Proxmox and Meshnet configured, you can deploy various VMs remotely from the Proxmox web interface.

### Import an ISO image <a href="#import-an-iso-image" id="import-an-iso-image"></a>

First, you need to import an installation ISO file for your VMs operating system to Proxmox. You can import ISO images in the following two methods.

{% tabs %}
{% tab title="Upload an image from another device" %}
To upload an ISO image from the device that you are currently using:

1. Open your Proxmox web interface.

2. From the menu on the left, select the **local (proxmox)** storage entry.\
   \
   ![Selecting the local storage option in Proxmox VE.](https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FDI62d4X5Y6C3SEeAxuz7%2Fproxmox_local_storage.png?alt=media\&token=2f1a38f4-d223-432d-9eae-3f52d1c6a7b7)

3. Select **ISO images** and click **Upload**.

4. In the new pop-up window, click **Select file**.

5. Locate the ISO file for your preferred VM and click **Open**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F67NpOiNPAIa3YAYbSvms%2Fproxmox_select_iso.png?alt=media&#x26;token=8978cd6f-9b55-404f-8da9-81452fd93464" alt="Selecting the ISO file in file explorer." width="563"><figcaption></figcaption></figure></div>

6. Click **Upload**.

Once the upload is finished, you can see the uploaded file in the **ISO images** menu and use it for VM deployment.

<div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FstQZg66iBMXZZOHegLc4%2Fproxmox_uploaded_iso.png?alt=media&#x26;token=9bfc3bc8-5080-45d4-ab5f-955f44ca9543" alt="Uploaded ISO file visible in Proxmox VE."><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Download an image directly to Proxmox VE" %}
To download an ISO image using the Proxmox web interface:

1. Open your Proxmox web interface.
2. From the menu on the left, select the **local (proxmox)** storage entry.
3. Select **ISO images** and click **Download from URL**.
4. In the **URL** field, paste a direct download link for your selected ISO image and select **Query URL**.
5. Click **Download**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FNdLEjBXWpiyOrSrQn56J%2Fproxmox_download_iso.png?alt=media&#x26;token=f40500e6-0f4c-4a31-be5b-485585ca4454" alt="Starting the ISO image download in Proxmox VE." width="509"><figcaption></figcaption></figure></div>

Once the download is finished, you can see the downloaded file in the **ISO images** menu and use it for VM deployment.

<div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FczlcilrTKXNoWjix9gEz%2Fproxmox_download_iso_done.png?alt=media&#x26;token=67db0d24-b60b-4e0a-b340-4487fe25f2ec" alt="Uploaded ISO file visible in Proxmox VE."><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

### Configure a VM <a href="#configure-a-vm" id="configure-a-vm"></a>

To configure a new VM on Proxmox VE:

1. In the upper-right corner, click **Create VM**.
2. In the **Name** field, enter a custom name for your VM and click **Next**.
3. In the **ISO image** field, select an ISO file that you imported previously.
4. Finish creating the VM by selecting the required fields and clicking **Next**.
5. In the **Confirm** section, double-check your VM configuration and click **Finish**.<br>

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FnAUqr9lpcKh6biIAi2xO%2Fproxmox_vm_finish.png?alt=media&#x26;token=388c5904-6433-4de4-b831-3ddd61990652" alt="Clicking &#x27;Finish&#x27; in the virtual machine creation window." width="563"><figcaption></figcaption></figure></div>

Once the VM is created, you can see its entry in the menu on the left.

### Start a VM <a href="#start-a-vm" id="start-a-vm"></a>

To start your new VM:

1. In the menu on the left, select the VM you want to start.
2. In the upper-right corner, click **Start**.

In a few seconds, the VM is started, and you can interact with it by switching to the **Console** section.

<div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FbR1ChTaAn2neCD3Ae9oL%2Fproxmox_vm_started.png?alt=media&#x26;token=96cfe815-a23a-472a-bff0-49b80c95b9b0" alt="Created VM active in Proxmox VE."><figcaption></figcaption></figure></div>
