# Overview

Explore our guides and articles to get a sense of what Meshnet is and how it can be used.

{% tabs %}
{% tab title="With Meshnet" %}

<figure><img src="/files/bh1julTGR6714zLFoTWb" alt="A device with Meshnet enabled is directly connected to other devices on different networks over encrypted network tunnels."><figcaption><p>Figure 1. Meshnet setup</p></figcaption></figure>
{% endtab %}

{% tab title="Without Meshnet" %}

<figure><img src="/files/GV0p9ZdMtWnlyX5Crm4f" alt="A device is trying to connect to remote devices on various networks."><figcaption><p>Figure 2. Traditional network setup</p></figcaption></figure>
{% endtab %}
{% endtabs %}

[Learn more about the potential of Meshnet >](/getting-started/meshnet-explained)

## Most popular

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/IgfzLwaNb89MDeMJ9mdO">Start using Meshnet</a></td><td>Enable Meshnet and learn the basics</td><td></td><td><a href="/files/oizs52dpYhoR78WFLwhr">/files/oizs52dpYhoR78WFLwhr</a></td><td><a href="/pages/IgfzLwaNb89MDeMJ9mdO">/pages/IgfzLwaNb89MDeMJ9mdO</a></td></tr><tr><td><a href="/pages/fQEj5pNYY0iWOs6X3oKu">Renaming peer devices</a></td><td>Create custom nicknames for devices in your Meshnet</td><td></td><td><a href="/files/J9TpGN6ic1xnOT1HABVw">/files/J9TpGN6ic1xnOT1HABVw</a></td><td><a href="/pages/fQEj5pNYY0iWOs6X3oKu">/pages/fQEj5pNYY0iWOs6X3oKu</a></td></tr><tr><td><a href="/pages/h6EHGwKwvAV1DlFt5GKf">Remotely accessing OpenClaw AI assistant</a></td><td>Securely connect and manage your AI agents</td><td></td><td><a href="/files/MBtaiS5ShFgdEz6L0dQO">/files/MBtaiS5ShFgdEz6L0dQO</a></td><td><a href="/pages/h6EHGwKwvAV1DlFt5GKf">/pages/h6EHGwKwvAV1DlFt5GKf</a></td></tr><tr><td><a href="/pages/Sdi9fg302kjttqs9GF31">Linking devices in Meshnet</a></td><td>Add external devices to your network</td><td></td><td><a href="/files/uhYRilmq4shWfubWaHUH">/files/uhYRilmq4shWfubWaHUH</a></td><td><a href="/pages/Sdi9fg302kjttqs9GF31">/pages/Sdi9fg302kjttqs9GF31</a></td></tr><tr><td><a href="/pages/r9umvYYR0FCRk96BDrhz">Streaming games remotely with Moonlight</a></td><td>Enhance your gaming experience</td><td></td><td><a href="/files/LlJRr4bx58nX9cAkuLBF">/files/LlJRr4bx58nX9cAkuLBF</a></td><td><a href="/pages/r9umvYYR0FCRk96BDrhz">/pages/r9umvYYR0FCRk96BDrhz</a></td></tr><tr><td><a href="/pages/kAfRz4oBfpXdYAjxxe3N">Logging in to your PC remotely</a></td><td>Access your resources from any location securely</td><td></td><td><a href="/files/H4OUXi8kASm3aqZV2rc3">/files/H4OUXi8kASm3aqZV2rc3</a></td><td><a href="/pages/kAfRz4oBfpXdYAjxxe3N">/pages/kAfRz4oBfpXdYAjxxe3N</a></td></tr></tbody></table>


# Meshnet explained

Learn what Meshnet is and how it differs from traditional networks.

NordVPN's [Meshnet](https://nordvpn.com/meshnet/) is a type of virtual network that allows multiple devices to connect and communicate with one another directly, even when they are located in different parts of the world. Meshnet allows people to access resources and services on each other's devices for personal and business purposes. With end-to-end (E2E) encrypted connections and no middle server storage, Meshnet is fast, reliable, and secure.

{% tabs %}
{% tab title="With Meshnet" %}

<figure><img src="/files/bh1julTGR6714zLFoTWb" alt="A device with Meshnet enabled is directly connected to other devices on different networks over encrypted network tunnels."><figcaption><p>Figure 1. Meshnet setup</p></figcaption></figure>

When using Meshnet, the following benefits are available:

* The limitations of CGNAT are bypassed by creating a direct connection between your device and a remote device, which can be accessed through its Meshnet IP or a custom name.
* The need for access to an office or other network VPN is eliminated.
* You do not need to configure firewall rules or set up port forwarding to establish a connection with a remote device.
  {% endtab %}

{% tab title="Without Meshnet" %}

<figure><img src="/files/GV0p9ZdMtWnlyX5Crm4f" alt="A device is trying to connect to remote devices on various networks."><figcaption><p>Figure 2. Traditional network setup</p></figcaption></figure>

As depicted, when using a conventional network architecture:

* Reaching a remote PC behind a [carrier-grade NAT](https://nordvpn.com/cybersecurity/glossary/cgnat/) (CGNAT) gateway can be challenging. [Internet Service Providers](https://nordvpn.com/cybersecurity/glossary/isp/) (ISPs) use CGNAT to share a single public IP address among multiple devices in a network, which prevents the customers from using port forwarding and makes their devices not directly accessible from the public internet.
* Accessing a work PC remotely with a secure and encrypted connection requires an office VPN.
* You have to set up [port forwarding](https://nordvpn.com/blog/port-forwarding/) on your router to grant your friends access to your media or gaming servers. This is because routers typically block incoming traffic to safeguard your network from malicious attacks.
* To allow only specific types of traffic to access your private cloud server, you need to configure a [firewall ](https://nordvpn.com/cybersecurity/glossary/vpn-firewall/)with strict rules.
  {% endtab %}
  {% endtabs %}

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

Meshnet aims to make setting up and managing a private network easy. By [installing NordVPN](https://nordvpn.com/download/) on each device you want to connect, you can create your own network, which can be expanded to accommodate up to 10 of your own devices and up to 50 external devices.

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

The encrypted connections Meshnet creates ensure that data transmitted between devices is reliably protected, providing secure communication for gaming, remote work, file sharing, and other network-based applications. Additionally, Meshnet uses the [NordLynx](https://nordvpn.com/blog/nordlynx-protocol-wireguard/) protocol, known for its speed and improved connection.

## Meshnet features

Meshnet comes with powerful built-in features that allow you to [share files between devices](/features/sharing-files-in-meshnet) on the network and [route your online activity](/features/routing-traffic-in-meshnet) through another Meshnet device so you can access the internet using the IP address of that device.

[Read more about Meshnet >](https://nordvpn.com/meshnet/)

## Next steps <a href="#next-steps" id="next-steps"></a>

* Learn [How to start using Meshnet](/getting-started/how-to-start-using-meshnet).
* Learn more about [Linking devices in Meshnet](/features/linking-devices-in-meshnet).

<br>


# How to start using Meshnet

Learn how to use Meshnet via the NordVPN application

The best way to become familiar with [Meshnet](https://nordvpn.com/meshnet/) is to start using it right away. Luckily, Meshnet is not complicated to set up — all you need to do is [install NordVPN](https://nordvpn.com/download/) and enable Meshnet on each of your devices. They will automatically discover and connect to each other. Then you can begin using the network to securely access resources, share files, and collaborate with others.

Meshnet is designed to work across different platforms, such as Windows, macOS, Linux, iOS, Android, and Android TV, so that you can connect a wide range of devices to the network.&#x20;

These articles will guide you through the simple steps needed to enable Meshnet on your device.

* [Using Meshnet on Windows](/getting-started/how-to-start-using-meshnet/using-meshnet-on-windows)
* [Using Meshnet on Android](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android)
* [Using Meshnet on iPhone/iPad](/getting-started/how-to-start-using-meshnet/using-meshnet-on-ios)
* [Using Meshnet on macOS](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos)
* [Using Meshnet on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux)
* [Using Meshnet on Android TV](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android-tv)


# Using Meshnet on Windows

Learn how to use Meshnet via the NordVPN application on your Windows device.

## Before you begin

Verify that you have the following:

* Windows 10 (a 64-bit edition) or later
* [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/19472023025169-Installing-and-using-NordVPN-on-Windows-10-and-11)

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

To turn on Meshnet on your device, complete these steps:

1. Open **NordVPN**. Log in if necessary.
2. On the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">:

   <div align="left"><figure><picture><source srcset="/files/UMY2ZdwscuGQsPmicI0p" media="(prefers-color-scheme: dark)"><img src="/files/sZxLkMVqnz5v350EMMac" alt="Arrow pointing to the Meshnet tab in the left sidebar."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Turn on the **Meshnet** toggle.

   <div align="left"><figure><picture><source srcset="/files/1YSM3sBfKZ0iiWz2EO3P" media="(prefers-color-scheme: dark)"><img src="/files/3d0DcU1tF5pnV2IP6bR4" alt="Setting the Meshnet toggle to the on position"></picture><figcaption></figcaption></figure></div>

When connected to Meshnet, your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access the device from other linked devices.&#x20;

You can find your device's Meshnet information under the **Personal devices** category.

<figure><picture><source srcset="/files/XFgDflNM1x76iWgsq4I1" media="(prefers-color-scheme: dark)"><img src="/files/Pq7ZWcYjff5YUrvISPSn" alt="&#x22;This device&#x22; card under the Personal devices category, containing device&#x27;s Nord name and Meshnet IP address."></picture><figcaption></figcaption></figure>

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-andes.nord`.

Additionally, you can [rename devices](/features/renaming-devices/windows) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-your-devices-to-meshnet" id="add-your-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your personal devices

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. As soon as they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows).

## Manage devices

All the devices you've linked appear on the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab, under the **Personal devices** and **External devices** categories.

### Unlink devices

To unlink your device from Meshnet, follow these steps:

1. Open **NordVPN** and select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Locate the device you want to disconnect.
3. Click the three-dot menu and choose **Unlink this device**.

   <div align="left"><figure><picture><source srcset="/files/TvkEJGcLs4yNin3imKe5" media="(prefers-color-scheme: dark)"><img src="/files/VPQpwYca6kG2ms0e8B99" alt="The Unlink device button is highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Confirm that you want to unlink the device by clicking **Unlink**.

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

To link your personal device back, restart Meshnet on the unlinked device.
{% endhint %}

### Remove this device from Meshnet

If you want to unregister your device from Meshnet and disconnect it from all currently linked devices, take the following steps:

1. Open **NordVPN** and go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Select the dropdown arrow next to the **Meshnet** toggle and click **Disable**.

   <div align="left"><figure><picture><source srcset="/files/ctBZuXi1CF0LGj5vOvcm" media="(prefers-color-scheme: dark)"><img src="/files/OiZGFbCOG7PzOkRf2KjX" alt="Dropdown arrow next to the Meshnet toggle and the &#x22;Disable&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Confirm your choice by clicking **Disable for this device**.

   <div align="left"><figure><picture><source srcset="/files/3Xst3enAoMQxCs6RZxxF" media="(prefers-color-scheme: dark)"><img src="/files/1WUYXpIW9DSa95FQg3DJ" alt="&#x22;Disable for this device&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

### Manage devices via the Nord Account dashboard

Alternatively, you can view a list of linked devices for each of your devices on the [Nord Account](https://my.ndaccount.com/) website. To access this feature:

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** car&#x64;**.**

You should now see a list of your linked devices.

<figure><img src="/files/thnxCSoiQhi8Q0JPqMz1" alt="A list of linked devices is displayed at the Nord account dashboard in the Meshnet section"><figcaption></figcaption></figure>

#### Unlink devices via the dashboard

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Under Services, select the **Meshnet (by NordVPN)** car&#x64;**.**

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
3. Find the device that you want to unlink and select **Manage device** next to it.

   <div align="left"><figure><img src="/files/0gnz9O5pPItdmotuuReP" alt="&#x22;Manage device&#x22; button highlighted next to a Windows device."><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Remove from Meshnet**.

   <figure><img src="/files/P8xCY70BL3hek8HwMeus" alt="&#x22;Remove from Meshnet&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;\
   If you wish to disconnect peer devices, select **Unlink device** next to the device you want to remove.

   <figure><img src="/files/vuAyFcliM5a4KOkdFrOO" alt="&#x22;Unlink device&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
5. Click **Unlink** to confirm.

## See also <a href="#next-steps" id="next-steps"></a>

For information on managing device access within your network, see [Explaining Permissions](/features/explaining-permissions).

&#x20;


# Using Meshnet on Android

Learn how to use Meshnet via the NordVPN application on your Android device.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Verify that you have the following:

* Android 9 or later (including ChromeOS)
* [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/19449000730385-How-to-setup-NordVPN-on-Android)

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

To turn on Meshnet on your device, complete these steps:

1. Open **NordVPN**. Log in if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> and select **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">:

   <div align="left"><figure><picture><source srcset="/files/sfoNS0tfPuOMIdRO2Ii3" media="(prefers-color-scheme: dark)"><img src="/files/32c1vhuSSUbB5IuuBsYk" alt="&#x22;Meshnet&#x22; card highlighted in the Profile menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Turn on the **Meshnet** toggle.

   <div align="left"><figure><picture><source srcset="/files/6nYjmgzAHcjlFzDckWUt" media="(prefers-color-scheme: dark)"><img src="/files/3o3FhUugaflUY8B9CSnH" alt="Turning on the Meshnet toggle." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. If a prompt asking permission to set up a VPN connection appears, accept it to continue.&#x20;

   <div align="left"><figure><picture><source srcset="/files/aiGuDzyn2M21QKC0bdBT" media="(prefers-color-scheme: dark)"><img src="/files/UBg8ClIcRWFXu9PIL0st" alt="A prompt asking for VPN connection permission, with the OK button highlighted" width="375"></picture><figcaption></figcaption></figure></div>

You should now see a message confirming that Meshnet is on. Your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access the device from other linked devices.

<div align="left"><figure><picture><source srcset="/files/0G8nGwOmemHZndnDoXQF" media="(prefers-color-scheme: dark)"><img src="/files/SE483XncNSmyvUKFSMAz" alt="Nord name and Meshnet IP address of an Android device." width="375"></picture><figcaption></figcaption></figure></div>

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-alps.nord`.

Additionally, you can [rename devices](/features/renaming-devices/android) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-your-devices-to-meshnet" id="add-your-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your personal devices

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. When they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android).

## Manage devices

To view connected devices, add external ones, or unlink those already added, navigate to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices**.

<div align="left"><figure><picture><source srcset="/files/nvwDfzwYDRGiTV74heV6" media="(prefers-color-scheme: dark)"><img src="/files/cRFKdJQtvRd7wpuiuuOx" alt="&#x22;Manage devices&#x22; screen showing a list of peer devices." width="375"></picture><figcaption></figcaption></figure></div>

### Copy a device's Nord name or IP address

1. Open **NordVPN.**
2. Navigate to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices**.
3. Under the **Linked devices** tab, locate the desired device.
4. Tap the three-dot menu next to the device and choose **Copy device's Nord name** or **Copy device's IP address**.

   <div align="left"><figure><picture><source srcset="/files/9T3XRn9liNVUHxa4NI4C" media="(prefers-color-scheme: dark)"><img src="/files/GTkjsV2I4k2XUNoxYOdE" alt="Options to copy devices Nord name or Meshnet IP highlighted." width="375"></picture><figcaption></figcaption></figure></div>

### Unlink devices

To unlink your device from Meshnet, follow these steps:

1. Open **NordVPN**.
2. Go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices**.
3. Under the **Linked devices** tab, find the device you want to remove.
4. Tap the three-dot menu next to the device and choose **Unlink device**.

   <div align="left"><figure><picture><source srcset="/files/np5C84oofy02aQK1UKs1" media="(prefers-color-scheme: dark)"><img src="/files/N2IAta49nR38CvzrBUtW" alt="&#x22;Unlink device&#x22; option selected from the three-dot menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Unlink** to confirm.

To unlink multiple devices simultaneously:

1. Touch and hold anywhere under **Linked devices**.
2. Select the devices you want to unlink.
3. Tap the Bin<img src="/files/5S2RAtrHlyM2qpGkhXbt" alt="" data-size="line"> button that appears in the upper-right corner of the screen.

   <div align="left"><figure><picture><source srcset="/files/sRotAgLK51Egt7wTl8l8" media="(prefers-color-scheme: dark)"><img src="/files/hm9aJ9YEaDhSf6mEgme1" alt="Arrow pointing to the Bin button to unlink selected Meshnet devices." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Tap **Unlink selected** to confirm.

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

To link your personal device back, restart Meshnet on the unlinked device.
{% endhint %}

### Manage devices via the Nord Account dashboard

Alternatively, you can view and unlink your connected devices on the [Nord Account](https://my.ndaccount.com/) website. To access this feature:

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** card.

You should now see a list of your linked devices.

<div align="left"><figure><img src="/files/8XqSQX7taEVG3iI5qSso" alt="A list of linked devices is displayed at the Nord account dashboard." width="375"><figcaption></figcaption></figure></div>

#### Unlink devices via the dashboard

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.
3. Find the device that you want to unlink and tap **See linked devices**.
4. Tap **Remove from Meshnet**.

   <div align="left"><figure><img src="/files/du1ePbWCdnGQGB5yKg7Z" alt="&#x22;Remove from Meshnet&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;\
   If you wish to disconnect peer devices, tap **Unlink device** next to the device you want to remove.

   <div align="left"><figure><img src="/files/DEX20OfS1eLedf0Usd2O" alt="&#x22;Unlink device&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Unlink** to confirm.

## See also <a href="#next-steps" id="next-steps"></a>

For information on managing device access within your network, see [Explaining permissions](/features/explaining-permissions).

&#x20;


# Using Meshnet on iPhone/iPad

Learn how to use Meshnet through the NordVPN application on your iOS/iPadOS devices.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Verify that you have the following:

* iOS/iPadOS 16.0 or later
* [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/19451338152849-Installing-the-NordVPN-app-on-iPhone-or-iPad)

## Enable Meshnet on iPhone/iPad <a href="#enable-meshnet-on-ios" id="enable-meshnet-on-ios"></a>

To turn on Meshnet on your device, complete these steps:

1. Open **NordVPN**. Log in if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> and select **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">:

   <div align="left"><figure><picture><source srcset="/files/nQV2jPrFoMznJkBQhcIe" media="(prefers-color-scheme: dark)"><img src="/files/1hgqn3mPJeTCYbvfCQf8" alt="Meshnet card highlighted under &#x22;Your security suite&#x22; section." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Tap **Turn on**.
4. If you get a notification asking for your [permission to add VPN configurations](https://nordvpn.com/blog/ios-filtering-traffic-vpn/), tap **Allow** to continue.

   <div align="left"><figure><picture><source srcset="/files/Ozb3XngWalCHObXZ7o7e" media="(prefers-color-scheme: dark)"><img src="/files/GAE4LkhhQ6zQ7GTpw4oq" alt="&#x22;Allow&#x22; button highlighted in the &#x22;NordVPN would like to add VPN configurations&#x22; dialog." width="259"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Turn on** once again if required.

You should now see a message confirming that Meshnet is on. Your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access the device from other linked devices.

<div align="left"><figure><picture><source srcset="/files/kI4PqGfDTA1Lv7dxAtmD" media="(prefers-color-scheme: dark)"><img src="/files/iXBNnSpDrHAmA6j7UrqC" alt="A &#x22;Meshnet is on!&#x22; sheet containing the device&#x27;s Meshnet details." width="346"></picture><figcaption></figcaption></figure></div>

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-altai.nord`.

Additionally, you can [rename devices](/features/renaming-devices/ios) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-your-devices-to-meshnet" id="add-your-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your own devices

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. As soon as they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios).

## Manage devices

To view your list of devices, go to **Manage devices** > **Your devices**, as shown:

<div align="left"><figure><picture><source srcset="/files/5B4QU9kY8JioNDGGJykV" media="(prefers-color-scheme: dark)"><img src="/files/EDMUaE6d4hCpHCnpRQHh" alt="Meshnet peer devices highlighted under the &#x22;Your devices&#x22; tab." width="375"></picture><figcaption></figcaption></figure></div>

You have the option to see the Nord name or the Meshnet IP address as the primary identifier of your Meshnet devices.&#x20;

To switch between the options, in the upper-right corner, tap the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button and select **Show IP address as primary** or **Show Nord name as primary**.

### Unlink devices

To unlink your device from Meshnet, follow these steps:

1. Open **NordVPN** and select **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Tap **Manage devices** and find the device you want to disconnect under **Your devices**.
3. Do any of the following:
   * Swipe the device section left and tap the **Unlink** button that appears.

     <div align="left"><figure><picture><source srcset="/files/FJDRMIgSulb6VH4gA0gs" media="(prefers-color-scheme: dark)"><img src="/files/wQriQXNyZMvDmWXRpIsV" alt="The &#x22;Unlink&#x22; button appears while swiping the device section to the left." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Swipe the device row left until you see an alert message.
   * Select the permissions section under the peer device and, in the upper-right corner, tap **Unlink**.

     <div align="left"><figure><picture><source srcset="/files/wW24wKhTeINgVejiZnOR" media="(prefers-color-scheme: dark)"><img src="/files/WjnfIJD5KHZ1448e8pPI" alt="Tapping &#x27;Unlink&#x27; in the Device permissions screen." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
4. Tap **Unlink** to confirm.

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

To link your personal device back, restart Meshnet on the unlinked device.
{% endhint %}

### Manage devices via the Nord Account dashboard

Alternatively, you can view and unlink your connected devices on the [Nord Account](https://my.ndaccount.com/) website. To access this feature:

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** card.

You should now see a list of your linked devices.

<div align="left"><figure><img src="/files/8XqSQX7taEVG3iI5qSso" alt="A list of linked devices is displayed at the Nord account dashboard." width="375"><figcaption></figcaption></figure></div>

#### Unlink devices via the dashboard

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.
3. Find the device that you want to unlink and tap **See linked devices**.
4. Tap **Remove from Meshnet**.

   <div align="left"><figure><img src="/files/t9DvKfg8nTue6a4DoHNf" alt="&#x22;Remove from Meshnet&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;\
   If you wish to disconnect peer devices, tap **Unlink device** next to the device you want to remove.

   <div align="left"><figure><img src="/files/DEX20OfS1eLedf0Usd2O" alt="&#x22;Unlink device&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Unlink** to confirm.

## See also <a href="#next-steps" id="next-steps"></a>

For information on managing device access within your network, see [Explaining permissions](/features/explaining-permissions).

&#x20;


# Using Meshnet on macOS

Learn how to use Meshnet via the NordVPN application on your macOS device.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Verify that you have the following:

* macOS Monterey 12 or later
* [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/19445793501585-Installing-NordVPN-on-macOS) on your device

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

To turn on Meshnet on your device, complete these steps:

1. Open **NordVPN**. [Log in](https://my.nordaccount.com/) if necessary.
2. From the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">:

   <div align="left"><figure><picture><source srcset="/files/ldnAyCT4oqNiJfulNTVo" media="(prefers-color-scheme: dark)"><img src="/files/gCQED58EUEYrkplv5wUi" alt="Meshnet tab in the left sidebar highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Turn on the **Meshnet** toggle:

   <div align="left"><figure><picture><source srcset="/files/sIQtHts3lhsVnFEeLWoL" media="(prefers-color-scheme: dark)"><img src="/files/0zuLFxwPrMja1D8hG56m" alt="Turning on the Meshnet toggle."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the dialog that appears, read the details about Meshnet using the **Continue** button to move forward.&#x20;
5. Click **Turn on Meshnet**. If you get a notification asking for your permission to add VPN configurations, tap **Allow** to continue.

When connected to Meshnet, your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access your device from other linked devices.

<div align="left"><figure><picture><source srcset="/files/U2dak4cXjjeLJmTRuA2f" media="(prefers-color-scheme: dark)"><img src="/files/h4VdPgaFZXHL3MbewqS2" alt="The Nord name and Meshnet address of the macOS device are highlighted."></picture><figcaption></figcaption></figure></div>

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-himalayas.nord`.

Additionally, you can [rename devices](/features/renaming-devices/macos) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-your-devices-to-meshnet" id="add-your-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your own devices

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. As soon as they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos).

## Manage devices

You can find a list of all your connected devices under the **Your devices** and **External devices** tabs.

<div align="left"><figure><picture><source srcset="/files/kR54WSAdfRlkB1eKdiFS" media="(prefers-color-scheme: dark)"><img src="/files/v3hBw5YSIa7dFsbSdnD2" alt="Linked device displayed under Your devices"></picture><figcaption></figcaption></figure></div>

You have the option to see the Nord name or the Meshnet IP address as the primary identifier of your Meshnet peer devices.&#x20;

To switch between the options, next to your device's Meshnet information, click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button and select **Set IP address as primary** or **Set Nord name as primary**.

<div align="left"><figure><picture><source srcset="/files/ZXe44vojMgMd9WdPn5ou" media="(prefers-color-scheme: dark)"><img src="/files/kHZpg0kajnhRRRgqsGza" alt="Arrow pointing to the More button and the &#x22;Set IP address as primary&#x22; option is highlighted."></picture><figcaption></figcaption></figure></div>

### Unlink devices

1. Open **NordVPN** and select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Next to the device you want to disconnect, click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button and select **Unlink this device**.

   <div align="left"><figure><picture><source srcset="/files/ZPgXQtjI1yjiAwkcTOei" media="(prefers-color-scheme: dark)"><img src="/files/2zfdgrAbsXmJzEXw1Xn5" alt="Arrow pointing to the More button next to a peer device and the &#x22;Unlink this device&#x22; option is highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Click **Unlink** to confirm.

{% hint style="success" %}
**Tip**&#x20;

To link your personal device back, restart Meshnet on the unlinked device.
{% endhint %}

### Manage devices via the Nord Account dashboard

Alternatively, you can view a list of linked devices for each of your devices on the [Nord Account](https://my.ndaccount.com/) website. To access this feature:

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** card.

You should now see a list of your linked devices.

<figure><img src="/files/thnxCSoiQhi8Q0JPqMz1" alt="A list of linked devices is displayed at the Nord account dashboard in the Meshnet section"><figcaption></figcaption></figure>

#### Unlink devices via the dashboard

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
3. Find the device that you want to unlink and select **Manage device** next to it.

   <div align="left"><figure><img src="/files/q0jnobM1CuOHFBtMbUvs" alt="&#x22;Manage device&#x22; button highlighted next to a macOS device."><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Remove from Meshnet**.

   <div align="left"><figure><img src="/files/SoEQkDxKwD3Y2e6rFTSe" alt="&#x22;Remove from Meshnet&#x22; button highlighted."><figcaption></figcaption></figure></div>

   &#x20;\
   If you wish to disconnect peer devices, select **Unlink device** next to the device you want to remove.

   <div align="left"><figure><img src="/files/lvqmJffa8G7719Eakgfy" alt="&#x22;Unlink device&#x22; button highlighted."><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Unlink** to confirm.

## See also <a href="#next-steps" id="next-steps"></a>

For information managing device access within your network, see [Explaining permissions](/features/explaining-permissions).

&#x20;

&#x20;


# Using Meshnet on Linux

Learn how to use Meshnet via the NordVPN application on your Linux device.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Verify that you have [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/20196094470929-Installing-NordVPN-on-Linux-distributions) on your device.

Meshnet is available for these Linux distributions:

* **Ubuntu** (Linux Mint)
* **Debian** (Raspberry Pi OS, Kali Linux)
* **Fedora** (CentOS, RHEL)
* **SUSE** (openSUSE)

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

Complete the following steps to turn on Meshnet on your device:

1. Open **Terminal**.
2. Type in the following command and press **Enter**:&#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn set meshnet on
   </code></pre>

You should now see a message confirming that you've enabled Meshnet:&#x20;

<div align="left"><figure><img src="/files/N5KJJByC7KNDjIqut9xP" alt="Displaying the &#x27;nordvpn set meshnet on&#x27; command in the terminal."><figcaption></figcaption></figure></div>

When connected to Meshnet, your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access the device from other linked devices.

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-altai.nord`.

Additionally, you can [rename devices](/features/renaming-devices/linux) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-your-devices-to-meshnet" id="add-your-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your own devices

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. As soon as they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on Linux.](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux)

## Manage devices

To view a list of your Meshnet devices, run the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

<div align="left"><figure><img src="/files/SHnEBRHncJYnomHM35R2" alt="Terminal window showing the output of the &#x27;nordvpn meshnet peer list&#x27; command."><figcaption></figcaption></figure></div>

### Unlink devices <a href="#remove-your-device-from-meshnet" id="remove-your-device-from-meshnet"></a>

To unlink a peer device from your Meshnet, enter the following command, where `<device>` is the device’s Nord name or Meshnet IP address:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer remove <device>
```

{% endcode %}

**Example**

<div align="left"><figure><img src="/files/Xk7RSeUJVR9jliSW7Q8e" alt="Terminal window showing that a peer device has been removed."><figcaption></figcaption></figure></div>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}

### Manage devices via the Nord Account dashboard

Alternatively, you can view a list of linked devices for each of your devices on the [Nord Account](https://my.ndaccount.com/) website. To access this feature:&#x20;

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** card.

You should now see a list of your linked devices.

<figure><img src="/files/thnxCSoiQhi8Q0JPqMz1" alt="A list of linked devices is displayed at the Nord account dashboard in the Meshnet section"><figcaption></figcaption></figure>

#### Unlink devices via the dashboard

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
3. Find the device that you want to unlink and select **Manage device** next to it.

   <div align="left"><figure><img src="/files/7t9kxS6yWTMFMvsYGwcX" alt="&#x22;Manage device&#x22; button highlighted next to a Linux device."><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Remove from Meshnet**.

   <figure><img src="/files/EBMvLzKiwpMQ3c0volEt" alt="&#x22;Remove from Meshnet&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;\
   If you wish to disconnect peer devices, select **Unlink device** next to the device you want to remove.

   <figure><img src="/files/vuAyFcliM5a4KOkdFrOO" alt="&#x22;Unlink device&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
5. Click **Unlink** to confirm.

## See also <a href="#next-steps" id="next-steps"></a>

For information on managing device access within your network, see [Explaining permissions](/features/explaining-permissions).


# Using Meshnet on Android TV

Learn how to use Meshnet via the NordVPN application on your Android TV device.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Verify that you have the following:

* Android 9 TV (FireOS 7 for Amazon Fire devices) or later
* [NordVPN installed](https://support.nordvpn.com/hc/en-us/articles/19928244437777-Installing-and-using-NordVPN-on-Android-TV-or-Nvidia-Shield)

## Enable Meshnet on Android TV <a href="#enable-meshnet-on-android-tv" id="enable-meshnet-on-android-tv"></a>

To turn on Meshnet on your Android TV device, complete these steps:

1. Use your remote to go to **Apps** and select **NordVPN**. Log in if necessary.
2. Using the side menu on the left, navigate to the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
3. Select **Meshnet** and turn on the toggle.

   <div align="left"><figure><img src="/files/G3R8YRS9qVATyVAmgCwj" alt="The &#x27;Turn on&#x27; card highlighted in the NordVPN app."><figcaption></figcaption></figure></div>

   &#x20;
4. If a prompt asking you for permission to set up a VPN connection appears, select **OK** to continue.

   <div align="left"><figure><img src="/files/s11S5JKlv0onlPQzjQP1" alt="Clicking &#x27;OK&#x27; on the connection request dialog." width="375"><figcaption></figcaption></figure></div>

You should see the toggle change to the on position and the buttons on the left become enabled, confirming that Meshnet is enabled.

Your device is assigned a unique Nord name and a Meshnet IP address, both of which you can use to access the device from other linked devices. You can see this information above the Meshnet toggle.

<div align="left"><figure><img src="/files/fGhM3HIaTQCTyPOHoIoA" alt="Android TV device&#x27;s Nord name and Meshnet IP address." width="563"><figcaption></figcaption></figure></div>

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

Nord names are unique, automatically assigned host names for all devices in Meshnet.

The format is `<username>-<mountain>.nord`, where `<username>` is the username of your Nord Account email address and `<mountain>` is the name of a mountain or mountain range. For example, `secret.meerkat-olympic.nord`.

Additionally, you can [rename devices](/features/renaming-devices/android) with custom nicknames for more convenient device management.
{% endhint %}

## Add devices to Meshnet <a href="#add-devices-to-meshnet" id="add-devices-to-meshnet"></a>

You can add devices to your Meshnet in two ways, depending on whether the device is your own or belongs to another NordVPN user.

### Add your personal devices <a href="#add-your-personal-devices" id="add-your-personal-devices"></a>

To add more devices to your Meshnet, just install the NordVPN app on the devices you want to connect, log in with your account, and enable Meshnet. They will connect automatically.

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

Meshnet allows you to add up to 10 devices that use the same NordVPN account.
{% endhint %}

### Add trusted external devices <a href="#add-trusted-external-devices" id="add-trusted-external-devices"></a>

To add a device owned by another NordVPN user, send an invitation through the NordVPN app specifying their email address. As soon as they accept the invitation in their NordVPN app, their device becomes part of your Meshnet.

For detailed guidance on adding external devices, refer to [Adding external Meshnet devices on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv).

## Manage devices <a href="#manage-devices" id="manage-devices"></a>

To view connected devices or unlink those already added, go to the **Linked devices** section.

<div align="left"><figure><img src="/files/SCGWdvuhBxAdXL6BzLxG" alt="Meshnet peer devices in the &#x27;Your devices&#x27; category."><figcaption></figcaption></figure></div>

### Unlink devices <a href="#unlink-devices" id="unlink-devices"></a>

To unlink your device from Meshnet, follow these steps:

1. On your Android TV device, open **NordVPN**.
2. Navigate to the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Linked devices**.
3. Select the device you want to remove from your Meshnet.
4. Choose **Remove from Meshnet**.

   <div align="left"><figure><img src="/files/jlyjOF9uxRz9cFxpYARq" alt="Selecting &#x27;Unlink device&#x27;." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Remove** to confirm.

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

To link your personal device back, restart Meshnet on the unlinked device.
{% endhint %}

### Manage devices via the Nord Account dashboard <a href="#manage-devices-via-the-nord-account-dashboard" id="manage-devices-via-the-nord-account-dashboard"></a>

Alternatively, view a list of linked devices for each of your devices on the [Nord Account ](https://my.ndaccount.com/)website. To access this feature:

1. Log in to your Nord account dashboard.
2. Select the **Meshnet (by NordVPN)** card.

You should now see a list of your linked devices.

<div align="left"><figure><img src="/files/thnxCSoiQhi8Q0JPqMz1" alt="List of user-owned Meshnet devices on the Nord Account dashboard."><figcaption></figcaption></figure></div>

#### Unlink devices via the dashboard <a href="#unlink-devices-via-the-dashboard" id="unlink-devices-via-the-dashboard"></a>

The Nord Account dashboard allows you to unlink both peer devices and your own.

1. Go to the [Nord Account](https://my.ndaccount.com/) website and log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.<br>

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
3. Find the device that you want to unlink and select **Manage device** next to it.

   <div align="left"><figure><img src="/files/TMzfwtQ4nFQCXyyMzE3L" alt="&#x22;Manage device&#x22; button highlighted next to a TV device."><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Remove from Meshnet**.

   <figure><img src="/files/ixUmxkhU0sNzUIKUj0R9" alt="&#x22;Remove from Meshnet&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;\
   If you wish to disconnect peer devices, select **Unlink device** next to the device you want to remove.

   <figure><img src="/files/vuAyFcliM5a4KOkdFrOO" alt="&#x22;Unlink device&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
5. Click **Unlink** to confirm.

## See also <a href="#see-also" id="see-also"></a>

For information on managing device access within your network, see [Explaining permissions](/features/explaining-permissions).


# How to use Meshnet securely

Learn how to avoid security risks while using Meshnet.

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

When using Meshnet, it's essential to keep in mind the nuances of network security — even if you haven't encountered any issues yet. The purpose of this article is to offer actionable steps to fortify your Meshnet infrastructure against various types of cyber threats.

## You find an unknown device on your Meshnet <a href="#you-find-an-unknown-device-on-your-meshnet" id="you-find-an-unknown-device-on-your-meshnet"></a>

If you discover an unknown device in your list of Meshnet devices, follow these steps:

<details>

<summary>1. Unlink the unknown device</summary>

Having an unknown device linked to your Meshnet network is a serious security risk. To remove the device you don’t recognize, you can use either the **NordVPN** app or the [Nord Account](https://my.nordaccount.com/) website.

**In the NordVPN app**

1. Navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Find the device list and unlink the suspicious device.

**On the Nord Account website**

1. Log in to your NordVPN account.
2. Select the **Meshnet (by NordVPN)** card.
3. Find the device list and unlink the suspicious device.

For detailed steps, consult the guidelines appropriate for your operating system:

* [Unlink devices on Windows](/getting-started/how-to-start-using-meshnet/using-meshnet-on-windows#unlink-devices)
* [Unlink devices on Android](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android#unlink-devices)
* [Unlink devices on iPhone/iPad](/getting-started/how-to-start-using-meshnet/using-meshnet-on-ios#unlink-devices)
* [Unlink devices on macOS](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos#unlink-devices)
* [Unlink devices on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#remove-your-device-from-meshnet)
* [Unlink devices on Android TV](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android-tv#unlink-devices)

</details>

<details>

<summary>2. Change your account password</summary>

Your account may have been compromised. Change your password as a preventive measure.

**If you are using a desktop device**

1. Log in to [Nord Account](https://my.nordaccount.com/) using your current password.

2. In the upper-right corner, click your account name and choose **Account settings**.

   <div align="left"><figure><img src="/files/7pX5KHmV5gvYtWrE6KFa" alt="Showing the Account settings option selected" width="375"><figcaption></figcaption></figure></div>

3. Under **Account details**, Select **Change password**.

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

   &#x20;

**If you are using a mobile device**

1. Log in to [Nord Account](https://my.nordaccount.com/) using your current password.
2. Tap the three-bar menu in the upper-right corner of the screen.

   <div align="left"><figure><img src="/files/Ml9juQ7hnPVDpziCWt5H" alt="Three-bar menu highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Select **Account settings**.

   <div align="left"><figure><img src="/files/oWo8mUgqJfOlhNrxdZhK" alt="&#x22;Account settings&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. Under **Account details**, tap **Change password**.

   <div align="left"><figure><img src="/files/z36GPzS8KmAtoLQmMOGY" alt="&#x22;Change password&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>3. Enable MFA for your Nord account</summary>

Multi-factor authentication (MFA) is a security mechanism that verifies user identity by requiring two or more forms of authentication. This could be a combination of a password, PIN, token, USB security key, fingerprint, or facial recognition.

**If you are using a desktop device**

1. Log in to [Nord Account](https://nordaccount.com/?_gl=1*k01z0l*_ga*M2EzODgyYWQtN2M1Yy00MGExLWExYmQtZTczNmZiNGZlNWQ4*_ga_LEXMJ1N516*MTY5NzQ2MTQ5Mi45NC4xLjE2OTc0NjM5NzAuNjAuMC4w&_ga=2.86431960.1332578323.1697452471-3a3882ad-7c5c-40a1-a1bd-e736fb4fe5d8&_gac=1.95285614.1696426553.Cj0KCQjwmvSoBhDOARIsAK6aV7gig_lui9ZOimdsGqDM7b84lfs4ODITgJrFi2LqieIMxqAiCl12-vgaAkjOEALw_wcB).
2. In the upper-right corner, click your account name and choose **Account settings**.

   <div align="left"><figure><img src="/files/7pX5KHmV5gvYtWrE6KFa" alt="Showing the Account settings option selected" width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Under **Multi-factor authentication (MFA)**, click the **Manage MFA** button.

   <figure><img src="/files/EEJGiylJEHGhmVyU4MhZ" alt="&#x22;Multi-factor authentication (MFA)&#x22; tab selected and the &#x22;Manage MFA&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
4. An email with a verification code will be sent to you. Enter this code in the designated field.
5. Click **Set up** next to your preferred MFA method. Follow the on-screen instructions to complete the setup.

   <div align="left"><figure><img src="/files/AuvrYxd1DA6PdXyTepta" alt="&#x22;Set up&#x22;  buttons highlighted next to both MFA options."><figcaption></figcaption></figure></div>

   &#x20;

**If you are using a mobile device**

1. Log in to [Nord Account](https://nordaccount.com/?_gl=1*k01z0l*_ga*M2EzODgyYWQtN2M1Yy00MGExLWExYmQtZTczNmZiNGZlNWQ4*_ga_LEXMJ1N516*MTY5NzQ2MTQ5Mi45NC4xLjE2OTc0NjM5NzAuNjAuMC4w&_ga=2.86431960.1332578323.1697452471-3a3882ad-7c5c-40a1-a1bd-e736fb4fe5d8&_gac=1.95285614.1696426553.Cj0KCQjwmvSoBhDOARIsAK6aV7gig_lui9ZOimdsGqDM7b84lfs4ODITgJrFi2LqieIMxqAiCl12-vgaAkjOEALw_wcB).
2. Tap the three-bar menu in the upper-right corner of the screen.

   <div align="left"><figure><img src="/files/Ml9juQ7hnPVDpziCWt5H" alt="Three-bar menu highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Select **Account settings**.<br>

   <div align="left"><figure><img src="/files/oWo8mUgqJfOlhNrxdZhK" alt="&#x22;Account settings&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. Navigate to **Multi-factor authentication (MFA)** and select **Manage MFA**.

   <div align="left"><figure><img src="/files/AwfuchCpk97PfSFokTvm" alt="&#x22;Multi-factor authentication (MFA)&#x22; tab selected and the &#x22;Manage MFA&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. An email with a verification code will be sent to you. Enter this code in the designated field.
6. Tap **Set up** under your preferred MFA method. Follow the on-screen instructions to complete the setup.

   <div align="left"><figure><img src="/files/84g9o1Ryvt9dE0sfjrPw" alt="&#x22;Set up&#x22; buttons highlighted under both MFA options." width="375"><figcaption></figcaption></figure></div>

   &#x20;

You have two options for enabling MFA for your Nord account:

* **Authenticator app**\
  If you choose this method, use apps like [Google Authenticator](https://nordvpn.com/blog/what-is-google-authenticator/), Microsoft Authenticator, or Authy. These apps generate a code that changes every 30 seconds, which you'll need to enter when accessing your Nord Account.
* **Security key**\
  If you prefer this method, use a Bluetooth, NFC, or USB security key that holds a unique PIN. Nord Account is compatible with FIDO2-certified USB keys, including various series like Security Key, Yubikey 5, and others.

</details>

## An unknown device sends an invitation <a href="#an-unknown-device-sends-an-invitation" id="an-unknown-device-sends-an-invitation"></a>

If you do not recognize the email account of the sender, do not accept or reject the invitation.

## You're unsure about the invitation sender <a href="#youre-unsure-about-the-invitation-sender" id="youre-unsure-about-the-invitation-sender"></a>

If you're unsure whether an invitation is from someone you know, directly ask the supposed sender to confirm if they sent the invitation.

## Review access permissions for linked devices <a href="#review-access-permissions-for-linked-devices" id="review-access-permissions-for-linked-devices"></a>

Linked devices can access your device resources based on specific permissions you've set.

1. Check your device's permission settings to see what each linked device can access.\
   For more details, consult these pages:
   * [Remote access permissions](/features/explaining-permissions/remote-access-permissions)
   * [File sharing permissions](/features/explaining-permissions/file-sharing-permissions)
   * [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions)
   * [Local network permissions](/features/explaining-permissions/local-network-permissions)
2. Change permissions if you want to restrict access to certain resources.\
   &#x20;\
   **Example**\
   You can block a device from accessing your local network when it routes traffic through your device, as shown:

   <div align="left"><figure><picture><source srcset="/files/u93xplu87HwGGcYj83TX" media="(prefers-color-scheme: dark)"><img src="/files/yJyioBFrr0AQga4ohltr" alt="&#x22;Access to your local network&#x22; toggled turned off in Permissions menu"></picture><figcaption></figcaption></figure></div>

## Consider traffic routing risks <a href="#consider-traffic-routing-risks" id="consider-traffic-routing-risks"></a>

Traffic routing offers great opportunities but comes with its own set of risks.

* **Public IP exposure**\
  If someone routes their traffic through your device, your [public IP address](https://nordvpn.com/what-is-my-ip/) could be associated with their online activities.
* **Local network access**\
  A threat actor who gains [Local network permissions](/features/explaining-permissions/local-network-permissions) could potentially access other devices on your local area network (LAN) and make unauthorized changes.
* **Network monitoring**\
  A device that you are routing traffic through could maliciously monitor your network activity, including [DNS queries](https://nordvpn.com/cybersecurity/glossary/dns-query/), thereby gaining insights into your online behavior.

Remember that the privacy of your Meshnet network depends on the reliability of its members. By following the security measures outlined above, you can enjoy a safer Meshnet experience.


# Linking devices in Meshnet

Learn how to allow other NordVPN users' devices to access your device within Meshnet

Meshnet lets you grow your private network up to 50 external devices and securely transfer data between these devices from anywhere. The advantages of sharing your Meshnet with other trusted users' devices are the same as for any group of devices connected to a local area network (LAN). [Creating a private game server](/how-to/gaming) to play online multiplayer games with your Meshnet peers is just one example.

Adding your own devices to Meshnet does not require additional steps except [enabling Meshnet on your other devices](/getting-started/how-to-start-using-meshnet). These are considered personal devices because they belong to your single account.

If you're inviting other people to your network, their devices — referred to as external — will require a registered NordVPN account to join. However, it's good to know that Meshnet is free, so no subscription is needed.&#x20;

The following platform-specific articles contain the steps for linking devices from other accounts:

* [Linking external devices on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows)
* [Linking external devices on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android)
* [Linking external devices on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios)
* [Linking external devices on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos)
* [Linking external devices on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux)
* [Linking external devices on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv)


# Linking external Meshnet devices on Windows

Learn how to expand your Meshnet by linking other users' devices on Windows.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from Windows

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. Go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> and click **Link devices**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/UcwGczhdR9DAeHv8GUXy" media="(prefers-color-scheme: dark)"><img src="/files/xsdyRgZXMkmqg7SVYnkM" alt="&#x22;Link devices&#x22; card highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. In the menu that opens, click **Link external device**.

   <div align="left"><figure><picture><source srcset="/files/MijcJ6P6yCjbgp9jfrAC" media="(prefers-color-scheme: dark)"><img src="/files/HK6GpPjfTQ4B2dp37v4G" alt="Clicking the &#x22;Link external device&#x22; button"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the email address of the NordVPN user you're inviting to your Meshnet.&#x20;

   <div align="left"><figure><picture><source srcset="/files/C1Kdf6FvnasEYyEBEasA" media="(prefers-color-scheme: dark)"><img src="/files/4UtHMPjFxkciUUCcsuCD" alt="Email address input shown in the designated field" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select permissions for the other user's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
5. Select **Send invitation**.&#x20;
6. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos#accept-an-invitation-on-macos)
   * [Accepting an invitation on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux#accept-an-invitation-on-linux)
   * [Accepting an invitation on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv#accept-an-invitation-on-android-tv)

Once the invitation is accepted, your peer's device will appear in the **External devices** list.

### Optional: Withdraw an invitation

Invitations automatically expire after 72 hours if not canceled earlier.

To withdraw a pending invitation:

1. On the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab, navigate to **Link Devices** > **Sent Invitations**.
2. Next to the invitation you want to withdraw, select **Cancel**.

   <figure><picture><source srcset="/files/GbH9SLkfd00Z1vReoiE7" media="(prefers-color-scheme: dark)"><img src="/files/emUqMz41q6bSD8jYwIcr" alt="&#x22;Cancel&#x22; button highlighted next to an outgoing invitation."></picture><figcaption></figcaption></figure>

   &#x20;
3. Confirm that you want to negate the invite by clicking **Cancel invitation**.

## Accept an invitation on Windows

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

If you're on Windows, follow these steps to accept the invite:

1. Open the **NordVPN** app and go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Navigate to **Link devices** > **Received invitations**.
3. Next to the invitation you want to accept, select **Respond**.

   <div align="left"><figure><picture><source srcset="/files/N1A8EW4Oem3uJLsVSjdQ" media="(prefers-color-scheme: dark)"><img src="/files/lIUQsLoRV0JxJQg2u9xO" alt="Showing the Respond button highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select permissions for the inviter's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.&#x20;
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
5. Select **Accept and link device**.

   <div align="left"><figure><picture><source srcset="/files/2wGKbcgL1JsasBbh7fvI" media="(prefers-color-scheme: dark)"><img src="/files/QygYAMk7mdRCfjq5EPGR" alt="Showing the Accept and link device button highlighted" width="563"></picture><figcaption></figcaption></figure></div>

After accepting the invitation, the peer device will appear under the **External devices** category.

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

If you have Meshnet on multiple devices, you'll need to individually accept the invitation on each device to link them all.
{% endhint %}

## Checklist for device linking

If the device is not showing up in your **External devices** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.

&#x20;


# Linking external Meshnet devices on Android

Learn how to expand your Meshnet by linking other users' devices on Android.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from Android

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. In your **NordVPN** app, navigate to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Tap **Manage devices** and then select **Link external device**.

   <div align="left"><figure><picture><source srcset="/files/3M6GmW1ojpkNJbrCrTdf" media="(prefers-color-scheme: dark)"><img src="/files/wFYjIz1Ra75p3PYOMgxN" alt="&#x22;Link external device&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the email address of the NordVPN user you're inviting to your Meshnet.&#x20;

   <div align="left"><figure><picture><source srcset="/files/0iVUEqBg1kVx9nwmJwF4" media="(prefers-color-scheme: dark)"><img src="/files/mcAXsEVGl7qxXakp6sQN" alt="Email address entered in the designated field" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select permissions for the other user's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.\
     &#x20;
5. Tap **Send invitation**.

   <div align="left"><figure><picture><source srcset="/files/VCtgEbxb8lcdEqI4Gnq5" media="(prefers-color-scheme: dark)"><img src="/files/d7RzpLXbgpKOleVI7HJ9" alt="&#x22;Send invitation&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos#accept-an-invitation)
   * [Accepting an invitation on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux#accept-an-invitation)
   * [Accepting an invitation on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv#accept-an-invitation-on-android-tv)

Once the invitation is accepted, your peer's device will appear under the **Linked devices** tab of the **Manage devices** menu.

### Optional: Withdraw an invitation

Invitations automatically expire after 72 hours if not canceled earlier.

To withdraw a pending invitation:

1. On the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> menu, navigate to **Manage devices** > **Invitations**.
2. Under **Sent**, locate the invitation you want to withdraw and tap it.

   <div align="left"><figure><picture><source srcset="/files/gZWzvJvAfVUqCQl8gokt" media="(prefers-color-scheme: dark)"><img src="/files/OfdWWR5uYKmpH7l5Tf77" alt="Outgoing invitation highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select **Cancel invitation** to confirm.

## Accept an invitation on Android

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

If you're on Android, follow these steps to accept the invite:

1. Open the **NordVPN** app and go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Navigate to **Manage devices** and then select **Invitations**.
3. From the **Received** list, choose the desired invitation.

   <div align="left"><figure><picture><source srcset="/files/q2c05MiNPO0Z8NvxRTXG" media="(prefers-color-scheme: dark)"><img src="/files/cHNqeJ8QAyMdEFPAj9s8" alt="Received invitation highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select permissions for the inviter's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
5. Tap **Accept invitation**.

After accepting the invitation, your peer's device will appear under the **Linked devices** tab of the **Manage devices** menu. Tap **External** to locate it quickly.

<div align="left"><figure><picture><source srcset="/files/f7IbcrY38lPQiSiEL4HG" media="(prefers-color-scheme: dark)"><img src="/files/dc78IIdLnzCgdYi1dbJ0" alt="Newly added device visible under &#x22;Linked devices&#x22;." width="375"></picture><figcaption></figcaption></figure></div>

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

If you have Meshnet on multiple devices, you'll need to individually accept the invitation on each device to link them all.
{% endhint %}

## Checklist for device linking

If the device is not showing up in your **Linked devices** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.

&#x20;


# Linking external Meshnet devices on iPhone/iPad

Learn how to expand your Meshnet by linking other users' devices on iOS/iPadOS.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from iPhone/iPad

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. Open **NordVPN**.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">, and select **Manage devices**.

   <div align="left"><figure><picture><source srcset="/files/dzxifC998htHQCAjapf3" media="(prefers-color-scheme: dark)"><img src="/files/rGo1xuDz0RcLNnHGNa5U" alt="&#x22;Manage devices&#x22; menu highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Tap **Link external device**.

   <div align="left"><figure><picture><source srcset="/files/SOhy3cmJynWUi2j1KKXm" media="(prefers-color-scheme: dark)"><img src="/files/wPJ15V5xj38iO7IcjwZn" alt="Selecting the &#x22;Link external device&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Enter the email address of the NordVPN user you're inviting to have access to your Meshnet.&#x20;

   <div align="left"><figure><picture><source srcset="/files/aBsBHQWegkhJmZVPmS8n" media="(prefers-color-scheme: dark)"><img src="/files/cxfbjUudw9BNHJd2jei6" alt="Entering the email address of a NordVPN user" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Select permissions for the other user's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.\
     &#x20;
6. Tap **Send invitation**.

   <div align="left"><figure><picture><source srcset="/files/skpE9sycceIMEORBCJLh" media="(prefers-color-scheme: dark)"><img src="/files/5DTYvvJMoaHEd3V5uCbL" alt="&#x22;Send invitation&#x22; button highlighted on the Link new device screen." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
7. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos#accept-an-invitation)
   * [Accepting an invitation on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux#accept-an-invitation)
   * [Accepting an invitation on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv#accept-an-invitation-on-android-tv)

Once the invitation is accepted, your peer's device will appear under the **External devices** tab of the **Manage devices** menu.

### Optional: Withdraw an invitation

Invitations automatically expire after 72 hours if not canceled earlier.

To withdraw a pending invitation:

1. In the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> view, navigate to **Manage devices** > **Invitations**.
2. Under **Sent**, locate the invitation you want to withdraw and tap **Cancel**.

   <div align="left"><figure><picture><source srcset="/files/aKM29SY6aNQg2I1CB4GU" media="(prefers-color-scheme: dark)"><img src="/files/A6DmUd72SdfpY4d22pX6" alt="&#x22;Cancel&#x22; button highlighted next to a sent invitation." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Tap **Cancel invitation** to confirm.

## Accept an invitation on iPhone/iPad

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

If you're on iOS, follow these steps to accept the invite:

1. Open the **NordVPN** app.
2. Go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Navigate to **Manage devices** and then select **Invitations**.
4. Under **Received**, locate the invitation you want to accept and tap it.

   <div align="left"><figure><picture><source srcset="/files/nTnaUvdsDLkJMgHZZMEl" media="(prefers-color-scheme: dark)"><img src="/files/UjfMZ2Z3GrutnkZgu1bB" alt="Received invitation is highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Select permissions for the inviter's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
6. Tap **Accept invitation**.

Once the invitation is accepted, the inviter's device will appear under the **External devices** tab of the **Manage devices** menu.

<div align="left"><figure><picture><source srcset="/files/uykJ5NR6NyLJheD0SuOa" media="(prefers-color-scheme: dark)"><img src="/files/F06QbZVgt4qRJwfH1ik8" alt="Newly linked device highlighted under the &#x22;External devices&#x22; tab." width="375"></picture><figcaption></figcaption></figure></div>

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

If you have Meshnet on multiple devices, you'll need to individually accept the invitation on each device to link them all.
{% endhint %}

## Checklist for device linking

If the device is not showing up in your **External devices** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.


# Linking external Meshnet devices on macOS

Learn how to expand your Meshnet by linking other users' devices on macOS.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from macOS

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. In your **NordVPN** app, go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. At the bottom of the page, click **Link external device**.

   <div align="left"><figure><picture><source srcset="/files/Vq92o1qlM9ifz7jCP0QV" media="(prefers-color-scheme: dark)"><img src="/files/ZyblArHBnbF8BXX5krpT" alt="Clicking &#x22;Link external device&#x22;."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the email address of the NordVPN user you're inviting to have access to your Meshnet.

   <figure><picture><source srcset="/files/I5KcZmwJYADuyVsqyJvH" media="(prefers-color-scheme: dark)"><img src="/files/BW404vASJduNWWvDLa7M" alt="Invitee&#x27;s email address entered in the designated field."></picture><figcaption></figcaption></figure>

   &#x20;
4. Select permissions for the other user's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.&#x20;
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
5. Select **Send invitation**.
6. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](#accept-an-invitation-on-macos)
   * [Accepting an invitation on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux#accept-an-invitation)
   * [Accepting an invitation on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv#accept-an-invitation-on-android-tv)

Once the invitation is accepted, your peer's device will appear in the **External devices** list.

### Optional: Withdraw an invitation

Invitations automatically expire after 72 hours if not canceled earlier.

To withdraw a pending invitation:

1. Go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Select **Invitations**.
3. Next to the invitation you want to withdraw, select the **X** button.

   <figure><picture><source srcset="/files/yARqbZqL8M3R7C9UkYUo" media="(prefers-color-scheme: dark)"><img src="/files/xL7dCpDVYoNCxbPlCdv7" alt="Cancel (X) button highlighted next to an outgoing invitation."></picture><figcaption></figcaption></figure>

## Accept an invitation on macOS

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

If you're on macOS, follow these steps to accept the invite:

1. Open the **NordVPN** app and go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Select **Invitations**.
3. Next to the invitation you want to accept, select the checkmark button.

   <figure><picture><source srcset="/files/TZlUwthW8GE5BX9Y3saY" media="(prefers-color-scheme: dark)"><img src="/files/tP1sQJX5LbzWhqLspznr" alt="Checkmark button highlighted next to a received invitation."></picture><figcaption></figcaption></figure>

   &#x20;
4. Select permissions for the inviter's device to set the access level you're comfortable with.\
   &#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.&#x20;
   * [**Allow remote access**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.\
     &#x20;
5. Select **Accept invitation**.

After accepting the invitation, your peer's device will appear in the **External devices** list.

<figure><picture><source srcset="/files/9jxSFN16ZfbhAYklU5wO" media="(prefers-color-scheme: dark)"><img src="/files/euKa3PB741WIfUd8JFy2" alt="List of external devices, with the newly connected device highlighted"></picture><figcaption></figcaption></figure>

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

If you have Meshnet on multiple devices, you'll need to individually accept the invitation on each device to link them all.
{% endhint %}

## Checklist for device linking

If the device is not showing up in your **External devices** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.

<br>


# Linking external Meshnet devices on Linux

Learn how to expand your Meshnet by linking other users' devices on Linux.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from Linux

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. Open **Terminal**.
2. Enter the following command, where `<email>` is the email address of the NordVPN user you're inviting to have access to your Meshnet:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet invite send &#x3C;email>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet invite send fernando.thewhale@email.com
   </code></pre>

   &#x20;
3. Grant or deny the permissions requested for the user’s device by pressing **Y** or **N**, respectively, one at a time. Repeat until you see a message confirming that you’ve successfully sent your invitation.\
   &#x20; \
   Consider the level of access you're comfortable providing:

   * [**Allow incoming traffic**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.&#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.

   &#x20;\
   **Example**

   <figure><img src="/files/KtOpq1bkZC9MmHIaM3sF" alt="Terminal output showing permission prompts and successfully sending an invite."><figcaption></figcaption></figure>

   &#x20;
4. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos#accept-an-invitation-on-macos)
   * [Accepting an invitation on Linux](#accept-an-invitation-on-linux)
   * [Accepting an invitation on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv#accept-an-invitation-on-android-tv)
5. Once the device owner accepts the invitation, your devices will be linked. To view connected external devices, enter:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list -filter external
   </code></pre>

### Optional: Withdraw an invitation

Invitations automatically expire after 72 hours if not canceled earlier.

To withdraw a pending invitation, enter this command followed by the email address of the person you've invited:

{% code overflow="wrap" %}

```bash
nordvpn meshnet invite revoke <email>
```

{% endcode %}

**Example**

<div align="left"><figure><img src="/files/c1094Ad16tozw8Ec6ht7" alt=""><figcaption></figcaption></figure></div>

## Accept an invitation on Linux

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

To accept an invitation on a Linux device:

1. Open **Terminal**.
2. To see your pending invitations, enter the command:&#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet invite list
   </code></pre>

   &#x20;
3. Locate the email address of the person who invited you under **Received invites**.
4. To accept an invite, enter the following command, replacing `<email>`  with the inviter's email address:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet invite accept &#x3C;email>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet invite accept secret.meerkat@meshnet.com
   </code></pre>

   &#x20;
5. Grant or deny the permissions requested for the inviter's device by pressing **Y** or **N**, respectively, one at a time. \
   &#x20;\
   Consider the level of access you're comfortable providing:

   * [**Allow incoming traffic**](/features/explaining-permissions/remote-access-permissions): keep this permission selected to stay accessible via Meshnet.
   * [**Allow traffic routing**](/features/explaining-permissions/traffic-routing-permissions): this permission lets the external device route its internet traffic through your device, using it as a VPN server.&#x20;
   * [**Allow local network access**](/features/explaining-permissions/local-network-permissions): this permission lets the external device access other devices on your local network, such as printers or smart home devices.&#x20;
   * [**Allow receiving files**](/features/explaining-permissions/file-sharing-permissions): keep this permission selected to allow file sending from the invitee.

   &#x20;
6. Repeat until you see a message confirming that you’ve successfully accepted their invitation. This will link your device with your peer's device.
7. To view external connected devices, enter:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list -filter external
   </code></pre>

If you have Meshnet on multiple devices, you'll need to individually accept the invitation on each device to link them all.

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

To display supported commands for managing Meshnet peer devices, enter:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer --help
```

{% endcode %}
{% endhint %}

## Checklist for device linking

If the device is not showing up in your **External peers** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.
* [ ] Refresh your Meshnet by entering this command:

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer refresh
  </code></pre>


# Linking external Meshnet devices on Android TV

Learn how to expand your Meshnet by linking other users' devices on Android TV.

Linking a device of another Meshnet user allows for reciprocal access between your devices, which can be limited by setting specific [permissions](/features/explaining-permissions) if needed.

## Send an invitation from Android TV <a href="#sending-an-invitation" id="sending-an-invitation"></a>

To add an external device to your Meshnet, invite its owner using their NordVPN account email:

1. On your Android TV device, open **NordVPN** and navigate to the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
2. Select **Invitations** > **Link external device**.

   <figure><img src="/files/AK322BL0AiLG5gwRjAll" alt="&#x22;Link external device&#x22; selected and highlighted"><figcaption></figcaption></figure>

   &#x20;
3. Select **Enter email address**.
4. Enter the email address of the NordVPN user you’re inviting to have access to your Meshnet.

   <figure><img src="/files/b3yYoVY1cWKs2J1udABf" alt="Invitee&#x27;s email address is entered in the designated field"><figcaption></figcaption></figure>

   &#x20;
5. Review the invitation and choose if you want to allow or deny [remote access](/features/explaining-permissions/remote-access-permissions) and [receiving files](/features/explaining-permissions/file-sharing-permissions) from the invitee.
6. Select **Send invitation**.

   <div align="left"><figure><img src="/files/v3ujr55hyUsTZi7izskR" alt="&#x22;Send invitation&#x22; selected and highlighted" width="375"><figcaption></figcaption></figure></div>

   &#x20;
7. Wait for the recipient to accept the invitation. For details, consult the appropriate guides:
   * [Accepting an invitation on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows#accept-an-invitation-on-windows)
   * [Accepting an invitation on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android#accept-an-invitation-on-android)
   * [Accepting an invitation on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios#accept-an-invitation-on-iphone-ipad)
   * [Accepting an invitation on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos#accept-an-invitation-on-macos)
   * [Accepting an invitation on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux#accept-an-invitation-on-linux)
   * [Accepting an invitation on Android TV](#accept-an-invitation-on-android-tv)

Once the invitation is accepted, your peer's device will appear under **Linked devices**.

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

If needed, you can cancel the pending invitation by selecting it under the **Invitations** section and choosing **Cancel invitation**.
{% endhint %}

## Accept an invitation on Android TV

To complete the device linking process, the recipient needs to accept the invitation in their NordVPN app.

{% hint style="warning" %}
**Caution**

Ensure that the invitation you accept is from a user you know and trust. For more information, see [How to use Meshnet securely](/getting-started/use-meshnet-securely).
{% endhint %}

To accept an invitation on an Android TV device:

1. Open **NordVPN** and navigate to the **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
2. Select **Invitations**, choose the active invitation you want to accept.

   <div align="left"><figure><img src="/files/q2yoXqD88fS1mGJEnW26" alt="Received option is highlighted"><figcaption></figcaption></figure></div>

   &#x20;
3. Select if you want to allow or deny [remote access](/features/explaining-permissions/remote-access-permissions) and [receiving files](/features/explaining-permissions/file-sharing-permissions) from the inviter’s device.
4. Select **Accept invitation**.

If you have NordVPN installed on multiple devices, you need to accept the invitation on each device individually.

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

The invitation stays active, allowing you time to accept it on all devices, and it expires after 72 hours if not canceled earlier.
{% endhint %}

After accepting the invitation, both your device and the inviter's device join each other's external devices list. You can find the newly linked device in **Devices** > **External devices**.

## Checklist for device linking

If the device is not showing up in your **External devices** list, refer to the following checklist to address common issues:

* [ ] Verify the email address you entered when sending the invitation.
* [ ] Confirm that the recipient has accepted the invitation.


# Explaining permissions

Find out how Meshnet permissions function and are controlled.

Meshnet permissions control the access granted to other devices within your network. You can choose who can connect to your device, send you files, route their internet traffic through your device, and access your local resources. These permissions help protect the security and privacy of your network resources and data by limiting the potential for [unauthorized access](https://nordvpn.com/blog/unauthorized-access/).

Check out the video below to get acquainted with the available permissions and their functionality.

{% embed url="<https://www.youtube.com/watch?v=IgTvKg13hH8>" %}

To delve deeper into each Meshnet permission and find instructions for managing them on all platforms, read through the following pages:

* [Remote access permissions](/features/explaining-permissions/remote-access-permissions)
* [File sharing permissions](/features/explaining-permissions/file-sharing-permissions)
* [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions)
* [Local network permissions](/features/explaining-permissions/local-network-permissions)


# Remote access permissions

Learn the functionality of the remote access permission and how to manage it in the Meshnet permission menu.

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

This article details Meshnet's remote access permission and steps to modify this setting for individual peer devices.

## Permission basics <a href="#permission-overview" id="permission-overview"></a>

Once you enable Meshnet, your linked devices treat each other as members of a private network. The remote access permission determines if a Meshnet peer can access your device using the Meshnet IP or Nord name. By default, [remote access](https://nordvpn.com/meshnet/remote-access/) is granted for all devices, but you can adjust it in[ the Meshnet permission menu](#changing-permissions).

### What happens when remote access is enabled? <a href="#what-happens-when-remote-access-is-enabled" id="what-happens-when-remote-access-is-enabled"></a>

Your device accepts incoming connections from a Meshnet peer. The connections can be initiated from the same local network or from the outside.

<figure><img src="/files/x2rAYA1h2lmEYyGPqM6U" alt="Remote access enabled"><figcaption><p>Figure 1. Remote access enabled</p></figcaption></figure>

As illustrated in the model above, data can be exchanged in both directions. This two-way communication between devices unlocks a variety of use cases, including but not limited to:

* [Remote device access](/how-to/remote-access)
* [Media streaming](/how-to/remote-files-media-access#personal-media-streaming)
* [Shared folders](/how-to/remote-files-media-access/set-up-folder-sharing)
* [Game servers](/how-to/gaming)

### What happens when remote access is disabled? <a href="#what-happens-when-remote-access-is-disabled" id="what-happens-when-remote-access-is-disabled"></a>

Your device does not accept connections from a Meshnet peer. If a connection is attempted (for example, using the `ping` command), it will fail because the recipient will not receive it.

<figure><img src="/files/gKvicTKC8afIWV8lv3Vf" alt="Remote access disabled"><figcaption><p>Figure 2. Remote access disabled</p></figcaption></figure>

Having the remote access permission disabled prevents the peer from accessing any shared folders or services on your device.

### Icon reference table

In the NordVPN app, permissions and their values are visualized using icons. This table explains the icons that represent different states of the remote access permission and the effect it has on devices in your Meshnet.

<table><thead><tr><th width="100" align="center">Icon</th><th>State</th><th>Impact</th></tr></thead><tbody><tr><td align="center"><picture><source srcset="/files/yuZ0pdhSOEAkhtg7Lkg7" media="(prefers-color-scheme: dark)"><img src="/files/Oss9yG6T34QAdlZPxjDb" alt="Remote access permission icon with two arrows."></picture></td><td>Remote access is enabled to your device and the linked device.</td><td><ul><li>Your device can remotely access the peer device.</li><li>The peer device can remotely access your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/waMj4RMJ6NfP7QM2GkxC" media="(prefers-color-scheme: dark)"><img src="/files/IIAEfKuKZCET4bz6lxlA" alt="Remote access permission icon with one arrow pointing inward" data-size="original"></picture></td><td>Remote access is enabled to your device.</td><td><ul><li>Your device cannot remotely access the peer device.</li><li>The peer device can remotely access your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/0lZmV6m5G45kAL52Znuz" media="(prefers-color-scheme: dark)"><img src="/files/xaQOK9KG2N5Rr3s4UaDz" alt="Remote access permission icon with one arrow pointing outward"></picture></td><td>Remote access is enabled for the linked device.</td><td><ul><li>Your device can remotely access the peer device.</li><li>The peer device cannot remotely access your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/OFAclq2a6S36nD1vBg4Z" media="(prefers-color-scheme: dark)"><img src="/files/5jJmTjNrM7NbNoC9Nji4" alt="Remote access permission icon with an x symbol"></picture></td><td>Remote access is disabled.</td><td><ul><li>Your device cannot remotely access the peer device.</li><li>The peer device cannot remotely access your device.</li></ul></td></tr></tbody></table>

## Changing permissions <a href="#changing-permissions" id="changing-permissions"></a>

If you want to change the status of the remote access permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

To manage the remote access permission, proceed with the following instructions:

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

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. On the left-side menu, select the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
3. Next to the device that you want to alter the permissions for, click the three-dot menu and select **Manage device**.

   <div align="left"><figure><picture><source srcset="/files/K6EzP4x11qfX2e81Aocw" media="(prefers-color-scheme: dark)"><img src="/files/R8egCQqfnpljrLR2fZFT" alt="Selecting &#x22;Manage device&#x22; from the three-dot menu."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Under **Remote access permissions**, turn on or off the **Remote access to your device** toggle.&#x20;

   <div align="left"><figure><picture><source srcset="/files/UyUO6rYQZRRJLRf8fTgh" media="(prefers-color-scheme: dark)"><img src="/files/5KuGaAEJsTnUK5uUVOc6" alt="Turning on Remote access to your device permission toggle"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Android" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Select **Manage devices**.
4. Either tap your chosen device or tap the three-dot menu next to the device and select **Manage device permissions**.
5. Tap **Remote access permissions** to expand and turn on or off **Remote access to your device**.

   <div align="left"><figure><picture><source srcset="/files/uVzamNwrhwdWnDL4sRku" media="(prefers-color-scheme: dark)"><img src="/files/ff0gA2VeC30KidWdgAvi" alt="The &#x27;Remote access to your device&#x27; toggle is enabled." width="375"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="iOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Select **Manage devices**.
4. Tap the **Permissions** area under the device that you want to alter the permissions for.

   <div align="left"><figure><picture><source srcset="/files/wYeSC1Mtu9OWGgkt5tMD" media="(prefers-color-scheme: dark)"><img src="/files/9AFQVtwQkVgoDgtuPwfM" alt="Selecting Permissions." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Under **Remote access permissions**, turn on or off **Remote access to your device**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/Pt4Fba4hDt0b0F1AuwMQ" media="(prefers-color-scheme: dark)"><img src="/files/rqmnvD0VlPVL5R6iQMyB" alt="The &#x22;Remote access to your device&#x22; toggle highlighted." width="375"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. On the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button next to the device that you want to alter the permissions for.
4. Select the **Don't allow remote access to your device** or the **Allow remote access to your device** option.&#x20;

   <div align="left"><figure><picture><source srcset="/files/K5qizftY4KYL3aTsHHsG" media="(prefers-color-scheme: dark)"><img src="/files/mOhcu8HzcAs6P3Y1fi3V" alt="Revoking the &#x22;Remote access to your device&#x22; permission."></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Linux" %}

1. Open the terminal.
2. Run the following command to list your Meshnet peers:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list
   </code></pre>

   &#x20;
3. Note the Nord name of the peer you want to alter permissions for.

   <div align="left"><figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Peer device&#x27;s Nord name highlighted in Terminal."><figcaption></figcaption></figure></div>

   &#x20;
4. To either allow or disable the permission, use one of the following commands, replacing `<device>` with the peer’s Nord name, nickname, or Meshnet IP:&#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer incoming allow &#x3C;device>
   nordvpn meshnet peer incoming deny &#x3C;device>
   </code></pre>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}
{% endtab %}

{% tab title="Android TV" %}

1. On your Android TV device, open **NordVPN**. Log in if necessary.
2. Navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Linked devices**.
3. Choose the device you want to alter the permissions for.
4. Select **Remote access permissions**.
5. Set the **Remote access to your device** toggle to the on or off position.

   <div align="left"><figure><img src="/files/Me1FNxP7ppLi82HATuKX" alt="&#x22;Remote access to your device&#x22; toggle set to the on position." width="375"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}


# File sharing permissions

Learn the functionality of the file sharing permission and how to manage it in the Meshnet permission menu.

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

This article details Meshnet’s file sharing permission and outlines steps to adjust this setting for each individual device on your Meshnet.

## Permission basics <a href="#permission-overview" id="permission-overview"></a>

The file sharing permission allows you to send and receive files between your Meshnet peers via the NordVPN app. By default, file sharing is allowed for all devices in your Meshnet. For instructions on how to share files, see [Sharing files in Meshnet](/features/sharing-files-in-meshnet).

### What happens when file sharing is enabled? <a href="#what-happens-when-file-sharing-is-enabled" id="what-happens-when-file-sharing-is-enabled"></a>

When you enable file sharing for a specific Meshnet peer, you can start receiving files from that device.&#x20;

<figure><img src="/files/oZRpLdZGbGTCdA8oSppJ" alt="Three computers sharing files with each other."><figcaption><p>Figure 1. File sharing via Meshnet</p></figcaption></figure>

As illustrated in the model above, with [file sharing](https://nordvpn.com/meshnet/file-sharing/) enabled on both devices, the files can be sent and received bidirectionally. This allows you to exchange various file types securely.

### What happens when file sharing is disabled? <a href="#what-happens-when-file-sharing-is-disabled" id="what-happens-when-file-sharing-is-disabled"></a>

If you disable the file sharing permission for one of your Meshnet peers, you will not receive any files from that device. However, unless the peer disables file sharing for you, you can still send files to the peer’s device.

### Icon reference table

In the NordVPN app, permissions and their values are visualized using icons. This table explains the icons that represent different states of the file sharing permission and the effect it has on devices in your Meshnet.

<table><thead><tr><th width="100" align="center">Icon</th><th>State</th><th>Impact</th></tr></thead><tbody><tr><td align="center"><picture><source srcset="/files/zNyTHxli8CRI5pVNFfVS" media="(prefers-color-scheme: dark)"><img src="/files/abAfgZCtJoGrSnBCcgM5" alt=""></picture></td><td>File sharing is enabled for your device and the linked device.</td><td><ul><li>Your device can send files to the peer device.</li><li>The peer device can send files to your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/AnvpKKpmSnkFO3rV7cmU" media="(prefers-color-scheme: dark)"><img src="/files/ZrnmNbgyjryrF1iLmALz" alt="File sharing permission icon with one arrow pointing inward"></picture></td><td>File sharing is enabled for your device.</td><td><ul><li>Your device cannot send files to the peer device.</li><li>The peer device can send files to your device.</li></ul></td></tr><tr><td align="center"><p></p><p><picture><source srcset="/files/1Z3WP8pkQySzDQGP8A6V" media="(prefers-color-scheme: dark)"><img src="/files/C66F166pjKi9nf1WD5pd" alt="File sharing permission icon with one arrow pointing outward" data-size="original"></picture></p></td><td>File sharing is enabled for the linked device.</td><td><ul><li>Your device can send files to the peer device.</li><li>The peer device cannot send files to your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/amI5LjDEkCap1OgTnKYu" media="(prefers-color-scheme: dark)"><img src="/files/9EQyUqYW8LIa9sr7mrHQ" alt="File sharing permission icon with an x symbol"></picture></td><td>File sharing is disabled.</td><td><ul><li>Your device cannot send files to the peer device.</li><li>The peer device cannot send files to your device.</li></ul></td></tr></tbody></table>

## Changing permissions <a href="#changing-permissions" id="changing-permissions"></a>

If you want to change the status of the file sharing permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

To manage the file sharing permission, proceed with the following instructions:

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

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. From the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Next to the device that you want to alter the permissions for, click the three-dot menu and select **Manage device**.

   <figure><picture><source srcset="/files/K6EzP4x11qfX2e81Aocw" media="(prefers-color-scheme: dark)"><img src="/files/R8egCQqfnpljrLR2fZFT" alt="Selecting &#x22;Manage device&#x22; from the three-dot menu."></picture><figcaption></figcaption></figure>

   &#x20;
4. Under **File sharing permissions**, turn on or off the **Receiving files from linked device** toggle.&#x20;

   <figure><picture><source srcset="/files/Hwfg3OPzXgbZLL0aQxbn" media="(prefers-color-scheme: dark)"><img src="/files/lOx8XiNSgfgWLc9I9Gqn" alt="Turning on the &#x22;Receive files from the linked device&#x22; toggle."></picture><figcaption></figcaption></figure>

   &#x20;\
   You can also choose whether to automatically accept file transfers from this sender without receiving a transfer request. To do this, turn on or off the **Always accept transfers from this device** toggle.
   {% endtab %}

{% tab title="Android" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Select **Manage devices**.
4. Either tap your chosen device or tap the three-dot menu next to the device and select **Manage device permissions**.
5. Tap **File sharing permissions** to expand and turn on or off **Receiving files from the linked device**.

   <div align="left"><figure><picture><source srcset="/files/0SJBMx5dzP0eEiBlEF7o" media="(prefers-color-scheme: dark)"><img src="/files/tceHCOqE6dn0mnPezsXa" alt="The &#x27;Receiving files from the linked device&#x27; toggle is enabled." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. To automatically accept file transfers from this sender without receiving a request, turn on the **Always accept transfers from this device** toggle.
   {% endtab %}

{% tab title="iOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. At the bottom of the screen, tap **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Select **Manage devices**.
4. Tap the **Permissions** area under the device that you want to alter the permissions for.

   <div align="left"><figure><picture><source srcset="/files/wYeSC1Mtu9OWGgkt5tMD" media="(prefers-color-scheme: dark)"><img src="/files/9AFQVtwQkVgoDgtuPwfM" alt="Selecting Permissions." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Under **File sharing permissions**, turn on or off **Receiving files from linked device**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/wbeV9K6TqXkPGUfnZGpl" media="(prefers-color-scheme: dark)"><img src="/files/pGge5zWw05AjwwzGClEE" alt="Turning on the Receiving files from linked device toggle" width="375"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. On the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button next to the device that you want to alter the permissions for.
4. Select the **Don't allow receiving files** or the **Allow receiving files** option.

   <div align="left"><figure><picture><source srcset="/files/0F2k6rZAwouYs8DTrAHX" media="(prefers-color-scheme: dark)"><img src="/files/33cTvAGQbFueZluRJaAK" alt="Revoking the &#x22;Receiving files&#x22; permission."></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Linux" %}

1. Open the terminal.
2. Run the following command to list your Meshnet peers:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list
   </code></pre>

   &#x20;
3. Note the Nord name of the peer device you want to alter permissions for.

   <div align="left"><figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Peer device&#x27;s Nord name highlighted in Terminal."><figcaption></figcaption></figure></div>

   &#x20;
4. To either allow or disable the permission, use one of the following commands, replacing `<device>` with the peer’s Nord name, nickname, or Meshnet IP:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer fileshare allow &#x3C;device>
   nordvpn meshnet peer fileshare deny &#x3C;device>
   </code></pre>

   &#x20;\
   You can also choose whether to automatically accept file transfers from this sender without receiving a transfer request. To do this, use the following commands, where `<device>` is the peer device's Nord name, nickname, or Meshnet IP:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer auto-accept enable &#x3C;device>
   nordvpn meshnet peer auto-accept disable &#x3C;device>
   </code></pre>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}
{% endtab %}

{% tab title="Android TV" %}

1. On your Android TV device, open **NordVPN**. Log in if necessary.
2. Navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Linked devices**.
3. Choose the device you want to alter the permissions for.
4. Set the **Receiving files from the linked device** toggle to the on or off position.

   <div align="left"><figure><img src="/files/Mmt6lJ1i9etqW7NnL7io" alt="&#x22;Receive files&#x22; toggle set to the on position." width="375"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}


# Traffic routing permissions

Learn the functionality of the traffic routing permission and how to manage it in the Meshnet permission menu.

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

This article covers Meshnet’s traffic routing permission, how the feature works, and its limitations. Additionally, the article describes how to configure the traffic routing permission for each individual peer device in your Meshnet.

## Permission basics <a href="#permission-overview" id="permission-overview"></a>

The traffic routing feature allows you to route internet traffic through compatible devices on your Meshnet. Traffic routing is only possible through Meshnet devices running on:

* Windows
* Linux
* macOS (if you're using the [direct download](https://nordvpn.com/download/mac/) version of NordVPN)

For guidance on using traffic routing, see [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet).

### What happens when traffic routing is enabled? <a href="#what-happens-when-traffic-routing-is-enabled" id="what-happens-when-traffic-routing-is-enabled"></a>

When the traffic routing permission is enabled, your Meshnet peers are allowed to route their internet traffic through your device. In essence, your device can act as a VPN server for your fellow users.

<figure><img src="/files/uVR7MwXLgjuuAa0iDc1M" alt="Diagram showing a mobile phone routing traffic through a home computer."><figcaption><p>Figure 1. Traffic routing flow</p></figcaption></figure>

As illustrated in Figure 1, a mobile device routes traffic via a home computer and accesses the internet using the PC's public IP.

{% hint style="warning" %}
**Caution**

Use traffic routing only with trusted devices to avoid potential misuse, as your browsing activity can be monitored on the device you are routing through.
{% endhint %}

### What happens when traffic routing is disabled? <a href="#what-happens-when-traffic-routing-is-disabled" id="what-happens-when-traffic-routing-is-disabled"></a>

With the traffic routing permission disabled, the peer cannot route their internet traffic through your device. Also, your device does not appear in the list of available host devices for traffic routing, even if it is capable of acting as a host.

### Icon reference table

If you want to change the status of the traffic routing permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

<table><thead><tr><th width="100" align="center">Icon</th><th>State</th><th>Impact</th></tr></thead><tbody><tr><td align="center"><picture><source srcset="/files/KE92oEZadWkW43a9tb8p" media="(prefers-color-scheme: dark)"><img src="/files/5Bm11dhb7ZHJUWloSh3D" alt="Traffic routing permission icon with two arrows"></picture></td><td>Traffic routing is enabled for your device and the linked device.</td><td><ul><li>Your device can route traffic through the peer device.</li><li>The peer device can route traffic through your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/Uyhesc1FJjVOZPi5u7Kd" media="(prefers-color-scheme: dark)"><img src="/files/DeQrKjVGQSnEGtyi9fRM" alt="Traffic routing permission icon with one arrow pointing inward"></picture></td><td>Traffic routing is enabled for your device.</td><td><ul><li>Your device cannot route traffic through the peer device.</li><li>The peer device can route traffic through your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/TJIVJlkx8uCcPMv2ZsCz" media="(prefers-color-scheme: dark)"><img src="/files/oGmhqUNH5T4naAqN06gM" alt="Traffic routing permission icon with one arrow pointing outward"></picture></td><td>Traffic routing is enabled for the linked device.</td><td><ul><li>Your device can route traffic through the peer device.</li><li>The peer device cannot route traffic through your device.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/VO7gNcfTfxN6mspmPpgN" media="(prefers-color-scheme: dark)"><img src="/files/HyAslKoI0KEEk0su9YgD" alt="Traffic routing permission icon with an x symbol"></picture></td><td>Traffic routing is disabled.</td><td><ul><li>Your device cannot route traffic through the peer device.</li><li>The peer device cannot route traffic through your device.</li></ul></td></tr></tbody></table>

## Changing permissions <a href="#changing-permissions" id="changing-permissions"></a>

If you want to change the status of the traffic routing permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

To manage the traffic routing permission, proceed with the following instructions:

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

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. From the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Next to the device that you want to alter the permissions for, click the three-dot menu and select **Manage device**.

   <figure><picture><source srcset="/files/K6EzP4x11qfX2e81Aocw" media="(prefers-color-scheme: dark)"><img src="/files/R8egCQqfnpljrLR2fZFT" alt="Selecting &#x22;Manage device&#x22; from the three-dot menu."></picture><figcaption></figcaption></figure>

   &#x20;
4. Under **Traffic routing permissions**, turn on or off the **Traffic routing through your device** toggle.&#x20;

   <div align="left"><figure><picture><source srcset="/files/0NPfy9cxLaXSqTzk7ysQ" media="(prefers-color-scheme: dark)"><img src="/files/d0swKW4EnvM4c3q0TD6u" alt="Turning on Traffic routing through your device"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. From the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button next to the device that you want to alter the permissions for.
4. Select the **Don't allow traffic routing through your device** or the **Allow traffic routing through your device** option.&#x20;

   <div align="left"><figure><picture><source srcset="/files/YoOZPS73YdNeCV8C3Az1" media="(prefers-color-scheme: dark)"><img src="/files/ojSIgmGDYT86pyVa5IjH" alt="Revoking the &#x22;Traffic routing through your device&#x22; permission."></picture><figcaption></figcaption></figure></div>

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

If you're using the App Store version of the app, the traffic routing permission will not be visible because this version does not support traffic routing.
{% endhint %}
{% endtab %}

{% tab title=" Linux" %}

1. Open the terminal.
2. Run the following command to list all of your Meshnet peers:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list
   </code></pre>

   &#x20;
3. Note the Nord name of the peer you want to alter permissions for.

   <div align="left"><figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Peer device&#x27;s Nord name highlighted in Terminal."><figcaption></figcaption></figure></div>

   &#x20;
4. To either allow or disable the permission, use one of the following commands, replacing `<device>` with the peer’s Nord name, nickname, or Meshnet IP:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer routing allow &#x3C;device>
   nordvpn meshnet peer routing deny &#x3C;device>
   </code></pre>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}
{% endtab %}
{% endtabs %}

## See also

* [Local network permissions](/features/explaining-permissions/local-network-permissions)


# Local network permissions

Learn the functionality of the local network permission and how to manage it in the Meshnet permission menu.

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

The article discusses Meshnet's local network permission, the differences in functionality when the permission is enabled or disabled, and the effect it has on your peer’s device. It also provides guidance on managing the local network permission for each device on your Meshnet.

## Permission basics <a href="#permission-overview" id="permission-overview"></a>

The local network permission works in tandem with [Traffic routing](/features/routing-traffic-in-meshnet). Its function is to either permit or deny access to your local network devices while a Meshnet peer is routing traffic through your device. Local network access is a supplementary feature to traffic routing, and as such, traffic routing must be enabled to make use of the LAN permission.

LAN access with traffic routing is available on the NordVPN app for Windows, Linux, and macOS.&#x20;

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

On macOS, traffic routing is available only on the [direct download](https://nordvpn.com/download/mac/) version of the app. The App Store version of NordVPN doesn't provide the required functionality for your device to act as a traffic routing host.
{% endhint %}

### What happens when local network permission is enabled? <a href="#what-happens-when-local-network-permission-is-enabled" id="what-happens-when-local-network-permission-is-enabled"></a>

With the local network permission enabled, your Meshnet peer can route their internet traffic through your device and interact with all of the devices that are located in the same local area network. The devices can vary from a router to a [home server](https://nordvpn.com/blog/home-server/) or [network-attached storage](https://www.seagate.com/blog/what-is-nas-master-ti/) (NAS).

<figure><img src="/files/9q2f9S4NWcntQpDGbZUp" alt="Local network permission enabled"><figcaption><p>Figure 1. Local network permission enabled</p></figcaption></figure>

As depicted in the model above, the home computer, which routes traffic, and local devices communicate through their respective LAN IP addresses. Consequently, the laptop routing traffic through the home computer can interact with all of the devices in the `192.168.1.0/24` local subnet.

{% hint style="warning" %}
**Caution**

Enable local network permission only for trusted devices to ensure home network and device security. Untrusted entities may cause severe damage if granted full access to your LAN devices.
{% endhint %}

### What happens when local network permission is disabled? <a href="#what-happens-when-local-network-permission-is-disabled" id="what-happens-when-local-network-permission-is-disabled"></a>

When the local network permission is disabled, the Meshnet peer cannot access devices on your LAN.&#x20;

<figure><img src="/files/s5W7FeVU7SNYdXBZLITj" alt="Local network permission disabled"><figcaption><p>Figure 2. Local network permission disabled</p></figcaption></figure>

Traffic routing remains functional unless otherwise configured, but it only alters the Meshnet peer’s public IP address. Should the peer attempt to connect to a local IP address, the connection will default to their LAN instead of yours.

### Icon reference table

If you want to change the status of the local network permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

<table><thead><tr><th width="100" align="center">Icon</th><th>State</th><th>Impact</th></tr></thead><tbody><tr><td align="center"><picture><source srcset="/files/qX5MuemNLTZ9Z4rK6RlJ" media="(prefers-color-scheme: dark)"><img src="/files/BpxIpQrjbTkPevF6Cp1P" alt="Local network permission icon with two arrows"></picture></td><td>Local network access is enabled for your device and the linked device.</td><td><ul><li>Your device can access the peer device's local network while routing traffic through it.</li><li>The peer device can access your device's local network while routing traffic through it.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/XoZ36fZxew4HtrmnKbOv" media="(prefers-color-scheme: dark)"><img src="/files/s4dXo8fv69JtNW5jXhnt" alt="Local network permission icon with one arrow pointing inward"></picture></td><td>Local network access is enabled for your device.</td><td><ul><li>Your device cannot access the peer device's local network while routing traffic through it.</li><li>The peer device can access your device's local network while routing traffic through it.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/1oC7KqgOCCdVoSJwvdK6" media="(prefers-color-scheme: dark)"><img src="/files/tqeWnaFJe0skwoKVSaKn" alt="Local network permission icon with one arrow pointing outward"></picture></td><td>Local network access is enabled for the linked device.</td><td><ul><li>Your device can access the peer device's local network while routing traffic through it.</li><li>The peer device cannot access your device's local network while routing traffic through it.</li></ul></td></tr><tr><td align="center"><picture><source srcset="/files/Cwtxk1dTNZEVWVh6n5VZ" media="(prefers-color-scheme: dark)"><img src="/files/JLbwWjD0s5uuZJmdUYYD" alt="Local network permission icon with an x symbol"></picture></td><td>Local network access is disabled.</td><td><ul><li>Your device cannot access the peer device's local network while routing traffic through it.</li><li>The peer device cannot access your device's local network while routing traffic through it.</li></ul></td></tr></tbody></table>

## Changing permissions <a href="#changing-permissions" id="changing-permissions"></a>

If you want to change the status of the local network permission, you can do so for each device individually. You can also check whether your peer has enabled or disabled the permission for your device.

To manage the local network permission, proceed with the following instructions:

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

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. On the left-side menu, select the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
3. Next to the device that you want to alter the permissions for, click the three-dot menu and select **Manage device**.

   <div align="left"><figure><picture><source srcset="/files/K6EzP4x11qfX2e81Aocw" media="(prefers-color-scheme: dark)"><img src="/files/R8egCQqfnpljrLR2fZFT" alt="Selecting &#x22;Manage device&#x22; from the three-dot menu."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Under **Traffic routing permissions**, turn on or off the **Access to your local network when routing traffic through your device** toggle.

   <div align="left"><figure><picture><source srcset="/files/yWk5k99zbDv7uWIBVKJg" media="(prefers-color-scheme: dark)"><img src="/files/NP54D1yXLyxksGXq05Dv" alt="Turning on Access to your local network "></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title=" macOS" %}

1. Open the NordVPN app. [Log in](https://my.nordaccount.com/) if necessary.
2. On the left-side menu, select **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button next to the device that you want to alter the permissions for.
4. Select the **Don't allow access to your local network while routing traffic** or the **Allow access to your local network while routing traffic** option.

   <div align="left"><figure><picture><source srcset="/files/u12JtVLhlBmNhn9SU0eH" media="(prefers-color-scheme: dark)"><img src="/files/dzx5cbXITpSStAKx3APv" alt="Revoking the &#x22;Access to your local network while routing traffic&#x22; permission."></picture><figcaption></figcaption></figure></div>

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

If you're using the App Store version of the app, the local network permission will not be visible because this version does not support traffic routing.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

1. Open the terminal.
2. Run the following command to list all of your Meshnet peers:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list
   </code></pre>

   &#x20;
3. Note the Nord name of the peer you want to alter permissions for.

   <div align="left"><figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Peer device&#x27;s Nord name highlighted in Terminal."><figcaption></figcaption></figure></div>

   &#x20;
4. To either allow or disable the permission, use one of the following commands, replacing `<device>` with the peer’s Nord name, nickname, or Meshnet IP:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer local allow &#x3C;device>
   nordvpn meshnet peer local deny &#x3C;device>
   </code></pre>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}
{% endtab %}
{% endtabs %}

## See also

* [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions)


# Renaming devices in Meshnet

Learn how to set custom nicknames for devices in your Meshnet.

When you enable Meshnet, your device gets a default Nord name. However, Meshnet also has a device renaming feature, enabling you to assign custom nicknames to your peer devices. These nicknames serve as visual identifiers and host names, allowing convenient connections between the devices.&#x20;

Nicknames for personal devices are synced across all devices linked to the same Nord account. This synchronization ensures a consistent experience when switching between your Meshnet devices.

Nicknames for external devices are synced across all personal devices that have the same external device added to their Meshnet. These nicknames are only visible to your account. External peer devices do not see the new name you assign to them.

* [Renaming devices on Windows](/features/renaming-devices/windows)
* [Renaming devices on Android](/features/renaming-devices/android)
* [Renaming devices on iPhone/iPad](/features/renaming-devices/ios)
* [Renaming devices on macOS](/features/renaming-devices/macos)
* [Renaming devices on Linux](/features/renaming-devices/linux)

After applying a nickname, you can access the renamed device with all of these identifiers:

<table><thead><tr><th width="209">Identifier</th><th>Example</th></tr></thead><tbody><tr><td>Nickname</td><td>home-pc</td></tr><tr><td>Nickname + <code>.nord</code></td><td>home-pc.nord</td></tr><tr><td>Nord name</td><td>secret.meerkat-everest.nord</td></tr><tr><td>Meshnet IP address</td><td>100.74.82.230</td></tr></tbody></table>

<details>

<summary>Examples of nickname usage</summary>

* Pinging a renamed device called `work-macbook`:

  <div align="left"><figure><img src="/files/FMScxyorVIGQGXxA3oE3" alt="Terminal output showing a successful ping command."><figcaption></figcaption></figure></div>

  &#x20;
* [Connecting over SSH](/how-to/remote-access/access-remote-systems-over-ssh) to a renamed device called `ubuntu-server`:

  <div align="left"><figure><img src="/files/zJsW0Rxm6N6zxqmqchzP" alt="SSH command in terminal."><figcaption></figcaption></figure></div>

  &#x20;
* Accessing a [web server](/how-to/joint-projects/nginx-web-server-access) hosted on a renamed peer device called `raspberry-pi`:

  <div align="left"><figure><picture><source srcset="/files/A3a0e6zi9wIu9uqGRoXb" media="(prefers-color-scheme: dark)"><img src="/files/4ouSi8Fnvd6OjB2rT3c5" alt="Internet browser displaying an nginx web server."></picture><figcaption></figcaption></figure></div>

  &#x20;
* Connecting to a renamed device called `home-pc` using a [remote desktop](/how-to/remote-access/log-in-to-pc-remotely) app:

  <figure><img src="/files/LVIeE9u8hlC9ySM4crmg" alt="&#x22;Remote Desktop Connection&#x22; app window with the device&#x27;s nickname entered in the &#x22;Computer&#x22; field."><figcaption></figcaption></figure>

</details>


# Renaming devices on Windows

Learn how to set custom nicknames for your Meshnet peer devices on Windows.

This page provides instructions for renaming devices in your Meshnet on the Windows app.

## Rename a device

To rename any device in your Meshnet, follow these steps:

1. Open **NordVPN** and go to the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
2. Next to the device you want to rename, click the three-dot menu and select **Rename**.

   <div align="left"><figure><picture><source srcset="/files/nU6IPGDyrXFogVrA1aOx" media="(prefers-color-scheme: dark)"><img src="/files/uL7pYEJAgJHJE6sdCiSW" alt="Selecting the &#x22;Rename&#x22; option from the three-dot menu."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Replace the pre-filled Nord name with the new nickname you want the device to have.
4. Click **Save** to apply the change.

   <div align="left"><figure><picture><source srcset="/files/IynTvYLm0Auhu8LHKsWr" media="(prefers-color-scheme: dark)"><img src="/files/PM8Tsv0QMtc8X90RoSpj" alt="Device renaming dialog with the &#x22;Save&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

The new custom nickname for the device should now be displayed in your Meshnet device list and synced across all your personal devices.

<div align="left"><figure><picture><source srcset="/files/1LkMVUF5rfDWmHkm1UZ3" media="(prefers-color-scheme: dark)"><img src="/files/C1nk0CBZCUujNzn5azaL" alt="Device&#x27;s new name highlighted in the Meshnet device list."></picture><figcaption></figcaption></figure></div>

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

To remove a device's nickname and restore it to the original Nord name, on the device renaming dialog, click the **Reset to Nord name** button, and then select **Save**.
{% endhint %}

## See also

* [Renaming devices on Android](/features/renaming-devices/android)
* [Renaming devices on iPhone/iPad](/features/renaming-devices/ios)
* [Renaming devices on macOS](/features/renaming-devices/macos)
* [Renaming devices on Linux](/features/renaming-devices/linux)


# Renaming devices on Android

Learn how to set custom nicknames for your Meshnet peer devices on Android.

This page provides instructions for renaming devices in your Meshnet on the Android app.

## Rename a device

To rename any device in your Meshnet, follow these steps:

1. Open **NordVPN** and go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
2. Depending on which device's name you want to change, do one of the following:
   * To rename this device, tap the three-dot menu next to your device and select **Rename**.

     <div align="left"><figure><picture><source srcset="/files/qWrxC8sdn81hFZq5h8yK" media="(prefers-color-scheme: dark)"><img src="/files/VUe5lh8pFGaCnXzunvs0" alt="&#x22;Rename&#x22; option highlighted from the three-dot menu next to &#x22;Your device&#x22;." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * To rename a peer device, select **Manage devices**, then, next to the device you want to rename, tap the three-dot menu, and select **Rename**.

     <div align="left"><figure><picture><source srcset="/files/3ENMbG7iN3KJmvqeGjnt" media="(prefers-color-scheme: dark)"><img src="/files/TSikG3DX7dEkKtyO5iIE" alt="&#x22;Rename&#x22; option highlighted from the three-dot menu." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
3. In the **Device name** field, replace the pre-filled Nord name with the new nickname you want the device to have.
4. Tap **Save** to apply the change.

   <div align="left"><figure><picture><source srcset="/files/EPsZgjdkCH1x4UG2VPY3" media="(prefers-color-scheme: dark)"><img src="/files/veJZhYkZypbFKY3B7VQP" alt="&#x22;Save&#x22; button highlighted on the &#x22;Rename device&#x22; sheet." width="375"></picture><figcaption></figcaption></figure></div>

The new custom nickname for the device should now be displayed in your Meshnet device list and synced across all your personal devices.

<div align="left"><figure><picture><source srcset="/files/Bc7JDE34F1F6qiJyAjJ7" media="(prefers-color-scheme: dark)"><img src="/files/h5Ay78Q6n6Sm4WvlzTzL" alt="Updated name of the device highlighted." width="375"></picture><figcaption></figcaption></figure></div>

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

To remove a device's nickname and restore it to the original Nord name, on the **Rename device** bottom sheet, tap the **Reset to Nord name** button, and then select **Save**.
{% endhint %}

## See also

* [Renaming devices on Windows](/features/renaming-devices/windows)
* [Renaming devices on iPhone/iPad](/features/renaming-devices/ios)
* [Renaming devices on macOS](/features/renaming-devices/macos)
* [Renaming devices on Linux](/features/renaming-devices/linux)


# Renaming devices on iPhone/iPad

Learn how to set custom nicknames for your Meshnet peer devices on iOS/iPadOS.

This page provides instructions for renaming devices in your Meshnet on the iOS/iPadOS app.

## Rename a device

To rename any device in your Meshnet, follow these steps:

1. Open **NordVPN**.
2. Go to  **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">.
3. Depending on which device's name you want to change, do one of the following:
   * To rename this device, tap the More ![](/files/CCx8RTTzCv8qYY5qXIQt) menu in the upper-right corner, and select **Rename this device**.

     <div align="left"><figure><picture><source srcset="/files/gq2Z11fWLG9D42UGDctl" media="(prefers-color-scheme: dark)"><img src="/files/dhNHgejmkPjbw5jwhnKm" alt="Arrow pointing to the More menu button and the menu&#x27;s items displayed on the screen." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * To rename a peer device:
     1. Select the **Manage devices** card.
     2. Tap the arrow button next to the device you want to rename.

        <div align="left"><figure><picture><source srcset="/files/zOYvOcqsbuRfRnGY2vf5" media="(prefers-color-scheme: dark)"><img src="/files/ydcyWRPmyNkjITUZ5Aeb" alt="" width="375"></picture><figcaption></figcaption></figure></div>

        &#x20;
     3. Select the arrow next to **Name**.

        <div align="left"><figure><picture><source srcset="/files/o5BTHJZCKn9mklbx2b9Q" media="(prefers-color-scheme: dark)"><img src="/files/nS2vlZzjDbYoTWqBDUPY" alt="Arrow button on the right of the Nord name is highlighted." width="375"></picture><figcaption></figcaption></figure></div>

        &#x20;
4. In the **Name** field, replace the pre-filled Nord name with the new nickname you want the device to have.
5. Tap **Save** to apply the change.

   <div align="left"><figure><picture><source srcset="/files/5iOuDasWDEFKKXvG0jNu" media="(prefers-color-scheme: dark)"><img src="/files/ysd5hn7Zjzowch0HxBNF" alt="&#x22;Save&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

The new custom nickname for the device should now be displayed in your Meshnet device list and synced across all your personal devices.

<div align="left"><figure><picture><source srcset="/files/4n6vpPgigpfWZvGJwAug" media="(prefers-color-scheme: dark)"><img src="/files/rI08Af7VT6BrV5qaySHg" alt="Custom nickname displayed in the Meshnet peer device list." width="375"></picture><figcaption></figcaption></figure></div>

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

To remove a device's nickname and restore it to the original Nord name, on the **Rename device** screen, tap the **Reset to Nord name** button, tap **Reset** to confirm, and then select **Save**.
{% endhint %}

## See also

* [Renaming devices on Windows](/features/renaming-devices/windows)
* [Renaming devices on Android](/features/renaming-devices/android)
* [Renaming devices on macOS](/features/renaming-devices/macos)
* [Renaming devices on Linux](/features/renaming-devices/linux)


# Renaming devices on macOS

Learn how to set custom nicknames for your Meshnet peer devices on macOS.

This page provides instructions for renaming devices in your Meshnet on the macOS app.

## Rename a device

To rename any device in your Meshnet, follow these steps:

1. Open **NordVPN** and go to the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
2. Next to the device you want to rename, click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button and select **Rename**.

   <div align="left"><figure><picture><source srcset="/files/np8EccN0ZV0zsV2i8TwE" media="(prefers-color-scheme: dark)"><img src="/files/st3Tv5ZVDWMfAMFZS4g3" alt="Arrow pointing to the More button and the &#x22;Rename&#x22; option highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the available field, enter the new nickname you want the device to have.
4. Click **Save** to apply the change.

   <div align="left"><figure><picture><source srcset="/files/ubWl1HXEz8yZTOMTCNN1" media="(prefers-color-scheme: dark)"><img src="/files/JQRBM6lFGf3S8gCLFTdi" alt="&#x22;Save&#x22; button highlighted in the device renaming dialog." width="563"></picture><figcaption></figcaption></figure></div>

The new custom nickname for the device should now be displayed in your Meshnet device list and synced across all your personal devices.

<div align="left"><figure><picture><source srcset="/files/sXGu3eXzKdZDmi8ULHxI" media="(prefers-color-scheme: dark)"><img src="/files/ttSr81sVDosmOdP6tbCh" alt="Nickname of the renamed device highlighted in the Meshnet peer device list."></picture><figcaption></figcaption></figure></div>

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

To remove a device's nickname and restore it to the original Nord name, on the device renaming dialog, click the **Reset to Nord name** button, and then select **Save**.
{% endhint %}

## See also

* [Renaming devices on Windows](/features/renaming-devices/windows)
* [Renaming devices on Android](/features/renaming-devices/android)
* [Renaming devices on iPhone/iPad](/features/renaming-devices/ios)
* [Renaming devices on Linux](/features/renaming-devices/linux)


# Renaming devices on Linux

Learn how to set custom nicknames for your Meshnet peer devices on Linux.

This page provides instructions for renaming devices in your Meshnet on the Linux app.

## Rename this device

Take the following steps to assign a custom nickname to this Linux device:

1. Open **Terminal**.
2. Run this command, replacing the `<nickname>` placeholder with the nickname you want your device to have:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet set nickname &#x3C;nickname>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/Ons2PrzuiIZJVE6yCB0i" alt="Terminal window with the command to rename this device to &#x22;linux-pc&#x22;."><figcaption></figcaption></figure></div>

With the change applied, this device's new name will be displayed on all of your personal devices.

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

To reset this device's name to the original Nord name, execute the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet remove nickname
```

{% endcode %}
{% endhint %}

## Rename a peer device

To rename any peer device in your Meshnet, follow these steps:

1. Open **Terminal**.
2. Run the `nordvpn meshnet peer list` command and locate the Nord name of the device that you want to rename.&#x20;

   <div align="left"><figure><img src="/files/hcsVhQS7xK6GPSk68T3w" alt=""><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the following command, where `<device>` is the Nord name or Meshnet IP of the device you want to rename and `<nickname>` is the new name you want to assign to that device.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer nickname set &#x3C;device> &#x3C;nickname>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/0OT7MARzatcxvyfbSvVl" alt="Terminal window with the command to set a nickname."><figcaption></figcaption></figure></div>

After applying the change, the nickname will be displayed as the primary device identifier when running the `nordvpn meshnet peer list` command and will be synced across all your personal devices.

<div align="left"><figure><img src="/files/XU8Z0PQYnCHbywHHJve2" alt="Peer device&#x27;s nickname highlighted in the terminal window." width="563"><figcaption></figcaption></figure></div>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name with a match from online devices.
{% endhint %}

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

To remove a device's nickname and restore it to the original Nord name, run the following command, where `<device>` is the Nord name, nickname, or Meshnet IP address of the device whose name you want to reset:

{% code overflow="wrap" %}

```bash
 nordvpn meshnet peer nickname remove <device>
```

{% endcode %}
{% endhint %}

## See also

* [Renaming devices on Windows](/features/renaming-devices/windows)
* [Renaming devices on Android](/features/renaming-devices/android)
* [Renaming devices on iPhone/iPad](/features/renaming-devices/ios)
* [Renaming devices on macOS](/features/renaming-devices/macos)


# Sharing files in Meshnet

Learn how to send and receive files securely and easily over Meshnet.

Meshnet provides an easy method to share files with your friends or family members. [Meshnet's file sharing](https://nordvpn.com/meshnet/file-sharing/) feature allows you to exchange files of any type and size between linked devices anywhere in the world. In just a few clicks, you can send up to 1,000 files at a time. Just make sure to download files from a trustworthy person — files from unknown individuals may contain malware.

Meshnet protects your file transfers with an encrypted connection to prevent unwanted snooping. In addition, the file sharing feature functions on a peer-to-peer basis, meaning that your file exchanges do not require a centralized server. This ensures the integrity of the sent data, which cannot be viewed by anyone but you and the intended recipients.

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on Windows

Learn how to send and receive files securely and easily over Meshnet on Windows.

This guide provides the information you need to start sharing files over Meshnet on Windows.

## Before you begin

Make sure that the device you want to share files with meets the following criteria:

* The device is connected to your Meshnet.
* The [file sharing permissions](/features/explaining-permissions/file-sharing-permissions) are granted.

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Windows](/getting-started/how-to-start-using-meshnet/using-meshnet-on-windows#add-your-devices-to-meshnet) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows) for details.
  {% endhint %}

## Send files <a href="#sharingfilesovermeshnetonwindows-sendfiles" id="sharingfilesovermeshnetonwindows-sendfiles"></a>

You can initiate a file transfer from the [NordVPN](https://nordvpn.com/download/windows/) app or by using the Windows shortcut menu.

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

You can initiate file transfers even if the desired peer device is offline. The device will receive the transfer notification as soon as it becomes active. If the **Always accept transfers** option is enabled, the transfer starts automatically without needing confirmation.
{% endhint %}

### Method 1: From the File transfers tab

1. Open NordVPN and select the **File transfers**<img src="/files/1LLHW6dfmUhpRtvtlmGP" alt="" data-size="line"> tab.

   <div align="left"><figure><picture><source srcset="/files/nZHZ6RMaBw6EXHGBryOS" media="(prefers-color-scheme: dark)"><img src="/files/7w1w6CSNKL2VQciQLS5H" alt="Arrow pointing to the &#x22;File transfers&#x22; tab on the left sidebar."></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
2. Under the **Start new transfer** tab, locate the peer device to which you want to send files.
3. To transfer individual files:
   1. Click the **Send files** button.

      <div align="left"><figure><picture><source srcset="/files/msJTCbF32Kqufld5f646" media="(prefers-color-scheme: dark)"><img src="/files/CUcMR7XnBLPoLc8OixXu" alt="&#x22;Send files&#x22; button is highlighted next to a personal device."></picture><figcaption></figcaption></figure></div>

      &#x20;
   2. Select the files in the File Explorer dialog, and click **Open**. You can choose a single file or multiple files at once.

      <figure><picture><source srcset="/files/eiQE0nBmBkqBEzKTjGCn" media="(prefers-color-scheme: dark)"><img src="/files/yOp1WCUZxjurtmhSWhS6" alt="Two files selected in the File Explorer window and an arrow pointing to the &#x22;Open&#x22; button."></picture><figcaption></figcaption></figure>

      &#x20;
4. To transfer a folder:&#x20;
   1. Click the **Send folder** button.

      <div align="left"><figure><picture><source srcset="/files/LwVP95TqYWmF6P0oQpDG" media="(prefers-color-scheme: dark)"><img src="/files/7WEYYoSxSdqVGZQBlqbp" alt="&#x22;Send folder&#x22; button highlighted next to a personal device."></picture><figcaption></figcaption></figure></div>

      &#x20;
   2. Select the folder you want to share, and click **OK**.

      <div align="left"><figure><img src="/files/TvKW4F3LZHIXjiCOVhp4" alt="A &#x22;Family photos&#x22; folder is selected and the &#x22;OK&#x22; button is highlighted." width="330"><figcaption></figcaption></figure></div>

If you do not wish to navigate the file explorer, you can drag and drop the desired files directly on the peer device to initiate the transfer.

<figure><picture><source srcset="/files/CPykifW2C34LDMbgOSSq" media="(prefers-color-scheme: dark)"><img src="/files/ajxjNZOHYfDlUHlQZKzz" alt="Dragging and dropping a file on a peer device."></picture><figcaption></figcaption></figure>

The file transfer begins when the recipient accepts your download request on their device. For details, consult the appropriate guides:

* [Receive shared files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows#sharingfilesovermeshnetonwindows-receivesharedfiles)
* [Receive shared files on Android](/features/sharing-files-in-meshnet/sharing-files-android#sharingfilesovermeshnetonandroid-receivesharedfiles)
* [Receive shared files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios#sharingfilesovermeshnetonios-receivesharedfiles)
* [Receive shared files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos#sharingfilesovermeshnetonmacos-receivesharedfiles)
* [Receive shared files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux#sharingfilesovermeshnetonlinux-receivesharedfiles)
* [Receive shared files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv#receive-shared-files)

{% hint style="info" %}
**Note**\
You can only send files to the devices that have the file sharing permission enabled for your device. Otherwise, you’ll find a button labeled **Sending not allowed** in place of the **Send files** button. For more information, see [File sharing permissions](/features/explaining-permissions/file-sharing-permissions).
{% endhint %}

### Method 2: From the Windows context menu <a href="#sharingfilesovermeshnetonwindows-sendfilesusingtheshortcutmenu" id="sharingfilesovermeshnetonwindows-sendfilesusingtheshortcutmenu"></a>

1. On your computer, right-click the file or folder you want to share. You can also right-click a group of files after selecting them together.
2. Point to **Send with NordVPN Meshnet** and select the Meshnet peer device you want to share the files with.&#x20;

   <div align="left"><figure><picture><source srcset="/files/QtkC8aCRibCityyjCcJb" media="(prefers-color-scheme: dark)"><img src="/files/npAJeAMGM2YTHgQCRIeR" alt="Hovering over a peer device from the &#x22;Send with NordVPN Meshnet&#x22; option list."></picture><figcaption></figcaption></figure></div>

{% hint style="success" %}
**Tip**\
If you prefer not to have the **Send with NordVPN Meshnet** option in your context menu, you can easily disable it. To do this, go to NordVPN **Profile** <img src="/files/VwFr3jMbDYBuGg9cEnq4" alt="" data-size="line"> **>** **Settings** <img src="/files/EoIaJFRtksJwBZeHA2WR" alt="" data-size="line"> > **General** and turn off the toggle for **Show the Meshnet file sharing option in the Windows context menu**.
{% endhint %}

## Receive shared files <a href="#sharingfilesovermeshnetonwindows-receivesharedfiles" id="sharingfilesovermeshnetonwindows-receivesharedfiles"></a>

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

Ensure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

To download files shared from another linked device, do the following steps:

1. Have your Meshnet peer send the files. The file transfer request will appear in your NordVPN app and as a Windows notification.
2. For single-file transfers, click **Accept** to save the file to your Downloads folder.

   <div align="left"><figure><picture><source srcset="/files/4ZFTk3kEtKidOnT63P0F" media="(prefers-color-scheme: dark)"><img src="/files/kO9KcLJ7BNFoCbE1beKR" alt="&#x22;Accept&#x22; button in a file transfer notification highlighted." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. If the sharer attempts to send you multiple files, you will be prompted to review the files first. \
   Click **Review** to open the **Review files** dialog.

   <div align="left"><figure><picture><source srcset="/files/8DpwPQ2dVLqjMSBZLQbJ" media="(prefers-color-scheme: dark)"><img src="/files/dCimRFbXMAyYrXgkhlnF" alt="&#x22;Review&#x22; button in a file transfer notification highlighted." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   Alternatively, go to **File transfers**<img src="/files/1LLHW6dfmUhpRtvtlmGP" alt="" data-size="line"> > **All transfers** and click **Review** next to the incoming transfer request.

   <div align="left"><figure><picture><source srcset="/files/ohY1xOq9Bd7sElLA0dOE" media="(prefers-color-scheme: dark)"><img src="/files/TUhaFSts04Qm0YMDv5QN" alt="&#x22;Review&#x22; button highlighted next to a pending incoming transfer."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Review files** dialog, clear the checkboxes to the left of the files that you don’t want to download, if any.
5. Click **Confirm selected**.

   <div align="left"><figure><picture><source srcset="/files/qimlr2h6UAJpWah9l5Jz" media="(prefers-color-scheme: dark)"><img src="/files/Gzw39dg88eGOaSmrTdjW" alt="&#x22;Review files&#x22; dialog with two out of three files selected and the &#x22;Confirm selected&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

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

The first file transfer request notification from a peer device will contain an **Always accept transfers from this device** checkbox. You can select it to accept future transfers from this sender automatically.
{% endhint %}

### Set the download location

By default, Meshnet uses your system's default download directory, typically the Downloads folder, for all file transfers. If you prefer to save files received over Meshnet in a different location, you can manually select the desired folder in the NordVPN app settings.

1. Open **NordVPN** and go to **Profile** <img src="/files/VwFr3jMbDYBuGg9cEnq4" alt="" data-size="line"> **>** **Settings** <img src="/files/EoIaJFRtksJwBZeHA2WR" alt="" data-size="line"> > **General**.
2. Next to **Download location for Meshnet** **transfers** click **Change**.

   <figure><picture><source srcset="/files/ocMYNJfrSmP9U7PQTUl1" media="(prefers-color-scheme: dark)"><img src="/files/7ir0bZcMzbwy9FUIB8Mf" alt="&#x22;Change&#x22; button highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
3. In the folder explorer dialog, select the new download directory and click **OK**.

Upon making the change, all files downloaded over Meshnet will be saved in the selected directory. You can check the path to the new download location in the settings menu.

<figure><picture><source srcset="/files/wKrCRRe8O9iEzbBFdXxa" media="(prefers-color-scheme: dark)"><img src="/files/SY7kdLGKFXKMF8Uhu2qj" alt="Meshnet file transfer location path highlighted."></picture><figcaption></figcaption></figure>

### Locate downloaded files

Once the download is complete, you can find the files shared with you by doing any of the following:

* Clicking **Open file location** in the notification that appears when the file is downloaded.
* Going to **File transfers**<img src="/files/1LLHW6dfmUhpRtvtlmGP" alt="" data-size="line"> > **All transfers** and clicking the folder<img src="/files/4Al25dLWwMR5eDZ5hzsP" alt="" data-size="line"> button to the right of the downloaded file.
* Checking the chosen download folder location.

## Monitor and manage incoming transfers

To monitor and manage Meshnet file transfers, navigate to the **All transfers** tab of the **File transfers** <img src="/files/1LLHW6dfmUhpRtvtlmGP" alt="" data-size="line"> view.

<details>

<summary>Canceling a file transfer</summary>

* To terminate a file transfer currently in queue or in progress, click the Cancel (x) button.

  <div align="left"><figure><picture><source srcset="/files/l9fFXv8ENtPOJS9wY9cl" media="(prefers-color-scheme: dark)"><img src="/files/HmOCqTqYPqh6p5PyowLp" alt="Mouse cursor hovering over the &#x22;Cancel&#x22; button."></picture><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Clearing your transfer history</summary>

* To remove a file transfer from your history, click the bin<img src="/files/5S2RAtrHlyM2qpGkhXbt" alt="" data-size="line"> button.

  <div align="left"><figure><picture><source srcset="/files/yDcr6KP4CiHa5LzmWNG1" media="(prefers-color-scheme: dark)"><img src="/files/5RiUb9MkMfT9xrvoX5MR" alt="The bin button highlighted."></picture><figcaption></figcaption></figure></div>

</details>

## See also <a href="#sharingfilesovermeshnetonwindows-seealso" id="sharingfilesovermeshnetonwindows-seealso"></a>

* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on Android

Learn how to send and receive files securely and easily over Meshnet on Android.

This guide provides the information you need to start sharing files over Meshnet on Android.

## Before you begin

Make sure that the device you want to share files with meets the following criteria:

* The device is connected to your Meshnet.
* The [file sharing permissions](/features/explaining-permissions/file-sharing-permissions) are granted.

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Android](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android).
  {% endhint %}

## Send files <a href="#sharingfilesovermeshnetonandroid-sendfiles" id="sharingfilesovermeshnetonandroid-sendfiles"></a>

You can initiate a file transfer from the [NordVPN](https://nordvpn.com/download/android/) app or using the Android sharing menu.

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

You can initiate file transfers even if the desired peer device is offline. The device will receive the transfer notification as soon as it becomes active. If the **Always accept transfers** option is enabled, the transfer starts automatically without needing confirmation.
{% endhint %}

### Method 1: From the NordVPN app <a href="#sharingfilesovermeshnetonandroid-sendfilesfromthenordvpnapp" id="sharingfilesovermeshnetonandroid-sendfilesfromthenordvpnapp"></a>

1. In your **NordVPN** app, do any of the following:&#x20;
   * Select **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> and tap **Share files**.

     <div align="left"><figure><picture><source srcset="/files/Pox3sR1TJhtVVXG5Dl4A" media="(prefers-color-scheme: dark)"><img src="/files/WQtX8GscxG3bOKWIaiW3" alt="Clicking the &#x27;Share files&#x27; button on the Meshnet menu in the NordVPN app." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Select **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">, tap **View file transfers**, and select the plus (+) button in the lower-right corner.

     <div align="left"><figure><picture><source srcset="/files/WC2fuY5SjcJCWT8I3EJO" media="(prefers-color-scheme: dark)"><img src="/files/oVxU2Z7JBJ9NnLAVQWON" alt="Rectangular plus (+) button highlighted on the File transfers view." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
2. In the file manager, select the file or the group of files you want to share and confirm your choice.&#x20;

   <div align="left"><figure><picture><source srcset="/files/2ooN2OhYre2FWOAYbgwo" media="(prefers-color-scheme: dark)"><img src="/files/whYZFGIyHRlk1ZfUtFJF" alt="Five files selected in the file manager to be included in the Meshnet file transfer." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select the Meshnet device you want to share the files with. You can choose multiple devices if needed.

   <div align="left"><figure><picture><source srcset="/files/YhyzfmH9iqb6fryH0JG4" media="(prefers-color-scheme: dark)"><img src="/files/iHAIkLiUg75KcLsioyZu" alt="File transfer&#x27;s recipient selected." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   When sending multiple files, you can review the files' details before starting the transfer by tapping the paperclip<img src="/files/Kh1U8tn01mxrVKOz0rWn" alt="" data-size="line"> button.

   <div align="left"><figure><picture><source srcset="/files/ZlroPNJA0RUHLvGR8zfL" media="(prefers-color-scheme: dark)"><img src="/files/XpagGHnblWK1KYmEv8HL" alt="Tapping the paperclip button under &#x27;Share files&#x27;." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Tap **Send to 1 device**. (If multiple devices are selected, the button is labeled with the number of selected devices).&#x20;
5. Monitor the transfer's status and process on the **File transfers** screen.

   <div align="left"><figure><picture><source srcset="/files/JTypbRSdGizQiWAi1j1x" media="(prefers-color-scheme: dark)"><img src="/files/46BfQsmhMgWAm8xAzM9k" alt="The &#x27;File transfers&#x27; screen of the NordVPN app showing the pending outgoing transfer." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   You can tap the arrow icon to see individual files included in the transfer and their progress.

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

Meshnet allows you to launch multiple file transfers to various peer devices at the same time.
{% endhint %}

The file transfer begins when the recipient accepts your download request on their device. For details, consult the appropriate guides:

* [Receive shared files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows#sharingfilesovermeshnetonwindows-receivesharedfiles)
* [Receive shared files on Android](/features/sharing-files-in-meshnet/sharing-files-android#sharingfilesovermeshnetonandroid-receivesharedfiles)
* [Receive shared files on iOS](/features/sharing-files-in-meshnet/sharing-files-ios#sharingfilesovermeshnetonios-receivesharedfiles)
* [Receive shared files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos#sharingfilesovermeshnetonmacos-receivesharedfiles)
* [Receive shared files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux#sharingfilesovermeshnetonlinux-receivesharedfiles)
* [Receive shared files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv#receive-shared-files)

### Method 2: Using the Android sharing menu <a href="#sharingfilesovermeshnetonandroid-sendfilesusingtheandroidsharingmenu" id="sharingfilesovermeshnetonandroid-sendfilesusingtheandroidsharingmenu"></a>

1. On your device, select the file or group of files you want to share. This can be a photo, video, document, or any other type of file.
2. Tap your device’s **Share** button.

   <div align="left"><figure><picture><source srcset="/files/ELEGbEJNy0NtsI7lkNCq" media="(prefers-color-scheme: dark)"><img src="/files/2xkkbmZnI14Hgrs2Sgj0" alt="Share button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Do either of the following:
   * Select **NordVPN** from the list of apps, and then select the Meshnet device you want to share the file with.
   * Select the device from the list of available Meshnet devices that have been most recently used.<br>

     <div align="left"><figure><picture><source srcset="/files/iXN0KrNsfyf71q5cyUs0" media="(prefers-color-scheme: dark)"><img src="/files/7C3Cqkh8kqmRbs43Klt5" alt="Meshnet peers highlighted in the Android sharing menu." width="375"></picture><figcaption></figcaption></figure></div>

## Receive shared files <a href="#sharingfilesovermeshnetonandroid-receivesharedfiles" id="sharingfilesovermeshnetonandroid-receivesharedfiles"></a>

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

Make sure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

When a Meshnet peer sends files to your device, the transfer request is prompted in the NordVPN app and as a system notification, if NordVPN notifications are allowed.

### Method 1: From the NordVPN app

1. Open **NordVPN**.
2. Preview the contents of the transfer.
   * A single file transfer request displays the file type and its name.

     <div align="left"><figure><picture><source srcset="/files/wdno8s8TGGxvq71m9gCu" media="(prefers-color-scheme: dark)"><img src="/files/JZQmQXmcT7BSm5q4nvAE" alt="Name of the file highlighted in the in-app transfer request notification." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * For transfers containing multiple files, tap the paperclip<img src="/files/Kh1U8tn01mxrVKOz0rWn" alt="" data-size="line"> button to view the list of included files. You can opt to download all files included in the transfer or select specific ones for download.&#x20;

     <div align="left"><figure><picture><source srcset="/files/UtkbT08hsQuXU3Q5Zs3i" media="(prefers-color-scheme: dark)"><img src="/files/8b4T7v4BveCYMhkpX9tX" alt="Content of the transfer highlighted in the in-app transfer request notification." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
3. Tap **Accept** to save the file to your device’s storage. If prompted, allow NordVPN to access photos, media, and files on your device.

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

You can also see all available transfer requests by navigating to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **View file transfers**.
{% endhint %}

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

File transfer requests in the NordVPN app contain an **Always accept transfers from this device** checkbox. You can select it to accept future transfers from this sender automatically.
{% endhint %}

### Method 2: From the notification tray

You must have NordVPN notifications enabled in your device's system settings to receive Meshnet file transfer notifications.

1. Locate the file transfer request notification in your device's notification tray.

   <div align="left"><figure><picture><source srcset="/files/TXAr1NKrGhpipXGQYQwW" media="(prefers-color-scheme: dark)"><img src="/files/hYJ7HOPsjGWranjIdYnP" alt="Collapsed system notification about a received transfer request." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Expand the notification to preview the contents of the transfer.
   * A notification for a single file transfer will display the file's name and size.

     <div align="left"><figure><picture><source srcset="/files/BHLSex3SZJYgUS7WhCZ9" media="(prefers-color-scheme: dark)"><img src="/files/mQK9meSq22SMNhImYmES" alt="Expanded system notification about a single-file transfer request." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * A notification for a transfer containing multiple files will show the number of files in the transfer.

     <div align="left"><figure><picture><source srcset="/files/YIlzlrvkXjNVJ6EeLEea" media="(prefers-color-scheme: dark)"><img src="/files/l6fUEciJS2fSLoSFb4Wl" alt="Expanded system notification about a multiple-file transfer request." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
3. Download the shared files. If prompted, allow NordVPN to access photos, media, and files on your device.
   * For a single file transfer, tap **Accept** to save the file to your device’s storage.
   * For a transfer with several files, tap **Review**, choose the files you want to download, and tap **Accept selected**.

### Locate downloaded files

Transferred files are automatically placed in the system's default download directory with no option to manually change the destination. To locate the files you downloaded, do any of the following:

* Navigate to your device’s downloads folder using a file manager.
* In the NordVPN app, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **View file transfers**. Tap the three-dot menu next to the transfer and select **Open file location**.

  <div align="left"><figure><picture><source srcset="/files/26yP09RklGHIVL9A3Z26" media="(prefers-color-scheme: dark)"><img src="/files/yNOHitys6HOFKoXQkeb5" alt="&#x22;Open file location&#x22; option from the three-dot menu highlighted." width="375"></picture><figcaption></figcaption></figure></div>

## Monitor and manage transfers <a href="#monitor-and-manage-transfers" id="monitor-and-manage-transfers"></a>

To monitor and handle all Meshnet transfers, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">, and under **Share files**, tap **View file transfers**.

<details>

<summary>Manage all pending transfers</summary>

You can accept all pending transfers or decline them by choosing the respective options in the three-dot menu in the upper-right corner of the **File transfers** screen.

<picture><source srcset="/files/9SPVDzPIB2lgfxBRqZNc" media="(prefers-color-scheme: dark)"><img src="/files/xpJRka4emoJRWLMBpkZa" alt="Screenshot of the File Transfers screen. The three-dot menu is expanded, revealing two options: &#x22;Accept all pending transfers&#x22; and &#x22;Decline all pending transfers.&#x22;"></picture>

</details>

<details>

<summary>Cancel transfers</summary>

* To cancel a specific file transfer that is active or queued, tap the Cancel (x) button next to the transfer and select **Cancel transfer** to confirm.

  <div align="left"><figure><picture><source srcset="/files/AK9tjkX0grUeTCfL0arw" media="(prefers-color-scheme: dark)"><img src="/files/ZzyRDt3ht2ucc7K0k6Ho" alt="Cancel button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

  &#x20;
* To cancel all active or queued transfers, tap the three-dot menu in the upper-right corner, select **Cancel all downloads** or **Cancel all sent transfers**, and tap **Cancel all** to confirm.

  <div align="left"><figure><picture><source srcset="/files/qF0urxUNzuYKm5QIsVC4" media="(prefers-color-scheme: dark)"><img src="/files/8ni5tkwzMQIARWUhyyOL" alt="&#x22;Cancel all downloads&#x22; and &#x22;Cancel all sent transfers&#x22; options of the three-dot menu highlighted." width="375"></picture><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Clear your transfer history</summary>

* To remove a completed file transfer from your history,  tap the three-dot menu next to the transfer, and select **Remove from history**.

  <div align="left"><figure><picture><source srcset="/files/tzgYqlWFzOfvXj8ja5PG" media="(prefers-color-scheme: dark)"><img src="/files/3twtFYGU0uA72Z2lej6v" alt="&#x22;Remove from history&#x22; option from the three-dot menu highlighted." width="375"></picture><figcaption></figcaption></figure></div>

  &#x20;
* To remove all completed file transfers, tap the three-dot menu in the upper-right corner and select **Clear transfer history**.<br>

  <div align="left"><figure><picture><source srcset="/files/c7OtGQLeCYFKZdtCEWzR" media="(prefers-color-scheme: dark)"><img src="/files/YdMpT4AQNKsic7zatYXU" alt="&#x22;Clear transfer history&#x22; option from the three-dot menu highlighted." width="375"></picture><figcaption></figcaption></figure></div>

</details>

## See also <a href="#sharingfilesovermeshnetonandroid-seealso" id="sharingfilesovermeshnetonandroid-seealso"></a>

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on iOS](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on iPhone/iPad

Learn how to send and receive files securely and easily over Meshnet on iOS.

This guide provides the information you need to start sharing files over Meshnet using an iPhone or an iPad.

## Before you begin

Make sure that the device you want to share files with meets the following criteria:

* The device is connected to your Meshnet.
* The [file sharing permissions](/features/explaining-permissions/file-sharing-permissions) are granted.

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on iPhone/iPad](/getting-started/how-to-start-using-meshnet/using-meshnet-on-ios#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios).
  {% endhint %}

## Send files <a href="#sharingfilesovermeshnetonios-sendfiles" id="sharingfilesovermeshnetonios-sendfiles"></a>

You can initiate a file transfer from the [NordVPN for iOS](https://nordvpn.com/download/ios/) app or via the native iOS/iPadOS sharing menu.

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

You can initiate file transfers even if the desired peer device is offline. The device will receive the transfer notification as soon as it becomes active. If the **Always accept transfers** option is enabled, the transfer starts automatically without needing confirmation.
{% endhint %}

### Method 1: From the NordVPN app <a href="#sharingfilesovermeshnetonios-sendfilesfromthenordvpnapp" id="sharingfilesovermeshnetonios-sendfilesfromthenordvpnapp"></a>

1. In your **NordVPN** app, select **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Share files**.

   <div align="left"><figure><picture><source srcset="/files/KG6etUR4skxY9siV9SQ8" media="(prefers-color-scheme: dark)"><img src="/files/YWcNWqEi7uvRQfWVlFlx" alt="&#x22;Share files&#x22; card highlighted in the Meshnet tab." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Select **Photos** to open your photo library or **Files** to open the file manager.

   <div align="left"><figure><picture><source srcset="/files/o7dlzFkmSdpuTw1dSDbm" media="(prefers-color-scheme: dark)"><img src="/files/LwF7CIHuStMGPHQg1p7p" alt="Showing the menu containing the Photos and the Files options." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. If prompted, allow NordVPN to access your files.
4. Select the files you want to send and tap **Open** or **Add**.

   <div align="left"><figure><picture><source srcset="/files/dI5Zm4rv2oLB3fN9kxNe" media="(prefers-color-scheme: dark)"><img src="/files/L8E7aCNivNQ3jLf5OutN" alt="Selecting files for the transfer in the Files app." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Select the Meshnet devices you want to share the files with.
6. Tap **Send to 1 device**. (If multiple devices are selected, the button is labeled with the number of selected devices).

   <div align="left"><figure><picture><source srcset="/files/z1Wl8lRybw9cFIEqf0bG" media="(prefers-color-scheme: dark)"><img src="/files/VaC7Miwi3ZeipAO26Zth" alt="Tapping &#x27;Send to 2 devices&#x27; in the Share files card." width="375"></picture><figcaption></figcaption></figure></div>

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

You can only send files to the devices that have the file sharing permission enabled for your device. For more information, see [File sharing permissions](/features/explaining-permissions/file-sharing-permissions).
{% endhint %}

The file transfer begins when the recipient accepts your download request on their device.&#x20;

<div align="left"><figure><picture><source srcset="/files/DmitvhvqaLmemX2reSwP" media="(prefers-color-scheme: dark)"><img src="/files/YRk1Fjep0TdFZrNdBrkv" alt="The waiting status of the initiated file transfer is displayed." width="375"></picture><figcaption></figcaption></figure></div>

For details, consult the appropriate guides:

* [Receive shared files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows#sharingfilesovermeshnetonwindows-receivesharedfiles)
* [Receive shared files on Android](/features/sharing-files-in-meshnet/sharing-files-android#sharingfilesovermeshnetonandroid-receivesharedfiles)
* [Receive shared files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios#sharingfilesovermeshnetonios-receivesharedfiles)
* [Receive shared files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos#sharingfilesovermeshnetonmacos-receivesharedfiles)
* [Receive shared files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux#sharingfilesovermeshnetonlinux-receivesharedfiles)
* [Receive shared files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv#receive-shared-files)

### Method 2: Using the iOS sharing menu <a href="#sharingfilesovermeshnetonios-sendfilesusingtheiossharingmenu" id="sharingfilesovermeshnetonios-sendfilesusingtheiossharingmenu"></a>

1. Open the app where the files are located, such as **Files** or **Photos**.

   <div align="left"><figure><picture><source srcset="/files/zDsBKLDJEa3Ae8bkYB6b" media="(prefers-color-scheme: dark)"><img src="/files/TLf3UMSx8eSI54ewXUHz" alt="Typing Files in the serch bar with the Files app displayed among the search results " width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Touch and hold the file you want to send, and then tap **Share**<img src="/files/6fzAdzwTxK8vewBgy7lF" alt="" data-size="line">.

   <div align="left"><figure><picture><source srcset="/files/phssrM0jvXdT74k8yrTO" media="(prefers-color-scheme: dark)"><img src="/files/HfPruqh8Tw7HpoEec7Y3" alt="The Share option is highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;

   If you want to transfer multiple files at once:

   * In **Photos**, tap **Select**, choose the files you want to send, and then tap **Share** <img src="/files/fk75nTyddvBAbWb24nHh" alt="" data-size="line">.

     <div align="left"><figure><picture><source srcset="/files/lcRNCj6EtEQdQ3oHYkzx" media="(prefers-color-scheme: dark)"><img src="/files/iiT3nsgWwujlb5jeTDY0" alt="Tapping the &#x27;Share&#x27; button after selecting the files for the transfer." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * In **Files**, tap the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button, tap **Select**, and then choose the files you want to send. Tap Share.
3. Select **NordVPN** from the list of apps.

   <div align="left"><figure><picture><source srcset="/files/ThpqN6GEjif7tLN3mUog" media="(prefers-color-scheme: dark)"><img src="/files/k8X0CTKkhhqkRT8233JY" alt="The NordVPN option is highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select the Meshnet devices you want to share the files with.
5. Tap **Send to 1 device**. (If multiple devices are selected, the button is labeled with the number of selected devices).

## Receive shared files <a href="#sharingfilesovermeshnetonios-receivesharedfiles" id="sharingfilesovermeshnetonios-receivesharedfiles"></a>

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

Make sure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

To receive files shared from your Meshnet peer’s device, complete the following steps:

1. Have your sharer send the file.
2. Open the NordVPN app or tap the file transfer notification in your device's **Notification center** to launch the app.

   <div align="left"><figure><picture><source srcset="/files/Nzo3OnMk0YR2Eo7DDKrJ" media="(prefers-color-scheme: dark)"><img src="/files/NQbZaE3yiGLfKnwvIpK1" alt="" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Tap **Accept** to save the file to your device’s storage.\
   \
   If the transfer includes multiple files, you can tap next to the paperclip icon to view the contents of the transfer.

   <div align="left"><figure><picture><source srcset="/files/PagU2ghpuL1qUotDcL1y" media="(prefers-color-scheme: dark)"><img src="/files/AqCDH2WWCLCHnowXXqvE" alt="" width="345"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. After accepting the file, you'll be prompted to select a destination folder where you want to save the file. Choose the appropriate folder and tap **Open**.​

Keep the NordVPN app open until the download is complete.

<div align="left"><figure><picture><source srcset="/files/CoCk3dH4dDceXr4XiZTH" media="(prefers-color-scheme: dark)"><img src="/files/92yc55pvaj8iDykl4Jan" alt="The transfer download progress is shown using a percentage and a progress bar." width="375"></picture><figcaption></figcaption></figure></div>

## See also <a href="#sharingfilesovermeshnetonios-seealso" id="sharingfilesovermeshnetonios-seealso"></a>

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on macOS

Learn how to send and receive files securely and easily over Meshnet on macOS.

This guide provides the information you need to start sharing files over Meshnet on macOS.

## Before you begin

Make sure that the device you want to share files with meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on macOS](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos).
  {% endhint %}

## Send files <a href="#sharingfilesovermeshnetonmacos-sendfiles" id="sharingfilesovermeshnetonmacos-sendfiles"></a>

1. In your [NordVPN](https://nordvpn.com/download/mac/) app, go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> and locate the device you want to share files with.
2. Click the **Send files** button under the desired device, as shown:&#x20;

   <div align="left"><figure><picture><source srcset="/files/W8HBuXa4t6FkG0AcYKzq" media="(prefers-color-scheme: dark)"><img src="/files/a5ampodbSRGQlQG0gElK" alt="The send files button is available under one of the devices and highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the file selection dialog that appears, select the file or group of files you want to share, and click **Open**.

   <div align="left"><figure><picture><source srcset="/files/RQV0JevrUTT8iYcLsQO7" media="(prefers-color-scheme: dark)"><img src="/files/njECbokQyCtc3VO66f8a" alt="Three files selected in the dialog and the &#x22;Open&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

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

You can only send files to the devices that have the file sharing permission enabled for your device. For more information, see [File sharing permissions](/features/explaining-permissions/file-sharing-permissions).
{% endhint %}

The file transfer begins when the recipient accepts your download request on their device. For details, consult the appropriate guides:

* [Receive shared files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows#sharingfilesovermeshnetonwindows-receivesharedfiles)
* [Receive shared files on Android](/features/sharing-files-in-meshnet/sharing-files-android#sharingfilesovermeshnetonandroid-receivesharedfiles)
* [Receive shared files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios#sharingfilesovermeshnetonios-receivesharedfiles)
* [Receive shared files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos#sharingfilesovermeshnetonmacos-receivesharedfiles)
* [Receive shared files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux#sharingfilesovermeshnetonlinux-receivesharedfiles)
* [Receive shared files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv#receive-shared-files)

## Receive shared files <a href="#sharingfilesovermeshnetonmacos-receivesharedfiles" id="sharingfilesovermeshnetonmacos-receivesharedfiles"></a>

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

Make sure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

1. Have your sharer send the files. You will see their request as a file transfer notification in the NordVPN app and the upper-right corner of your Mac's screen.
2. In the file transfer notification you received, click **Review**.

   <div align="left"><figure><picture><source srcset="/files/MFu1Jr0VF6Vc6tvXfvn1" media="(prefers-color-scheme: dark)"><img src="/files/ZulAbU7A1CG9lcjw6YnA" alt="&#x22;Review&#x22; button highlighted in an in-app file transfer notification."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Click **Accept** to begin the download.

   <div align="left"><figure><picture><source srcset="/files/MSAu5LUbuvgzWiMOVwwa" media="(prefers-color-scheme: dark)"><img src="/files/MsVBCsuw3OC5BVgNniMh" alt="&#x22;Accept&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

Once the download is complete, you can find the files shared with you by checking your computer’s default download folder location, which is typically the Downloads folde&#x72;*.*

## Monitoring and managing file transfers <a href="#sharingfilesovermeshnetonmacos-monitoringandmanagingfiletransfers" id="sharingfilesovermeshnetonmacos-monitoringandmanagingfiletransfers"></a>

NordVPN informs you about changes in file transfer status via notifications showing if the transfer was successful or not. You can view these notifications either within the app or in Notification Center on your Mac.

<div align="left"><figure><picture><source srcset="/files/bTqqA30h057OTcFe4HLH" media="(prefers-color-scheme: dark)"><img src="/files/BjmSktZwQ4cHE4lET7Tp" alt="Various file transfer statuses are shown in Mac&#x27;s Notification Center" width="375"></picture><figcaption></figcaption></figure></div>

Additionally, when a device is in the process of transferring files or has a pending file transfer, the icon that appears next to the device name is replaced with a loading spinner:&#x20;

<div align="left"><figure><picture><source srcset="/files/j1ynLXgK4D4rMtAG3tkA" media="(prefers-color-scheme: dark)"><img src="/files/abQvfryjah3EwNEcbLme" alt="Loading spinner icon next to the device that has a file transfer in progress."></picture><figcaption></figcaption></figure></div>

### Canceling file transfers <a href="#sharingfilesovermeshnetonmacos-cancelingfiletransfers" id="sharingfilesovermeshnetonmacos-cancelingfiletransfers"></a>

You can cancel all active and pending file transfers to or from a Meshnet device.

1. Go to **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> and locate the device whose incoming or outgoing transfers you want to cancel.
2. Click the **More** <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button to the right of the device.
3. Select **Cancel all transfers**.

   <div align="left"><figure><picture><source srcset="/files/QsNXoxvO4H8g23QkbhC4" media="(prefers-color-scheme: dark)"><img src="/files/leGhjurrhpWMs0wlcbJB" alt="The &#x22;Cancel all transfers&#x22; option is selected"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the dialog that appears, click **Cancel all transfers** to confirm.

## See also <a href="#sharingfilesovermeshnetonmacos-seealso" id="sharingfilesovermeshnetonmacos-seealso"></a>

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on Linux

Learn how to send and receive files securely and easily over Meshnet on Linux.

This guide provides the information you need to start sharing files over Meshnet on Linux.

## Before you begin

Make sure that the device you want to share files with meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux).
  {% endhint %}

## Send files <a href="#sharingfilesovermeshnetonlinux-sendfiles" id="sharingfilesovermeshnetonlinux-sendfiles"></a>

You can initiate a file transfer from the [NordVPN](https://nordvpn.com/download/linux/) app by completing these steps:

1. Open **Terminal**.
2. Enter the `nordvpn meshnet peer list` command and copy the Nord name or Meshnet IP address of the device you want to share your files with.

   <div align="left"><figure><img src="/files/hcsVhQS7xK6GPSk68T3w" alt="Nord name of a peer device highlighted in the terminal."><figcaption></figcaption></figure></div>

   &#x20;
3. Type the `nordvpn fileshare send` command, followed by your peer device’s Nord name or Meshnet IP address and the path to the file you want to transfer, as shown:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare send &#x3C;peer> &#x3C;/path/to/your/file>
   </code></pre>

   &#x20;\
   You can use the absolute and the relative [file paths](https://www.redhat.com/sysadmin/linux-path-absolute-relative) for the files you want to send.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/08RfnfHYH9bCEKu5I5Gl" alt="The &#x22;Waiting for the peer to accept your transfer&#x22; message is displayed in the terminal"><figcaption></figcaption></figure></div>

   &#x20;
4. To add additional files to the transfer, append the path of the new file to the already entered command. You can drag files from the file explorer to the terminal to paste their path.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/nYwoOasUX4O43ts0neuA" alt="Two file paths are displayed next to the &#x27;nordvpn fileshare send&#x27; command in the terminal"><figcaption></figcaption></figure></div>

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name with a match from online devices.
{% endhint %}

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

You can only send files to the devices that have the file sharing permission enabled for your device. For more information, see [File sharing permissions](/features/explaining-permissions/file-sharing-permissions).
{% endhint %}

The file transfer begins when the recipient accepts your download request on their device. For details, consult the appropriate guides:

* [Receive shared files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows#sharingfilesovermeshnetonwindows-receivesharedfiles)
* [Receive shared files on Android](/features/sharing-files-in-meshnet/sharing-files-android#sharingfilesovermeshnetonandroid-receivesharedfiles)
* [Receive shared files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios#sharingfilesovermeshnetonios-receivesharedfiles)
* [Receive shared files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos#sharingfilesovermeshnetonmacos-receivesharedfiles)
* [Receive shared files on Linux](#sharingfilesovermeshnetonlinux-receivesharedfiles)
* [Receive shared files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv#receive-shared-files)

### Viewing outgoing transfer history

To display the history of transfers sent from your device, along with their ID, size, status, and other relevant details, use the following command:

{% code overflow="wrap" %}

```bash
nordvpn fileshare list --outgoing
```

{% endcode %}

The transfers in the list are arranged in chronological order, with the oldest transfers appearing first.

## Receive shared files <a href="#sharingfilesovermeshnetonlinux-receivesharedfiles" id="sharingfilesovermeshnetonlinux-receivesharedfiles"></a>

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

Make sure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

You can use the NordVPN notifications or the command line to receive files shared from another linked device.

{% tabs %}
{% tab title="Accepting transfers using notifications" %}

1. Open **Terminal**.
2. Ensure that you have enabled the NordVPN notifications by running this command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn set notify on
   </code></pre>

   &#x20;
3. Have your Meshnet peer send the files.
4. Upon receiving the file transfer notification, select **Accept** within it to start the download of the transferred files.

   <div align="left"><figure><picture><source srcset="/files/CfTcgoBYrSQ0XNeyAapb" media="(prefers-color-scheme: dark)"><img src="/files/F4cdnHmbWcBeMYn2fag2" alt="Clicking &#x27;Accept&#x27; in the NordVPN incoming file transfer notification."></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Accepting transfers using the command line" %}

1. Have your Meshnet peer send the files.
2. Open **Terminal**.
3. Enter the `nordvpn fileshare list` command followed by `--incoming` to display incoming requests, as shown:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare list --incoming
   </code></pre>

   &#x20;
4. Copy the ID of the file transfer request you want to accept.

   <div align="left"><figure><img src="/files/CWgRIRfkzgQJIBhNm6cK" alt="Meshnet file transfer ID highlighted in the terminal"><figcaption></figcaption></figure></div>

   &#x20;
5. Type `nordvpn fileshare accept` followed by the file transfer ID from the previous step, as shown:​

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare accept &#x3C;id>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/85pk7sH1HcFE4j1WRN7s" alt="CLI showing the &#x22;nordvpn fileshare accept&#x22; command followed by the file transfer ID"><figcaption></figcaption></figure></div>

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

The ID can be auto-completed. Start typing the initial characters of the ID and press **Tab** for quick suggestions.
{% endhint %}
{% endtab %}
{% endtabs %}

Once a download is complete, if you have NordVPN notifications enabled, you will receive a notification about each individual downloaded file.&#x20;

<div align="left"><figure><picture><source srcset="/files/Cn6piAFD7eV7CNwqnMMa" media="(prefers-color-scheme: dark)"><img src="/files/n5nVXWXcTl9XmkWQy1ql" alt="NordVPN notification informing about a downloaded file."></picture><figcaption></figcaption></figure></div>

You can find the files shared with you by checking the system's **Downloads** folde&#x72;*.*

If you want to download only specific files from the transfer, provide the names of the files you choose to accept.

{% code overflow="wrap" %}

```bash
nordvpn fileshare accept <id> <file1> <file2>...​
```

{% endcode %}

**Example**

<figure><img src="/files/wkMhaQoOWedOzIWZAD27" alt="CLI showing the &#x22;nordvpn fileshare accept <id>&#x22; command with two file names highlighted"><figcaption></figcaption></figure>

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

To display the list of files in a particular transfer directory, enter the `nordvpn fileshare list` command followed by the transfer ID:

{% code overflow="wrap" %}

```bash
nordvpn fileshare list <id>
```

{% endcode %}
{% endhint %}

### **Accepting transfers automatically**

You can enable automatic transfer acceptance from a specific peer. To do this, run the following command, replacing `<device>` with the peer’s Nord name or Meshnet IP:

```bash
nordvpn meshnet peer auto-accept enable <device>
```

To learn more, see the [Changing permissions](/features/explaining-permissions/file-sharing-permissions#linux) section of the "File sharing permissions" page.

### Setting the download location&#x20;

By default, the downloaded files are saved in the `$HOME/Downloads`directory. However, if you want to specify a different location on your system, use the `--path` command option followed by the desired location and the transfer ID:

{% code overflow="wrap" %}

```bash
nordvpn fileshare accept --path </path/to/directory> <id>
```

{% endcode %}

## Run a transfer process in the background

If you want to run a transfer process in the background, use the `--background` option.

* When sending a file transfer, enter:

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare send --background &#x3C;peer> &#x3C;/path/to/your/file>
  </code></pre>

  &#x20;\
  **Example**

  <div align="left"><figure><img src="/files/GQgd1qkq4x5NHa1RXMf1" alt="Terminal showing the &#x27;nordvpn fileshare send --background&#x27; command."><figcaption></figcaption></figure></div>

  &#x20;
* When accepting a file transfer, type:&#x20;

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare accept --background &#x3C;id>
  </code></pre>

## Manage transfers

<details>

<summary>Canceling file transfers</summary>

If you need to cancel a transfer while it is still in progress, there are two ways to do it:

* Use the **Ctrl** + **C** keyboard shortcut to terminate a file transfer when it's running in the foreground and you are using the same terminal session.
* Use the `cancel` command to stop transfers that are being performed in the background. This command allows you to cancel the whole transfer or a specific file within the transfer.
  * To cancel a file transfer, enter the following command, replacing `<id>` with the ID of the transfer you want to cancel.

    <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare cancel &#x3C;id>
    </code></pre>

    &#x20;\
    **Example**

    <div align="left"><figure><img src="/files/JrQUGrVKbcjlEkpnV0xa" alt="A message confirming the successful cancellation of a file transfer"><figcaption></figcaption></figure></div>

    &#x20;
  * To cancel a specific file in a transfer, provide the file's name following the transfer ID, as shown:

    <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare cancel &#x3C;id> &#x3C;file>
    </code></pre>

</details>

<details>

<summary>Clearing your transfer history</summary>

You can remove entries from your file sharing history by using the `clear` command.

* &#x20;To completely remove all of your transfer history, run the following command:

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare clear all
  </code></pre>

  &#x20;
* To clear transfer records older than a specific date, use the command below with the selected time interval in [SystemD time span syntax](https://www.freedesktop.org/software/systemd/man/latest/systemd.time.html):

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare clear &#x3C;time_interval>
  </code></pre>

  &#x20;\
  **Example**\
  This command will remove history entries that are older than one day and 12 hours.

  <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn fileshare clear 1d 12h
  </code></pre>

</details>

## &#x20;Display a help message <a href="#sharingfilesovermeshnetonlinux-seealso" id="sharingfilesovermeshnetonlinux-seealso"></a>

You can access command information using the `--help` option. For example, to view helpful information about the `fileshare` command, type:

{% code overflow="wrap" %}

```bash
nordvpn fileshare --help
```

{% endcode %}

## See also <a href="#sharingfilesovermeshnetonlinux-seealso" id="sharingfilesovermeshnetonlinux-seealso"></a>

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Android TV](/features/sharing-files-in-meshnet/sharing-files-androidtv)


# Sharing files on Android TV

Learn how to receive files securely and easily over Meshnet on Android TV.

This guide provides the information you need to start sharing files over Meshnet on Android TV.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that the device you want to exchange files with meets the following criteria:

* The device is connected to your Meshnet.
* The [file sharing permissions](/features/explaining-permissions/file-sharing-permissions) are granted.

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Android TV](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android-tv) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv).
  {% endhint %}

## Receive shared files <a href="#receive-shared-files" id="receive-shared-files"></a>

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

The file sharing feature on Android TV supports receiving files only, and not sending them.

Make sure that Meshnet is enabled on your device to receive the file transfer request from the sender.
{% endhint %}

To receive files shared from your Meshnet peer’s device, do the following steps:

1. Have your sharer send the files.
2. On your Android TV, open **NordVPN**.
3. Navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **File transfers**.
4. Choose the incoming file transfer you want to download.

   <figure><img src="/files/vvJ6unX5xyGt57SovGVv" alt="Received transfer request selected."><figcaption></figcaption></figure>

   &#x20;
5. For single-file transfers, select **Accept** to save the files to your device’s storage.

   <div align="left"><figure><img src="/files/wivCIhtMVwa1UTG2PsdX" alt="&#x22;Accept&#x22; button selected." width="375"><figcaption></figcaption></figure></div>

   &#x20;\
   For multi-file transfers, you may want to check the transfer's contents by selecting **Review** and then download by choosing **Accept all**.

   <div align="left"><figure><img src="/files/ZsqqIQNmw5FkqWW7YbEp" alt="&#x22;Accept all&#x22; button selected on the transfer review screen." width="375"><figcaption></figcaption></figure></div>

   &#x20;\
   If prompted, grant NordVPN permission to save files on your device.

   <div align="left"><figure><img src="/files/tKEyjlPe4KlYZLl69MMN" alt="&#x27;Allow&#x27; option highlighted in the OS file access permission prompt."><figcaption></figcaption></figure></div>

### Locate downloaded files

Transferred files are automatically placed in the system's default download directory with no option to change the destination manually. To locate the files you downloaded, do any of the following:

* Navigate to your device’s default download location using a file manager.
* In the NordVPN app, go to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **File share**, choose the transfer, and select **Open file location**.

  <div align="left"><figure><img src="/files/JjRo7pjEwZA7SgmOFCD0" alt="&#x22;Open file location&#x22; button selected." width="375"><figcaption></figcaption></figure></div>

## Monitor and manage transfers <a href="#monitor-and-manage-transfers" id="monitor-and-manage-transfers"></a>

To monitor and handle all Meshnet file transfers, navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **File share** in the NordVPN app. Under this section, you can view completed, pending, and ongoing transfers as well as the progress of active file exchanges.

<details>

<summary>Cancel incoming transfers</summary>

To cancel a file download that is active or pending:&#x20;

1. Under **File share**, choose the transfer you want to cancel.
2. Select **Cancel transfer**.

   <div align="left"><figure><img src="/files/DxoIDh6KmsFYOlS3zY1R" alt="&#x22;Cancel transfer&#x22; button selected." width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Clear your transfer history</summary>

To remove a completed file transfer from your download history:

1. Under **File share**, choose the transfer you want to delete.
2. Select **Remove from history**.

   <div align="left"><figure><img src="/files/xG0tvVqHgdNiJBdcz7Ln" alt="&#x22;Remove from history&#x22; button selected." width="375"><figcaption></figcaption></figure></div>

</details>

## See also <a href="#see-also" id="see-also"></a>

* [Sharing files on Windows](/features/sharing-files-in-meshnet/sharing-files-windows)
* [Sharing files on Android](/features/sharing-files-in-meshnet/sharing-files-android)
* [Sharing files on iPhone/iPad](/features/sharing-files-in-meshnet/sharing-files-ios)
* [Sharing files on macOS](/features/sharing-files-in-meshnet/sharing-files-macos)
* [Sharing files on Linux](/features/sharing-files-in-meshnet/sharing-files-linux)


# Routing traffic in Meshnet

Learn how to use the traffic routing feature of Meshnet on all compatible operating systems.

## Introduction <a href="#traffic-routing-functionality" id="traffic-routing-functionality"></a>

Meshnet's traffic routing feature allows you to use another device's public IP address for your internet connection, essentially turning that device into a VPN server. With a single click, you can obtain either your home IP address or the IP address associated with your [own VPN server](/how-to/traffic-routing). Additionally, while routing traffic, you can seamlessly connect to a remote [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) and manage other devices as if you were physically present on the same network.

To familiarize yourself with the traffic routing functionality, have a look at this video:

{% embed url="<https://www.youtube.com/watch?v=6bWNgXHafWs>" %}

Alternatively, the written instructions below cover the availability and functionality of the traffic routing feature and detail its usage on available systems.

## How traffic routing works <a href="#traffic-routing-functionality" id="traffic-routing-functionality"></a>

When you choose to route traffic through a Meshnet peer, the selected [*host*](#user-content-fn-1)[^1] device acts as a VPN server. Your device, which acts as the [*client*](#user-content-fn-2)[^2], is assigned the public IP address of the host and connects to the internet using it instead of your standard IP address. This functionality allows you to protect your connection and obtain a known, specific IP address.

<figure><img src="/files/uVR7MwXLgjuuAa0iDc1M" alt="Diagram showing a mobile phone routing traffic through a home computer."><figcaption><p>Figure 1. Traffic routing flow</p></figcaption></figure>

To visualize this process, consider the following example illustrated in the diagram:

1. A phone (client) has a public IP of `185.61.156.14`.
2. Then, it routes traffic through the home computer (host) with a public IP of `45.92.11.187`.
3. As a result, the phone (client) accesses the internet using the same public IP address as the home computer (host), `45.92.11.187`.

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

The traffic routing connection automatically uses the same NordVPN DNS addresses (`103.86.96.100` and `103.86.99.100`) as a standard VPN connection. They are used for efficient query processing and to prevent [DNS leaks](https://nordvpn.com/dns-leak-test/).
{% endhint %}

### Local network access possibilities <a href="#local-network-access" id="local-network-access"></a>

With [local network permissions](/features/explaining-permissions/local-network-permissions) granted, traffic routing allows you to establish connections with other devices within the host's LAN. You can interact with the devices on the remote LAN using their original IP addresses. This networking configuration empowers you to remotely manage a variety of appliances that would otherwise be inaccessible, such as [IP cameras](/how-to/remote-access/access-ip-camera) and [network-attached storage](/how-to/remote-access/access-nas) (NAS).

<figure><img src="/files/9q2f9S4NWcntQpDGbZUp" alt="Diagram illustrating access to local device while routing traffic."><figcaption><p>Figure 2. Routing traffic with the Local network permission enabled</p></figcaption></figure>

Using the model above as an example, while routing traffic from your laptop through the home computer, you can access the local web server using its LAN IP address, as shown:

![Local IP address being entered to the URL bar of an internet browser.](/files/nlicdIEfgKB46rXIxSGt)

## Feature availability and device compatibility <a href="#feature-availability" id="feature-availability"></a>

The traffic routing feature is available on all devices compatible with Meshnet. However, due to technical constraints, only certain devices can serve as hosts.

The table below acts as a reference point to check whether your device can act as a traffic routing host or only as a client.

| Host devices                                                              | Client devices                              |
| ------------------------------------------------------------------------- | ------------------------------------------- |
| Windows                                                                   | Windows                                     |
| macOS ([direct download](https://nordvpn.com/download/mac/) version only) | Android (including ChromeOS)                |
| Linux                                                                     | iOS                                         |
|                                                                           | macOS                                       |
|                                                                           | Linux                                       |
|                                                                           | Android TV (including FireOS and Google TV) |

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

The App Store version of the macOS NordVPN app doesn't provide the required functionality for your device to act as a traffic routing host.
{% endhint %}

## Traffic routing caveats <a href="#traffic-routing-caveats" id="traffic-routing-caveats"></a>

Even though traffic routing opens a multitude of opportunities, it is vital to be aware of the potential situations that could arise while using this feature. When using traffic routing, be cautious that:

* A client device is assigned your [public IP address](https://nordvpn.com/what-is-my-ip/), which potentially could lead to illegal activities being performed under your IP.
* A client device, with the [Local network permissions](https://meshnet.nordvpn.com/features/explaining-permissions/local-network-permissions) enabled, could access other devices on your LAN and make unauthorized changes.
* A host device could monitor your network activity, such as [DNS queries](https://nordvpn.com/cybersecurity/glossary/dns-query/).

## See also

* For guidance on using traffic routing across different platforms, refer to these articles:
  * [Using traffic routing on Windows](/features/routing-traffic-in-meshnet/traffic-routing-windows)
  * [Using traffic routing on Android](/features/routing-traffic-in-meshnet/traffic-routing-android)
  * [Using traffic routing on iPhone/iPad](/features/routing-traffic-in-meshnet/traffic-routing-ios)
  * [Using traffic routing on macOS](/features/routing-traffic-in-meshnet/traffic-routing-macos)
  * [Using traffic routing on Linux](/features/routing-traffic-in-meshnet/traffic-routing-linux)
  * [Using traffic routing on Android TV](/features/routing-traffic-in-meshnet/traffic-routing-androidtv)
* For information on setting up a personal VPN server using traffic routing, explore our how-to guides in the [Own VPN server setup](/how-to/traffic-routing) section.

[^1]: Host devices are devices that can act as a VPN server and allow you to route traffic through them.

[^2]: Client devices are devices that can use the traffic routing feature to route their connection through a host device.


# Routing traffic from Windows

Learn how to handle Meshnet's traffic routing feature on Windows.

## Before you begin

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Windows](/getting-started/how-to-start-using-meshnet/using-meshnet-on-windows#add-your-devices-to-meshnet) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Windows](/features/linking-devices-in-meshnet/adding-meshnet-devices-on-windows).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic.1" id="start-routing-traffic.1"></a>

To start a traffic routing connection on Windows, follow these steps:

1. Open **NordVPN**.
2. Do one of the following:
   1. At the top of the screen, click **Search all locations**.
   2. Under the map, click **All locations >**.

      <figure><picture><source srcset="/files/AXUXBzy94RFcVmN61UwB" media="(prefers-color-scheme: dark)"><img src="/files/42Lle1DHkRXDxuegZ9A6" alt="Opening the search view."></picture><figcaption></figcaption></figure>

      &#x20;
3. Select the **Meshnet** tab.
4. Locate the device that you want to route traffic through and click it.

   <div align="left"><figure><picture><source srcset="/files/N0LfndktCJR5Ni1pQ0Cm" media="(prefers-color-scheme: dark)"><img src="/files/SPjUwoQhG4oJxS2jLQVq" alt="Peer device highlighted under the &#x22;Meshnet&#x22; tab."></picture><figcaption></figcaption></figure></div>

Once connected, you will see the host device’s details on the main app screen.

<div align="left"><figure><picture><source srcset="/files/dIOsLnYJU3UxhyMDXdmi" media="(prefers-color-scheme: dark)"><img src="/files/NltyCQIeiBraeeaAZgJt" alt="&#x22;Routing traffic via Meshnet&#x22; status being shown on the Dashboard tab." width="519"></picture><figcaption></figcaption></figure></div>

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

If you see "No permission" under the desired device, ensure that the peer device has granted your device the [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions).
{% endhint %}

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

When routing traffic for the first time, you will receive a prompt detailing the caveats of traffic routing. Read this information and click **Continue** to proceed with the connection.
{% endhint %}

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

You can utilize your preferred DNS addresses for the traffic routing connection by using the app's Custom DNS feature. The DNS servers can be entered in NordVPN **Profile** <img src="/files/VwFr3jMbDYBuGg9cEnq4" alt="" data-size="line"> **>** **Settings** ![](/files/EoIaJFRtksJwBZeHA2WR) > **Connection and security** > **Use custom DNS** dropdown menu.

An example of how to use the custom DNS functionality is available in the [How to set up your network protection with Pi-hole](/how-to/security/pi-hole#with-a-vpn-connection) article.
{% endhint %}

## Stop routing traffic <a href="#stop-routing-traffic" id="stop-routing-traffic"></a>

To terminate the traffic routing connection, use one of the following methods:

1. Click the **Disconnect** button on the main app screen.

   <div align="left"><figure><picture><source srcset="/files/tVUX9nmqA34jnBDBTaFD" media="(prefers-color-scheme: dark)"><img src="/files/J7iweQXwksUvTPhES3nK" alt="&#x22;Disconnect&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Click the host device again in the **Meshnet** tab of search.

   <figure><picture><source srcset="/files/dag3Il9MZT6H6OKowSCT" media="(prefers-color-scheme: dark)"><img src="/files/j9nWPu9f9pbrbqK3orBP" alt="Meshnet peer host device highlighted in the search field."></picture><figcaption></figcaption></figure>

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

Connection pause is not available while routing traffic through a Meshnet peer device.
{% endhint %}


# Routing traffic from Android

Learn how to handle Meshnet's traffic routing feature on Android.

## Before you begin

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Android](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Android](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-android).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic.3" id="start-routing-traffic.3"></a>

To start routing traffic from your Android device, follow these steps:

1. Open **NordVPN.**
2. Do one of the following:
   1. At the top of the screen, tap **Search all locations**.
   2. Under the map, tap **All locations >**.

      <div align="left"><figure><picture><source srcset="/files/bBtftz2M47wrfZ8uhLTo" media="(prefers-color-scheme: dark)"><img src="/files/P1ewXLRxR5p7zTRFIsE0" alt="Letter &#x22;a&#x22; on the &#x22;Search all locations&#x22; text field at the top of the screen and letter &#x22;b&#x22; next to the &#x22;All locations >&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

      &#x20;
3. Select the **Meshnet** tab.
4. If Meshnet is disabled, tap **Turn on Meshnet** to enable the feature.&#x20;
5. Locate the device that you want to route traffic through and tap it.

   <div align="left"><figure><picture><source srcset="/files/pSJUeoKJ0rZXHa54ABQp" media="(prefers-color-scheme: dark)"><img src="/files/IAvuYkgdOJHiG1rkoG1x" alt="Selecting a macOS devices as a traffic routing host." width="375"></picture><figcaption></figcaption></figure></div>

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

If you see "No permission" under the desired device, ensure that the peer device has granted your device the [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions).
{% endhint %}

Upon establishing the connection, you will see the host device’s Nord name on the **Home** page.

<div align="left"><figure><picture><source srcset="/files/l1IndxLAYArJfokBevrv" media="(prefers-color-scheme: dark)"><img src="/files/DVSYrpVz1ImJIS8tDWIj" alt="App main screen showing that a traffic routing connection is active." width="375"></picture><figcaption></figcaption></figure></div>

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

You can use the NordVPN [What is my IP](https://nordvpn.com/what-is-my-ip/) website to confirm that your public IP has changed. The newly assigned IP address should be the same as the traffic routing host device's.
{% endhint %}

## Stop routing traffic <a href="#stop-routing-traffic.3" id="stop-routing-traffic.3"></a>

To stop traffic routing, you can use the following methods:

* Tap the **Disconnect** button on the **Home** page.

  <div align="left"><figure><picture><source srcset="/files/Q5foPXpt5cO5zsETV02D" media="(prefers-color-scheme: dark)"><img src="/files/MbV1TZFXnbqBjHRBm9G5" alt="&#x22;Disconnect&#x22; button from the main app screen highlighted." width="375"></picture><figcaption></figcaption></figure></div>

  &#x20;
* Tap the host device again in the **Meshnet** tab of search.

  <div align="left"><figure><picture><source srcset="/files/ZL8NrtjIyLTcGrinT37i" media="(prefers-color-scheme: dark)"><img src="/files/iYeFKkH4slAqhqJBFZbr" alt="Traffic routing host device highlighted in the &#x22;Devices&#x22; dropdown list." width="375"></picture><figcaption></figcaption></figure></div>

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

Connection pause is currently not available while routing traffic through a Meshnet peer device.
{% endhint %}


# Routing traffic from iPhone/iPad

Learn how to handle Meshnet's traffic routing feature on iOS/iPadOS.

## Before you begin

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on iPhone/iPad](/getting-started/how-to-start-using-meshnet/using-meshnet-on-ios#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on iPhone/iPad](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-ios).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic.3" id="start-routing-traffic.3"></a>

You can use the following two methods to start a traffic routing connection on an iPhone or an iPad.

### Method 1: From the search screen

To initiate a routing connection from the main screen:

1. Open **NordVPN**.
2. Do one of the following:
   1. At the top of the screen tap the **Search all locations** text field.
   2. Under the map, tap **All locations >**.

      <div align="left"><figure><picture><source srcset="/files/tAWz49Di0QPCcZySAz17" media="(prefers-color-scheme: dark)"><img src="/files/weTkRvq7bDXONYGyoOZp" alt="Letter &#x22;a&#x22; on the &#x22;Search all locations&#x22; text field at the top of the screen and letter &#x22;b&#x22; next to the &#x22;All locations >&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

      &#x20;
3. Select the **Meshnet** tab.
4. Find the device that you want to route traffic through and tap it.

   <div align="left"><figure><picture><source srcset="/files/iu9nFgom5c7gr0ahnLGu" media="(prefers-color-scheme: dark)"><img src="/files/tOEp3ALlhdMPSPvCKyCp" alt="Selecting the traffic routing host device." width="375"></picture><figcaption></figcaption></figure></div>

Once connected, you will see the host device’s Nord name on the main application page.

<div align="left"><figure><picture><source srcset="/files/td8zLZwqsanDNu3tpr69" media="(prefers-color-scheme: dark)"><img src="/files/srHnsqv6Q6MoSvZFcpeW" alt="Main application screen showing connection to a Meshnet peer device." width="375"></picture><figcaption></figcaption></figure></div>

### Method 2: From the Meshnet view

To start routing traffic from the Meshnet tab, follow these steps:

1. Open **NordVPN.**&#x20;
2. Select **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> .
3. Tap **Route traffic**.
4. Find the device you want to route traffic through and tap it.

   <div align="left"><figure><picture><source srcset="/files/kS35CHJSOxE4lveuyTTh" media="(prefers-color-scheme: dark)"><img src="/files/3eBTKEZNBMsj269jljwQ" alt="Selecting the traffic routing host device." width="375"></picture><figcaption></figcaption></figure></div>

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

If you do not see the desired device in the list, ensure that the peer device is active and has granted your device the [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions).
{% endhint %}

Upon establishing the connection, the device’s icon will change.

<div align="left"><figure><picture><source srcset="/files/RU91gY7m0cymT2SZ6Rhm" media="(prefers-color-scheme: dark)"><img src="/files/jsHkATz1nkcYWk2vzb4N" alt="Icon, representing an active traffic routing connection, highlighted." width="375"></picture><figcaption></figcaption></figure></div>

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

When routing traffic for the first time, you will receive a prompt detailing the caveats of traffic routing. Read this information and tap **I understand** to proceed with the connection.
{% endhint %}

## Stop routing traffic <a href="#stop-routing-traffic.3" id="stop-routing-traffic.3"></a>

To stop traffic routing, you can use the following methods:

* Tap the **Disconnect** button on the main application page.

  <div align="left"><figure><picture><source srcset="/files/KmsMbVqO1r07J1LD1QxX" media="(prefers-color-scheme: dark)"><img src="/files/Q9CShZXZQV8LcWpdBdzM" alt="&#x22;Disconnect&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

  &#x20;
* Tap the host device in **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Route traffic**.

  <div align="left"><figure><picture><source srcset="/files/nYXOxnEODV9LxIu0G6zs" media="(prefers-color-scheme: dark)"><img src="/files/YeUETaWk001kakWY3e2r" alt="Tapping the traffic routing host device to disconnect from it." width="375"></picture><figcaption></figcaption></figure></div>

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

Connection pause is currently not available while routing traffic through a Meshnet peer device.
{% endhint %}


# Routing traffic from macOS

Learn how to handle Meshnet's traffic routing feature on macOS.

## Before you begin

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on macOS](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on macOS](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-macos).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic.1" id="start-routing-traffic.1"></a>

You can use the following two methods to start a traffic routing connection on macOS.

### Method 1: From the search view

1. Open **NordVPN.**
2. Do one of the following:
   1. At the top of the screen, tap **Search all locations**.
   2. Under the map, tap **All locations >**.

      <figure><picture><source srcset="/files/UyIh5stPRkPNXBvqURsN" media="(prefers-color-scheme: dark)"><img src="/files/eWdOMsuvwDEqU4c3ACmX" alt="Opening the search view on the NordVPN app."></picture><figcaption></figcaption></figure>

      &#x20;
3. Select the **Meshnet** tab.
4. Locate the device that you want to route traffic through and click it.

   <figure><picture><source srcset="/files/MIvs5dlCmAuUX3wqwWmd" media="(prefers-color-scheme: dark)"><img src="/files/k5elooWzPSvBHgJMfRfT" alt="Peer device highlighted under the &#x22;Meshnet&#x22; tab."></picture><figcaption></figcaption></figure>

Once connected, you will see the host device’s Nord name on the main app screen.

<div align="left"><figure><picture><source srcset="/files/b5nsUEyfQYPn1BJZUBf7" media="(prefers-color-scheme: dark)"><img src="/files/eLFNWEfVObaj3sxJdHre" alt="NordVPN app main screen while a traffic routing connection is active." width="563"></picture><figcaption></figcaption></figure></div>

### Method 2: From the Devices in Meshnet tab

To start routing traffic from the **Meshnet** tab, follow these steps:

1. Open **NordVPN**.&#x20;
2. Select the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> tab.
3. Locate the device that you want to route traffic through and click **Route all traffic**.

   <div align="left"><figure><picture><source srcset="/files/drI2dBohRF8F3RiZ0v1Z" media="(prefers-color-scheme: dark)"><img src="/files/L4PkgAvLayf2xvVjCbH0" alt="Clicking the &#x22;Route all traffic&#x22; button next to a peer device."></picture><figcaption></figcaption></figure></div>

Upon connecting, the **Route all traffic** label will change to **Stop routing traffic**.

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

If the **Route all traffic** button is not available, ensure that the peer device is active and has granted your device the [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions).
{% endhint %}

## Stop routing traffic <a href="#stop-routing-traffic.1" id="stop-routing-traffic.1"></a>

To stop traffic routing, you can use any of the following methods:

* Click the **Disconnect** button on the main app screen.

  <div align="left"><figure><picture><source srcset="/files/ZdT45g3ks7vtlyQuJWJn" media="(prefers-color-scheme: dark)"><img src="/files/GbXHemeyc47z8aMybxY5" alt="&#x22;Disconnect&#x22; button highlighted."></picture><figcaption></figcaption></figure></div>

  &#x20;
* Click **Stop routing traffic** under the host device name on the **Devices in Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> menu.

  <div align="left"><figure><picture><source srcset="/files/W6G6oJf6l5KD0gMM7JGo" media="(prefers-color-scheme: dark)"><img src="/files/ghOAu5k1cZfc3ZZoMgCd" alt="&#x22;Stop routing traffic&#x22; highlighted next to a Meshnet peer device."></picture><figcaption></figcaption></figure></div>

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

Connection pause is currently not available while routing traffic through a Meshnet peer device.
{% endhint %}


# Routing traffic from Linux

Learn how to handle Meshnet's traffic routing feature on Linux.

## Before you begin

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.&#x20;
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#add-your-own-devices) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Linux](/features/linking-devices-in-meshnet/adding-external-meshnet-devices-on-linux).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic.2" id="start-routing-traffic.2"></a>

To start routing traffic on Linux, follow these steps:

1. Open **Terminal**.
2. Run the following command to list your Meshnet peer devices:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer list
   </code></pre>

   &#x20;
3. Note the Nord name of the host device you want to route traffic through.

   <div align="left"><figure><img src="/files/hcsVhQS7xK6GPSk68T3w" alt="Nord name of a Meshnet peer device highlighted. "><figcaption></figcaption></figure></div>

   &#x20;
4. Run the following command, replacing `<device>` with the device’s Nord name or Meshnet IP.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nordvpn meshnet peer connect &#x3C;device>
   </code></pre>

   &#x20;

   **Example**

   <div align="left"><figure><img src="/files/SPjeTl3sVLX7coqIYDVo" alt="Terminal output showing successful connection to a Meshnet peer device."><figcaption></figcaption></figure></div>

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

If you get a message that the peer does not allow traffic routing, ensure that the peer device is active and has granted your device the [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions).
{% endhint %}

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

To find your peer's Nord name faster, start typing the name and press **Tab**. The system will auto-complete the name based on matching peers.
{% endhint %}

### Verify the connection status

You can check the connection status by using this command:

{% code overflow="wrap" %}

```bash
nordvpn status
```

{% endcode %}

**Example**

<div align="left"><figure><img src="/files/r0F1IUnkfP2ZpkwRhgXr" alt="Terminal output of the &#x27;nordvpn status&#x27; command indicating an active traffic routing connection."><figcaption></figcaption></figure></div>

## Stop routing traffic <a href="#stop-routing-traffic.2" id="stop-routing-traffic.2"></a>

To stop traffic routing, run one of the following commands in the terminal:

{% code overflow="wrap" %}

```bash
nordvpn disconnect
nordvpn d
```

{% endcode %}


# Routing traffic from Android TV

Learn how to handle Meshnet’s traffic routing feature on Android TV.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To start using traffic routing, make sure that the device you want to route traffic through meets the following criteria:

* The NordVPN app is running, and the Meshnet feature is enabled in the app.
* The device is connected to your Meshnet.
* The **Traffic routing through your device** permission is granted for your client device. To learn more, see [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions).

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

You can add devices to your Meshnet in two ways, depending on device ownership:

* To add your own device, just enable Meshnet on that device. See [Using Meshnet on Android TV](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android-tv) for details.
* To add an external device, send an invitation via the NordVPN app with the owner's email. Ensure the invitation is accepted. See [Adding external Meshnet devices on Android TV](/features/linking-devices-in-meshnet/linking-external-meshnet-devices-on-android-tv).
  {% endhint %}

## Start routing traffic <a href="#start-routing-traffic" id="start-routing-traffic"></a>

To start routing traffic on Android TV, follow these steps:

1. Open **NordVPN**.
2. Navigate to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Traffic routing**.
3. Select the device you want to route traffic through.

   <div align="left"><figure><img src="/files/B9LAzJRN6jg4ut1kEzIA" alt="Peer device selected under the Traffic routing section."><figcaption></figcaption></figure></div>

Upon establishing the connection, a green indicator bubble will appear in the upper-right corner of the host device's icon. Additionally, in the upper-left corner of the screen, you will see a green "Routing traffic via Meshnet" status.

<div align="left"><figure><img src="/files/2uXeH8BUgPZcJqCNPwV6" alt="Traffic routing host device with a green bubble indicator selected in the &#x22;Traffic routing&#x22; section"><figcaption></figcaption></figure></div>

## Stop routing traffic <a href="#stop-routing-traffic" id="stop-routing-traffic"></a>

To stop traffic routing, you can use the following methods:

* On the **Home** <img src="/files/4fujnwn7uaDN2dLvKYtS" alt="" data-size="line"> tab, select the **Disconnect** button.

  <div align="left"><figure><img src="/files/YzYmf77AZCLNvsDxfC8I" alt="Arrow pointing to the &#x22;Disconnect&#x22; button on the Home screen." width="563"><figcaption></figcaption></figure></div>

  &#x20;
* In **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Traffic routing**, select the host device once more.

  <div align="left"><figure><img src="/files/dvAXgEd7LUVOkhBZ2RL6" alt="Traffic routing host device selected." width="375"><figcaption></figcaption></figure></div>


# Gaming

Learn how you can play multiplayer online games over Meshnet.

Online gaming has become increasingly popular in recent years and for good reason. Multiplayer games can transport you to different worlds while allowing you to explore those worlds with friends. This connection between people who share the same interests can be a source of social support and a way to destress from everyday worries.

Using local game servers still remains a widely used method to incorporate multiplayer capabilities in online games. With this approach, you can create your own servers and have more control over the game settings. [Playing multiplayer games over Meshnet ](https://nordvpn.com/gaming/)offers some benefits compared to playing over a traditional local area network (LAN). You can connect with other players even if you're not physically in the same location.

Additionally, [port forwarding](https://nordvpn.com/blog/port-forwarding/) is not needed as Meshnet's architecture allows devices to communicate with each other directly, which contributes to a secure connection.

The following articles provide details on how you can use Meshnet in online gaming:

* [How to make a private Minecraft server with Meshnet](/how-to/gaming/make-private-minecraft-server)
* [How to create a private Stardew Valley server](/how-to/gaming/stardew-valley)
* [How to play Quake 3 Arena via Meshnet](/how-to/gaming/quake3-arena)
* [How to set up a private Team Fortress 2 server with Meshnet](/how-to/gaming/team-fortress2)
* [How to set up a remote game-streaming server for Moonlight](/how-to/gaming/how-to-set-up-a-remote-game-streaming-server-for-moonlight)
* [How to set up a Palworld dedicated server](/how-to/gaming/palworld-dedicated-server)
* [How to play Fallout: New Vegas multiplayer over Meshnet](/how-to/gaming/fallout-multiplayer)
* [How to set up a private Factorio server with Meshnet](/how-to/gaming/factorio-server)


# How to set up a private Minecraft server with Meshnet

Learn how to set up a Minecraft server using Meshnet on Windows, Linux, and macOS, and enjoy a private game with your friends.

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

Minecraft is one of the most popular multiplayer online games. To [enjoy the full gaming experience of Minecraft](https://nordvpn.com/gaming/minecraft/), you can create your own server and invite friends to join your world.

However, running a public Minecraft server may present a security threat to your home network. The risks you might encounter range from DDoS attacks to unfamiliar devices accessing your network.

With [Meshnet](https://nordvpn.com/meshnet/), you can set up your private Minecraft server and connect to it from anywhere in the world safely. Instead of having to open ports and expose your IP address to strangers online, you and your friends can connect your devices to Meshnet, which in essence, acts as a local area network but with an encrypted VPN tunnel. Also, you won't have to pay for third-party hosting with Meshnet.

To start working on your Minecraft server, check out our video:

{% embed url="<https://www.youtube.com/watch?v=hNWHsPDtw6M>" %}

Alternatively, you can follow the detailed written instructions presented in this article.

## Get started: What’s your Minecraft edition? <a href="#get-started-whats-your-minecraft-edition" id="get-started-whats-your-minecraft-edition"></a>

Currently, there are two separate versions of Minecraft: Bedrock Edition and Java Edition. While both editions support online multiplayer mode, they are compatible with different servers. This means that you will use different server software depending on the game edition you are playing.

This guide walks you through the process of creating a Minecraft server with Meshnet for both editions on the following platforms:

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Bedrock Edition</strong></td><td><ul><li>Windows</li><li>Linux</li></ul></td><td><a href="#create-a-minecraft-bedrock-server">#create-a-minecraft-bedrock-server</a></td></tr><tr><td><strong>Java Edition</strong></td><td><ul><li>macOS</li></ul></td><td><a href="#create-a-minecraft-java-server-on-macos">#create-a-minecraft-java-server-on-macos</a></td></tr></tbody></table>

## Create a Minecraft Bedrock server on Windows and Linux <a href="#create-a-minecraft-bedrock-server" id="create-a-minecraft-bedrock-server"></a>

The official Minecraft Bedrock server software supports Windows and Linux.

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

### Before you begin <a href="#prerequisites" id="prerequisites"></a>

Ensure that the machine that will host the server meets these minimum requirements:

* Intel or AMD processor with at least two cores
* 4 GB of RAM or more
* Meshnet is enabled on your server machine. To learn more, see our guide on [Using Meshnet on Windows](/getting-started/how-to-start-using-meshnet/using-meshnet-on-windows).&#x20;

Other players will be able to connect to your Bedrock server if these conditions are met:

* A player's game is Minecraft: Bedrock Edition.
* The game version matches the version of your server.

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

All the client devices you would like to invite to join your server need to be connected to your Meshnet.
{% endhint %}

### Download server software <a href="#step-1-download-server-software" id="step-1-download-server-software"></a>

Go to Minecraft's official website and download [Minecraft Dedicated Server Software for Windows](https://www.minecraft.net/en-us/download/server/bedrock).

### &#x20;Run your Bedrock server

1. Extract the downloaded archive to a convenient location.
2. Open the **bedrock\_server.exe** file.

   <figure><picture><source srcset="/files/B45kcl7l5glYndCepZPW" media="(prefers-color-scheme: dark)"><img src="/files/gs8D7klHDVIcyQHrWuDl" alt="&#x22;bedrock_server&#x22; executable selected in File explorer."></picture><figcaption></figcaption></figure>

   &#x20;
3. If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click the **Allow access** button to allow incoming connections through the firewall.&#x20;

   <div align="left"><figure><img src="/files/daXoxPMvkDlZ1iRRgx6w" alt="Windows Defender firewall message" width="563"><figcaption></figcaption></figure></div>

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

If you want to check your firewall settings for the Bedrock server, click the **Start**<img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> button on the taskbar, type **Allow an app through Windows Firewall**, and find *bedrock\_server.exe* in the list of results.
{% endhint %}

Your Bedrock server should now be up and running.&#x20;

<div align="left"><figure><img src="/files/h2ckMCkgKXN4Hdqywz28" alt="Bedrock Minecraft server started"><figcaption></figcaption></figure></div>

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

If you encounter connection issues, you may need to exempt the Minecraft client from UWP loopback restrictions. To do this, open **Windows PowerShell** or **Command Prompt** as an administrator and enter the following:

{% code overflow="wrap" %}

```bash
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe"
```

{% endcode %}

Alternatively, you can enter the command provided in the *bedrock\_server\_how\_to* file:

{% code overflow="wrap" %}

```bash
CheckNetIsolation LoopbackExempt -a -p=S-1-15-2-1958404141-86561845-1752920682-3514627264-368642714-62675701-733520436
```

{% endcode %}
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

### Before you begin <a href="#prerequisites" id="prerequisites"></a>

Ensure that the machine that will host the server meets these minimum requirements:

* Ubuntu 20.04 or later
* 64-bit Intel or AMD processor with at least two cores
* 4 GB of RAM or more
* Meshnet is enabled on your server machine. To learn more, see our guide on [Using Meshnet on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux).

Other players will be able to connect to your Bedrock server if these conditions are met:

* A player's game is Minecraft: Bedrock Edition.
* The game version matches the version of your server.

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

All the client devices you would like to invite to join your server need to be connected to your Meshnet.
{% endhint %}

### Download server software <a href="#step-1-download-server-software" id="step-1-download-server-software"></a>

1. Open **Terminal**.
2. Navigate to the directory where you want to install your server using the `cd` command followed by the path to your directory.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Desktop
   </code></pre>

   &#x20;
3. Create a new folder for storing your server files using the `mkdir` command and navigate to it using `cd`.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir server &#x26;&#x26; cd server
   </code></pre>

   &#x20;
4. Go to [Minecraft's official website](https://www.minecraft.net/en-us/download/server/bedrock), find the "Minecraft Dedicated Server Software for Ubuntu (Linux)" section, right-click the **Download** button, and copy the link address.
5. In the terminal, enter the `wget` command and paste the copied link to download the server archive.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.21.1.03.zip
   </code></pre>

### Run your Bedrock server <a href="#step-2-run-your-bedrock-server" id="step-2-run-your-bedrock-server"></a>

1. Extract server files from the downloaded archive by entering the `unzip` command, as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">unzip bedrock-server*
   </code></pre>

   \
   If the `unzip` command does not work, you may need to install the unzip package by entering `sudo apt install unzip`.<br>
2. Enter the following to start the server:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./bedrock_server
   </code></pre>

   &#x20;\
   Use this command each time you want to start the server.

Your Bedrock server should now be up and running.

<figure><img src="/files/E7xR45IdvVdIaqtaQCxP" alt="The server is starting in the terminal"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

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

To configure the server to your liking, find the `server.properties` file in the extracted server folder and edit the file with any text editor. The changes will take effect after you restart the server.

To stop the server, you can enter the `stop` command.
{% endhint %}

### Connect to your Bedrock server <a href="#howtomakeaprivateminecraftserverwithmeshnet-step3winstep3-connecttoyourbedrockserver" id="howtomakeaprivateminecraftserverwithmeshnet-step3winstep3-connecttoyourbedrockserver"></a>

1. Make sure that the device on which you play the game has the NordVPN app running and the Meshnet feature is enabled in the app.
2. Open **Minecraft.**
3. Select **Play** and choose the **Servers** tab.
4. Scroll to the bottom of the servers list and select the **Add server** button.<br>

   <div align="left"><figure><img src="/files/1Ju4dK32N8sWPEZRQx3d" alt="" width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. In the **Add external server** dialog, fill in the following details:
   * In the **Server name** field, enter a custom name to identify your server in the client.
   * In the **Server address** field, type in the Meshnet IP address of the server device.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/zYlQ22KXFdRAkQabMSGE" alt="" width="563"><figcaption></figcaption></figure></div>

     &#x20;
6. Click **Save**.

Your server will appear under **Additional servers**. To connect, select it and click **Join server.**

### Invite friends <a href="#howtomakeaprivateminecraftserverwithmeshnet-step4-invitefriends" id="howtomakeaprivateminecraftserverwithmeshnet-step4-invitefriends"></a>

Now that you've created your Minecraft server, you can invite other players to join your game.

1. To connect to your server, your friends need to know the Meshnet IP address of your server machine and have Meshnet enabled on their devices.
2. Once the other players repeat the steps described in the [Connect to your Bedrock server](#howtomakeaprivateminecraftserverwithmeshnet-step3winstep3-connecttoyourbedrockserver) section above, they will gain access to your server.

   <div align="left"><figure><img src="/files/WmSn9y2XLUOBcDxukrAT" alt="The created server visible under Additional servers" width="563"><figcaption></figcaption></figure></div>

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

Minecraft regularly releases Bedrock server software updates. If you get a message stating that your server is outdated, you’ll need to upgrade the server to the latest version. Otherwise, you will not be able to connect to your server.

Because the server files will be replaced after your upgrade is complete, you may wish to have a backup copy of the `server.properties` file if it contains extensive custom changes.
{% endhint %}

## Create a Minecraft Java server on macOS

The official Minecraft Java server software supports various platforms, including macOS, Windows, and Linux. This guide covers setting up a Java server on macOS.

### Before you begin <a href="#howtomakeaprivateminecraftserverwithmeshnet-requirements" id="howtomakeaprivateminecraftserverwithmeshnet-requirements"></a>

Ensure that the machine that will host the server meets these minimum requirements:

* Java 17 or later is installed. On [Oracle's website](https://www.oracle.com/java/technologies/downloads/#jdk19-mac), select **Arm 64 DMG installer** if your Mac is ARM-based or **x64 DMG installer** if your Mac uses an Intel processor.\
  To check if Java is installed on your machine, open the **Terminal** app and type `java -version`.
* 64-bit Intel or Apple silicon processor with at least two cores
* 2 GB of RAM or more
* Meshnet is enabled on your server machine. To learn more, see our guide on [Using Meshnet on macOS](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos).

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

All the client devices you would like to invite to join your server need to be connected to your Meshnet.
{% endhint %}

Other players on your Meshnet will be able to connect to your Java server if these conditions are met:

* A player's game is Minecraft: Java Edition.
* The game version matches the version of your server.

### Download server software

1. Download the `server.jar` file from [Minecraft’s official website](https://www.minecraft.net/en-us/download/server).
2. Create a new folder on your Desktop or in any location you can easily find and name your folder as you wish (for example, *server*). You will use this name to run commands for the server.
3. Move the downloaded JAR file to your new folder. This folder will store your server files.

### Run your Minecraft Java server

1. Open **Terminal**, and type `cd` followed by the path to the folder containing your server JAR file, like this:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd Desktop/server
   </code></pre>

   &#x20;\
   If requested, allow the Terminal app to access the folder.
2. Then type:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">java -jar server.jar
   </code></pre>

   &#x20; \
   Your server will generate several files in the server folder.
3. Navigate to your server folder, open the *eula.txt* file, and change `eula=false` to `eula=true`.

   <div align="left"><figure><picture><source srcset="/files/4ULMhzdTqUklFpHW4A25" media="(prefers-color-scheme: dark)"><img src="/files/bXAaQKC9yvlxCMryBYDp" alt="&#x22;eula=true&#x22; highlighted in a text editor."></picture><figcaption></figcaption></figure></div>

   &#x20;\
   Save the file. This way, you confirm the acceptance of license terms for the Minecraft server software.
4. Now you can run the server. Open **Terminal**, type `java -jar server.jar` again, and press **Return**.

   <div align="left"><figure><img src="/files/gfmkWi5U5ObJCEqNCW8r" alt="Minecraft server GUI showing the server log"><figcaption></figcaption></figure></div>

   &#x20;\
   If you want to start the server without its graphical user interface, add a space and `--nogui` to the command.

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

Use the `java -jar server.jar` command each time you want to start the server.

To stop the server, enter the `stop` command at the Minecraft server command prompt.
{% endhint %}

### Connect to your Minecraft Java server  <a href="#step-3-join-your-bedrock-server" id="step-3-join-your-bedrock-server"></a>

1. Make sure that the device on which you play the game has the NordVPN app running and the Meshnet feature is enabled in the app.&#x20;
2. Open **Minecraft** and click the **Multiplayer** button.
3. In the lower-right corner, select **Add server**.

   <figure><img src="/files/ek2IcMbzoCcrOuBKOMie" alt="&#x22;Add server&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
4. In the **Server name** field, enter a custom name to identify your server in the client.
5. Fill in the **Server address** field:
   * If you're connecting from the same device that is running the server, type in `127.0.0.1`.
   * If you're connecting from another device, enter the Meshnet IP address of the server device.\
     &#x20;\
     **Example**

     <figure><img src="/files/VFEyT3lbiZ200MwTzqbB" alt="&#x22;Server name&#x22; and &#x22;Server address&#x22; fields filled in with the server&#x27;s information."><figcaption></figcaption></figure>

     &#x20;
6. Click **Done**.

The server will now be available under "Play multiplayer". To connect to your Meshnet server, select it and click **Join Server**.

<figure><img src="/files/1wu1Skllq7pCDUvHxGG8" alt="&#x22;Meshnet server&#x22; selected and the &#x22;Join server&#x22; button highlighted."><figcaption></figcaption></figure>

### Invite friends <a href="#step-4-invite-friends" id="step-4-invite-friends"></a>

Now that you’ve created your Minecraft server, you can invite other players to join your game.

1. To connect to your server, your friends need the Meshnet IP address of your server machine and Meshnet enabled on their devices.&#x20;
2. Once other players on your Meshnet repeat the steps described in the [Connect to your Minecraft Java server](#step-3-join-your-bedrock-server) section above, they will gain access to your server.&#x20;


# How to set up a private Stardew Valley server with Meshnet

Learn how to host your Stardew Valley server on desktop devices and play with your friends using Meshnet.

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

[Local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) gaming has decreased in popularity over the years. A primary cause of this decline is the multiplayer dependency on cloud-based servers. This means that connections from all participants go through a dedicated server and only then reach others. However, some games still allow hosting a LAN server, for example, Stardew Valley.

[Stardew Valley](https://www.stardewvalley.net/) is a popular role-playing simulation game. It has an easy-to-use interface enabling you to create your private server with a few clicks. Nevertheless, LAN gaming has a drawback: all participants must be located on the same network. But now, by using [Meshnet](https://nordvpn.com/meshnet/) on your devices, you can create personal virtual LANs. This technology allows your peers from all over the world to join your server.

Watch the video below to see an overview of the setup process.

{% embed url="<https://www.youtube.com/watch?v=3WWktB2Puw4>" %}

Otherwise, follow this step-by-step guide to set up your own Stardew Valley server and invite your friends to play together over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Ensure the following:

* Stardew Valley is installed on your device.
* [Meshnet is enabled](/getting-started/how-to-start-using-meshnet) on your device.
* Your friends are added as [Meshnet peers](/features/linking-devices-in-meshnet).

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

This guide demonstrates the setup process on a desktop platform. However, with the release of Stardew Valley version 1.6, these instructions are now also applicable to mobile platforms. For further details regarding mobile multiplayer, refer to the [Stardew Valley documentation](https://www.stardewvalley.net/mobile-multiplayer-guide/).
{% endhint %}

## Create your Stardew Valley server <a href="#create-your-server" id="create-your-server"></a>

To start your own Stardew Valley Meshnet server, do the following:

1. Open Stardew Valley and click the **Co-op** button in the main menu.
2. Select the **Host** tab and choose **Host new farm**.

   <div align="left"><figure><img src="/files/oeJG9KwLbTjlBuOSoKzl" alt="Host new farm option"><figcaption></figcaption></figure></div>

   &#x20;
3. Customize your farm and character settings and click **OK**.
4. Once you load your new farm, click **Esc**.
5. Head to the **Options** tab, scroll down to the **Multiplayer** section, and ensure that the **Accept IP connections** checkbox is selected.

   <div align="left"><figure><img src="/files/be1ZB0lCOTuP8nezYpBV" alt="&#x22;Accept IP connections&#x22; option highlighted." width="375"><figcaption></figcaption></figure></div>

With all of the steps completed, your server is up and running and ready to be connected with Meshnet.

## Connect to your Stardew Valley server <a href="#connect-to-your-server" id="connect-to-your-server"></a>

To connect to your server, your friends must also have Meshnet enabled on their system. With that done, they can join your server by taking these steps:

1. Copy the server device’s Meshnet IP address from the NordVPN app.
2. Open **Stardew Valley**, select **Co-op**, and click **Join LAN game**.
3. In the **Enter IP** field, paste the server's Meshnet IP address by clicking the button on the right.

   <figure><img src="/files/LrICfvOPfBDrAudzFHnX" alt="Server&#x27;s Meshnet IP address pasted in the provided field."><figcaption></figcaption></figure>

   &#x20;
4. Click **OK**.
5. Select the listed farm, customize your character settings, and click **OK**.

The selected farm will load, and you will be able to enjoy playing on a private Stardew Valley server over a secure Meshnet connection.

<div align="left"><figure><img src="/files/7zGSKHMR1ZaARbjT0UAt" alt="Stardew Valley farm with two players"><figcaption></figcaption></figure></div>


# How to play Quake 3 Arena over Meshnet

Learn how to host a Quake 3 Arena server on Windows and play with your friends via Meshnet.

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

[Quake 3 Arena](https://en.wikipedia.org/wiki/Quake_III_Arena) is a classic first-person shooter game that has been a favorite among gamers for decades. While the game lacks a dedicated single-player storyline, it more than makes up for it with its engaging multiplayer experience.

In Quake 3 Arena, you can enjoy online multiplayer servers or create your own local server with just a few clicks. The server creation menu allows you to customize many aspects of the game, thereby making the game more interesting. However, what is the point of hosting a local server if none of your friends can join it?

By adding Meshnet to the equation, you can create a secure virtual network that connects devices located all over the world. Meshnet allows you to reap most of the benefits of [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) gaming, even when all of the participants are using different networks.

This article will showcase how you can use NordVPN’s Meshnet feature to play Quake 3 Arena on Windows with your friends.

## Start your Quake 3 Arena server <a href="#start-your-quake-3-arena-server" id="start-your-quake-3-arena-server"></a>

To create your personal Quake 3 Arena server:

1. Open **Quake 3 Arena**.
2. Select **Multiplayer** and click **Create**.
3. Choose your preferred map as well as the game mode and click **Next**.
4. Configure the server’s settings to your liking.
5. If you will be playing on the server PC, set the **Dedicated** option to **No**. Otherwise — keep it as **Yes**.

   <figure><img src="/files/WD9uZY988psRNsVVkoKU" alt="Quake 3 Arena server creation screen with the Dedicated option set to &#x27;No&#x27;"><figcaption></figcaption></figure>

   &#x20;
6. Click **Fight**.

Once the server loads, other players can start joining in.

## Invite your friends <a href="#invite-your-friends" id="invite-your-friends"></a>

After loading into the selected map, your friends can join the server to participate in the game. To connect to the server:

1. Copy the Meshnet IP address of the server PC from the NordVPN app.
2. Open **Quake 3 Arena**.
3. Select **Multiplayer** and click **Specify**.
4. Paste the copied Meshet IP to the **Address** field.

   <div align="left"><figure><img src="/files/AHH2wk48EdnpBXa8xz2c" alt="Entering Meshnet IP to the Address field"><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Fight**.

Alternatively, you can open the console by pressing the **\~** (tilde) key on your keyboard and then typing in the following command, replacing `<server>` with the copied Meshnet IP address.

{% code overflow="wrap" %}

```bash
connect <server>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
connect 100.110.208.130
```

{% endcode %}

You will shortly be connected to the server and have the opportunity to enjoy a private LAN game of Quake 3 Arena through Meshnet.

<div align="left"><figure><img src="/files/FYZzLyKteGkX10RCaT35" alt="Two players in a Quake 3 Arena game"><figcaption></figcaption></figure></div>


# How to set up a private Team Fortress 2 server with Meshnet

Discover how to set up your own Team Fortress 2 server using Meshnet on Windows and Linux and enjoy private gaming sessions with your friends.

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

Team Fortress 2 (TF2), an online multiplayer first-person shooter developed by Valve Corporation, remains a favorite among its active and loyal community members even after more than a decade. Creating your own dedicated TF2 server not only provides enhanced stability and control compared to external servers but also enriches your gaming experience with exclusive maps, game modes, and other features. Additionally, a dedicated server is an excellent opportunity to give new life to an old PC.

Nonetheless, managing a public server can lead to potential vulnerabilities in your home network. [Meshnet](https://nordvpn.com/features/meshnet/) offers an effective solution that removes the necessity of opening ports and revealing your IP address. With Meshnet, you can establish a secure virtual network that links devices from around the globe, simulating a [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) connection between remote participants.

This guide will show how to host a private TF2 game from within the game itself as well as how to set up a TF2 dedicated server on Linux and Windows systems, with instructions to connect using Meshnet.

## Launch a private TF2 game without a dedicated server <a href="#launch-a-private-tf2-game-without-a-dedicated-server" id="launch-a-private-tf2-game-without-a-dedicated-server"></a>

If you're looking for a quick and simple way to create a private game without setting up a dedicated server, you can do so directly from the game.

### Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To ensure that your devices can communicate with each other, [enable Meshnet](/getting-started/how-to-start-using-meshnet) on your host machine and any other devices that will connect to your game.

### Configure a private TF2 game session <a href="#configure-a-private-tf2-game-session" id="configure-a-private-tf2-game-session"></a>

1. Launch the TF2 game on your computer.
2. From the main menu, select **Find a game** > **Create server**.
3. Start a server with any map. Once the server loads, open **Console** by pressing the **\~** (tilde) key.
4. Run the following commands, replacing `<meshnet_ip_address>` with your device's Meshnet IP address and `<map_name>` with the name of the map you want to use:\
   &#x20;

   <pre data-overflow="wrap"><code>sv_lan 0
   ip &#x3C;meshnet_ip_address>
   heartbeat
   map &#x3C;map_name>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/IZ5I4I0TbXOcvrdEDRXD" alt="Entering commands in the console."><figcaption></figcaption></figure></div>

After the server reloads with the specified map, other players can connect to your [private game](https://nordvpn.com/gaming/) using your device's Meshnet IP address. For further details, see the [Connect to the TF2 server](#connect-to-the-tf2-server) section below.

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

If you can't access **Console**, make sure it is enabled in the game's settings:

1. In the main menu, click the gear button at the bottom of the screen to open **Options**.
2. Under **Keyboard**, select **Advanced**, and then select **Enable developer console** and click **OK**.
   {% endhint %}

## Create a TF2 dedicated server on Windows and Linux <a href="#create-a-tf2-dedicated-server-on-windows-and-linux" id="create-a-tf2-dedicated-server-on-windows-and-linux"></a>

The TF2 server software is compatible with Windows and Linux, allowing you to create a private server on either system. This article covers the steps for both platforms.

### Before you begin <a href="#before-you-begin.1" id="before-you-begin.1"></a>

Ensure you have the following:

1. A computer with a stable internet connection running Linux or Windows.
2. At least 20GB of free storage space for the game files.
3. A minimum of 8GB of RAM or, preferably, 16GB for optimal performance.
4. Meshnet is enabled on both your server machine and any devices that will be connecting to it.

### Create a basic TF2 dedicated server with SteamCMD <a href="#create-a-basic-tf2-dedicated-server-with-steamcmd" id="create-a-basic-tf2-dedicated-server-with-steamcmd"></a>

The steps below outline how to install and configure the server software, create a configuration file, and launch the server with customized settings.

{% tabs %}
{% tab title="Windows" %}
{% hint style="info" %}
**Note**

This user guide is based on installing the server on Windows 11.
{% endhint %}

#### Download and install SteamCMD <a href="#download-and-install-steamcmd.1" id="download-and-install-steamcmd.1"></a>

To download and install SteamCMD, which is a command-line tool used to manage dedicated server files, follow these steps:

1. Create a new folder on your computer where you want to install SteamCMD.\
   &#x20;\
   `D:\tf2_server`\
   &#x20;
2. Download the SteamCMD for Windows from the [Valve Developer Community website](https://developer.valvesoftware.com/wiki/SteamCMD#Windows). Look for the download link under the “Windows” section.
3. Extract the contents of the downloaded ZIP file to the folder you created.
4. Double-click the **steamcmd.exe** file to launch the application.
5. If the **Windows security alert** box appears, select both the *private* and *public* networks options and then click the **Allow access** button to allow incoming connections through the firewall.

The SteamCMD tool will automatically update and, upon completion, will be ready to accept commands.

<figure><img src="/files/ZotYPa7RLPuV4hKB1VkY" alt="Using the SteamCMD command line tool."><figcaption></figcaption></figure>

#### Download and install the TF2 server <a href="#download-and-install-the-tf2-server.1" id="download-and-install-the-tf2-server.1"></a>

Now that you have SteamCMD installed, it's time to download and install the TF2 server files.

1. You can log in anonymously to SteamCMD to download TF2 dedicated server files by entering the following command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">login anonymous
   </code></pre>

   \
   **Example:**

   <figure><img src="/files/TkfSEXAVEGZRRuiFlixI" alt="Logging in to SteamCMD anonymously."><figcaption></figcaption></figure>

   \
   To log in to SteamCMD with your Steam account, enter the following command and replace `<username>` and `<password>` with your Steam account credentials:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">login &#x3C;username> &#x3C;password>
   </code></pre>

   &#x20;
2. Specify the installation directory for the TF2 server files by entering `force_install_dir` followed by the path to the installation folder of your choice. For example:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">force_install_dir D:\tf2_server\tf2\
   </code></pre>

   &#x20;
3. Download and install the server files by entering this command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">app_update 232250
   </code></pre>

   \
   The download process may take to complete because the dedicated server content is quite large. Once the "Success!" message appears, it means that the server files are fully downloaded and installed.
4. Exit SteamCMD by entering the following command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">quit
   </code></pre>

#### Configure the server <a href="#configure-the-server.1" id="configure-the-server.1"></a>

After installing the server files, the next step is to configure the server settings.

1. Navigate to the `tf\cfg\` directory within the folder where you installed the TF2 server.
2. Create a new text file named `server.cfg` and open it with a text editor, such as Notepad.
3. Add the following lines to the file, replacing the placeholders with your desired settings, where:
   * `<your_server_name>` is your server display name.
   * `<time_in_minutes>` is the maximum time in minutes a map can be played before switching to the next map.\
     &#x20;

     <pre data-overflow="wrap"><code>hostname "&#x3C;your_server_name>"
     mp_timelimit "&#x3C;time_in_minutes>"
     </code></pre>

     &#x20;

     **Example**

     <div align="left"><figure><img src="/files/v4YfB7611poWUCRIurZI" alt="Example server configuration file."><figcaption></figcaption></figure></div>

     &#x20;
4. Save and close the text editor.

The `server.cfg` file allows you to store custom settings for your server. To learn more about additional configuration parameters, visit the TF2 Wiki's [dedicated server configuration page](https://wiki.teamfortress.com/wiki/Dedicated_server_configuration#Example_Server.cfg_for_TF2_dedicated_server).

#### Launch the server <a href="#launch-the-server.1" id="launch-the-server.1"></a>

Now that your server is configured, you can start it by creating a batch file to simplify the process.

1. Create a new text file in the `tf2server` folder in the folder where you installed the server. You can name it `start_tf2.bat` or choose another name for the file.
2. Open the file with a text editor and add the following line:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">srcds.exe -console -game tf +sv_pure 1 +randommap +maxplayers 24
   </code></pre>

   \
   These lines contain key server settings that can be modified according to your preferences:

   * To set a specific map, replace `+randommap` with `+map` followed by the name of your preferred map. For example: `+map ctf_2fort`.
   * To limit the number of players who can connect to the server, adjust the `maxplayers` value.
   * To control custom content from clients, set `sv_pure` to the desired value. `1` restricts most custom content to ensure a consistent gaming experience.
3. Save the file and exit the text editor.
4. To launch the server, double-click the **start\_tf2.bat** file you’ve just created.
5. If the **Windows security alert** box appears, select both the *private* and *public* networks options and then click the **Allow access** button to allow incoming connections through the firewall.<br>

   <figure><img src="/files/N7g08h3dOOoSiFRE6GuV" alt="Activating the TF2 dedicated server."><figcaption></figcaption></figure>

Now, your TF2 server should start with the specified settings.

{% hint style="success" %}
**Tip**\
To stop the server, type `quit` or `exit` in the console window and press **Enter**.
{% endhint %}

To ensure your server runs smoothly, regularly update the server files.
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

Package names and directories may vary slightly depending on the Linux distribution, but the process of setting up and configuring a dedicated server is generally similar.

This user guide is based on installing the server on Ubuntu 22.04.1 LTS.
{% endhint %}

#### Get started with SteamCMD <a href="#get-started-with-steamcmd" id="get-started-with-steamcmd"></a>

SteamCMD is a command-line version of the Steam client. It is used to download and manage the dedicated server files for TF2 and other popular PC games that use Steam for their multiplayer architecture.

If you have a 64-bit machine, you'll need to add support for 32-bit architecture and install specific libraries required by SteamCMD, as follows:

1. Open a terminal window.
2. Enter this command to add 32-bit architecture support:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo dpkg --add-architecture i386
   </code></pre>

   &#x20;
3. Update your system's package information by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update
   </code></pre>

   &#x20;
4. Install the required 32-bit libraries:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386
   </code></pre>

   &#x20;
5. Optionally, create a separate user account, such as `tf2server`, for installing and running game servers.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo adduser tf2server
   </code></pre>

   &#x20;
6. Set a password and provide the required user information when prompted.

#### Download and install SteamCMD <a href="#download-and-install-steamcmd" id="download-and-install-steamcmd"></a>

Now you can proceed with the installation of SteamCMD.

1. Create a new folder to store SteamCMD files. To do this, enter the `mkdir` command and specify the desired folder name. For example:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir steamcmd
   </code></pre>

   &#x20;
2. Change the current directory to this new folder by typing:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd steamcmd
   </code></pre>

   &#x20;
3. Download the SteamCMD archive by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
   </code></pre>

   &#x20;
4. Use the `tar` command to extract the archive:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">tar zxf steamcmd_linux.tar.gz
   </code></pre>

#### Download and install the TF2 server <a href="#download-and-install-the-tf2-server" id="download-and-install-the-tf2-server"></a>

With SteamCMD installed, it's time to download the TF2 server files.

1. Run SteamCMD by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./steamcmd.sh
   </code></pre>

   &#x20;
2. You can log in anonymously to SteamCMD to download TF2 dedicated server files, as follows:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">login anonymous
   </code></pre>

   &#x20;\
   To log in to SteamCMD with your Steam account, enter the following command and replace `<username>` and `<password>` with your Steam account credentials:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">login &#x3C;username> &#x3C;password>
   </code></pre>

   &#x20;&#x20;
3. Specify the installation directory for the TF2 server files by entering `force_install_dir` followed by the path to the installation folder of your choice. For example:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">force_install_dir ./tf2
   </code></pre>

   &#x20;&#x20;
4. Download and install the server files by entering this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">app_update 232250 +quit
   </code></pre>

   &#x20;\
   The download process may take several hours to complete because the dedicated server content is quite large. Once the download is finished, the output should be similar to the following:\
   &#x20;

   <figure><img src="/files/nVa2IGSQ7W2kfx3dxHK1" alt="Terminal output after downloading the server files."><figcaption></figcaption></figure>

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

If you encounter the error message "Error! App '232250' state is 0x202 after update job," it may be due to insufficient disk space available on your computer.
{% endhint %}

#### Configure the server <a href="#configure-the-server" id="configure-the-server"></a>

After installing the server files, the next step is to configure the server settings.

1. Use the command below to change the current working directory to `~/steamcmd/tf2/tf/cfg`.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/steamcmd/tf2/tf/cfg
   </code></pre>

   &#x20;
2. Create a configuration file named `server.cfg`, using a text editor like Nano, as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano server.cfg
   </code></pre>

   &#x20;
3. Add the following lines, replacing the placeholders with your desired settings, where:
   * `<your_server_name>` is your server display name.
   * `<time_in_minutes>` is the maximum time in minutes a map can be played before switching to the next map.\
     &#x20;

     <pre data-overflow="wrap"><code>hostname "&#x3C;your_server_name>"
     mp_timelimit "&#x3C;time_in_minutes>"
     </code></pre>

     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/TAdpYXIQTDWx8r6WIm2P" alt="Example server configuration file."><figcaption></figcaption></figure></div>

     &#x20;
4. Press **Ctrl** + **X**, followed by **Y**, and then press **Enter** to save the changes and exit Nano.

The `server.cfg` file allows you to store custom settings for your server. To learn more about additional configuration parameters, visit the TF2 Wiki's [dedicated server configuration page](https://wiki.teamfortress.com/wiki/Dedicated_server_configuration#Example_Server.cfg_for_TF2_dedicated_server).

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

In the terminal, the tilde symbol (`~`) represents the current user's home directory.
{% endhint %}

#### Launch the server <a href="#launch-the-server" id="launch-the-server"></a>

Your server is now configured and ready to be launched.

For convenience, you can create a shell script to run the server. To do this:

1. Navigate to the `tf2` server directory by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/steamcmd/tf2
   </code></pre>

   &#x20;
2. Create a new shell script file called `tf2.sh`, using a text editor like Nano, as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano tf2.sh
   </code></pre>

   &#x20;
3. In the text editor, add the following lines with the server launch command.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">#!/bin/sh
   ./srcds_run -console -game tf +sv_pure 1 +randommap +maxplayers 24
   </code></pre>

   &#x20;\
   These lines contain key server settings that can be modified according to your preferences:

   * To set a specific map, replace `+randommap` with `+map` followed by the name of your preferred map.
   * To limit the number of players who can connect to the server, adjust the `maxplayers` value.
   * To control custom content from clients, set `sv_pure` to the desired value. `1` restricts most custom content to ensure a consistent gaming experience.
4. Press **Ctrl** + **X**, followed by **Y**, and then press **Enter** to save the changes and exit Nano.
5. Grant the `tf2.sh` file executable permissions by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">chmod u+x tf2.sh
   </code></pre>

   &#x20;
6. Launch the server using the shell script, as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./tf2.sh
   </code></pre>

Now, your TF2 server should start with the specified settings.

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

To stop the server, press **Ctrl** + **C** in the terminal window.
{% endhint %}

To ensure your server runs smoothly, regularly update the server files.
{% endtab %}
{% endtabs %}

## Connect to the TF2 server <a href="#connect-to-the-tf2-server" id="connect-to-the-tf2-server"></a>

To connect to the newly created server, follow these steps:

1. Copy the Meshnet IP address of the server computer from the NordVPN app by clicking it.
2. Launch the TF2 game on your computer.
3. Open **Console** by pressing the **\~** (tilde) key and then typing the following command, replacing `<server_ip>` with the copied Meshnet IP address:\
   &#x20;

   <pre data-overflow="wrap"><code>connect &#x3C;server_ip>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/swE0Zr6f3Dn9pPEjWlmG" alt="Connecting to the TF2 server using Console."><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Submit**.

Once connected to your server, you and your Meshnet peers can enjoy playing Team Fortress 2 together.

<div align="left"><figure><img src="/files/tBy1AokjTGWbAdfJihBs" alt="Playing TF2."><figcaption></figcaption></figure></div>


# How to set up a remote game-streaming server for Moonlight

Discover how to configure a remotely accessible game-streaming server on Windows, macOS, and Linux using Meshnet.

A game-streaming server allows you to start a game instance on a dedicated machine and play it from other client devices. Such configuration can help overcome operating system and hardware limitations and enjoy various games on devices that can’t run them natively.

[Sunshine](https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/overview.html) <img src="/files/hfY0zK1obUypnE0GK87X" alt="" data-size="line"> is an open-source solution that allows you to transform your device into a dedicated game server. It's easy to set up and doesn't require permanent changes to your system. Sunshine is designed to work as a host for the [Moonlight](https://github.com/moonlight-stream/moonlight-docs/wiki) <img src="/files/e0rcYlL1WeABykKQzymq" alt="" data-size="line"> game-streaming client.

While the app combination can be used hassle-free on the [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN), the remote gaming option is available only by configuring [port forwarding](https://nordvpn.com/blog/port-forwarding/) or complicated network setups. By supplementing the game-streaming setup with [Meshnet](https://nordvpn.com/meshnet/), you can easily connect your remote devices to a single network and enjoy your games over a fast and encrypted network tunnel.

For a quick visual overview, check out the video below:

{% embed url="<https://www.youtube.com/watch?v=s9nCay84r4I>" %}

If you prefer a text-based approach, follow the written instructions that explain how you can turn your device into a [VPN gaming server](https://nordvpn.com/gaming/) using Sunshine and play remotely using the Moonlight client.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that your server’s hardware and software fit the [system requirements](https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/overview.html#system-requirements) provided on the Sunshine documentation page.

## Configure the Sunshine server <a href="#configure-the-sunshine-server" id="configure-the-sunshine-server"></a>

Start your setup process by configuring the Sunshine server.

### Installing Sunshine <a href="#installing-sunshine" id="installing-sunshine"></a>

Begin by installing Sunshine on the machine that will function as your game server.

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

1. Visit the [Releases page](https://github.com/LizardByte/Sunshine/releases/) of the Sunshine GitHub repository.
2. Download the Windows installer file for the latest available version.

   <div align="left"><figure><picture><source srcset="/files/7Ph3ne86mkHS3R8pcAwZ" media="(prefers-color-scheme: dark)"><img src="/files/fR9MgRxdJfLIXmOMq91k" alt="Downloading the Sunshine windows installer file from GitHub."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Launch the downloaded file. If the Microsoft Defender SmartScreen window shows up, select **More info** and click **Run anyway**.
4. Follow the instructions presented by the installation wizard.
5. Click **Finish** to complete the process and close the installer window.
   {% endtab %}

{% tab title="macOS" %}
{% hint style="info" %}
**Note**

Sunshine on macOS is still in its experimental stage. For this reason, some features may not be available.
{% endhint %}

To install Sunshine on macOS, you can use the [Homebrew](https://brew.sh/) package manager.

1. Open **Terminal**.
2. Enter the following command to install Homebrew:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   </code></pre>

   &#x20;\
   For additional information about the installation process, refer to [Homebrew documentation](https://docs.brew.sh/Installation).
3. Follow the on-screen instructions to finish the installation.
4. Run the two commands below to add the Sunshine repository and install the Sunshine package.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew tap LizardByte/homebrew
   brew install sunshine
   </code></pre>

{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this article, the Ubuntu 22.04.1 LTS Linux distribution is used as an example.
{% endhint %}

1. Visit the [Releases page](https://github.com/LizardByte/Sunshine/releases/) of the Sunshine GitHub repository.
2. Download the latest package for your Linux distribution and system architecture.

   <div align="left"><figure><picture><source srcset="/files/srNljeyqxQ2RMdTvR58r" media="(prefers-color-scheme: dark)"><img src="/files/Xc1VaMcTdLvnuSRaRV1d" alt="Downloading the Sunshine package for Ubuntu 22.04 from GitHub."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Open **Terminal** and navigate to the downloaded file’s location using the `cd` command.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Downloads
   </code></pre>

   &#x20;&#x20;
4. Install the Sunshine package and its required dependencies by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install -f ./sunshine* -y
   </code></pre>

   &#x20;&#x20;
5. Check whether Sunshine is installed properly with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sunshine --version
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/ksTKCuC7NsKfpZpEqAhH" alt="Terminal output showing the version of Sunshine."><figcaption></figcaption></figure></div>

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

If you install Ubuntu `.deb` package, you may receive the following error message when trying to interact with Sunshine:

{% code overflow="wrap" %}

```
sunshine: error while loading shared libraries: libboost_chrono.so.1.74.0: cannot open shared object file: No such file or directory
```

{% endcode %}

To resolve this problem, install the [libboost-chrono1.74.0](https://packages.ubuntu.com/jammy/libboost-chrono1.74.0) package with this command:

{% code overflow="wrap" %}

```bash
sudo apt install libboost-chrono1.74.0
```

{% endcode %}
{% endhint %}
{% endtab %}
{% endtabs %}

### Starting Sunshine <a href="#starting-sunshine" id="starting-sunshine"></a>

After installing Sunshine, you need to initialize the server app and access its web user interface (UI), where all of the settings are located.

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

1. Launch **Sunshine**. It will open the `https://localhost:47990/` URL in your default internet browser.
2. Enter your preferred Sunshine username and password and click **Login**.

   <div align="left"><figure><img src="/files/5K5S4HQscIqwcmsRQyBT" alt="Entering username and password in the Sunshine web UI."><figcaption></figcaption></figure></div>

   &#x20;
3. Once the page reloads, log in using your newly created account credentials.

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

You may see a “Your connection is not private” message because Sunshine is using a self-signed [SSL certificate](https://nordvpn.com/blog/what-is-ssl/). To proceed further, click **Advanced** > **Proceed to localhost (unsafe)**.
{% endhint %}
{% endtab %}

{% tab title="macOS" %}

1. Open **Terminal**.
2. Run the `sunshine` command to initialize Sunshine and automatically launch it at system startup. During the process, you will be asked to grant system permissions — make sure to allow them.
3. Open your internet browser and visit the following URL:\
   `https://localhost:47990/`\
   &#x20;
4. Enter your preferred Sunshine username and password and click **Login**.

   <div align="left"><figure><img src="/files/sUE7mdoj5JyK4rTcebTb" alt="Entering username and password in the Sunshine web UI."><figcaption></figcaption></figure></div>

   &#x20;
5. Once the page reloads, log in using your newly created account credentials.

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

You may see a “Your connection is not private” message because Sunshine is using a self-signed [SSL certificate](https://nordvpn.com/blog/what-is-ssl/). To proceed further, click **Show details** > **visit this website**.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

1. Open **Terminal**.
2. Run the `sunshine` command to initialize Sunshine.\
   &#x20;\
   Once Sunshine is ready, you should see this output in your command line window:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">Info: Configuration UI available at [https://localhost:47990]
   </code></pre>

   &#x20;
3. Open your internet browser and visit the following URL:\
   `https://localhost:47990/`\
   &#x20;
4. Enter your preferred Sunshine username and password and click **Login**.

   <div align="left"><figure><img src="/files/UJl7zT4XukNLMS0a6Dur" alt="Entering username and password in the Sunshine web UI."><figcaption></figcaption></figure></div>

   &#x20;
5. Once the page reloads, log in using your newly created account credentials.

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

You may see a “Your connection is not private” message because Sunshine is using a self-signed [SSL certificate](https://nordvpn.com/blog/what-is-ssl/). To proceed further, click **Advanced** > **Accept the risk and continue**.
{% endhint %}
{% endtab %}
{% endtabs %}

### Importing games <a href="#importing-games" id="importing-games"></a>

Once you access the Sunshine web UI, you can import the games you want to play on other remote devices. The steps may vary slightly depending on the OS you use and the games you want to add. For this example, a game from Steam on Windows will be imported to the Sunshine library.

1. On the Sunshine web interface, select the **Applications** section.
2. Click **Add new**.
3. Fill in the following fields:
   * In the **Application name** field, type in the name of the game you want to import.
   * In the **Command** field, enter a command to initialize the game’s executable file.
     * For Windows: `cmd /c <file_name.exe>`
     * For macOS and Linux: `<file_name>`
   * In the **Working directory** field, enter the path of the game’s folder on your system.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/mOa9nGAv2EAcMa8cuQDw" alt="Filled in Application name, Command, and Working directory fields with the game&#x27;s information on Sunshine web UI."><figcaption></figcaption></figure></div>

     &#x20;
4. Click **Save**.

The game is now added to your Sunshine server library, and client devices will be able to play it remotely .

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

You can find more detailed guidelines for adding games and apps to your server’s library on the [Sunshine documentation](https://docs.lizardbyte.dev/projects/sunshine/en/latest/about/guides/app_examples.html) page.
{% endhint %}

## Set up the Moonlight client <a href="#set-up-the-moonlight-client" id="set-up-the-moonlight-client"></a>

Once the Sunshine server is running and you have added your desired games, you can install the Moonlight game-streaming client on all devices connecting to the server.

### Installing Moonlight <a href="#installing-moonlight" id="installing-moonlight"></a>

On devices running desktop operating systems, you can get the Moonlight client installer files from the “Downloads” section of the [Moonlight PC GitHub repository](https://github.com/moonlight-stream/moonlight-qt#downloads).

On mobile devices, you can download the Moonlight client from the following sources:

* On Android, you can install Moonlight from the [Google Play Store](https://play.google.com/store/apps/details?id=com.limelight) or the [Moonlight for Android](https://github.com/moonlight-stream/moonlight-android) GitHub repository.
* On iOS, you can install Moonlight from the [App Store](https://apps.apple.com/us/app/moonlight-game-streaming/id1000551566).

### Pairing with the Sunshine server <a href="#pairing-with-the-sunshine-server" id="pairing-with-the-sunshine-server"></a>

To establish a connection between your Sunshine server and the Moonlight client, you need to pair the devices. While Moonlight automatically scans for servers in your LAN, you need to manually add your remote Meshnet server.

1. Open **Moonlight**.
2. In the upper-right corner, select the computer icon. Alternatively, you can press **Ctrl** + **N** on your keyboard.

   <div align="left"><figure><img src="/files/FZKMq1ih3tB7aLIpKAXk" alt="Clicking &#x27;Add PC manually&#x27; in Moonlight."><figcaption></figcaption></figure></div>

   &#x20;
3. In the new dialog, enter the Nord name of your Sunshine server and click **OK**.

   <div align="left"><figure><img src="/files/M9orvwXL1UMLggtxPqMr" alt="Entering the Nord name of the Sunshine server and clicking &#x27;OK&#x27;."><figcaption></figcaption></figure></div>

   &#x20;
4. Select the newly added device’s icon in the Moonlight window. Upon clicking the server’s icon, you will be shown a PIN code.
5. Open the Sunshine web interface and select **PIN** at the top.
6. Enter the PIN code prompted on your client device and click **Send**.

You should see a green success message indicating that pairing was successful.

## Play games remotely over Meshnet <a href="#play-games-remotely-over-meshnet" id="play-games-remotely-over-meshnet"></a>

After successful pairing, you can start playing games from your server’s library on other devices remotely.

1. In **Moonlight**, select your Sunshine server.

   <div align="left"><figure><img src="/files/9kKiEZVpBwqJNp9kTXzU" alt="Selecting the newly added Sunshine server in Moonlight." width="563"><figcaption></figcaption></figure></div>

   &#x20;
2. From the list of available games, select the one you want to play.

The game will shortly load, and you’ll be able to enjoy your remote gaming session!

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

You can use the Moonlight settings menu to change the streaming resolution and bitrate to optimize the game-streaming quality for your setup.
{% endhint %}


# How to set up a Palworld dedicated server

Discover how you can use Meshnet to configure your own Palworld server and play on it with your friends.

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

[Palworld](https://www.pocketpair.jp/palworld) is an open-world adventure survival game. It is set in an unusual environment — a world populated with various creatures called “Pals”. Each Pal serves a distinct purpose and can be used for multiple different tasks, from peaceful crafting to intense battles.

Setting up a multiplayer Palworld server can be done quickly, as the game provides all of the necessary tools. However, allowing connections from people outside of your network requires [port forwarding](https://nordvpn.com/blog/port-forwarding/). Opening ports can leave your home network vulnerable or may not be possible at all due to the increased popularity of [carrier-grade NAT](https://nordvpn.com/cybersecurity/glossary/cgnat/) (CGNAT) usage.

With the free [Meshnet ](https://nordvpn.com/meshnet/)feature, you can create a virtual device network with devices located all around the globe. Once the devices are linked, they behave as if they were physically on the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) and can directly connect to each other. This setup allows you to run your Palworld server without opening ports or paying for third-party hosting.

This page showcases how you can host a dedicated Palworld server on Windows and Linux and play on it with your friends with the help of Meshnet.

## Configure your Palworld server <a href="#configure-your-palworld-server" id="configure-your-palworld-server"></a>

Depending on your setup, you can choose from three distinct methods of running the Palworld server.

### Method 1: Using Palworld dedicated server <a href="#method-1-using-palworld-dedicated-server" id="method-1-using-palworld-dedicated-server"></a>

For a quick server deployment, you can use the Palworld dedicated server tool which is installed along with the game. To start the server:

1. Open **Steam** and, at the top, select the **Library** tab.
2. On the left, expand the dropdown menu and make sure that the **Tools** option is selected.

   <div align="left"><figure><img src="/files/K6JDsrGP25Blo8Vg1uFa" alt="&#x22;Tools&#x22; option in the dropdown menu selected and highlighted." width="323"><figcaption></figcaption></figure></div>

   &#x20;
3. Choose **Palworld** **dedicated server** from your library and click **Launch**.

   <div align="left"><figure><img src="/files/Nas2JpQSoa5zx80qD2JY" alt="&#x22;Palworld dedicated server&#x22; selected and the &#x22;Launch&#x22; button highlighted." width="491"><figcaption></figcaption></figure></div>

   &#x20;
4. In the dialog that opens, select the **Play Palworld dedicated server** option and click **Play**.

   <div align="left"><figure><img src="/files/bajJCgb0pdE0qXoAanpl" alt="&#x22;Palworld dedicated server&#x22; dialog, with the &#x22;Play Palworld dedicated server&#x22; option selected and the &#x22;Play&#x22; button highlighted." width="372"><figcaption></figcaption></figure></div>

Once the server is initialized, a command-line window should appear on your screen. When you see it, you can proceed to connect to your server. For details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section.

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

To see the **Palworld dedicated server** tool in your Steam library, launch the Palworld game at least once.
{% endhint %}

### Method 2: Using SteamCMD <a href="#method-2-using-steamcmd" id="method-2-using-steamcmd"></a>

This method uses [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD), a command-line version of the Steam client. It is used to download and manage servers for multiplayer Steam games. When using this approach, ensure that your server device has sufficient storage space, as SteamCMD will need to download all of the game’s files on this machine.

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

#### Installing SteamCMD <a href="#installing-steamcmd" id="installing-steamcmd"></a>

Begin by downloading and installing the SteamCMD utility on the device that will be hosting your server.

1. Create a new folder on your PC where you want to install SteamCMD. For example:\
   &#x20;\
   `C:\steamcmd`\
   &#x20;
2. Download the SteamCMD for Windows from the [Valve Developer Community website](https://developer.valvesoftware.com/wiki/SteamCMD#Windows).

   <div align="left"><figure><img src="/files/DTlnGgczUBxjfA4dfMfO" alt="Arrow pointing to the external link button."><figcaption></figcaption></figure></div>

   &#x20;
3. Extract the contents of the downloaded ZIP file to the folder you created.
4. Double-click the **steamcmd.exe** file to launch the app.
5. If the **Windows security alert** box appears, select both the *private* and *public* network options and then click the **Allow access** button to allow incoming connections through the firewall.

The SteamCMD tool will automatically install and, upon completion, will be ready to accept commands.

<figure><img src="/files/ZcDjXCcLy8k0YkovuO9h" alt="Terminal output showing that SteamCMD has finished initializing."><figcaption></figcaption></figure>

Once you see this output, you can close the SteamCMD command line window.

#### Launching the Palworld server <a href="#launching-the-palworld-server" id="launching-the-palworld-server"></a>

With SteamCMD set up, you can proceed to download and install Palworld server files.

1. Open **Command Prompt**.
2. Using the `cd` command, navigate to the directory where you installed SteamCMD.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd C:\steamcmd
   </code></pre>

   &#x20;&#x20;
3. Download the required Palworld server files by running this command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">steamcmd +login anonymous +app_update 2394010 validate +quit
   </code></pre>

   &#x20;\
   Once the server files are fully downloaded and installed, the "Success!" message appears.
4. Navigate to the Palworld server’s directory using this command:\
   &#x20;

   ```bash
   cd .\steamapps\common\PalServer
   ```

   &#x20;
5. Start the server by running the following command:\
   &#x20;

   ```batch
   PalServer.exe
   ```

You should now see a command-line dialog displaying information about your server, indicating that it is up and running. For further details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section below.

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

If your SteamCMD folder is not located on the `C` drive, you need to modify the directory change command. Add `/<letter>` between `cd` and the path, where `<letter>` is the corresponding letter of the drive.

**Example**

```batch
cd /d D:\Apps\steamcmd
```

{% endhint %}

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

If you have specified a different download directory for SteamCMD, you will need to adjust the command in Step 4 according to your chosen location.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

The Ubuntu 22.04.1 LTS distribution is used as an example in this section. You can find instructions for other distributions on the [Valve Developer Community website](https://developer.valvesoftware.com/wiki/SteamCMD#Linux).
{% endhint %}

#### Installing SteamCMD <a href="#installing-steamcmd.1" id="installing-steamcmd.1"></a>

Begin by downloading and installing the SteamCMD utility on the device that will be hosting your server.

1. Run the following command to import the multiverse app repository to your system’s repository list and add 32-bit architecture support:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo add-apt-repository multiverse &#x26;&#x26; sudo dpkg --add-architecture i386
   </code></pre>

   &#x20;
2. Update your system’s repositories and install SteamCMD with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install steamcmd -y
   </code></pre>

Once the process is finished, SteamCMD should be available on your system.

#### Launching the Palworld server <a href="#launching-the-palworld-server.1" id="launching-the-palworld-server.1"></a>

With SteamCMD installed, you can proceed to download and install Palworld server files.

1. Open **Terminal**.
2. Run the following command to update SteamCMD and download the required Palworld server files:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">steamcmd +login anonymous +app_update 2394010 validate +quit
   </code></pre>

   &#x20;\
   Once the server files are fully downloaded and installed, the "Success!" message appears.
3. Navigate to the Palworld server’s directory using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Steam/steamapps/common/PalServer
   </code></pre>

   &#x20;
4. Start the server by initiating the server script file with the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./PalServer.sh
   </code></pre>

You should now see information about your server displayed in the terminal output, indicating that it is up and running. For further details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section below.

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

When starting the server, you may receive the following error:

{% code overflow="wrap" %}

```
.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
```

{% endcode %}

To remedy this problem, run the following three commands:

{% code overflow="wrap" %}

```bash
mkdir -p ~/.steam/sdk64/
steamcmd +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
```

{% endcode %}
{% endhint %}

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

If you have specified a different download directory for SteamCMD, you will need to adjust the command in Step 3 according to your chosen location.
{% endhint %}
{% endtab %}
{% endtabs %}

### Method 3: Using Docker <a href="#method-3-using-docker" id="method-3-using-docker"></a>

Lastly, you can choose to deploy your server as a lightweight Docker container. This option allows you to run the server while saving system resources and can be easily integrated into a pre-existing Docker setup.

#### Installing Docker <a href="#installing-docker" id="installing-docker"></a>

To use this method, you must have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

#### Preparing the Docker Compose file <a href="#preparing-the-docker-compose-file" id="preparing-the-docker-compose-file"></a>

To begin the setup, you need to declare the instructions for the Palworld server Docker image in a dedicated Docker compose file.

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

1. Open **PowerShell**.
2. Create a new `palworld_server` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir palworld_server; cd palworld_server
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using Notepad by running:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad docker-compose.yml
   </code></pre>

   &#x20;

   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="/files/83cE0UqEKm263P6KKxVm" media="(prefers-color-scheme: dark)"><img src="/files/3kIYAg5RqeF4eiNxeB57" alt="Notepad dialog asking to create a file, with the &#x22;Yes&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In **Notepad**, paste the following instructions for the Palworld server Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
      palworld:
         image: thijsvanloef/palworld-server-docker:latest
         restart: unless-stopped
         container_name: palworld-server
         ports:
           - 8211:8211/udp
           - 27015:27015/udp
         environment:
            - PUID=1000
            - PGID=1000
            - PORT=8211
            - PLAYERS=16
            - MULTITHREADING=true
            - RCON_ENABLED=true
            - RCON_PORT=25575
            - ADMIN_PASSWORD="&#x3C;password>"
            - COMMUNITY=false
         volumes:
            - ./palworld:/palworld/
   </code></pre>

   &#x20;
5. Replace the `<password>` placeholder with a secure administrator password for your server.\
   &#x20;

   **Example**

   <div align="left"><figure><picture><source srcset="/files/YwahczDXIBbhpYYoyvSc" media="(prefers-color-scheme: dark)"><img src="/files/szfmj7XfTCnWK62NUunr" alt="Extract from the Notepad window with the placeholder replaced with a password." width="445"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Press **Ctrl** + **S** to save changes.
7. Exit **Notepad**.
   {% endtab %}

{% tab title="Linux" %}

1. Open **Terminal**.
2. Create a new `palworld_server` folder and navigate to it using the following command:\
   &#x20;

   ```bash
   mkdir palworld_server && cd palworld_server
   ```

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor by running:\
   &#x20;

   ```bash
   nano docker-compose.yml
   ```

   &#x20;
4. In the compose file, paste the following instructions for the Palworld server Docker container:\
   &#x20;

   ```yaml
   services:
      palworld:
         image: thijsvanloef/palworld-server-docker:latest
         restart: unless-stopped
         container_name: palworld-server
         ports:
           - 8211:8211/udp
           - 27015:27015/udp
         environment:
            - PUID=1000
            - PGID=1000
            - PORT=8211
            - PLAYERS=16
            - MULTITHREADING=true
            - RCON_ENABLED=true
            - RCON_PORT=25575
            - ADMIN_PASSWORD="<password>"
            - COMMUNITY=false
         volumes:
            - ./palworld:/palworld/
   ```

   &#x20;
5. Replace the `<password>` placeholder with a secure administrator password for your server.\
   &#x20;

   **Example**

   <div align="left"><figure><img src="/files/b70diXLOF7LjT1L96qj4" alt="Extract from the terminal window with the placeholder replaced with a password." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the text editor.
   {% endtab %}
   {% endtabs %}

#### Deploying the Palworld server <a href="#deploying-the-palworld-server" id="deploying-the-palworld-server"></a>

Now, you can use the instructions specified in the compose file to start your Palworld server. To deploy the container, while in the `palworld_server` directory, run the following command:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the Palworld server image](https://docs.docker.com/engine/reference/commandline/pull/) from [Docker Hub](https://hub.docker.com/r/thijsvanloef/palworld-server-docker) and deploy the container. Once the container is up and running, you can connect to the Palworld server, as described in the next section.

## Connect to the Palworld server <a href="#inlineextension-connect-to-the-palworld-server" id="inlineextension-connect-to-the-palworld-server"></a>

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

If you're hosting the Palworld server using Docker on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices connecting to it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

To connect to your newly created Palworld server, take the following steps:

1. Copy the Meshnet IP address of the device hosting the Palworld server from the NordVPN app.

   <div align="left"><figure><picture><source srcset="/files/PkJk48E07hGDqe4MlWji" media="(prefers-color-scheme: dark)"><img src="/files/kM5qTaojCrwR2nUAVIFW" alt="&#x22;Copied!&#x22; message displayed next to the Meshnet IP address."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch **Palworld**.
3. Select **Join multiplayer game**.
4. In the address field at the bottom of the screen, paste the copied Meshnet IP address, followed by `:8211`, and click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/Ex5XJYlmf4i5exNaMaWL" alt="Meshnet IP address and port entered and arrow pointing to the &#x22;Connect&#x22; button"><figcaption></figcaption></figure></div>

Your server should now load, and you can enjoy playing Palworld with your friends over a secure Meshnet connection.


# How to play Fallout: New Vegas multiplayer over Meshnet

Learn how you can use Meshnet to play Fallout: New Vegas in multiplayer mode.

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

The [Fallout series](https://en.wikipedia.org/wiki/Fallout_\(series\)), renowned for its customizable gameplay and expansive open-world exploration, captivates both avid gamers and casual players alike. Despite [Fallout: New Vegas](https://en.wikipedia.org/wiki/Fallout:_New_Vegas) being a single-player game, dedicated fans have developed modifications enabling multiplayer servers, offering an opportunity for shared adventures in its vast world.

By default, multiplayer servers in Fallout: New Vegas are limited to the [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN), restricting access for those outside your [home network](https://nordvpn.com/blog/setup-home-network/). However, this limitation can be circumvented by using [Meshnet](https://nordvpn.com/meshnet/) — a solution that allows you to link devices around the globe to a virtual device network, without the need for [port forwarding](https://nordvpn.com/blog/port-forwarding/). Once linked, the devices can connect as if they were physically on the same network. Such a setup allows players from different locations to connect to your server without restrictions.

This article showcases how you can set up your own Fallout: New Vegas multiplayer server on Windows and enjoy the game with your friends.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that all players have a copy of Fallout: New Vegas available on their PC. Additionally, if you have played the game before and have files left on your computer, be sure to reset the game. Otherwise, the multiplayer add-ons may not function.

<details>

<summary>Resetting the game</summary>

1. Launch **Steam** and go to the **Library** tab.
2. From the list on the left, right-click **Fallout: New Vegas** and select **Manage** > **Browse local files**.

   <div align="left"><figure><img src="/files/Z4mSDb9i1hNd08EgBSp9" alt="&#x22;Manage&#x22; and &#x22;Browse local files&#x22; options highlighted." width="473"><figcaption></figcaption></figure></div>

   &#x20;
3. Delete all files in the folder that opens.
4. Back on **Steam**, right-click **Fallout: New Vegas** once again, and choose **Manage** > **Uninstall**.
5. Open **File explorer**.
6. In the address bar, enter the path below and press **Enter**:\
   `%USERPROFILE%\Documents\My Games\FalloutNV` \
   &#x20;

   <div align="left"><figure><picture><source srcset="/files/SQ1b5MgYnl5LCbYqihhB" media="(prefers-color-scheme: dark)"><img src="/files/BtpHh9YyQpPjLnN0agFt" alt="Path entered in the address bar of the File explorer window."></picture><figcaption></figcaption></figure></div>

   &#x20;
7. Delete all files, except for the `Saves` folder.

After completing these steps, install Fallout: New Vegas again.

<img src="/files/EJ5OwW7O9mbMFKLSTdO4" alt="" data-size="original">

</details>

## Prepare Fallout: New Vegas for multiplayer <a href="#prepare-fallout-new-vegas-for-multiplayer" id="prepare-fallout-new-vegas-for-multiplayer"></a>

You’ll need to carry out these instructions on all devices that will be playing on the Fallout: New Vegas server. By following these steps, you will install the required modifications and get the game ready for multiplayer action.

### Setting the graphics options <a href="#setting-the-graphics-options" id="setting-the-graphics-options"></a>

To begin, ensure that the game’s installation is finalized and configure your preferred visual options:

1. Open **Steam** and launch Fallout: New Vegas to install run-time dependencies.
2. Click **Exit** to close the launcher.

   <div align="left"><figure><img src="/files/BFoc2Ytxz7KUzzt1Qx8N" alt="&#x22;Exit&#x22; button highlighted in the Fallout: New Vegas launcher." width="563"><figcaption></figcaption></figure></div>

   &#x20;
3. Open the Fallout: New Vegas installation directory. By default, it is:\
   `C:\Program Files (x86)\Steam\steamapps\common\Fallout New Vegas`\
   &#x20;
4. Right-click **FalloutNVLauncher.exe** and select **Run as administrator**.
5. Select **Options**, and choose your preferred resolution and graphics settings.
6. Click **Play**.

   <div align="left"><figure><img src="/files/aZ393O7brlrarYlbTbvd" alt="Clicking &#x22;Play&#x22; in the Fallout: New Vegas launcher." width="563"><figcaption></figcaption></figure></div>

   &#x20;
7. Once the game launches, click **Quit** and select **Exit game**.

### Validating game files <a href="#validating-game-files" id="validating-game-files"></a>

Now, you should verify the integrity of the game’s files using Steam’s built-in tools:

1. Open **Steam** and go to the **Library** tab.
2. Locate **Fallout: New Vegas**, right-click it, and select **Properties**.

   <div align="left"><figure><img src="/files/MLaVGEYykvFGO83YkQyE" alt="&#x22;Properties&#x22; option highlighted." width="309"><figcaption></figcaption></figure></div>

   &#x20;
3. On the left, select **Installed files** and click **Verify integrity of game files**.

   <div align="left"><figure><img src="/files/yCrIpbYtLLyJrqbH4kVc" alt="Clicking &#x22;Verify integrity of game files&#x22; in the &#x22;Installed Files&#x22; menu."><figcaption></figcaption></figure></div>

   &#x20;
4. Once completed, close the dialog.

### Installing stability modifications <a href="#installing-stability-modifications" id="installing-stability-modifications"></a>

Next, install modifications to help the game run smoothly in multiplayer mode.

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

To download two of the required modifications, you will need a [NexusMods](https://www.nexusmods.com/) account. You can create an account for free on the [NexusMods registration page](https://users.nexusmods.com/register).
{% endhint %}

#### 4GB patcher <a href="#id-4gb-patcher" id="id-4gb-patcher"></a>

The 4GB patcher adjusts the game’s files increasing its allowed [random access memory](https://nordvpn.com/cybersecurity/glossary/random-access-memory/) (RAM) usage from the default 2GB to 4GB. This leads to better performance and smoother overall gameplay.

1. Navigate to the [4GB patcher page](https://www.nexusmods.com/newvegas/mods/62552?tab=files\&file_id=1000075100) of the NexusMods website.
2. Click **Slow download**.

   <div align="left"><figure><img src="/files/6SE7K7lomji5bmY6cZR8" alt="Clicking the &#x22;Slow download&#x22; button." width="563"><figcaption></figcaption></figure></div>

   &#x20;\
   If you have a premium account, choose **Fast download** instead.
3. Open the downloaded archive.
4. Extract the **FNVpatch.exe** file to the Fallout: New Vegas installation folder.
5. Launch **FNVpatch.exe**.
6. Verify that the command line dialog output says `FalloutNV.exe Patched!` and close it.

   <div align="left"><figure><img src="/files/ZLlKWc7GQqx1v48MaPqp" alt="Command line output showing that the FallloutNV.exe file was patched."><figcaption></figcaption></figure></div>

#### Script extender <a href="#script-extender" id="script-extender"></a>

The New Vegas script extender (NVSE) enhances the game’s engine for increased modding and scripting availability.

1. Visit the [Releases page](https://github.com/xNVSE/NVSE/releases/) of the New Vegas script extender GitHub repository.
2. Download the latest available `.7z` archive.

   <div align="left"><figure><img src="/files/uDpoREj7razjuG6ZNeKD" alt="Downloading the latest NVSE archive."><figcaption></figcaption></figure></div>

   &#x20;
3. Extract the archive’s content to the Fallout: New Vegas installation folder.

#### Anti-crash <a href="#anti-crash" id="anti-crash"></a>

The New Vegas anti-crash (NVAC) modification aims to minimize the number of unexpected game crashes.

1. Go to the [New Vegas anti-crash page](https://www.nexusmods.com/newvegas/mods/53635?tab=files\&file_id=1000039152) of the NexusMods website.
2. Click **Slow download**.

   <div align="left"><figure><img src="/files/KdG9ogkC6913IqpeHgyy" alt="Clicking the &#x22;Slow download&#x22; button." width="563"><figcaption></figcaption></figure></div>

   &#x20;\
   If you have a premium account, choose **Fast download** instead.
3. Extract the contents of the downloaded archive to the `Data` folder of the Fallout: New Vegas installation folder.\
   &#x20;\
   **Example**\
   `C:\Program Files (x86)\Steam\steamapps\common\Fallout New Vegas\Data`

### Setting the load order <a href="#setting-the-load-order" id="setting-the-load-order"></a>

Now, you need to set the load order for the game’s plugins:

1. Visit the [Releases page](https://github.com/loot/loot/releases) of the Loot GitHub repository.
2. Download the latest available Windows installer file.

   <div align="left"><figure><img src="/files/H6eZcG8jlNq3fDeEeDYH" alt="Downloading the Loot installer file."><figcaption></figcaption></figure></div>

   &#x20;
3. Launch the downloaded executable and install Loot.
4. Using Windows Search, search for `loot` and click **Run as administrator**.

   <div align="left"><figure><picture><source srcset="/files/NEGPUbTK5Qxjg0sDIbHT" media="(prefers-color-scheme: dark)"><img src="/files/sKCh2em0EU8zZrwRJ0RB" alt="&#x22;Run as administrator&#x22; option for Loot highlighted in Windows search."></picture><figcaption></figcaption></figure></div>

   &#x20;
5. In the upper-left corner, ensure that **Fallout: New Vegas** is selected.

   <div align="left"><figure><img src="/files/o3mp4msBJmzu6yYMe1Ra" alt="Fallout: New Vegas selected in the Loot app."><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Update masterlist**, select **Sort plugins**, and click **Apply sorted load order**.
7. Exit Loot.

### Downloading New Vegas: Multiplayer <a href="#downloading-new-vegas-multiplayer" id="downloading-new-vegas-multiplayer"></a>

Finally, you can download and run the Fallout: New Vegas multiplayer client.

1. Visit the [Releases page](https://github.com/NVMP/ClientDistribution/releases/) of the New Vegas multiplayer client GitHub repository.
2. Download the latest available `build_release_client.zip` archive.

   <div align="left"><figure><img src="/files/vMzOLF27Eql8jLGw2BsH" alt="Downloading the New Vegas: Multiplayer client."><figcaption></figcaption></figure></div>

   &#x20;
3. Extract the archive’s content to the Fallout: New Vegas installation folder.
4. Right-click **nvmp\_launcher.exe** and choose **Run as administrator**.
5. Click **Launch in offline mode**.

   <div align="left"><figure><img src="/files/OmTYHdBmTl9vXr7xRsCx" alt="&#x22;Launch in offline mode&#x22; text button highlighted."><figcaption></figcaption></figure></div>

You should now see the **New Vegas: Multiplayer** window from which you can either start your server or connect to your friend’s server.

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

If you receive a Windows Defender SmartScreen dialog when opening `nvmp_launcher.exe`, select **More info** and click **Run anyway**.
{% endhint %}

## Play Fallout: New Vegas over Meshnet <a href="#play-fallout-new-vegas-over-meshnet" id="play-fallout-new-vegas-over-meshnet"></a>

With all of the setup taken care of, you can start your server, connect to it, and start playing.

### Starting your server <a href="#starting-your-server" id="starting-your-server"></a>

To initialize your Fallout: New Vegas server, in the lower-left corner of the **New Vegas: Multiplayer** window, click **Launch local server**.

<div align="left"><figure><img src="/files/Z1mUpxHcOkE1auIKzU2x" alt="&#x22;Launch local server&#x22; option highlighted in the New Vegas: Multiplayer window."><figcaption></figcaption></figure></div>

You should see a Command Prompt window appear indicating that the server is running.

<div align="left"><figure><img src="/files/6qW36gIPlTwE7I4t0llN" alt="Command Prompt window showing that the server is running."><figcaption></figcaption></figure></div>

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

If the **Windows security alert** box appears when starting the server, select both the *private* and *public* networks options, and then click the **Allow access** button to allow incoming connections through the firewall.
{% endhint %}

### Connecting to the server <a href="#connecting-to-the-server" id="connecting-to-the-server"></a>

To join your server:

1. Copy the Meshnet IP address of the device that is running the Fallout: New Vegas server from the [NordVPN app](https://nordvpn.com/download/).
2. In the lower-left corner of the **New Vegas: Multiplayer** window, select **Connect via IP**.

   <figure><img src="/files/Z6V4wOVRrF10ymz9Xf85" alt="&#x22;Connect via IP&#x22; option highlighted in the New Vegas: Multiplayer window."><figcaption></figcaption></figure>

   &#x20;
3. In the dialog that opens, paste the copied IP address followed by `:27015`.\
   &#x20;

   **Example**

   <div align="left"><figure><img src="/files/uFISJHngD0K1ICn6PTiq" alt="Meshnet IP address and port number entered in the &#x22;Connect to a server&#x22; dialog."><figcaption></figcaption></figure></div>

   &#x20;\
   If you’re connecting from the same device that is running the server, replace the IP address with `localhost`, as such: `localhost:27015`
4. Click **Connect**.
5. Once the game launches, start either a new game and load your previous save file.

Now you can enjoy the endless possibilities of the Fallout: New Vegas world with friends!

<div align="left"><figure><img src="/files/KlzQHrtTvfnPRtTJ0Knj" alt="Two players connected to the Fallout: New Vegas server."><figcaption></figcaption></figure></div>


# How to set up a private Factorio server with Meshnet

Learn how Meshnet can help you run a personal Factorio server.

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

[Factorio ](https://www.factorio.com/)is a highly acclaimed simulation game that has gained widespread popularity due to its engaging mechanics, where players scavenge resources and build factories to escape an alien planet. With its sandbox-style gameplay and creative freedom, it's no wonder Factorio consistently ranks among the most popular games.

Factorio can be enjoyed as a single-player or multiplayer experience. Building and managing factories with friends can lead to unforgettable moments. However, setting up and maintaining your own Factorio server can seem overwhelming.

With the help of Meshnet, the process becomes much easier. [Meshnet ](https://nordvpn.com/meshnet/)allows you to seamlessly connect various devices from different locations into a single virtual device network, as if they were physically on the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN). This eliminates the need for [port forwarding](https://nordvpn.com/blog/port-forwarding/) and keeps your home network secure. Meshnet connects each device via encrypted network tunnels using the [NordLynx protocol](https://nordvpn.com/blog/nordlynx-protocol-wireguard/), ensuring the best combination of speed and security.

This guide provides step-by-step guidance on how you set up a private Factorio server on Windows, macOS, or Linux allowing you and your friends to enjoy the game together from anywhere in the world using Meshnet.

## Configure your Factorio server <a href="#configure-your-factorio-server" id="configure-your-factorio-server"></a>

Several options are available for creating and running your own Factorio server, allowing you to choose the method that best suits your needs and preferences.

### Method 1: Using in-game options <a href="#method-1-using-in-game-options" id="method-1-using-in-game-options"></a>

To get started quickly, you can launch your server with just a few clicks directly from the game.

1. Launch **Factorio**.
2. Select **Multiplayer** > **Host new game**.
3. Choose your game type and click **Next**.

   <div align="left"><figure><img src="/files/rNrdqVYuiZJO0MAdz6mK" alt="&#x22;Freeplay&#x22; game mode selected and clicking the &#x22;Next&#x22; button." width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. If your selected game mode requires it, configure your map settings and click **Next** again.
5. In the **Multiplayer server settings** window, make the following changes:
   * In the **Server name** field, enter a custom name for your server.
   * In the **Server password** field, type in a secure password that other players must enter to join.
   * Under **Visibility**, ensure that only the **LAN** server visibility option is selected.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/Szi6ig9xlc8zqEPahRdw" alt="Filled in server and and password fields, and the LAN option selected." width="356"><figcaption></figcaption></figure></div>

     &#x20;
6. Click **Play**.

Once you’re loaded into the map, you can invite others to join your server. See the [Connect to your Factorio server over Meshnet](#inlineextension-connect-to-your-factorio-server-over-meshnet) section for further details.

### Method 2: Using a Factorio dedicated server <a href="#method-2-using-factorio-dedicated-server" id="method-2-using-factorio-dedicated-server"></a>

The Factorio executable supports command-line interaction, enabling you to run the server with minimal resource usage, as no graphics or audio are loaded on the server machine. Follow the steps below to deploy your server using Factorio in headless mode.

{% tabs %}
{% tab title="Windows" %}
{% hint style="info" %}
**Note**

Running a headless Factorio instance on Windows will prevent you from opening the game on the same computer.
{% endhint %}

#### Prepare the server settings file <a href="#prepare-the-server-settings-file" id="prepare-the-server-settings-file"></a>

Factorio server details, including settings and map preferences, are stored in multiple [JavaScript Object Notation](https://www.json.org/json-en.html) (JSON) files. These files serve as the backend for the **Multiplayer server settings** window accessible within the game. To get started, you’ll need to back up and modify the server settings file.

1. Open **File explorer** and navigate to the Factorio installation directory.
2. Open the **data** folder.
3. Create a copy of the `server-settings.example.json` file and name it `server-settings.json`.
4. Open the new `server-settings.json` file using a text editor, such as Notepad.
5. Make the following changes to the JSON file:
   * Next to the `"name"` and `"description"` fields, change the string values to identify and describe your server.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/VCGFHN5XI0WWgvqBwTEI" media="(prefers-color-scheme: dark)"><img src="/files/CmxbozI0eFoG5RNgH2aT" alt="&#x22;name&#x22; and &#x22;description&#x22; field values updated."></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Under `"visibility"`, change the `"public"` field value to `false`.

     <div align="left"><figure><picture><source srcset="/files/cG2sdqcn08I6uo7lsLja" media="(prefers-color-scheme: dark)"><img src="/files/pxasgG6hO7FVKqgfsw7u" alt="&#x22;public&#x22; field value set to false."></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Next to the `"game_password"` field, type in a secure password that other players must enter to join.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/0PL1h1h28NXc1Oiw42hf" media="(prefers-color-scheme: dark)"><img src="/files/SIVfosl0iky3BYaJdPkS" alt="Password highlighted in the &#x22;game_password&#x22; field value."></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Save your changes and close the text editor.

#### Start the server <a href="#start-the-server" id="start-the-server"></a>

1. Open **PowerShell**.
2. Using the `cd` command, navigate to the Factorio installation directory.\
   &#x20;

   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd "C:\Program Files\Steam\steamapps\common\Factorio"
   </code></pre>

   &#x20;
3. Run the following command to create a new save file, where the server will store its progress.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">.\bin\x64\factorio.exe --create .\saves\savefile.zip
   </code></pre>

   &#x20;
4. Use the command below to initialize your server with the newly created save file and the previously configured settings file:

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">.\bin\x64\factorio.exe --start-server .\saves\savefile.zip --server-settings .\data\server-settings.json
   </code></pre>

   &#x20;\
   If the server is started successfully, the last few lines in PowerShell should read similar to the following:

   <div align="left"><figure><img src="/files/TvExvMALe25RB4ZUjKbi" alt="PowerShell output indicating that the server has started successfully."><figcaption></figcaption></figure></div>

Your server is active and ready for other players to join. For further instructions, see the [Connect to your Factorio server over Meshnet](https://nordsec.atlassian.net/wiki/spaces/MHB/pages/13228277767/How+to+set+up+a+private+Factorio+server+with+Meshnet#connect-server) section below.

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

Detailed descriptions of the command-line parameters and additional options are available on the [Factorio wiki page](https://wiki.factorio.com/Command_line_parameters#Multiplayer).
{% endhint %}

#### (Optional) Automate server launch <a href="#optional-automate-server-launch" id="optional-automate-server-launch"></a>

To streamline the process of starting your Factorio server, you can create a [batch file](https://nordvpn.com/cybersecurity/glossary/batch-file/). This method saves time by eliminating the need to manually enter lengthy commands into the command line each time. Simply run the script file, and it will automatically handle the server launch for you.

Take the following steps to create your server launch script file:

1. Open a text editor, such as Notepad.
2. Add the following lines to the file, replacing the placeholder `<\path\to\Factorio>` with the path to the Factorio installation directory.

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">@echo off

   title Start your Factorio server

   echo Starting server... 
   cd /d "&#x3C;\path\to\Factorio>" 
   start /wait "" .\bin\x64\factorio --start-server .\saves\savefile.zip --server-settings .\data\server-settings.json

   pause
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/pAClwUc6Zv4NoGxwvJHZ" media="(prefers-color-scheme: dark)"><img src="/files/vqXxHvmUnyR9Wss6GDOi" alt="Batch file content with path to the Factorio folder."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Click **File** > **Save As**.
4. From the **Save as type** list, select **All files**, and use a file name with a `.bat` extension. For example, `factorio-server.bat`.

   <figure><picture><source srcset="/files/rNSVnPulMOZcn1tlr22J" media="(prefers-color-scheme: dark)"><img src="/files/FJD0V29edOL4QfHR3K32" alt="File name and type highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
5. Choose a convenient location where the file should be saved, such as Desktop, and click **Save**.

Now, when you want to start your server, open the `.bat` file and the following sequence of actions will take place:

1. A Command Prompt window will open.
2. The Factorio executable will launch using the specified save and settings files.
3. The server will initialize and start running.
   {% endtab %}

{% tab title="macOS" %}
{% hint style="info" %}
**Note**

Running a headless Factorio instance on macOS will prevent you from opening the game on the same computer.
{% endhint %}

#### Prepare the server settings file <a href="#prepare-the-server-settings-file.1" id="prepare-the-server-settings-file.1"></a>

Factorio server details, including settings and map preferences, are stored in multiple [JavaScript Object Notation](https://www.json.org/json-en.html) (JSON) files. These files serve as the backend for the **Multiplayer server settings** window accessible within the game. To get started, you’ll need to back up and modify the server settings file.

1. Launch **Steam** and go to the **Library** tab.
2. Locate **Factorio**, right-click it, and select **Manage** > **Browse local files**.

   <div align="left"><figure><img src="/files/waUs9wlk6C6kVPZ10trI" alt="Selecting Factorio > Manage > Browse local files in Steam." width="563"><figcaption></figcaption></figure></div>

   &#x20;
3. In the new Finder window, right-click **Factorio**, choose **Show package contents**, and navigate to **Contents** > **data**.
4. Create a copy of the `server-settings.example.json` file and name it `server-settings.json`.
5. Open the new `server-settings.json` file using a text editor, such as TextEdit.
6. Make the following changes to the JSON file:
   * Next to the `"name"` and `"description"` fields, change the string values to identify and describe your server.\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/DjLXyHnhsBGIMFb5SwQX" media="(prefers-color-scheme: dark)"><img src="/files/23BJIOXitR5tsMOznPF6" alt="&#x22;name&#x22; and &#x22;description&#x22; field values updated."></picture><figcaption></figcaption></figure>

     &#x20;
   * Under `"visibility"`, change the `"public"` field value to `false`.

     <div align="left"><figure><picture><source srcset="/files/bWOsfWJWU87GWE0a8jOf" media="(prefers-color-scheme: dark)"><img src="/files/amuLT6DiS9vyiPDeQ0Iw" alt="&#x22;public&#x22; field value set to false."></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Next to the `"game_password"` field, type in a secure password that other players must enter to join.\
     \
     **Example**<br>

     <figure><picture><source srcset="/files/KJjReIb3U66bv6sr9leK" media="(prefers-color-scheme: dark)"><img src="/files/TQgqaz008aOKjPSYbEwN" alt="Password highlighted in the &#x22;game_password&#x22; field value."></picture><figcaption></figcaption></figure>

     &#x20;
7. Save your changes and close the text editor.

#### Start the server <a href="#start-the-server.1" id="start-the-server.1"></a>

With the required files configured, you can start your server.

1. Open **Terminal**.
2. Navigate to the Factorio installation directory using the `cd` command below:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Library/Application \ Support/Steam/steamapps/common/Factorio/factorio.app/Contents
   </code></pre>

   &#x20;
3. Run the following command to create a new save file, where the server will store its progress.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./MacOS/factorio --create ./saves/savefile.zip
   </code></pre>

   &#x20;
4. Use the provided command to initialize your server with the newly created save file and the previously configured settings file:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./MacOS/factorio --start-server ./saves/savefile.zip --server-settings ./data/server-settings.json
   </code></pre>

   &#x20;

   If the server is started successfully, the last few lines in Terminal should read similar to the following:

   <div align="left"><figure><picture><source srcset="/files/JpVzCmEW7GuFYN5SxEAD" media="(prefers-color-scheme: dark)"><img src="/files/h0nhpWLKgRBVU8RIDE9I" alt="Terminal output indicating that the server has started successfully."></picture><figcaption></figcaption></figure></div>

Your server is active and ready for other players to join. For further instructions, see the [Connect to your Factorio server over Meshnet](https://nordsec.atlassian.net/wiki/spaces/MHB/pages/13228277767/How+to+set+up+a+private+Factorio+server+with+Meshnet#) section below.

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

Detailed descriptions of the command-line parameters and additional options are available on the [Factorio wiki page](https://wiki.factorio.com/Command_line_parameters#Multiplayer).
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
For a more efficient server deployment on Linux, Factorio offers a lightweight, headless version specifically designed for running servers. This version eliminates the need to install the full game, focusing solely on the server functionality.

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

Running a headless Factorio instance on Linux may prevent you from opening the game as the same user.
{% endhint %}

#### Prepare the server settings file <a href="#prepare-the-server-settings-file.2" id="prepare-the-server-settings-file.2"></a>

Factorio server details, including settings and map preferences, are stored in multiple [JavaScript Object Notation](https://www.json.org/json-en.html) (JSON) files. These files serve as the backend for the **Multiplayer server settings** window accessible within the game. To get started, you’ll need to back up and modify the server settings file.

1. Visit the [Factorio downloads page](https://www.factorio.com/download) and download Factorio headless for Linux.

   <div align="left"><figure><img src="/files/iRbeyrZ5q7MLt18NAB3k" alt="Downloading the headless Factorio server for Linux." width="563"><figcaption></figcaption></figure></div>

   &#x20;
2. Using **Files**, navigate to your Downloads folder, and extract the downloaded archive to a convenient location.
3. Locate the extracted files and go to **factorio** > **data**.
4. Create a copy of the `server-settings.example.json` file and name it `server-settings.json`.
5. Open the new `server-settings.json` file using Text editor.
6. Make the following changes to the JSON file:
   * Next to the `"name"` and `"description"` fields, change the string values to identify and describe your server.\
     &#x20;

     **Example**

     <div align="left"><figure><picture><source srcset="/files/yKaSfJb8gMpHbvd0naEF" media="(prefers-color-scheme: dark)"><img src="/files/nvoAOBVxWxnODbeGysXs" alt="&#x22;name&#x22; and &#x22;description&#x22; field values updated."></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Under `"visibility"`, change the `"public"` field value to `false`.

     <div align="left"><figure><picture><source srcset="/files/n0eVsxyE0oKq2K2O0nSA" media="(prefers-color-scheme: dark)"><img src="/files/MzKZiCn6r464gAOIDU0p" alt="&#x22;public&#x22; field value set to false."></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Next to the `"game_password"` field, type in a secure password that other players must enter to join.\
     &#x20;

     **Example**

     <div align="left"><figure><picture><source srcset="/files/FEUTQmKa4X4AdO3guoO3" media="(prefers-color-scheme: dark)"><img src="/files/9dF3czqVW6kW79aqcHKA" alt="Password highlighted in the &#x22;game_password&#x22; field value."></picture><figcaption></figcaption></figure></div>

     &#x20;
7. Save your changes and close Text editor.

#### Start the server <a href="#start-the-server.2" id="start-the-server.2"></a>

With the required files configured, you can start your server.

1. In the **factorio** folder, right-click and select **Open in Terminal**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/gIpL5IN9BFrwuGuA8doJ" media="(prefers-color-scheme: dark)"><img src="/files/3lkngc98YzWvuORhwooS" alt="Clicking &#x22;Open in Terminal&#x22; from the context menu."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Run the following command to create a new save file, where the server will store its progress.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./bin/x64/factorio --create ./saves/savefile.zip
   </code></pre>

   &#x20;&#x20;
3. If the players joining your server don’t have the [Space Age expansion pack](https://wiki.factorio.com/Space_Age), you need to disable it in the mod settings before starting the server.
   * Go to the **factorio** > **mods** folder.
   * Open the `mod-list.json` file using Text editor.
   * Change the lower three `"enabled"` field values to `false`.

     <div align="left"><figure><picture><source srcset="/files/4zsK6rxgX83YBnbrz9cR" media="(prefers-color-scheme: dark)"><img src="/files/BwVowLX7E83SXCVsC8YU" alt="" width="188"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * Press **Ctrl** + **S** to save changes and then exit Text editor.
4. Back in **Terminal**, use the provided command to initialize your server with the newly created save file and the previously configured settings file:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./bin/x64/factorio --start-server ./saves/savefile.zip --server-settings ./data/server-settings.json
   </code></pre>

   &#x20;

   If the server is started successfully, the last few lines in Terminal should read similar to the following:

   <figure><img src="/files/ec5HW9Byc5nH0I2vwXH6" alt="Terminal output indicating that the server has started successfully."><figcaption></figcaption></figure>

Your server is active and ready for other players to join. For further instructions, see the [Connect to your Factorio server over Meshnet](https://nordsec.atlassian.net/wiki/spaces/MHB/pages/13228277767/How+to+set+up+a+private+Factorio+server+with+Meshnet#) section below.

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

Detailed descriptions of the command-line parameters and additional options are available on the [Factorio wiki page](https://wiki.factorio.com/Command_line_parameters#Multiplayer).
{% endhint %}
{% endtab %}
{% endtabs %}

### Method 3: Using Docker <a href="#method-3-using-docker" id="method-3-using-docker"></a>

The third alternative for running your server is deploying it via Docker. This approach is the most efficient, as it minimizes system resource usage by running the server in a lightweight container, eliminating the need to install the game directly on the server.

#### Install Docker <a href="#installing-docker" id="installing-docker"></a>

To use this method, you must have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

#### Prepare the Docker Compose file <a href="#preparing-the-docker-compose-file" id="preparing-the-docker-compose-file"></a>

Firstly, you must define the instructions for the Factorio server container in the [Docker Compose file](https://docs.docker.com/reference/compose-file/).

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

1. Open **PowerShell**.
2. In your preferred location, create a new `factorio_server` folder and navigate to it using the following command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir factorio_server; cd factorio_serve
   </code></pre>

   &#x20;&#x20;
3. Create a `docker-compose.yml` file and open it using Notepad by running:

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad docker-compose.yml
   </code></pre>

   &#x20;

   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="/files/yAULwaEp2qRsbHyy80Xl" media="(prefers-color-scheme: dark)"><img src="/files/eG8NCldzV5yCfwK7ttOS" alt="" width="245"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In **Notepad**, paste the following instructions for the Factorio server Docker container:

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
     factorio:
       container_name: factorio-server
       image: factoriotools/factorio:stable-2.0.23
       ports:
         - "34197:34197/udp"
         - "27015:27015/tcp"
       volumes:
        - .\factorio:/factorio
       environment:
        - DLC_SPACE_AGE=false
   </code></pre>

   &#x20;
5. Ensure that the version declared in the `image:` row matches the version of your game. If required, modify the version accordingly. For more information about versioning, see the Readme file of the [factoriotools/factorio-docker](https://github.com/factoriotools/factorio-docker?tab=readme-ov-file#factorio---) GitHub repository.
6. Press **Ctrl** + **S** to save changes.
7. Exit **Notepad**.

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

If all players connecting to the server own the [Space Age expansion pack](https://wiki.factorio.com/Space_Age) and you wish to enable it for the server, set the `DLC_SPACE_AGE` value to `true` in the Compose file.
{% endhint %}
{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. In your preferred location, create a new `factorio_server` folder and navigate to it using the following command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir factorio_server &#x26;&#x26; cd factorio_server
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor by running:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano docker-compose.yml
   </code></pre>

   &#x20;
4. In the terminal window, paste the following instructions for the Factorio server Docker container:

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
     factorio:
       container_name: factorio-server
       image: factoriotools/factorio:stable-2.0.23
       ports:
         - "34197:34197/udp"
         - "27015:27015/tcp"
       volumes:
        - ./factorio:/factorio
       environment:
        - DLC_SPACE_AGE=false
   </code></pre>

   &#x20;
5. Ensure that the version declared in the `image:` row matches the version of your game. If required, modify the version accordingly. For more information about versioning, see the Readme file of the [factoriotools/factorio-docker](https://github.com/factoriotools/factorio-docker?tab=readme-ov-file#factorio---) GitHub repository.
6. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.

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

If all players connecting to the server own the [Space Age expansion pack](https://wiki.factorio.com/Space_Age) and you wish to enable it for the server, set the `DLC_SPACE_AGE` value to `true` in the Compose file.
{% endhint %}
{% endtab %}
{% endtabs %}

#### Deploy the Factorio server <a href="#deploying-the-factorio-server" id="deploying-the-factorio-server"></a>

Lastly, you can create and deploy your Factorio server by using the data declared in the Compose file. While in the `factorio_server` directory, run the following command:

```bash
docker compose up -d
```

Docker will pull the Factorio server image from [Docker Hub](https://hub.docker.com/r/factoriotools/factorio/) and deploy the container. Once the container is up and running, you can connect to the server, as described in the section below.

## Connect to your Factorio server over Meshnet <a href="#inlineextension-connect-to-your-factorio-server-over-meshnet" id="inlineextension-connect-to-your-factorio-server-over-meshnet"></a>

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

If you're hosting the Factorio server using Docker on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices connecting to it. For more information, see [Common issues on Linux](/troubleshooting/linux).
{% endhint %}

Once the Factorio server is up and running, you and your friends can connect to it for a collaborative gaming experience.

1. Copy the Meshnet IP address of the device hosting the Factorio server from the NordVPN app.

   <div align="left"><figure><picture><source srcset="/files/9DAbL3gfnoPTUlp1vnR5" media="(prefers-color-scheme: dark)"><img src="/files/duIMAev2UUM0FZ4HbWr8" alt="Copying the Meshnet IP address from the NordVPN app."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch **Factorio**.
3. Select **Multiplayer** > **Connect to address**.
4. In the **IP address and port** field, paste the copied Meshnet IP address and click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/6npc2IYGCRXe364Wm9VK" alt="Entering the Meshnet IP address of the Factorio server and clicking &#x22;Connect&#x22;."><figcaption></figcaption></figure></div>

   &#x20;
5. If required, enter the server’s password.

Within a few moments, you should be connected to the server and you can begin your factory-building journey.

<div align="left"><figure><img src="/files/0zijs7tJqaZ5VEOGtl1r" alt="Two players loaded into the Factorio server."><figcaption></figcaption></figure></div>


# Remote files and media access

Learn how to access your files and other resources remotely over Meshnet.

Remote access to files and media can be useful for a wide range of purposes. Whether you want to watch movies stored on a remote device, such as a home server, or access files on your work computer while you are away from the office, Meshnet provides a convenient way to accomplish these tasks.

In addition, Meshnet uses an encryption mechanism to secure data transfers, helping you protect your sensitive content from being accessed by unauthorized parties. It also eliminates the need to open ports to allow traffic through, which simplifies the setup and reduces the risk of security breaches.

In this section, you can find how-to guides on accessing your remote resources over Meshnet.

### **Remote file management solutions**

* [Set up and access shared folders](/how-to/remote-files-media-access/set-up-folder-sharing)
* [Set up a remote NAS using OpenMediaVault and Meshnet](/how-to/remote-files-media-access/remote-openmediavault-nas)
* [Use Syncthing for remote continuous file synchronization](/how-to/remote-files-media-access/syncthing-file-synchronization)
* [Set up HTTP file server for remote file access](/how-to/remote-files-media-access/http-file-server)

### **Personal media streaming**

* [Watch videos over Meshnet using Kodi](/how-to/remote-files-media-access/watch-videos-using-kodi)
* [Configure and access Jellyfin media server remotely](/how-to/remote-files-media-access/access-jellyfin-media-sever-remotely)
* [Set up a Plex media server and access it remotely](/how-to/remote-files-media-access/set-up-remote-plex-media-server)
* [Set up a remote picture library with LibrePhotos and Meshnet](/how-to/remote-files-media-access/librephotos-picture-library)
* [Set up a remote Airsonic music server](/how-to/remote-files-media-access/airsonic-music-server)
* [Set up a remote audiobook server](/how-to/remote-files-media-access/audiobook-server)
* [Host a remote Kavita e-book server](/how-to/remote-files-media-access/kavita-ebook-server)
* [Set up and remotely access Immich using Meshnet](/how-to/remote-files-media-access/immich-remote-access)


# How to set up and access shared folders

Learn how to configure shared folders on Windows, macOS, and Linux, and access them from all devices using Meshnet.

Have you ever needed swift access to files on your home server or computer? Well, the solution lies in creating a shared folder. Picture it as a unique space on your home PC that you can seamlessly open from your phone or laptop, regardless of your location. With the addition of Meshnet, you can enjoy access to this folder without compromising the security of your home network to external threats.

[Meshnet](https://nordvpn.com/meshnet/) establishes secure private tunnels between your devices using [NordLynx technology](https://nordvpn.com/blog/nordlynx-protocol-wireguard/), ensuring top-grade security for connections between devices. With this technology, file sharing between peers worldwide becomes not only safe but also fast.

This guide details how to share folders from any desktop device and access them from other devices through Meshnet. By following the setup procedures documented, you can set up shared folders on your devices and securely share them with your [Meshnet peers](/features/linking-devices-in-meshnet).

Here are the articles in this section:

* [Configure and access shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows)
* [Configure and access shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos)
* [Configure and access shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux)
* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Access shared folders from iOS](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv)


# Configure and access shared folders on Windows

Learn how to configure shared folders and access them on Windows over Meshnet.

In this article, you will learn how to set up a shared folder on Windows and access another device's shared folder from a Windows device.

## Configure a shared folder

You can choose from two methods of setting up shared folders: through the graphical interface or the PowerShell command line.

{% tabs %}
{% tab title="GUI" %}
To configure a shared folder using File Explorer's graphical interface, perform the following steps on your Windows device:

1. Right-click the folder that you want to share and select **Properties**.
2. Navigate to the **Sharing** tab and click **Share**.

   <div align="left"><figure><img src="/files/UwaXZiZWDKk1fMrFkM2Z" alt="&#x22;Share&#x22; button highlighted." width="420"><figcaption></figcaption></figure></div>

   &#x20;
3. In the lower-right corner, select **Share** and click **Done**.
4. On the **Sharing** tab, click the **Advanced sharing** button.

   <div align="left"><figure><img src="/files/8eeSfecyErShxijO3YFo" alt="&#x22;Advanced sharing&#x22; button highlighted." width="420"><figcaption></figcaption></figure></div>

   &#x20;
5. In the new window, select the **Share this folder** checkbox. In the **Share name** field, you can change the folder name for network identification, keeping in mind to use a unique name that doesn't include spaces.

   <div align="left"><figure><img src="/files/fZYPRDAu6hAJOWXbtIRA" alt="&#x22;Share this folder&#x22; checkbox selected and the &#x22;Share name&#x22; field highlighted." width="410"><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Apply** to save the changes, and **OK**.

The folder is now ready for access over Meshnet. Your Meshnet peers will need the network path provided in the **Sharing** tab to access the folder remotely, as described further in the article.

<div align="left"><figure><img src="/files/mUhcLg49bBo66tmtaJTZ" alt="Network path of the shared folder highlighted." width="420"><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="PowerShell" %}
You can use the PowerShell command line capabilities to share a folder by taking these steps:

1. Open **PowerShell** as an administrator.

   <div align="left"><figure><picture><source srcset="/files/WliNk2m2SoZZHg4J5g6v" media="(prefers-color-scheme: dark)"><img src="/files/vLelBkLahUgimAfoOYTe" alt="" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Run the following command to create a shared folder:

   &#x20;

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">New-SmbShare -Name "&#x3C;ShareName>" -Path "&#x3C;Path\to\folder>" -FullAccess "&#x3C;Username>"
   </code></pre>

   &#x20;\
   Make sure to replace:

   * `<ShareName>` with your desired share name&#x20;
   * `<Path\to\folder>` with the path to the folder you want to share
   * `<Username>` with the name of your Windows user account\
     &#x20;\
     **Example**

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">New-SmbShare -Name "MeshnetFolder" -Path "C:\Users\meshnet\Desktop\MeshnetFolder" -FullAccess "meshnet"
     </code></pre>

     &#x20;\
     The output should display the details of your new shared folder.

     <div align="left"><figure><img src="/files/GDBtNnTx3WgxD3APt2ix" alt=""><figcaption></figcaption></figure></div>

You have successfully configured your folder for remote access over Meshnet.
{% endtab %}
{% endtabs %}

### Finding PC access credentials

When connecting to the shared folder, you must enter authentication details. The username and password depend on the Windows account the PC uses.

* If you're using a Microsoft account, you can use either:
  * Your Microsoft account's email address and password.\
    &#x20;\
    **Example**

    <div align="left"><figure><picture><source srcset="/files/GG6kmFcYx42MLi8zhg1T" media="(prefers-color-scheme: dark)"><img src="/files/dMpBL4phdH9TC9oFcY5H" alt="Email address and password entered in the authentication dialog fields." width="375"></picture><figcaption></figcaption></figure></div>

    &#x20;
  * Your Windows account's username and Microsoft account's password.\
    &#x20;\
    **Example**

    <div align="left"><figure><picture><source srcset="/files/0DVCqDnrHTSJGwAJ3JNc" media="(prefers-color-scheme: dark)"><img src="/files/AJQrSYfl3FGmYewIZL5m" alt="Username and password entered in the authentication dialog." width="375"></picture><figcaption></figcaption></figure></div>

    &#x20;
* If you're using a local Windows account, you need to use the account's username and password.

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

To view your Windows account's username, run the following command in **PowerShell**:

{% code overflow="wrap" %}

```powershell
$env:username
```

{% endcode %}
{% endhint %}

## Access shared folders

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

You can find platform-specific instructions for accessing the shared folder in the appropriate guides:

* [Access shared folders from macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders)
* [Access shared folders from Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#access-shared-folders)
* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Access shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv)
  {% endhint %}

To connect to a folder shared by another device in your Meshnet from a Windows device:

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Press the **Windows**<img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> key + **R** on your keyboard to open the **Run** command dialog.
3. Enter `\\`, paste the Nord name, followed by a backslash (\\) and the name of the network share.\
   &#x20;\
   **Example**

   `\\secret.meerkat-himalayas.nord\MeshnetFolder`\
   &#x20;\
   &#x20;The format must match the network path in the folder’s sharing properties, replacing the device’s name with the Nord name.
4. Click **OK**.
5. In the **Enter network credentials** dialog, click **More choices** and select **Use a different account**.
6. Enter the username and password for accessing the shared folder.&#x20;

   <div align="left"><figure><picture><source srcset="/files/yuM4jb6ouPZT1cmdi4sA" media="(prefers-color-scheme: dark)"><img src="/files/P3tzmVPrb06xWIGJyx2g" alt="Windows defender dialog with filled in authentication credentials." width="517"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   Optionally, you can select **Remember my credentials** option, so you won't need to enter authentication details for this folder again.&#x20;
7. Click **OK**.

The shared folder should now open in File Explorer.

### Mount a shared folder

Accessing a shared folder using the **Run** command dialog can get tedious because you have to enter the folder's network path each time. To overcome this, you can map the folder directly on your system and conveniently access it anytime.

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Open **File Explorer** and select **This PC** from the menu on the left.
3. Select to map a new network drive.
   * On Windows 11: click the **More** button and choose **Map network drive**.

     <figure><picture><source srcset="/files/90feDcG3umjkbWGQ0Piz" media="(prefers-color-scheme: dark)"><img src="/files/2f8qQsDrbRUxLeKsAtnc" alt="Map network drive selected in the more menu"></picture><figcaption></figcaption></figure>

     &#x20;
   * On Windows 10: in the upper-left corner, click **Computer** and select **Map network drive**.

     <div align="left"><figure><picture><source srcset="/files/n45BaLYwNJiFtacqSZCx" media="(prefers-color-scheme: dark)"><img src="/files/tCzJHXdKIQOvjVmHFnnn" alt="Clicking &#x22;Computer&#x22; and then &#x22;Map network drive&#x22;."></picture><figcaption></figcaption></figure></div>

     &#x20;
4. From the **Drive** dropdown list, select a drive letter.
5. In the **Folder** field, enter `\\` and paste the Nord name followed by a backslash (\\) and the name of the network share.\
   &#x20;\
   **Example**

   `\\secret.meerkat-himalayas.nord\MeshnetVideos`\
   &#x20;

   <div align="left"><figure><img src="/files/qWBGiG2OUoQMqi5Sdd8N" alt="The &#x22;Folder&#x22; field highlighted with the path to the shared folder entered."><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Connect using different credentials** and click **Finish**.
7. Enter the required username and password for accessing the shared folder and click **OK**.

The mounted network drive will now be visible and easily accessible from **This PC**, under **Network locations**.

<div align="left"><figure><picture><source srcset="/files/OD8BwB4zl01IYC0RDxGQ" media="(prefers-color-scheme: dark)"><img src="/files/sVOHDBVPFuiUbBQRs4qp" alt="Mapped network folder visible."></picture><figcaption></figcaption></figure></div>

## See also

* [Configure and access shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos)
* [Configure and access shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux)


# Configure and access shared folders on macOS

Learn how to configure shared folders and access them on macOS over Meshnet.

In this article, you will learn how to set up a shared folder on macOS and access another device's shared folder from a macOS device.

## Create a sharing user

To grant access to your shared content for Meshnet peers, you need to create a new sharing user on your macOS. This newly created account must have a username and password, which will serve as authentication credentials for accessing the shared folder.

{% tabs %}
{% tab title="macOS Sonoma 14" %}

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings**, and then click **Users & groups**.
2. Click **Add user**.

   <div align="left"><figure><picture><source srcset="/files/WGlPzxxjrUES84JFX3lr" media="(prefers-color-scheme: dark)"><img src="/files/qliU2qRynLwYfs97N30T" alt="&#x22;Add user...&#x22; button highlighted under a list of users." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Enter your device's password and select **Unlock**.
4. In the new window, click the **New user** pop-up menu and then choose **Sharing only**.
5. Enter a name and password for the user.
6. Click **Create user**.

   <div align="left"><figure><picture><source srcset="/files/lm79WOG22YJg1D2Ez8iW" media="(prefers-color-scheme: dark)"><img src="/files/gFQJwkRlNv7NbJWthE24" alt="New user creation window with filled in details." width="563"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS Ventura 13" %}

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings**, and then click **Users & groups**.
2. Click the **Add account** button.
3. Enter your device's password and select **Unlock**.
4. In the new window, click the **New account** pop-up menu and then choose **Sharing only**.
5. Enter a name and password for the user.
6. Click **Create user**.

   <div align="left"><figure><picture><source srcset="/files/ZsQUIdL2hZJhue49C4KW" media="(prefers-color-scheme: dark)"><img src="/files/Q9ajRxN0peTymCnPufD5" alt="New account creation window with filled in details." width="563"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS Monterey 12 or older" %}

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System preferences**, and then click **Users & groups**.
2. Unlock the settings menu by clicking the lock in the lower-left corner of the window.

   <div align="left"><figure><img src="/files/RxFY5zD1qfGElsp5znHe" alt="Lock button" width="425"><figcaption></figcaption></figure></div>

   &#x20;
3. Enter your device’s password and select **Unlock**.
4. Click the plus (+) button on the sidebar menu.
5. In the new window, click the **New account** pop-up menu and then choose **Sharing only**.
6. Enter a name and password for the user.
7. Click **Create user**.

   <div align="left"><figure><img src="/files/x4357ITvWWJjttDLFFfQ" alt="User account creation window" width="563"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

## Configure a shared folder

Once you have created the sharing account, you can proceed to enable file sharing on your system and share your desired folder.

{% tabs %}
{% tab title="macOS Sonoma 14" %}

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings** > **General**, and click **Sharing**.
2. Under **Content and media**, enable the **File sharing** toggle and click the Info<img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line">button.

   <div align="left"><figure><picture><source srcset="/files/M2bSiXPs2QAsfvlK1c24" media="(prefers-color-scheme: dark)"><img src="/files/5MsmaryXtjknIXiZg1rF" alt="&#x22;File sharing&#x22; toggle enabled." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **Shared folders** section, click the plus (+) button, choose the folder you want to share, and select **Open**.
4. Click the **Options** button.
5. Under **Windows file sharing**, select the user account you created earlier and click **Done**. You may be asked to enter the password of the added user.

   <div align="left"><figure><picture><source srcset="/files/x3IjY3aTwvzhOxMJy36y" media="(prefers-color-scheme: dark)"><img src="/files/mQbCkC5Kc8N4OdzCOFj4" alt="&#x22;meshnet&#x22; user account selected and &#x22;Done&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Done** to exit.

   <div align="left"><figure><picture><source srcset="/files/Man1YgswrgYRGyB6LBl1" media="(prefers-color-scheme: dark)"><img src="/files/NnIXyOhDjktH1vkolXiw" alt="&#x22;Done&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

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

Due to a bug in macOS Sonoma, sharing-only users may not be displayed under the **Windows file sharing** section. In such cases, you should use your standard macOS user credentials to access the shared folder.
{% endhint %}
{% endtab %}

{% tab title="macOS Ventura 13" %}

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings** > **General**, and click **Sharing**.
2. Enable the **File sharing** option and click the Info<img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line">button.

   <div align="left"><figure><picture><source srcset="/files/hgJgC7dffzFhY4dkV3LO" media="(prefers-color-scheme: dark)"><img src="/files/fkJeNJWXgWxxjiBeZFPv" alt="Enabling the File sharing toggle." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Add the folders you want to share by clicking the plus (+) button in the **Shared folders** section.
4. Click the **Options** button.
5. Under **Windows file sharing**, select the user created earlier, and click **Done**. You may be asked to enter the password of the added user.

   <div align="left"><figure><picture><source srcset="/files/Cdhq1S9NPFBFFJeXJY4s" media="(prefers-color-scheme: dark)"><img src="/files/vwPXbSZD4VABom4vjQdh" alt="Enabling SMB sharing for the &#x27;meshnet&#x27; user." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Done** to exit.

   <div align="left"><figure><picture><source srcset="/files/wbRi9ZJCRdjrpkNmRzyF" media="(prefers-color-scheme: dark)"><img src="/files/WMf79KMVZYAaYTjgtZHX" alt="" width="563"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS Monterey 12 or older" %}

1. Select the Apple menu<img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System preferences**, and then click **Sharing**.
2. Select **File sharing** and add the folders you want to share by clicking the plus (+) button.
3. To allow devices with other operating systems to access the shared folders, click the **Options** button in the **File sharing** section.
4. In the new window, select **Share files and folders using SMB**, select the user created earlier, and click **Done**. You may be asked to enter the password of the added user.

   <div align="left"><figure><img src="/files/s1PrWgxl0kZRXzKk0ah1" alt="Enabling SMB sharing for the &#x27;meshnet&#x27; user." width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. The finished configuration should look as shown:

   <div align="left"><figure><img src="/files/4ZxGUao25z18aUsNrnxb" alt="File sharing settings"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

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

To access the shared folder, the peer device will need to use the sharing account's username and password for authentication.
{% endhint %}

## Access shared folders

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

You can find platform-specific instructions for accessing the shared folder in the appropriate guides:

* [Access shared folders from Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#access-shared-folders)
* [Access shared folders from Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#access-shared-folders)
* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Access shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv)
  {% endhint %}

To connect to a folder shared by a peer device in your Meshnet from a macOS device, you can use the Connect to server function of **Finder** <img src="/files/8CGDSomU3nlKJ0EEI2jB" alt="" data-size="line">.

1. Copy the sharer's Nord name from the NordVPN app by clicking it and choosing **Copy device’s Nord name**.

   <div align="left"><figure><picture><source srcset="/files/6Jmu6qmxXg98CRwFzL6p" media="(prefers-color-scheme: dark)"><img src="/files/OpGAlgyVaFmUTzLTGduF" alt="Selecting &#x22;Copy device&#x27;s Nord name&#x22; in the NordVPN app."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Control-click **Finder** <img src="/files/8CGDSomU3nlKJ0EEI2jB" alt="" data-size="line"> and choose **Connect to server**.

   <div align="left"><figure><picture><source srcset="/files/Iu4IOK8nD33ppUBrjf9r" media="(prefers-color-scheme: dark)"><img src="/files/rT2aQwBn4s4nuQ5bmWBj" alt="&#x22;Connect to server&#x22; option highlighted." width="251"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the new window, enter `smb://`, paste the Nord name followed by a slash (/) and the name of the shared folder, and then click **Connect**. \
   &#x20;\
   **Example**

   `smb://secret.meerkat-andes.nord/MeshnetFolder`

   &#x20;

   <div align="left"><figure><picture><source srcset="/files/Z9gaZtzDQB8dfWscN8Cx" media="(prefers-color-scheme: dark)"><img src="/files/zLMQbKmiQFtXzctQc31K" alt="Shared folder&#x27;s path entered in the &#x22;Connect to server&#x22; dialog." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Connect** once more to confirm the connection.
5. Select **Registered user**, and enter the username and password for accessing the shared folder.&#x20;
6. If you don't want to enter authentication details for this folder again in the future, select the **Remember this password in my keychain** option.

   <div align="left"><figure><picture><source srcset="/files/LFGXxCtAsA4OOqAQ3GT3" media="(prefers-color-scheme: dark)"><img src="/files/f5BNOaDgO3ttTEsEzkXy" alt="" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
7. Click **Connect**.

The shared folder should now open in **Finder**.

## See also

* [Configure and access shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows)
* [Configure and access shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux)


# Configure and access shared folders on Linux

Learn how to configure shared folders and access them on Linux over Meshnet.

In this article, you will learn how to set up a shared folder on Linux and access another device's shared folder from a Linux device.

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

For this procedure, Ubuntu 24.04 LTS is used as an example.
{% endhint %}

## Prerequisites

Before you begin, download and prepare the [Samba](https://www.samba.org/) app on your Linux device. Samba uses the [SMB](https://nordvpn.com/blog/what-is-smb/) protocol to share resources over the network. If you want to configure a shared folder using the GUI, you should also install the [nautilus-share](https://packages.ubuntu.com/noble/nautilus-share) package.

<details>

<summary>Install Samba</summary>

To install Samba, on your system:

1. Open **Terminal**.
2. Run the following command, which will fetch updates from your repositories and install Samba:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install samba -y
   </code></pre>

</details>

<details>

<summary>Enable Samba authentication</summary>

To secure access to your shared folders, you need to create a Samba password.

1. Open **Terminal**.
2. Run the command below, which will prompt you to create a new Samba password for your current user:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo smbpasswd -a $USER
   </code></pre>

   &#x20;
3. Enter and confirm your new password.

   <div align="left"><figure><img src="/files/eE8XQAk7fWWGRFnfUNTv" alt="Terminal output asking for the SMB password."><figcaption></figcaption></figure></div>

   &#x20;
4. Add your current user to the `sambashare` group with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo usermod -aG sambashare $USER
   </code></pre>

   &#x20;
5. Restart your PC.

</details>

<details>

<summary>GUI only: Install nautilus-share</summary>

The `nautilus-share` extension adds folder-sharing options to the system's context menu allowing convenient setup.

1. Open **Terminal**.
2. Install `nautilus-share` by running the command below:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install nautilus-share -y
   </code></pre>

   &#x20;
3. To activate the extension you need to restart the Nautilus processes. Use this command to quit Nautilus:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nautilus -q
   </code></pre>

   &#x20;\
   Next time you open the **Files** app, Nautilus will start automatically.

</details>

## Configure a shared folder

Depending on your system, you may opt to configure a shared folder using the operating system's file manager or by using the command line.

{% tabs %}
{% tab title="GUI" %}
To create a network share using a file manager's network-sharing options:

1. Right-click the folder you want to share and choose **Sharing options**.

   <div align="left"><figure><picture><source srcset="/files/AvCdBz1xo0L6LYOcH5lC" media="(prefers-color-scheme: dark)"><img src="/files/3ZTh2Vq4bvvDXr19uziD" alt="Selecting &#x22;Sharing options&#x22; from the context menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Select **Share this folder**, and, if needed, enter a custom name for your network share.
3. Click **Create share**.

   <div align="left"><figure><picture><source srcset="/files/aM8jWVBsRjRJq8BPONbD" media="(prefers-color-scheme: dark)"><img src="/files/9hXVNULrKTKNeYClThWL" alt="&#x22;Create share&#x22; buttong highlighted." width="375"></picture><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Terminal" %}
Take the following steps to share a folder via the command line:

1. Open **Terminal**.
2. Navigate to the folder that you want to share and print out its absolute path by using the `pwd` command.\
   &#x20;

   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/home/meshnet/Desktop/MeshnetFolder
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/6217NvzPjJMFhIFMcpIM" alt="Output of &#x27;pwd&#x27; command"><figcaption></figcaption></figure></div>

   &#x20;
3. Run the following command to open the Samba configuration file using the Nano text editor:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /etc/samba/smb.conf
   </code></pre>

   &#x20;
4. At the end of the file, append the following lines where `<ShareName>` is the name for your network share and `</path/to/folder>` is the absolute path of the folder from step 2:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">[&#x3C;ShareName>]
   path = &#x3C;/path/to/folder>
   read only = no
   browsable = yes 
   </code></pre>

   &#x20;

   **Example**

   <div align="left"><figure><img src="/files/aw5cAcW6TK5CGfBVLx7O" alt="Samba configuration file with the changes for the shared folder."><figcaption></figcaption></figure></div>

   &#x20;
5. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.
6. Run the following command to restart the Samba process:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl restart smbd
   </code></pre>

{% endtab %}
{% endtabs %}

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

To access the shared folder, the peer device will need to use your Linux username and the previously created Samba password for authentication.
{% endhint %}

## Access shared folders

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

You can find platform-specific instructions for accessing the shared folder in the appropriate guides:

* [Access shared folders from Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#access-shared-folders)
* [Access shared folders from macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders)
* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Access shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv)
  {% endhint %}

Most Linux file managers let you directly access files shared on other devices. In this example, you will learn how to access a network share using GNOME Files.

1. Run the `nordvpn meshnet peer list` command and copy the Nord name of the sharer's device.

   <div align="left"><figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Terminal output of the &#x27;nordvpn meshnet peer list&#x27; command with a peer device&#x27;s Nord name underlined."><figcaption></figcaption></figure></div>

   &#x20;
2. Open GNOME **Files** and select **Other locations** in the sidebar.

   <div align="left"><figure><picture><source srcset="/files/Cw1KOzszdpKMMZTJhPiH" media="(prefers-color-scheme: dark)"><img src="/files/1k8Tn87mJyaNWalfOqfP" alt="&#x22;Other locations&#x22; option highlighted." width="278"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **Enter server address** field at the bottom, type in`smb://`, paste the copied Nord name, add a slash (/) followed by the network share name, and click **Connect**.\
   &#x20;\
   **Example**

   `smb://secret.meerkat-himalayas.nord/MeshnetFolder`\
   &#x20;

   <div align="left"><figure><picture><source srcset="/files/54WZGRjdDZDGIDEHbA53" media="(prefers-color-scheme: dark)"><img src="/files/llgY9ca9y0GAUcNgaGPU" alt="Shared folder&#x27;s network path entered in the file manager."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select **Registered user** and enter the username and password for accessing the shared folder.

   <div align="left"><figure><picture><source srcset="/files/veKbOmyfr0mb3hnnHqRz" media="(prefers-color-scheme: dark)"><img src="/files/tkwRlo5nFCg8yO27lRXz" alt="" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Connect**.

The shared folder should now open in the file manager.

## Mount a shared folder

The shared folder you connect to becomes unavailable after a system restart, which means that you would need to reconnect to the folder each time you wish to access the files stored in it. However, by utilizing [CIFS](https://wiki.samba.org/index.php/LinuxCIFS_utils), you can mount the shared folder directly on your system and use it as a persistent storage location.

### Prepare a mounting point

1. Open **Terminal**.
2. Fetch repository updates and install CIFS by entering the following:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install cifs-utils -y
   </code></pre>

   &#x20;
3. Create a new directory using the `mkdir` command, where you want to mount the shared folder.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir SharedFolder
   </code></pre>

   &#x20;
4. Navigate to the newly created folder using the `cd` command and print out its full path using the `pwd` command.

   <div align="left"><figure><img src="/files/H4ZP4Uzt0jZEpm0cFOwE" alt="Ouput of &#x27;pwd&#x27; command"><figcaption></figcaption></figure></div>

   &#x20;
5. Check your user ID number by executing this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">echo $UID
   </code></pre>

### Edit the file system table

1. Open the `fstab` file with root privileges using the Nano text editor by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /etc/fstab
   </code></pre>

   &#x20;
2. At the end of the file, append the following line for the shared folder:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">//&#x3C;NordName>/&#x3C;ShareName> &#x3C;/path/to/folder> cifs username=&#x3C;USERNAME>,password=&#x3C;PASSWORD>,uid=&#x3C;UID>,iocharset=utf8 0 0
   </code></pre>

   &#x20;

   Where:

   * &#x20;`<NordName>` is the Nord name or the Meshnet IP of the host device.
   * &#x20;`<ShareName>` is the name of the network share you are trying to access
   * `</path/to/folder>` is the path to the mounting point from Step 4 of the [Prepare a mounting point](#prepare-a-mounting-point) section.
   * `<USERNAME>` and `<PASSWORD>` are the authentication details for accessing the shared folder.
   * `<UID>` is the user ID from Step 5 of the [Prepare a mounting point](#prepare-a-mounting-point) section.

     &#x20;\
     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">//secret.meerkat-pyrenees.nord/MeshnetFolder /home/meshnet/SharedFolder cifs username=meshnet,password=securepwd123,uid=1000,iocharset=utf8 0 0
     </code></pre>

     &#x20;
3. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.
4. Run the following command to mount the network share:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo mount -a
   </code></pre>

   &#x20;
5. Apply the changes to your file system table by reloading SystemD with the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl daemon-reload
   </code></pre>

You can now access the shared folder from the sidebar in the **Files** app.

<div align="left"><figure><picture><source srcset="/files/PLM3u2x4NTV8e4ypoutI" media="(prefers-color-scheme: dark)"><img src="/files/qr1SqYOefW00djimfS50" alt="The mounted shared folder highlighted in the &#x22;Files&#x22; app." width="417"></picture><figcaption></figcaption></figure></div>

## See also

* [Configure and access shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows)
* [Configure and access shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos)


# Access shared folders from Android

Learn how to access shared folders from an Android device over Meshnet.

On this page, you can find instructions for accessing shared folders over Meshnet from an Android device using some of the more popular file managers.

## Before you begin

Make sure that:

* You have configured a shared folder on a desktop device. Refer to the following guides for detailed instructions:
  * [Configure shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#configure-a-shared-folder)
  * [Configure shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#create-a-sharing-user)
  * [Configure shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#prerequisites)
* You have a file manager that allows access to SMB network storage. If the file manager that is installed on your device does not have this capability, you will need to use a third-party app.

## Access shared folders

<details>

<summary>Samsung My Files</summary>

To connect to a shared folder using Samsung's built-in **My Files** app:

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Open **My Files**.
3. Under **Storage**, tap **Network storage**.

   <div align="left"><figure><picture><source srcset="/files/VbatkqAi9NqqVOeGZpIZ" media="(prefers-color-scheme: dark)"><img src="/files/HSJY1yu6bF0LsdR2hxek" alt="&#x22;Network storage&#x22; option highlighted in the Samsung My Files app." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select **Add network storage** and choose **Network drive (SMBv2/SMBv3)**.

   <div align="left"><figure><picture><source srcset="/files/iZBx7xhrMD2lyKZERhO0" media="(prefers-color-scheme: dark)"><img src="/files/MVlabfdGw0wETvc0Ptgh" alt="Selecting &#x22;Add new storage&#x22; and &#x22;Network drive (SMBv2/SMBv3)&#x22; buttons." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Add manually**.
6. Fill in the following details:
   * In the **Address** field, paste the copied Nord name, followed by a slash (/) and the name of the network share.\
     &#x20;\
     **Example**\
     `secret.meerkat-pyrenees.nord/MeshnetFolder`\
     &#x20;
   * In the **Port** field, enter `445`.
   * In the **Username** and **Password** fields, enter the credentials required for accessing the shared folder.
   * In the **Display name** field, type in a custom name of how the shared folder will be named in the file manager.
7. Tap **Add**.

   <div align="left"><figure><picture><source srcset="/files/42THxPHtz6dMtZUxaWyR" media="(prefers-color-scheme: dark)"><img src="/files/lJRqw4Nrp6mk4UqUaThj" alt="&#x22;Add&#x22; button highlighted on the &#x22;Add network drive&#x22; screen." width="375"></picture><figcaption></figcaption></figure></div>

The folder should now display its contents inside the file manager

</details>

***

<details>

<summary>Mi File Manager</summary>

Start by downloading and installing the [Mi File Manager](https://play.google.com/store/apps/details?id=com.mi.android.globalFileexplorer\&hl=en\&gl=US) from the Play Store. Once it is installed:

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Launch **File Manager**.
3. In the upper-left corner, tap the three-line menu icon and select **Remote**.

   <div align="left"><figure><picture><source srcset="/files/hPfZ2OVuWYkNifiQtu4w" media="(prefers-color-scheme: dark)"><img src="/files/OJ6zYfqB1pAdY0APkY75" alt="&#x22;Remote&#x22; option highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Tap **Add remote device** > **LAN** > **Edit**.
5. In the **LAN** dialog, fill in the following details:
   * In the **Host** field, paste the copied Nord name.
   * In the **Username** and **Password** fields, type in the authentication details required for accessing the folder.
6. Tap **OK**.\
   \ <picture><source srcset="/files/3oupadI0UICZqa7sQJuT" media="(prefers-color-scheme: dark)"><img src="/files/FsuI44UABFmNgSucAYgx" alt="&#x22;OK&#x22; button highlighted in the filled in LAN dialog."></picture>

The added folder should now be displayed in your file manager. Tap it to display its content.

<picture><source srcset="/files/sxAspsVTUwlikvtTH450" media="(prefers-color-scheme: dark)"><img src="/files/45aP1wdpx1KxmsxNe5nX" alt="Meshnet remote folder displayed in the file manager."></picture>

</details>

***

<details>

<summary>MiXplorer</summary>

You can download and install [MiXplorer ](https://xdaforums.com/t/app-2-2-mixplorer-v6-x-released-fully-featured-file-manager.1523691/post-23109280)from either the Play Store or using the `.apk` file. After installing the app:

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Launch **MiXplorer**.
3. At the bottom, tap the plus (+) button and select **Storage**.

   <div align="left"><figure><picture><source srcset="/files/gP2SpQQsGpLOAX80tfKi" media="(prefers-color-scheme: dark)"><img src="/files/4Nk7YfF3YOvT12k1khvj" alt="List of options after tapping the plus button." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. From the list of options, choose **LAN (Samba)**.
5. Fill in the following details:
   * In the **URI address** field, paste the copied Nord name, followed by a slash (/) and the name of the network share.\
     &#x20;\
     **Example**\
     `secret.meerkat-pyrenees.nord/MeshnetFolder`\
     &#x20;
   * In the **Username** and **Password** fields, enter the credentials required for accessing the shared folder.
   * In the **Display name** field, type in a custom name of how the shared folder should be displayed in the file manager.
6. Tap **Save**.

   <div align="left"><figure><picture><source srcset="/files/OGbDgf6jsBiU6cCDP9He" media="(prefers-color-scheme: dark)"><img src="/files/fsawBkO2tou9gZnnlqIK" alt="&#x22;Save&#x22; button highlighted in the filled in SMB dialog." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
7. If prompted, tap **Agree** to grant the file manager access to the files on your device.

   <div align="left"><figure><picture><source srcset="/files/OKTxH0ua6wGpkbnBhxBI" media="(prefers-color-scheme: dark)"><img src="/files/iz70yX5Ra3SXiTDd9sUh" alt="&#x22;Agree&#x22; button highlighted on the permission dialog." width="375"></picture><figcaption></figcaption></figure></div>

You can now find the added folder by tapping the three-line menu from the upper-left corner.

<picture><source srcset="/files/K1xIc73bTKgxiP3TVqXG" media="(prefers-color-scheme: dark)"><img src="/files/0gkemqYOGrX4f5yz0fw3" alt="Newly added shared folder highlighted." data-size="original"></picture>

</details>

***

<details>

<summary>Cx File Explorer</summary>

Begin by downloading [Cx File Explorer](https://play.google.com/store/apps/details?id=com.cxinventor.file.explorer\&hl=en\&gl=US) from the Play Store. Upon installing it:

1. Copy the sharer's Nord name directly from the NordVPN app.
2. Launch **Cx File Explorer**.
3. Switch to the **Network** tab and select **New location**.

   <div align="left"><figure><img src="/files/3BNx6DMPQOygqo7BkNGD" alt="&#x22;New location&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. Under the **Remote** tab, choose **SMB**.

   <div align="left"><figure><img src="/files/sZ58uafIxly5IlcumyXc" alt="&#x22;SMB&#x22; option highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Fill in the following details:
   * In the **Host** field, paste the copied Nord name, followed by a slash (/) and the name of the network share.\
     &#x20;\
     **Example**\
     `secret.meerkat-pyrenees.nord/MeshnetFolder`\
     &#x20;
   * In the **Username** and **Password** fields, enter the credentials required for accessing the shared folder.
6. Tap **OK**.<br>

   <div align="left"><figure><img src="/files/6m1MmHolnHrv8qQSIrkZ" alt="&#x22;OK&#x22; button highlighted in the SMB dialog with filled in details." width="375"><figcaption></figcaption></figure></div>

The shared folder should now open in the file manager. You can locate the folder later under the **Network** tab on the main app screen.

![The added shared location highlighted](/files/jjSiyOvfeXsM9GtE0lnA)

</details>

## See also

* [Access shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv#before-you-begin)


# Access shared folders from iPhone/iPad

Learn how to access shared folders from an iOS/iPadOS device over Meshnet.

In this article, you will learn how to access another device's shared folder from an iPhone or an iPad.

## Before you begin

Make sure that you have configured a shared folder on a desktop device. Refer to the following guides for detailed instructions:

* [Configure shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#configure-a-shared-folder)
* [Configure shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#create-a-sharing-user)
* [Configure shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#prerequisites)

## Access shared folders

To connect to a shared folder from an iOS/iPadOS device:

1. Copy the sharer's Nord name from the NordVPN app.

   <div align="left"><figure><picture><source srcset="/files/h7H8jPUWzv5xEJ1l9MF1" media="(prefers-color-scheme: dark)"><img src="/files/7OkMGKIIjfqbq2EbJqDa" alt="Peer device&#x27;s Nord name highlighted in the NordVPN app." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open the **Files** app and switch to the **Browse** section.
3. In the upper-right corner, tap the More <img src="/files/CCx8RTTzCv8qYY5qXIQt" alt="" data-size="line"> button and select **Connect to server**.

   <div align="left"><figure><picture><source srcset="/files/lyVQOtAHXZM7O0QY6DIy" media="(prefers-color-scheme: dark)"><img src="/files/o8opuWIV9CuOwlrUVQLf" alt="Arrow pointing the the More button and the &#x22;Connect to server&#x22; option is highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Server** field, paste the Nord name followed by a slash (/) and the shared folder name.\
   &#x20;\
   **Example**

   `secret.meerkat-pyrenees.nord/MeshnetFolder`\
   &#x20;
5. In the upper-right corner, tap **Connect**.

   <figure><picture><source srcset="/files/e55itAWKeDpkHVbUhNsN" media="(prefers-color-scheme: dark)"><img src="/files/KAntA1dPNhsDOx4tmBIj" alt="Connect to server screen with the shared folder&#x27;s path entered and the &#x22;Connect&#x22; button is highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
6. Select **Registered user** and fill in the required username and password for accessing the shared folder.
7. Tap **Next**.

   <figure><picture><source srcset="/files/vV1ueYSEF5ugg16YG3aF" media="(prefers-color-scheme: dark)"><img src="/files/9TfzUAeQjyMgB8gNp3Kc" alt="&#x22;Next&#x22; button highlighted."></picture><figcaption></figcaption></figure>

The shared folder should now be visible in your **Files** app.

<div align="left"><figure><picture><source srcset="/files/ss8Khn3kmNDhSFcEE7sD" media="(prefers-color-scheme: dark)"><img src="/files/ZbrkpEyNZSR0A9nQsmql" alt="Added folder displayed in &#x22;Files&#x22;." width="375"></picture><figcaption></figcaption></figure></div>

To access the folder at a later date, you can find it in **Files**, under the **Shared** section.

<div align="left"><figure><picture><source srcset="/files/WfLZoMZJR26hIQPHUoDk" media="(prefers-color-scheme: dark)"><img src="/files/lyoItPOT11EgwOD1OmuB" alt="The added network location displayed under Shared." width="375"></picture><figcaption></figcaption></figure></div>

## See also

* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android#before-you-begin)
* [Access shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv#before-you-begin)


# Access shared folders from Android TV

Learn how to access shared folders from an Android TV device over Meshnet.

In this article, you will learn how to access another device's shared folder from an Android TV device.

## Before you begin

Make sure that:

* You have configured a shared folder on a desktop device. Refer to the following guides for detailed instructions:
  * [Configure shared folders on Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#configure-a-shared-folder)
  * [Configure shared folders on macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#create-a-sharing-user)
  * [Configure shared folders on Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#prerequisites)
* You have a file manager that allows access to SMB network storage. In this guide, the X-plore file manager is used as an example.

## Access shared folders

To connect to a shared folder:

1. On your Android TV, download and install the [X-plore file manager](https://play.google.com/store/apps/details?id=com.lonelycatgames.Xplore\&hl=en\&gl=US) from Google Play.
2. Launch **X-plore file manager**. \
   &#x20;\
   If requested, grant X-plore permission to access media on your device.

   <div align="left"><figure><img src="/files/YUH8VANp3YAa0lBYOgMj" alt="Selecting &#x27;Allow&#x27; to grant X-plore access to photos and media."><figcaption></figcaption></figure></div>

   &#x20;
3. In the right pane, navigate to **LAN** > **Add server**, and then select **Add server**.

   <figure><picture><source srcset="/files/IpYZuQvOd7hteskivSxg" media="(prefers-color-scheme: dark)"><img src="/files/S5tgJGpROoMA7pWy73st" alt="Selecting &#x27;LAN&#x27; > &#x27;Add server&#x27; > &#x27;Add server&#x27; in the file manager."></picture><figcaption></figcaption></figure>

   &#x20;
4. Fill in the following details:
   * In the **Label** field, enter a custom name for the shared folder, which will be shown in the file manager.
   * In the **Server** field, type in the Nord name of the sharer's device.
   * In the **Path** field, enter the name of the network share.
   * In the **Username** and **Password** fields, enter the authentication details required for accessing the shared folder\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/TOeu7LQduwnlHg2Cg6Ic" media="(prefers-color-scheme: dark)"><img src="/files/Kv4Hl157WY3PXmM1pcom" alt="The &#x27;Add server&#x27; dialog filled in with the shared folder&#x27;s information." width="563"></picture><figcaption></figcaption></figure></div>

     &#x20;
5. Select **Test** to check whether the connection can be established. Then, select **Save**.

The added folder should now be visible on the right pane, under **LAN**. Select it to display the files available in the folder.

<div align="left"><figure><picture><source srcset="/files/c1GVb9srx9xRQSdHCjSz" media="(prefers-color-scheme: dark)"><img src="/files/GXVlT2LX4DRAlCNShoco" alt="Contents of the shared folder visible in the file manager." width="563"></picture><figcaption></figcaption></figure></div>

## See also

* [Access shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android#before-you-begin)
* [Access shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios#before-you-begin)


# How to watch videos over Meshnet using Kodi

Learn how to configure your personal video library on a desktop device and access it remotely using Kodi — a free and open-source media player application developed by the Kodi Foundation.

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

Media content lovers will perhaps agree that an excellent media player includes three things:

* An option to conveniently arrange files
* Having remote access to shared media folders
* A secure connection is set up among multiple user devices

However, such digital solutions can be costly, have gaps in data security, or not be supported by all operating systems. But imagine you are often on business trips or take long rides on public transport. You surely deserve a convenient way to watch your favorite videos (like a cherished wedding video) lawfully stored on your home device, without exposing your personal data and using whatever device you have at hand. Luckily, this is achievable with Kodi and NordVPN’s [Meshnet](https://nordvpn.com/meshnet/) feature.

[Kodi ](https://kodi.tv/about/)is a widely used open-source media player that supports various kinds of media — from movies and TV shows to pictures and games. It not only allows you to navigate through your locally stored media but also lets you add network locations. You can use this feature to access media files from other devices remotely.

You might wonder how Meshnet can help with that. Without Meshnet, to access devices in a remote location, you may need to go around network configuration and have port forwarding rules set up, which is not always easy or secure.

With Meshnet, your devices are linked together and exchange data via encrypted tunnels.

### How remote media access works <a href="#how-remote-media-access-works" id="how-remote-media-access-works"></a>

To remotely access media files, you need to have a host device acting as a server, which would have a shared folder set up with the media that you wish to access. After that, all other devices will be connected to the host device as clients using the Kodi media player.

<figure><img src="/files/EzvgMyvDrnBan90TLP13" alt="Three devices accessing a home computer from an outside network via Meshnet."><figcaption><p>Figure 1. Setup for remote media access using Kodi</p></figcaption></figure>

## Before you begin

To follow the guide, you should configure a shared folder that will store your media files. The folder can be shared from devices using Windows, macOS, or Linux operating systems. see the  [How to set up and access shared folders](/how-to/remote-files-media-access/set-up-folder-sharing) article for detailed instructions for each platform.

## Access shared folders using the Kodi media player <a href="#access-shared-folders-using-the-kodi-media-player" id="access-shared-folders-using-the-kodi-media-player"></a>

Once you have finished setting up the shared folder, it is time to configure the Kodi media player. For this configuration, an Android device will be used as an example. Nevertheless, the same process can be carried out on all available operating systems.

### Install Kodi <a href="#install-kodi" id="install-kodi"></a>

Download and how-to guides can be found on the official Kodi website:

* [Download and install Kodi for Android](https://kodi.tv/download/android)
* [Setup instructions](https://kodi.wiki/view/HOW-TO:Install_Kodi_for_Android)

### Add the shared folder on Kodi <a href="#add-the-shared-folder-on-kodi" id="add-the-shared-folder-on-kodi"></a>

1. Launch **Kodi** and tap **Settings**.

   <div align="left"><figure><img src="/files/9bh9armDNfPKUu7GDbQC" alt="An arrow pointing to the Settings button on the main screen of the Kodi application."><figcaption></figcaption></figure></div>

   &#x20;

2. Select **File manager** and tap **Add source**.

   <div align="left"><figure><img src="/files/NjFkXOeKzCsT4X3kfzP0" alt="Add source option highlighted in Kodi&#x27;s File manager."><figcaption></figcaption></figure></div>

3. In the new window, tap **Browse** and select **Add network location** from the list of available sources.

   <div align="left"><figure><img src="/files/cfIbFL112qL02HLcUCHF" alt="Add network location highlighted in the list network share options."><figcaption></figcaption></figure></div>

4. Fill in the network location configuration window with the information about your shared folder.
   * **Protocol**: Windows network (SMB)
   * **Server name**: Nord name or Meshnet IP of the desktop device
   * **Shared folder**: Name of the network share\
     \
     **Example**

     <div align="left"><figure><img src="/files/tqT1uIEJ8K1vjriVtc4J" alt="Add network location window filled in with information about the Meshnet network share."><figcaption></figcaption></figure></div>

     &#x20;\
     You can find your computer's Nord name and Meshnet IP address in the NordVPN app.

     <div align="left"><figure><picture><source srcset="/files/DM8laWAQe3kF5YaaiCDl" media="(prefers-color-scheme: dark)"><img src="/files/amVEdcFYSnL9Z3spOyX5" alt="Nord name and Meshnet IP address of a Windows device."></picture><figcaption></figcaption></figure></div>

     &#x20;

5. With the network share added, tap **OK**.

   <div align="left"><figure><img src="/files/OLZ6MY59xEO7RgmJAhEQ" alt="Meshnet network share highlighted in the list of available network locations."><figcaption></figcaption></figure></div>

   &#x20;

6. Now you can enter a different name for the share for easier navigation inside the Kodi application (for example, `MeshnetVideos`). Select **OK**.

   <div align="left"><figure><img src="/files/nib0HKr1GvGzsE1ylav6" alt="Meshnet network share and its custom name inside Kodi."><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Note**\
Kodi 19 and newer does not allow access to SMB shares with empty **Username** and **Password** fields. You must enter authentication details to access the shared folder.
{% endhint %}

### Map the media share on Kodi <a href="#map-the-media-share-on-kodi" id="map-the-media-share-on-kodi"></a>

1. From Kodi’s main page, select the media content category of your choice and click **Add videos**.

   <div align="left"><figure><img src="/files/1bzkJWFfDF7UlGiJ7uEx" alt="Add videos button highlighted in Kodi application."><figcaption></figcaption></figure></div>

2. Tap **Browse**, select the newly added network share from the list, and tap **OK**.

3. You may enter a custom name for the network share once again and select **OK**.

4. Select the category of content that is available in the shared folder.

   <div align="left"><figure><img src="/files/cICd4t1lwGmREWCFufkl" alt="List of content categories for the added folder."><figcaption></figcaption></figure></div>

   \
   You can find more detailed information about the set content settings menu on the [Kodi website](https://kodi.wiki/view/Adding_video_sources) under the "Set content" section.

5. Once you finish all of the necessary adjustments, select **OK**.

You've successfully mapped the shared folder inside Kodi[ ](https://kodi.tv/download/)to the category you selected. Now, you can access all of the media content stored inside the folder on the Windows machine right from the Kodi app.

<div align="left"><figure><img src="/files/wJQIEhmZAJ7y2wu43s6l" alt="Meshnet network share highlighted in the Kodi video library."><figcaption></figcaption></figure></div>

You can then enter the folder, view files, and start watching by clicking the desired file.

<div align="left"><figure><img src="/files/B2xwoZKjlC1SlG28yxie" alt="Media content stored in the Meshnet network share visible in Kodi."><figcaption></figcaption></figure></div>

You've set up your machine with a Windows OS as a secure media host, accessible globally via the Kodi media player.

To add more media folders, like TV shows or music, share them from your desktop device and map them to Kodi following the earlier instructions.

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

To access the shared media content using the Kodi media player, Meshnet must stay enabled on the server and client devices all the time.
{% endhint %}


# How to configure and access a Jellyfin media server remotely

Learn how to configure the Jellyfin media system on Windows, macOS, and Linux and access it remotely from other devices using Meshnet.

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

[Jellyfin](https://jellyfin.org/docs/)<img src="/files/appTk4arJT1he9Jl7GuE" alt="" data-size="line"> is an easy-to-use, open-source media system that enables you to have a single device that covers all your media needs: managing, viewing, sharing, and more. The server can be set up locally on all three desktop operating systems keeping you in full control of your data. However, accessing video files on the Jellyfin server from outside the [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) requires [port forwarding](https://nordvpn.com/blog/port-forwarding/) or advanced networking configurations.

By using [Meshnet](https://nordvpn.com/meshnet/), you can connect the Jellyfin server and the client devices to a single virtual network without changing your router or [firewall](https://nordvpn.com/cybersecurity/glossary/vpn-firewall/) settings. This setup enables remote access to your Jellyfin server’s content from anywhere in the world.

For a quick start, check out our video tutorial.

{% embed url="<https://www.youtube.com/watch?v=V9rVlvYOh5c>" fullWidth="false" %}

This article also contains written instructions for setting up your personal Jellyfin server and accessing your video library remotely using Meshnet.

## Install Jellyfin server <a href="#configure-a-jellyfin-server" id="configure-a-jellyfin-server"></a>

To start setting up, first, install the Jellyfin server software

{% tabs %}
{% tab title="Windows" %}
To install the Jellyfin server on Windows:

1. Navigate to the [Jellyfin download page for Windows](https://repo.jellyfin.org/?path=/server/windows/latest-stable/amd64).
2. Download the latest installer file.

   <div align="left"><figure><img src="/files/FdvZwiuDuTbKWf7PZDEQ" alt="Arrow pointing to the latest installer download hyperlink."><figcaption></figcaption></figure></div>

   &#x20;
3. Launch the Jellyfin installer. \
   &#x20;\
   If you receive a Windows Defender SmartScreen dialog, select **More info** and click **Run anyway**.
4. Follow the instructions provided by the installation wizard.
5. Click **Close** to exit the installer.
6. Start your Jellyfin server by doing any of the following:
   * Opening the **Jellyfin server** app from your Desktop.

     <div align="left"><figure><img src="/files/MFK7gjABHQx3VBkSjmCw" alt="" width="91"><figcaption></figcaption></figure></div>

     &#x20;
   * Opening the **Jellyfin tray app** from the start menu.

     <div align="left"><figure><picture><source srcset="/files/2qgI2WqravhIkG6cwtkr" media="(prefers-color-scheme: dark)"><img src="/files/CKVpbrxsIFVKixb2k6O9" alt="&#x22;Jellyfin Tray App&#x22; displayed in the Windows search." width="563"></picture><figcaption></figcaption></figure></div>

You should now see a Jellyfin icon in your system tray.

<div align="left"><figure><picture><source srcset="/files/Ro9ZujHo4Z9JrRujAJmy" media="(prefers-color-scheme: dark)"><img src="/files/MOqxgtWCc4PhyTJiJyzT" alt="Cursor hovering over the Jellyfin icon in the system tray."></picture><figcaption></figcaption></figure></div>

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

If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click **Allow access** to allow connections through the firewall.&#x20;

![](/files/gcETbsnnB6LdzvKgqqqa)
{% endhint %}
{% endtab %}

{% tab title="macOS" %}
To install the Jellyfin server on macOS:

1. Navigate to the [Jellyfin repository page for macOS](https://repo.jellyfin.org/?path=/server/macos/latest-stable).
2. Select your Mac's processor architecture.
   * If you are using an Intel Mac, choose **AMD64**.
   * If you are using an Apple silicon Mac, choose **ARM64**.
3. Download the available package file.

   <div align="left"><figure><img src="/files/V1Ee1NfWrl4jTbuDK0XN" alt="Jellyfin package file highlighted."><figcaption></figcaption></figure></div>

   &#x20;
4. Open the downloaded `.dmg` file.&#x20;
5. Drag the **Jellyfin** package to the **Applications** folder.

   <div align="left"><figure><img src="/files/c41XmCj1hj0pf6ahUL5X" alt="Dragging Jellyfin icon to the Applications folder." width="375"><figcaption></figcaption></figure></div>

   &#x20;
6. In **Finder** <img src="/files/8CGDSomU3nlKJ0EEI2jB" alt="" data-size="line">, navigate to the **Applications** folder and launch **Jellyfin**. If you receive a confirmation dialog, click **Open**.

   <div align="left"><figure><picture><source srcset="/files/dDwyX3zLD3k3RmFot0b5" media="(prefers-color-scheme: dark)"><img src="/files/TlPGRoiIpz4eHUNgAzbL" alt="&#x22;Open&#x22; button highlighted." width="262"></picture><figcaption></figcaption></figure></div>

You should now see a Jellyfin icon in your menu bar.

<div align="left"><figure><picture><source srcset="/files/6OKWSovNm70XDrIZNus7" media="(prefers-color-scheme: dark)"><img src="/files/7f8pTSWR382SMd0BY6Xl" alt="Jellyfin menu bar icon and its options." width="314"></picture><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this section, the Ubuntu 24.04 LTS distribution is used as an example.
{% endhint %}

To install the Jellyfin server on Linux:

1. Open **Terminal**.
2. Execute the Jellyfin installation script with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
   </code></pre>

   &#x20;
3. Press **Enter** to confirm the installation.
4. Once the process is finished, the terminal should display that the Jellyfin service is active.

   <figure><img src="/files/aa7cYCpQ9QLklPPhqohE" alt="Terminal output showing that the Jellyfin service is active and running."><figcaption></figcaption></figure>

   &#x20;\
   Alternatively, may manually check the status of Jellyfin by using the following command:&#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl status jellyfin 
   </code></pre>

{% endtab %}
{% endtabs %}

### Accessing the Jellyfin web interface

After installing and launching Jellyfin, you can begin configuring your server through its web interface.

1. Open your internet browser and visit the following address:\
   &#x20;\
   `http://localhost:8096`\
   &#x20;
2. Follow the instructions provided by the initial configuration wizard.
3. On the **Setup your media libraries** screen, click **Next** without adding any media folders.

   <div align="left"><figure><img src="/files/DCZkr5f7wZVt2Vz23rE9" alt="&#x22;Next&#x22; button highlighted without media libraries added."><figcaption></figcaption></figure></div>

   &#x20; \
   You will find instructions for importing media libraries in the [Add media libraries](#add-media-libraries) section below.
4. Ensure to select the **Allow remote connections to this server** option when prompted.

   <div align="left"><figure><img src="/files/BiwBe9F449A3SwNkRAWV" alt="&#x22;Allow remote connections to this server&#x22; checkbox selected."><figcaption></figcaption></figure></div>

   &#x20;&#x20;
5. Complete the initial setup and click **Finish**.

Your Jellyfin server is now active.

## Add media libraries

To add a media library to the server, you need to guide Jellyfin to where your digital content is located on the system. Jellyfin will then scan the added folders and automatically display all of the compatible files on your server.

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

This section uses a macOS device as an example, but the process is identical on Windows and Linux. The only difference will be the path structure of the media folder directory.
{% endhint %}

To add media files stored locally on your device, follow these steps:

1. Open your Jellyfin server's web interface and sign in to your account.

   <figure><img src="/files/zozws5amASk1Er55mnGj" alt="Jellyfin login screen with username and password fields filled in."><figcaption></figcaption></figure>

   &#x20;
2. In the upper-left corner, select the three-bar menu and, under **Administration**, click **Dashboard**.

   <div align="left"><figure><img src="/files/Dh919nKgtH0McGsGoPrx" alt=" Clicking &#x22;Dashboard&#x22;." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. From the menu on the left, under **Server**, select **Libraries** and click **Add media library**.

   <div align="left"><figure><img src="/files/dLrWsW0gPTEXTOoexktD" alt="&#x22;Libraries&#x22; section of the Jellyfin dashboard open and the &#x22;Add media library&#x22; card is highlighted."><figcaption></figcaption></figure></div>

   &#x20;
4. In the new window, from the dropdown list, select the desired content type and enter a display name.
5. Click the plus (+) button next to **Folders**.

   <div align="left"><figure><img src="/files/xGSrjb0VmcdYZxr4Iist" alt="Add (plus) button highlighted."><figcaption></figcaption></figure></div>

   &#x20;
6. In the **Folder** field, enter the path to your media folder. Alternatively, you can navigate to it using the options underneath.

   <div align="left"><figure><img src="/files/xvJUec1UIJEEgpi9qeP4" alt="Path to the &#x22;Movies&#x22; folder highlighted."><figcaption></figcaption></figure></div>

   &#x20;
7. Click **OK** twice.

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

For additional information regarding media library configuration, refer to the “Media” section under “Server Guide” on the [Jellyfin documentation](https://jellyfin.org/docs/) page.\
!["Media" section under "Server guide" highlighted.](/files/6rRuJ0SSUqWoKxQWi8MU)
{% endhint %}

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

Optionally, you can add shared network locations, like shared folders from your NAS, as media libraries. For more information, see the [Add shared media](#optional-add-shared-media) section at the end of this article.
{% endhint %}

## Secure access to your server <a href="#access-a-jellyfin-server" id="access-a-jellyfin-server"></a>

Before you start using your Jellyfin server, you should modify some of the settings to minimize the risk of [unauthorized access](https://nordvpn.com/blog/unauthorized-access/).

### Restricting remote connections

First, since the remote access option is enabled on the Jellyfin server, it is recommended to restrict the allowed remote connections only to the Meshnet IP range. You can do so by taking these steps:

1. In the Jellyfin web interface, select the three-bar menu and click **Dashboard**.

   <div align="left"><figure><img src="/files/Dh919nKgtH0McGsGoPrx" alt="Clicking &#x22;Dashboard&#x22;." width="375"><figcaption></figcaption></figure></div>

   &#x20;
2. From the menu on the left, under **Advanced**, select **Networking**.

   <div align="left"><figure><img src="/files/uBtQ8nEpV7Drnm7Y4ZRf" alt="Arrow pointing to the &#x22;Networking&#x22; option." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Scroll down to the **Remote access settings** section.
4. In the **Remote IP address filter** field, enter `100.64.0.0/10`.

   <div align="left"><figure><img src="/files/Gy2imkQCOY8LRJjtelHx" alt="100.64.0.0/10 subnet entered in the &#x22;Remote IP address filter&#x22; field."><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Save** to confirm the changes.

### Creating new user accounts

If you plan on sharing access to your Jellyfin server with friends or family, it is a good idea to create unique accounts for each user. This way, everyone can keep track of their preferred content and your administrator account remains private.

1. On your Jellyfin web interface, select the three-bar menu and click **Dashboard**.

   <div align="left"><figure><img src="/files/Dh919nKgtH0McGsGoPrx" alt="Clicking &#x22;Dashboard&#x22;." width="375"><figcaption></figcaption></figure></div>

   &#x20;
2. From the menu on the left, under **Server**, select **Users**.

   <div align="left"><figure><img src="/files/BCIVCfpaTHTBD1l4YfXH" alt="Arrow pointing to the &#x22;Users&#x22; section." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Click the plus (+) button to add a new user.
4. In the **Name** and **Password** fields, enter the authentication details of the new account.

   <div align="left"><figure><img src="/files/cFmizjsfujzi8e4IJQVW" alt="&#x22;Name&#x22; and &#x22;Password&#x22; fields filled in."><figcaption></figcaption></figure></div>

   &#x20;
5. Under **Libraries**, choose which media the account can access. Alternatively, select **Enable access to all libraries**.
6. Click **Save** to finish.

## Remotely access the Jellyfin server <a href="#access-a-jellyfin-server" id="access-a-jellyfin-server"></a>

After setting up the Jellyfin server and adding the desired media content, you can access the server remotely.

### Method 1: Using Jellyfin Media Player <a href="#method-1-using-jellyfin-media-player" id="method-1-using-jellyfin-media-player"></a>

The first method to access media content stored on a Jellyfin server is by using Jellyfin’s media player software.

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

1. Download and install Jellyfin Media Player for Windows from [Jellyfin’s GitHub page](https://github.com/jellyfin/jellyfin-media-player/releases).
2. Copy the server device’s Nord name directly from the NordVPN app.

   <div align="left"><figure><picture><source srcset="/files/yT649xjTpd04LftmEL7V" media="(prefers-color-scheme: dark)"><img src="/files/7fMJaJKhFUmQymhuhlTo" alt="Copying the Nord name from the NordVPN app."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Launch **Jellyfin Media Player** and click **Add server**.
4. In the **Host** field, paste the copied Nord name, followed by `:8096`. Click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/f45KqplqQOhERGFdQRgQ" alt="Jellyfin server Nord name and port number"><figcaption></figcaption></figure></div>

   &#x20;
5. Sign in to the user account created on the Jellyfin server.

All media content stored on the Jellyfin server is now accessible via the Jellyfin Media Player app.
{% endtab %}

{% tab title="Android" %}

1. Download and install Jellyfin for Android. You can get it from:
   * [Google Play Store](https://play.google.com/store/apps/details?id=org.jellyfin.mobile\&hl=en\&gl=US)
   * [F-droid app catalog](https://f-droid.org/en/packages/org.jellyfin.mobile/)
   * [Jellyfin's GitHub repository](https://github.com/jellyfin/jellyfin-android/releases/)
2. Copy the server device's Nord name directly from the NordVPN app.&#x20;

   <div align="left"><figure><picture><source srcset="/files/AmXFTVsfIvIMpyu45g2S" media="(prefers-color-scheme: dark)"><img src="/files/DP0PI0oEtU9937c4ytVu" alt="&#x22;Copy device&#x27;s Nord name&#x22; option highlighted from the three-dot menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Launch **Jellyfin**.
4. In the **Host** field, paste the copied Nord name and tap **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/TM5HJZd8PUMCF3sTHDZa" alt="Nord name of the Jellyfin server entered in the &#x22;Host&#x22; field." width="375"><figcaption></figcaption></figure></div>

   &#x20;&#x20;
5. Sign in to the user account created on the Jellyfin server.

All media content stored on the Jellyfin server is now accessible via the Jellyfin Media Player app.
{% endtab %}

{% tab title="iOS" %}

1. Download and install [Jellyfin Mobile for iOS](https://apps.apple.com/us/app/jellyfin-mobile/id1480192618?mt=8) from the App Store.
2. Copy the server device's Nord name directly from the NordVPN app.

   <div align="left"><figure><picture><source srcset="/files/pR7zcjNg39aGoDHZnsnn" media="(prefers-color-scheme: dark)"><img src="/files/bqWXGMuQ9EU27VAKBluB" alt="Nord name and the copy button highlighted in the NordVPN app." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Launch **Jellyfin**.
4. In the **Server address** field, paste the copied Nord name, followed by `:8096`, and tap **go**.\
   \
   **Example**<br>

   <div align="left"><figure><img src="/files/FTX4Ys3WwxBdz2ZYMs4b" alt="Jellyfin server&#x27;s Nord name and port number entered in the &#x22;Server address&#x22; field." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Sign in to the user account created on the Jellyfin server.

All media content stored on the Jellyfin server is now accessible via the Jellyfin Media Player app.
{% endtab %}

{% tab title="macOS" %}

1. Download and install Jellyfin Media Player for macOS from [Jellyfin’s GitHub page](https://github.com/jellyfin/jellyfin-media-player/releases).
2. Copy the server device’s Nord name directly from the NordVPN app.

   <figure><picture><source srcset="/files/3DcJXzx5DTkowPOd21ow" media="(prefers-color-scheme: dark)"><img src="/files/Xkk8chQ26BsVRqgpLb75" alt="&#x22;Copy device&#x27;s Nord name&#x22; option selected."></picture><figcaption></figcaption></figure>

   &#x20;
3. Launch **Jellyfin Media Player** and click **Add server**.
4. In the **Host** field, paste the copied Nord name, followed by `:8096`. Click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/f45KqplqQOhERGFdQRgQ" alt="Jellyfin server Nord name and port number"><figcaption></figcaption></figure></div>

   &#x20;
5. Sign in to the user account created on the Jellyfin server.

All media content stored on the Jellyfin server is now accessible via the Jellyfin Media Player app.
{% endtab %}

{% tab title="Linux" %}

#### Install Jellyfin Media Player <a href="#install-jellyfin-media-player" id="install-jellyfin-media-player"></a>

1. Download the Jellyfin Media Player installation file for your Linux distribution from [Jellyfin’s GitHub page](https://github.com/jellyfin/jellyfin-media-player/releases).
2. Open **Terminal** and navigate to your downloads directory using the `cd` command.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Downloads
   </code></pre>

   &#x20;
3. Run the following command to install the Jellyfin Media Player package: \
   &#x20;

   ```bash
   sudo apt install -f ./jellyfin-media-player*
   ```

   &#x20;
4. When prompted, press **Y** and **Enter** to confirm the installation.

#### Connect to the Jellyfin server <a href="#connect-to-jellyfin-server" id="connect-to-jellyfin-server"></a>

1. Copy the server device’s Nord name from the `nordvpn meshnet peer list` command output.

   <div align="left"><figure><img src="/files/L4gMYFMPcm0zYydbMGSH" alt="Nord name of a Meshnet peer device highlighted in the terminal."><figcaption></figcaption></figure></div>

   &#x20;
2. Launch **Jellyfin Media Player** and click **Add server**.
3. In the **Host** field, paste the copied Nord name, followed by `:8096`. Click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/f45KqplqQOhERGFdQRgQ" alt="Jellyfin server Nord name and port number"><figcaption></figcaption></figure></div>

   &#x20;
4. Sign in to the user account created on the Jellyfin server.

All media content stored on the Jellyfin server is now accessible via the Jellyfin Media Player app.
{% endtab %}

{% tab title="Android TV" %}

1. Download and install Jellyfin for Android TV. You can get it from:
   * [Google Play Store](https://play.google.com/store/apps/details?id=org.jellyfin.androidtv\&hl=en\&gl=US)
   * [F-droid app catalog](https://f-droid.org/en/packages/org.jellyfin.androidtv/)
   * [Jellyfin's GitHub repository](https://github.com/jellyfin/jellyfin-androidtv/releases)
2. Launch **Jellyfin**.
3. Select **Enter server address**.
4. Type in the Nord name of your Jellyfin server and select **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/6cKo4tg3OnA5yGWfas67" alt="Nord name of the Jellyfin server underlined and &#x27;Connect&#x27; button highlighted." width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. Choose **Add account** and log in to your Jellyfin account.

All media content stored on the Jellyfin server is now accessible via the Jellyfin app on your Android TV.
{% endtab %}
{% endtabs %}

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

You can also access the Jellyfin server through an internet browser. This method works consistently across all devices using Meshnet.

1. Copy the server device’s Nord name directly from the NordVPN app.
2. Open your internet browser.
3. Paste the copied Nord name followed by `:8096/` to the URL field and press **Enter**. \
   &#x20;\
   **Example**\
   `secret.meerkat-altai.nord:8096/`

   &#x20;
4. In the **User** and **Password** fields, enter the login credentials of your Jellyfin account and click **Sign in**.

   <figure><picture><source srcset="/files/42k9AA8epPxlCt0H1D8R" media="(prefers-color-scheme: dark)"><img src="/files/55V9bXT4lCCxRI2Mc3xp" alt="Sign in screen of the Jellyfin media server with the login credentials entered."></picture><figcaption></figcaption></figure>

All media content stored on the Jellyfin server is now accessible via the internet browser.

## Optional: Add shared media

You may also add shared network storage locations as media libraries to your Jellyfin server. These locations can vary from [shared folders](/how-to/remote-files-media-access/set-up-folder-sharing) of your Meshnet peers to a [remote NAS](/how-to/remote-files-media-access/remote-openmediavault-nas). However, the storage medium must first be mounted on the server's system itself, only then you can import it to Jellyfin.

{% tabs %}
{% tab title="Windows" %}
Instructions for mounting network shares on Windows can be found in the [Mount a shared folder](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#mount-a-shared-folder) section of the "Configure and access shared folders on Windows" article.

After mounting the shared location, follow the steps from the [Add media libraries](#add-media-libraries) section to import the content to your Jellyfin server.
{% endtab %}

{% tab title="macOS" %}
The shared location is mounted automatically on macOS after you connect to it. To connect to a network share on macOS, refer to the [Access shared folders section](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders) of the "Configure and access shared folders on macOS" article.

Once mounted, the path to the shared folder will be as follows:

{% code overflow="wrap" %}

```bash
/Volumes/<NameOfShare>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
/Volumes/MeshnetVideos
```

{% endcode %}

After mounting the shared location, follow the steps from the [Add media libraries](#add-media-libraries) section to import the content to your Jellyfin server.

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

Upon restarting your Mac, you'll need to reconnect to the network share. Until that is done, the media content will be visible but unplayable.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
Instructions for mounting network shares on Linux can be found in the [Mount a shared folder](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#mount-a-shared-folder) section of the "Configure and access shared folders on Linux" article.

After mounting the shared location, follow the steps from the [Add media libraries](#add-media-libraries) section to import the content to your Jellyfin server.
{% endtab %}
{% endtabs %}


# How to set up a Plex media server and access it remotely

Discover how to configure a personal media library using the Plex media server on Windows, macOS, and Linux, and access it remotely over Meshnet.

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

[Plex](https://support.plex.tv/articles/200288286-what-is-plex/) is a powerful media server software tool that allows you to organize, watch, and access your personal media files from various devices. You can use Plex to conveniently manage various types of media — for example, videos, pictures, and music.

Self-hosting a media server, such as Plex, can be empowering because you are in full control of your files and don’t have to upload them to the cloud. However, if you want to access your media while away from home, you would need to resort to setting up [port forwarding](https://nordvpn.com/blog/port-forwarding/). While opening up ports in your firewall may not be too difficult, it can leave your home network vulnerable to malicious attacks.

With the use of Meshnet, you can connect your Plex media server and all client devices to a single virtual network. This configuration allows you to [remotely access](https://nordvpn.com/meshnet/remote-access/) your media from any device without exposing the server to outside connections.

This article contains instructions on how you can set up a media server using Plex on desktop devices and use Meshnet for secure remote connections.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To use Plex as a media server, you are required to have a Plex account. You can create a free account on the [Plex sign-up page](https://www.plex.tv/sign-up/). Alternatively, you can use your Google, Facebook, or Apple account.

## Installing Plex media server <a href="#installing-plex-media-server" id="installing-plex-media-server"></a>

First, you need to install the Plex software on the device that you will use as the media server.

{% tabs %}
{% tab title="Windows" %}
To install the Plex media server on Windows:

1. Visit the [Plex downloads page](https://www.plex.tv/media-server-downloads/).
2. Download the Plex media server installer for Windows.
3. Follow the instructions provided by the installation wizard.
4. Click **Finish** to complete the installation and launch the Plex media server.

   <div align="left"><figure><img src="/files/ieiYKGlUVcjTjJwk1S9X" alt="Clicking &#x27;Finish&#x27; in the Plex media server installer window." width="464"><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS" %}
To install the Plex media server on macOS:

1. Visit the [Plex downloads page](https://www.plex.tv/media-server-downloads/).

2. Download the Plex media server installer for macOS.

3. Extract the downloaded ZIP archive by double-clicking it.

4. In **Finder** <img src="/files/8CGDSomU3nlKJ0EEI2jB" alt="" data-size="line">, drag and drop the **Plex media server** app to the **Applications** folder.<br>

   <div align="left"><figure><picture><source srcset="/files/FFfKrK3xZZIWAr6RS67I" media="(prefers-color-scheme: dark)"><img src="/files/wNGgD9BfSRlCEUdo6AjK" alt="Dragging the Plex media server application to the Applications folder."></picture><figcaption></figcaption></figure></div>

5. Launch **Plex media server**. If you receive a confirmation dialog, select **Open**.\
   \ <picture><source srcset="/files/rts4zEDtwtGcFfPE4vaV" media="(prefers-color-scheme: dark)"><img src="/files/RUIkLdI6o4TYgBoL71nT" alt="&#x22;Open&#x22; button highlighted in a confirmation dialog."></picture><br>

6. From the menu bar, click the Plex icon and select **Open at login** to start the Plex media server with each system reboot.\
   \ <picture><source srcset="/files/QwNGfq2ITgqI7V4qolp3" media="(prefers-color-scheme: dark)"><img src="/files/v4y81Wen3zgxYmiMNqbo" alt="Selecting the &#x27;Open at login&#x27; option from the Plex menu bar entry."></picture>
   {% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this article, the Ubuntu 24.04 LTS distribution is used as an example.
{% endhint %}

There are various methods available for installing the Plex media server on a Linux machine. Depending on your setup, you may choose to install Plex using a graphical package manager, such as Ubuntu Software, or directly from a terminal window.

### Method 1: Using App Center <a href="#method-1-using-ubuntu-software" id="method-1-using-ubuntu-software"></a>

Take the following steps to install the Plex media server from the App Center:

1. Open **App Center**.

2. In the upper-left corner, click the search icon.

3. In the search field, enter `plexmediaserver` and select the matching result.

4. Click **Install**.

   <figure><picture><source srcset="/files/JhD7siy9Z4ddcTLusJ39" media="(prefers-color-scheme: dark)"><img src="/files/3L8fglEkEN89zKR9ViM4" alt="&#x27;plexmediaserver&#x27; search results in Ubuntu Software."></picture><figcaption></figcaption></figure>

5. If requested, enter your login password and click **Authenticate**.

### Method 2: Using the terminal <a href="#method-2-using-the-terminal" id="method-2-using-the-terminal"></a>

Take the following steps to install the Plex media server using the terminal:

1. Open **Terminal**.
2. Run the following command to download and import the GPG key for the Plex downloads repository:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
   </code></pre>

   &#x20;
3. Add the Plex downloads repository to your system with this command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
   </code></pre>

   &#x20;
4. Execute the following command to fetch all repository updates and install the Plex media server:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install plexmediaserver
   </code></pre>

   &#x20;
5. To ensure that Plex is started with each system reboot, enable its daemon process with this command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl enable plexmediaserver
   </code></pre>

   &#x20;
6. Run the following command to add the automatically created `plex` user to your user group.<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo usermod -aG $USER plex
   </code></pre>

   &#x20;
7. Restart your device.
   {% endtab %}
   {% endtabs %}

### Access the Plex dashboard <a href="#access-the-plex-dashboard" id="access-the-plex-dashboard"></a>

Once the Plex media server has been installed, you can start the setup process by visiting its web interface.

1. Open your internet browser and navigate the following URL:\
   &#x20;\
   `localhost:32400/web/`\
   &#x20;

2. Select your preferred login method and log in to your Plex account.

3. Choose your preferences for activity sharing and click **Finish**.

4. On the **How Plex works** page, click **Got it!**.

5. Enter a name for your Plex media server, clear the **Allow me to access my media outside my home** checkbox, and click **Next**.

   <div align="left"><figure><img src="/files/ACCngOMIV8stU8DMQAvk" alt="Entering the media server&#x27;s name, clearing the outside connections checkbox, and clicking Next in the Plex server setup screen." width="375"><figcaption></figcaption></figure></div>

6. Remove the pre-configured media libraries, if there are any, by clicking the X button next to them. Click **Next**.

7. Select **Done**.

## Adding media libraries <a href="#adding-media-libraries" id="adding-media-libraries"></a>

Upon finishing the server setup, you can freely navigate and customize your media server. Currently, you have not imported any media content to your server. You can choose to import locally stored media or shared media, such as shared folders.

### Add locally stored media <a href="#add-locally-stored-media" id="add-locally-stored-media"></a>

To add media content that is stored directly on the server:

1. Open your Plex media server web interface.
2. In the upper-right corner, click the **Settings** button.<br>

   <div align="left"><figure><img src="/files/rlrVGRJEe4qUThXonQCd" alt="Settings icon in the Plex web interface." width="347"><figcaption></figcaption></figure></div>

   &#x20;
3. On the left, under **Manage**, click **Libraries**, and select **Add library**.
4. Select the type of media for this library. You can enter a custom name or leave the default one. Click **Next**.

   <div align="left"><figure><img src="/files/PXR0XYX0YynQ4tip3FrV" alt="Selecting the media library type in the &#x27;Add library&#x27; window and clicking &#x27;Next&#x27;." width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Browse for media folder**.
6. In the **Add folder** pop-up window, select the folder containing your media files. Alternatively, you can enter the folder’s path. Click **Add**.

   <div align="left"><figure><img src="/files/ru3fLMCcrR2UwwlpsvlU" alt="Selecting a folder containing media files." width="563"><figcaption></figcaption></figure></div>

   &#x20;
7. Click **Add library**.

You should see a new entry for your added media location on the Libraries page.

<div align="left"><figure><img src="/files/DGab63ZbEfUJn6Fsiaap" alt="New media library visible in the Libraries section of the settings menu."><figcaption></figcaption></figure></div>

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

If content from your media library is unavailable after adding it, restart your computer.
{% endhint %}

### Add shared media <a href="#add-shared-media" id="add-shared-media"></a>

Aside from locally stored media, you can have [network shares from your network-attached storage](/how-to/remote-files-media-access/remote-openmediavault-nas) (NAS) devices or [shared folders from your Meshnet peer devices](/how-to/remote-files-media-access/set-up-folder-sharing). Media stored on such mediums must first be mounted to the operating system and only then can they be imported to the Plex media server.

{% tabs %}
{% tab title="Windows" %}
Instructions for mounting network shares on Windows can be found in the [Mount a shared folder](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#mount-a-shared-folder) section of the "Configure and access shared folders on Windows" article.

After mounting the shared drive, follow the steps from the [Add locally stored media](#add-locally-stored-media) section to import your remote media files to your Plex media server.
{% endtab %}

{% tab title="macOS" %}
On macOS, the shared location is mounted automatically after you connect to it. To connect to a network share on macOS, refer to the [Access shared folders](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders) section of the "Configure and access shared folders on macOS" article.

After mounting the shared folder, the path to it will be as follows:

{% code overflow="wrap" %}

```bash
/Volumes/<NameOfShare>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
/Volumes/RemoteVideos
```

{% endcode %}

After mounting the shared drive, follow the steps from the [Add locally stored media](#add-locally-stored-media) section to import your remote media files to your Plex media server.

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

Upon restarting your Mac, you'll need to reconnect to the network share. Until you do so, the media content will be visible but unplayable.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
Instructions for mounting network shares on Linux can be found in the [Mount a shared folder](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#mount-a-shared-folder) section of the "Configure and access shared folders on Linux" article.

After mounting the shared drive, follow the steps from the [Add locally stored media](#add-locally-stored-media) section to import your remote media files to your Plex media server.
{% endtab %}
{% endtabs %}

### Enable automatic library updates <a href="#enable-automatic-library-updates" id="enable-automatic-library-updates"></a>

If you regularly expand your media library, manually initiating a library scan each time can be tiresome. To avoid this, you can enable automatic library updates.

1. Open your Plex media server web interface.
2. In the upper-right corner, click the **Settings** button.

   <div align="left"><figure><img src="/files/rlrVGRJEe4qUThXonQCd" alt="" width="347"><figcaption></figcaption></figure></div>

   &#x20;
3. On the left, under **Settings**, click **Library**.
4. Select the **Scan my library automatically** checkbox.

   <div align="left"><figure><img src="/files/rmbBgpO7uz5Sl1avGLIC" alt="Selecting the &#x27;Scan my library automatically&#x27; option."><figcaption></figcaption></figure></div>

   &#x20;
5. Scroll down and click **Save changes**.

Your media library should be updated automatically each time there are any changes to its content.

## Allowing Meshnet connections <a href="#allowing-meshnet-connections" id="allowing-meshnet-connections"></a>

Since Meshnet IP addresses use a different subnet than standard [local area networks](https://nordvpn.com/blog/what-is-lan/) (LANs), devices in your Meshnet running Plex applications cannot automatically discover the media server. However, Plex allows you to specify custom URLs that are used for server discovery. You can use this option to provide your Meshnet details and enable connections to your media server over Meshnet.

1. Open your Plex media server web interface.
2. In the upper-right corner, click the **Settings** button.

   <div align="left"><figure><img src="/files/rlrVGRJEe4qUThXonQCd" alt="" width="347"><figcaption></figcaption></figure></div>

   &#x20;
3. On the left, under **Settings**, select **Network**.
4. Click **Show advanced**.

   <div align="left"><figure><img src="/files/kfrCcUMXIXpzAn0apS5M" alt="&#x22;Show advanced&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. Clear the **Enable relay** checkbox, to use direct connections to your server.

   <div align="left"><figure><img src="/files/8kJsoRD7WJRjLJRZWO5I" alt="Unchecked &#x22;Enable relay&#x22; checkbox highlighted." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. In the **Custom server access URLs**, enter the following string replacing `<NordName>` and `<MeshnetIP>` with your media server’s Nord name and Meshnet IP address, respectively:\
   &#x20;\
   `http://<NordName>:32400/,http://<MeshnetIP>:32400/`\
   &#x20;\
   **Example**\
   `http://secret.meerkat-himalayas.nord:32400/,http://100.96.239.157:32400/`\
   &#x20;
7. Click **Save changes**.

## Accessing your Plex media server over Meshnet <a href="#accessing-you-plex-media-server-over-meshnet" id="accessing-you-plex-media-server-over-meshnet"></a>

With your Plex media server fully set up, you can access it over Meshnet to watch your media content remotely.

### Method 1: Using an internet browser <a href="#method-1-using-an-internet-browser" id="method-1-using-an-internet-browser"></a>

A convenient method to access your Plex media server from any device without installing additional software is via an internet browser.

1. Copy the Nord name of your Plex media server from the NordVPN app.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name followed by `:32400/` and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-himalayas.nord:32400/`\
   &#x20;
4. Log in to your Plex account.

Upon logging in, select your media library from the menu on the left. All of the content from the selected library should appear.

<div align="left"><figure><img src="/files/e7sV5bSKvUbTbHm1iUbD" alt="Local and remote video libraries available on the Plex web interface accessed over Meshnet."><figcaption></figcaption></figure></div>

### Method 2: Using the Plex app <a href="#method-2-using-the-plex-app" id="method-2-using-the-plex-app"></a>

Another way to access your Plex media server is by using the Plex app on each device.

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

#### Install Plex for Windows <a href="#install-plex-for-windows" id="install-plex-for-windows"></a>

To install Plex on Windows:

1. Visit the [Plex downloads](https://www.plex.tv/media-server-downloads/#plex-app) page.
2. Download the Plex for Windows app.

   <div align="left"><figure><img src="/files/sE9Ufm1AsyDAtSuhUJ0t" alt="Downloading the Plex for Windows app."><figcaption></figcaption></figure></div>

   &#x20;
3. Open the downloaded installer file.
4. Follow the installation wizard instructions to install Plex.

#### Connect to your media server <a href="#connect-to-your-media-server" id="connect-to-your-media-server"></a>

After installing the Plex app:

1. Launch **Plex**.
2. At the top of the page, click **Sign in** and select **Sign in** once more.
3. Log in to your Plex account and close the browser window.
4. Select the preferences for your media and click **Finish setup**.
5. From the menu on the left, click **More**.
6. Select your added media library.

   <div align="left"><figure><img src="/files/QPfpNwIf90YbmCqCFIqh" alt="Local and remote video libraries available on the Plex app."><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Android" %}

#### Install Plex for Android <a href="#install-plex-for-android" id="install-plex-for-android"></a>

You can download and install the Plex app for Android from [Google Play](https://play.google.com/store/apps/details?id=com.plexapp.android\&hl=en_US).

#### Connect to your media server <a href="#connect-to-your-media-server.1" id="connect-to-your-media-server.1"></a>

After installing the Plex app:

1. Launch **Plex**.
2. Tap **Sign in**.
3. Log in to your Plex account.
4. Select your layout preferences and tap **Let’s go**.
5. In the upper-left corner, tap the menu icon and select your added media library.

   <div align="left"><figure><img src="/files/m4S97vcMqMCYDwvCLCPX" alt="Local and remote video libraries available on the Plex app." width="375"><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="iOS" %}

#### Install Plex for iOS <a href="#install-plex-for-ios" id="install-plex-for-ios"></a>

You can download and install the Plex app for iOS from the [App Store](https://apps.apple.com/us/app/plex-stream-movies-tv/id383457673).

#### Connect to your media server <a href="#connect-to-your-media-server.2" id="connect-to-your-media-server.2"></a>

After installing the Plex app:

1. Launch **Plex**.
2. Tap **Sign in**.
3. Log in to your Plex account.
4. On the **Plex needs local network access** screen, tap **Continue**

   <div align="left"><figure><img src="/files/41swlwtrgAcYYYrKJaWJ" alt="Tapping &#x27;Continue&#x27; in the Plex app." width="341"><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **OK** to grant local network access to the Plex app.

   <div align="left"><figure><picture><source srcset="/files/XdURobD0e0RmTuvPFFom" media="(prefers-color-scheme: dark)"><img src="/files/DCeOMLJbpotGJUGEgYup" alt="Tapping &#x27;OK&#x27; to give Plex access to the local network." width="272"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Select the preferences for your media and tap **Continue**.
7. In the upper-left corner, tap the menu icon and select your added media library.

   <div align="left"><figure><img src="/files/jtrVbaWotVS1T8Woy1gl" alt="Local and remote video libraries available on the Plex app." width="375"><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="macOS" %}

#### Install Plex for Mac <a href="#install-plex-for-mac" id="install-plex-for-mac"></a>

To install Plex on macOS:

1. Visit the [Plex downloads](https://www.plex.tv/media-server-downloads/#plex-app) page.
2. Download the Plex for Mac app.

   <figure><img src="/files/d9WGP5RuLwQ5TKQyeirM" alt="Downloading the Plex for Mac app."><figcaption></figcaption></figure>

   &#x20;
3. Extract the downloaded ZIP archive by double-clicking it.
4. Drag and drop the **Plex** app to the **Applications** folder.

#### Connect to your media server <a href="#connect-to-your-media-server.3" id="connect-to-your-media-server.3"></a>

After installing the Plex app:

1. Launch **Plex**.
2. At the top of the page, click **Sign in** and select **Sign in** once more.
3. Log in to your Plex account and close the browser window.
4. Select the preferences for your media and click **Finish setup**.
5. From the menu on the left, click **More**.
6. Select your added media library.

   <div align="left"><figure><img src="/files/JgFbHLoMheTKsvk9MP6p" alt="Local and remote video libraries available on the Plex app." width="278"><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Linux" %}

#### Install Plex for Linux <a href="#install-plex-for-linux" id="install-plex-for-linux"></a>

To install Plex on Linux:

1. Open **Terminal**.
2. Run the following command to install the Plex app:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo snap install plex-desktop
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/MKiS9LaPrOhFqQGUCSwH" alt="Installing the &#x27;plex-desktop&#x27; package from the terminal."><figcaption></figcaption></figure></div>

#### Connect to your media server <a href="#connect-to-your-media-server.4" id="connect-to-your-media-server.4"></a>

After installing the Plex app:

1. Launch **Plex**.
2. At the top of the page, click **Sign in** and select **Sign in** once more.
3. Log in to your Plex account and close the browser window.
4. Select the preferences for your media and click **Finish setup**.
5. From the menu on the left, click **More**.
6. Select your added media library.

   <div align="left"><figure><img src="/files/Ci8hRA2zS9x9EkQZrbW5" alt="Local and remote video libraries available on the Plex app."><figcaption></figcaption></figure></div>

{% endtab %}

{% tab title="Android TV" %}

#### Install Plex for Android TV <a href="#install-plex-for-android" id="install-plex-for-android"></a>

You can download and install the Plex app for Android TV from [Google Play](https://play.google.com/store/apps/details?id=com.plexapp.android\&hl=en_US).

#### Connect to your media server <a href="#connect-to-your-media-server.1" id="connect-to-your-media-server.1"></a>

After installing the Plex app:

1. Launch **Plex**.
2. Select **Sign in**.
3. Log in to your Plex account.
4. From the menu on the left, select your added media library.

   <div align="left"><figure><img src="/files/7OXrUFApijUZ4JnvzKJu" alt="Local and remote video libraries available on the Plex app."><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}


# How to set up a remote NAS using OpenMediaVault and Meshnet

Learn how to set up a remotely accessible NAS using OpenMediaVault and Meshnet.

## Introduction

Having a robust [network-attached storage](https://www.seagate.com/blog/what-is-nas-master-ti/) (NAS) solution is vital in today’s digital landscape. Whether for personal or professional use, such a system is essential for storing and managing important files, including legal documents, invoices, or family photos and videos.

A frequent choice for a NAS solution is the free and open-source software [OpenMediaVault](https://www.openmediavault.org/about.html) (OMV). It’s an easy-to-use and highly customizable file-managing system that does not require extensive technical knowledge to set up. In addition, OMV offers web-based management, user and group access control, and plugin support for extending its functionality.

However, accessing shared folders on your NAS is typically limited to the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) when ports are not opened on your router. Thankfully, with [Meshnet](https://nordvpn.com/meshnet/), you can connect to your NAS remotely without compromising [network security](https://nordvpn.com/cybersecurity/network-security/). Meshnet allows using encrypted network tunnels to share data between your NAS and your end devices.

This guide describes how you can use OpenMediaVault to set up a remote NAS and access it using Meshnet.

## Installing OpenMediaVault <a href="#installing-openmediavault" id="installing-openmediavault"></a>

There are several ways in which you can install OpenMediaVault. This article demonstrates installing the OpenMediaVault 7.4.0-2 (Sandworm) operating system in a virtual environment. However, the setup procedure is the same on bare-metal machines.

1. Download the ISO installation image from the [OpenMediaVault downloads page](https://www.openmediavault.org/download.html).
2. Follow the instructions in the [Installation using an ISO image](https://docs.openmediavault.org/en/latest/installation/via_iso.html) article in the OpenMediaVault documentation to complete the installation.

For alternative installation methods, see the [OpenMediaVault documentation](https://docs.openmediavault.org/en/latest/installation/index.html).

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

After installing the OMV, you should update it by accessing the NAS using an [SSH connection](/how-to/remote-access/access-remote-systems-over-ssh). SSH access for the user `root` is enabled by default. To install the updates, follow these steps:

1. Open **Command Prompt** (on Windows) or **Terminal** (on macOS and Linux).
2. Connect to your NAS via SSH by running this command, where `<server>` is the local IP address of the NAS:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh root@&#x3C;server>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh root@192.168.1.56
   </code></pre>

   &#x20;
3. Enter the root password you created during the installation process.
4. Run this command to gather and install all available updates:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">apt update &#x26;&#x26; apt upgrade -y
   </code></pre>

   &#x20;
5. During the update process, you may be asked for keyboard inputs. Choose your input according to the on-screen information.
6. Once the updates finish, reboot your NAS.

## Configuring a NAS <a href="#configuring-a-nas" id="configuring-a-nas"></a>

OpenMediaVault has an intuitive web interface that allows you to configure various folder-sharing options. To access the web interface:

1. Open your internet browser.
2. Enter the local IP address of your NAS to the internet browser and press **Enter**.\
   &#x20;\
   **Example**\
   `192.168.1.56`\
   &#x20;
3. Log in to the administrator account using the default OpenMediaVault web interface credentials.
   * User name: `admin`
   * Password: `openmediavault`

Now you have full control of the NAS from within your internet browser.

### Change the default password <a href="#change-the-default-password" id="change-the-default-password"></a>

First, make sure to change the default password of the OpenMediaVault web interface to minimize the risk of unauthorized access.

1. Click **User settings** > **Change password** in the upper-right corner.

   <div align="left"><figure><picture><source srcset="/files/7em3o0At9pkRh5peJKbT" media="(prefers-color-scheme: dark)"><img src="/files/2DdNPyYfa3BgXwKdPrp8" alt="Clicking &#x27;Change password&#x27; in the OMV web interface." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Enter your new password in both fields and click **Save**.

### Personalize your dashboard <a href="#personalize-your-dashboard" id="personalize-your-dashboard"></a>

Once the password has been changed, you can customize your OMV dashboard. The dashboard allows you to monitor the status of various essential services.

1. Head back to your dashboard by clicking the **Dashboard** tile.
2. Click the **settings page** link.

   <div align="left"><figure><picture><source srcset="/files/VhbFbMZhDNYgDC4DkRGl" media="(prefers-color-scheme: dark)"><img src="/files/V0l2nYGnZ6d6eaIW86YF" alt="Clicking the &#x27;settings page&#x27; link."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select the widgets you want to see on your dashboard and click **Save**.

All of the selected widgets are now visible on the OpenMediaVault dashboard.

<figure><picture><source srcset="/files/3ItkgMKnFo6ZVonJxmUJ" media="(prefers-color-scheme: dark)"><img src="/files/9BOnTsZaQDRXmmgjEAJS" alt="OpenMediaVault dashboard with added widgets."></picture><figcaption></figcaption></figure>

### Check disk availability <a href="#check-disk-availability" id="check-disk-availability"></a>

Before changing any further settings, it is essential to check if OpenMediaVault can see your storage mediums. You can do so by going to **Storage** > **Disks**.

<figure><picture><source srcset="/files/5zzn4HTDor5aibWRzmh4" media="(prefers-color-scheme: dark)"><img src="/files/0ZBGnLoHpQESkV5x6oAf" alt="Table of available disks in OMV"></picture><figcaption></figcaption></figure>

If any of your storage devices are not displayed, click the **Scan for new devices** button and select **Yes** to confirm.

### Set up a file system <a href="#set-up-a-file-system" id="set-up-a-file-system"></a>

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

If you use more than one disk for storage, you should configure a [redundant array of independent disks](https://docs.openmediavault.org/en/latest/administration/storage/raid.html) (RAID).

In the OpenMediaVault web interface, RAID options can be found in **Storage** > **Software RAID**.
{% endhint %}

A file system is a method that an operating system uses to manage data on a storage disk. Without setting up a file system for your storage medium, you cannot share any folders as they will not be recognized as directories by the operating system.

To set up a file system:

1. Go to **Storage** > **File systems**.
2. Click the **Create and mount a file system** button and select [a file system](https://docs.openmediavault.org/en/latest/administration/storage/filesystems.html), for example, **EXT4**.

   <div align="left"><figure><picture><source srcset="/files/kIZesEVtvOKyUxmiDGd2" media="(prefers-color-scheme: dark)"><img src="/files/HaSU0SP2CZEVVvrRINeQ" alt="Selecting the EXT4 file system." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select your storage from the **Device** dropdown and click **Save**.
4. Wait for the process to finish and select **Close**.
5. Choose your created file system from the **File system** dropdown, add any relevant tags, and click **Save** to mount the file system.

   <figure><picture><source srcset="/files/Ux0tBihKnbtag2dnrOIT" media="(prefers-color-scheme: dark)"><img src="/files/gxz3uG7AyTnAXpU4XfMa" alt="Clicking &#x27;Save&#x27;."></picture><figcaption></figcaption></figure>

   &#x20;
6. In the **Pending configuration changes** panel, click the Apply button.

   <figure><picture><source srcset="/files/Y6MAYthCc3U4STvRkO97" media="(prefers-color-scheme: dark)"><img src="/files/htzAbrgUvv76PRgeYBt5" alt="Clicking the &#x27;Apply&#x27; button."></picture><figcaption></figcaption></figure>

   &#x20;
7. Select **Yes** to confirm.

The file system is now mounted on the operating system, and you can view it in the File systems section.

### Create shared folders <a href="#create-shared-folders" id="create-shared-folders"></a>

With the file system ready, you can start creating shared folders.

1. Go to **Storage** > **Shared folders**.
2. Click the **Create** button.
3. Fill in the required information.
   * **Name**: Enter any name for your shared folder.
   * **File system**: Select the file system you have set up.
   * **Relative path**: Enter a custom path to the folder you want to share. This section is filled in automatically after entering the name.
   * **Permissions**: Choose what permissions people accessing the shared folder have.
   * **Tags**: Add any relevant tags.
4. Click **Save**.

   <figure><picture><source srcset="/files/90GKGc1DqqeLqsao7ROe" media="(prefers-color-scheme: dark)"><img src="/files/Scx9t7jlVFL4kJcy6VtV" alt="Clicking &#x27;Save&#x27; in the shared folder creation menu."></picture><figcaption></figcaption></figure>

   &#x20;
5. In the **Pending configuration changes** panel, click the Apply button.
6. Select **Yes** to confirm.

Your shared folder should now appear in the **Shared folders** table.

<figure><picture><source srcset="/files/zdtxfiARA0ZIlBLwW1TR" media="(prefers-color-scheme: dark)"><img src="/files/D07GD07VE4FInQ0xCZh7" alt="The created shared folder."></picture><figcaption></figcaption></figure>

### Enable sharing services <a href="#enable-sharing-services" id="enable-sharing-services"></a>

Though the shared folders have been created, they are currently inaccessible since no folder-sharing services are active. To enable sharing for your created folder:

1. Go to **Services** > **SMB/CIFS** > **Shares**.
2. Click the **Create** button.

   <figure><picture><source srcset="/files/nlFVYgDFEsJ9ONt3vWO4" media="(prefers-color-scheme: dark)"><img src="/files/1hZDQw71ZTEbgzd0ULW7" alt="Arrow pointing to the &#x22;Create&#x22; button."></picture><figcaption></figcaption></figure>

   &#x20;
3. Make the following adjustments:
   * **Shared folder**: Select the folder you created earlier.
   * **Public**: Select **No** to allow only authenticated user access.

     <figure><picture><source srcset="/files/mUONWZBwHKj8ms4ns67S" media="(prefers-color-scheme: dark)"><img src="/files/l0IcVCmT4BXRYRPOCsUV" alt="Selecting the name and the permissions of the shared folder."></picture><figcaption></figcaption></figure>

     &#x20;
4. Click **Save**.
5. Navigate to **Services** > **SMB/CIFS** > **Settings**.
6. Select the **Enabled** checkbox at the top to enable SMB/CIFS sharing and click **Save**.
7. In the **Pending configuration changes** panel, click the Apply button and select **Yes** to confirm.

Your shared folders are now fully set up and functional.

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

If you wish to use your shared folder for [macOS Time Machine backups](/how-to/remote-access/macos-time-machine-backups), select the **Time machine support** option when enabling SMB/CIFS for the folder.
{% endhint %}

### Creating new user accounts

Currently, shared folders can only be accessed using the administrator account credentials, which is not recommended. A better and safer approach is to create individual user accounts for each person accessing the NAS. This ensures that your administrator credentials remain private and minimizes the risk of unauthorized access to the NAS.

1. Go to **Users** > **Users**.
2. Click the **Create | Import** button and choose **Create**.

   <figure><picture><source srcset="/files/2v7wuDDwD8JU1ws71zoJ" media="(prefers-color-scheme: dark)"><img src="/files/tWiHySyNCyAN2xSiV0vP" alt=""></picture><figcaption></figcaption></figure>

   &#x20;
3. Fill in the following fields:
   * In the **Name** field, enter a username for the new account.
   * In the **Password** and **Confirm password** fields, type in a secure password for the new user.\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/RllWPGrfTsos38rcVdXv" media="(prefers-color-scheme: dark)"><img src="/files/QNR36s0erHHXCCHinX4R" alt="Username and password of the new user."></picture><figcaption></figcaption></figure>

     &#x20;
4. Click **Save**.
5. In the **Pending configuration changes** panel, click the Apply button and select **Yes** to confirm.

The newly created account should now be displayed in the **Users** table.

<figure><picture><source srcset="/files/cTPMNqEzxpAMWwn5fx8D" media="(prefers-color-scheme: dark)"><img src="/files/5aJJejwV9kA0tLtbXEba" alt="New user highlighted in the &#x22;Users&#x22; table."></picture><figcaption></figcaption></figure>

## Setting up NordVPN <a href="#setting-up-nordvpn" id="setting-up-nordvpn"></a>

To allow remote connections to the NAS, you need to install NordVPN and enable Meshnet. Since the OpenMediaVault operating system is based on Debian, you can [install and use the Linux version of the NordVPN app](https://nordvpn.com/download/linux/) hassle-free.

### Install NordVPN on the NAS <a href="#install-nordvpn-on-the-nas" id="install-nordvpn-on-the-nas"></a>

Follow these steps to set up NordVPN on your NAS:

1. Access the NAS using SSH.
2. Download and install the NordVPN app for Linux by running the command below.\
   &#x20;

   <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;
3. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the verification code sent to your email address.
4. Under **Access token**, click **Generate new token**.

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><figcaption></figcaption></figure></div>

   &#x20;
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**.

   <div align="left"><figure><img src="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Copy and close**.
7. On your NAS, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   &#x20;\
   **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.

</details>

<details>

<summary>Log in using a URL</summary>

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.\
   &#x20;\
   **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.

</details>

{% 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 %}

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

On your NAS, enable Meshnet on Linux by typing in this command:

{% code overflow="wrap" %}

```bash
nordvpn set meshnet on
```

{% endcode %}

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

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

**Example**

<figure><picture><source srcset="/files/soxlLV2MTebmV5dFfAFO" media="(prefers-color-scheme: dark)"><img src="/files/mPyvRlw59fNJaPEvYoJo" alt="Enabling Meshnet and checking the Nord name and Meshnet IP of the NAS."></picture><figcaption></figcaption></figure>

You will also see the list of your linked devices that can access this NAS over Meshnet.

## Connecting to the NAS over Meshnet <a href="#connecting-to-the-nas-over-meshnet" id="connecting-to-the-nas-over-meshnet"></a>

Your Meshnet devices should now be able to access the shared folders you have created on your NAS. To access the shared folders from your NAS, use this format `<server>/<shareName>`, where `<server>` is the Nord name or Meshnet IP address of the NAS and `<shareName>` is the name of the shared folder.

**Example**

`secret.meerkat-alps.nord/MeshnetStorage`

<figure><picture><source srcset="/files/uHvMQLTifoSAbkKCfoW2" media="(prefers-color-scheme: dark)"><img src="/files/B6Ye4zNzSyd1HxHnJPMu" alt="OMV shared folder open in macOS Finder."></picture><figcaption></figcaption></figure>

For detailed, OS-specific instructions on accessing shared folders, see the following articles:

* [Accessing shared folders from Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#access-shared-folders)
* [Accessing shared folders from macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders)
* [Accessing shared folders from Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#access-shared-folders)
* [Accessing shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Accessing shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Accessing shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv#access-shared-folders)

Additionally, you can access the OpenMediaVault web interface over Meshnet by entering the Nord name or the Meshnet IP address of the NAS in your internet browser’s address bar.

**Example**

<figure><img src="/files/GhfVOSYXTT5rrXozfuky" alt="OpenMediaVault web interface accessed using the Nord name of the NAS."><figcaption></figcaption></figure>

&#x20;


# How to set up a remote picture library with LibrePhotos and Meshnet

Discover how to configure a personal picture library using Librephotos and access it remotely over Meshnet.

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

Having your own easily accessible picture library can prove to be beneficial when you want to share pictures with your friends or family. Instead of sending files one by one and waiting for the transfers to finish, you can provide them with a link to see the latest images of your pets or a recent trip to the mountains.

While there are cloud-based solutions that offer similar functionality, self-hosting your image library puts you in full control, and you don’t need to worry about pricing or cloud storage restrictions. Additionally, the files never have to leave your device.

By using self-hosted picture management tools, such as the open-source [LibrePhotos](https://docs.librephotos.com/docs/intro) project, alongside [Meshnet](https://nordvpn.com/meshnet/), you can set up a secure, [remotely accessible](https://nordvpn.com/meshnet/remote-access/) picture library. Meshnet creates encrypted network tunnels between your image server and the connecting devices without [SSL certificates](https://nordvpn.com/blog/what-is-ssl/) or [port forwarding](https://nordvpn.com/blog/port-forwarding/).

This article describes how you can self-host a LibrePhotos picture library and access it remotely using Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To follow this guide, you must have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Deploy LibrePhotos using Docker <a href="#deploy-librephotos-using-docker" id="deploy-librephotos-using-docker"></a>

The LibrePhotos instance consists of several containers, such as a database container and a container for the app's backend. To make the deployment of multi-container applications more efficient, the Docker Compose tool is used.

### Preparing a working directory <a href="#preparing-a-working-directory" id="preparing-a-working-directory"></a>

For convenient deployment and management, prepare a specific directory for all LibrePhotos-related files.

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

1. Download the LibrePhoto Docker files from its [GitHub repository](https://github.com/LibrePhotos/librephotos-docker) by clicking **Code** > **Download ZIP**.

   <figure><picture><source srcset="/files/wuq9sBYBCw0fJiPCFG4v" media="(prefers-color-scheme: dark)"><img src="/files/vAEYaJN33WMiUU2dcrLU" alt="Clicking &#x27;Download ZIP&#x27; in the LibrePhotos GitHub repository."></picture><figcaption></figcaption></figure>

   &#x20;
2. Open the downloaded archive and extract the `librephotos-docker-main` folder to an easily accessible location.

This will be the working directory of your LibrePhotos Docker container.
{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. Download the LibrePhotos Docker files from its [GitHub repository](https://github.com/LibrePhotos/librephotos-docker) by running the following `git clone` command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">git clone https://github.com/LibrePhotos/librephotos-docker.git
   </code></pre>

   &#x20;
3. Run the `ls` command to check if the `librephotos-docker` folder is present.

   <figure><img src="/files/iH2BARt6w5FZ5PSu9d1U" alt="Terminal output of the &#x22;ls&#x22; command showing the librephotos-docker folder."><figcaption></figcaption></figure>

This will be the working directory of your LibrePhotos Docker container.
{% endtab %}
{% endtabs %}

### Modifying the environment variables <a href="#modifying-the-environment-variables" id="modifying-the-environment-variables"></a>

Before deploying the container, you need to edit the parameters in the environment file. Docker Compose uses the variables in this file to build the LibrePhotos instance.

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

#### Create a new environment file <a href="#create-a-new-environment-file" id="create-a-new-environment-file"></a>

1. Open **PowerShell**.
2. Navigate to the `librephotos-docker` folder using the `cd` command.\
   &#x20;\
   **Example**

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">cd ~\Desktop\librephotos-docker-main
   </code></pre>

   &#x20;
3. Run the following command to duplicate the sample environment file and name it `.env`:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">copy librephotos.env .env
   </code></pre>

#### Specify your picture location <a href="#specify-your-picture-location" id="specify-your-picture-location"></a>

1. Open the newly created file using Notepad by running this command:

   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad .env
   </code></pre>

   &#x20;
2. Set the value of `scanDirectory` to the path of your picture library by entering the path within single quotation marks (') after the equals sign, as shown:&#x20;

   <figure><picture><source srcset="/files/gtZdbzfEyzoecqrCT62P" media="(prefers-color-scheme: dark)"><img src="/files/z4KcSauTrosbOi9lUInq" alt="Entering the path of the picture library."></picture><figcaption></figcaption></figure>

   &#x20;
3. Set the value of `data` to the path of the `librephotos-docker` folder by entering the folder’s path, followed by `/data` within single quotation marks (') after the equals sign, as shown:

   <figure><picture><source srcset="/files/tAkHWoJxjQXBcm7gvatl" media="(prefers-color-scheme: dark)"><img src="/files/HmBlACN0t34WJnNeokfk" alt="Entering the path of the LibrePhotos data folder."></picture><figcaption></figcaption></figure>

   &#x20;
4. Press **Ctrl** + **S** to save changes.
5. Exit Notepad.

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

If you want to change the port used by LibrePhotos, you can alter the number after the equal sign of the `httpPort` line.

<picture><source srcset="/files/qP1h0tTfebV0i7Kdwf0X" media="(prefers-color-scheme: dark)"><img src="/files/l6llTqemRZm25VuEwFBF" alt="Line indicating the port of the LibrePhotos web interface."></picture>
{% endhint %}
{% endtab %}

{% tab title="macOS and Linux" %}

#### Create a new environment file <a href="#create-a-new-environmental-file" id="create-a-new-environmental-file"></a>

1. Open **Terminal**.
2. Navigate to the `librephotos-docker` folder using the `cd` command.\
   &#x20;

   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Docker/librephotos-docker
   </code></pre>

   &#x20;
3. Run the following command to duplicate the sample environment file and name it `.env`:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cp librephotos.env .env
   </code></pre>

#### Specify your picture location <a href="#specify-your-picture-location.1" id="specify-your-picture-location.1"></a>

1. Open the newly created file using the Nano text editor by running this command:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano .env
   </code></pre>

   &#x20;
2. Set the value of `scanDirectory` to the path of your picture library by entering the path within single quotation marks (') after the equals sign, as shown:\
   &#x20;

   **Example**

   <figure><img src="/files/Vg0aPSObKLHTJkPiDCZk" alt="Entering the path of the picture library."><figcaption></figcaption></figure>

   &#x20;
3. Set the value of `data` to the path of the `librephotos-docker` folder by entering the folder’s path, followed by `/data` within single quotation marks (') after the equals sign, as shown:\
   &#x20;

   **Example**

   <figure><img src="/files/sKZYcDLYNHgbxIi4mmil" alt="Entering the path of the LibrePhotos data folder."><figcaption></figcaption></figure>

   &#x20;
4. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.

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

If you want to change the port used by LibrePhotos, you can alter the number after the equal sign of the `httpPort` line.

![Line specifying the LibrePhotos port highlighted.](/files/WTb4qyQpaCfj6EaefJzZ)
{% endhint %}
{% endtab %}
{% endtabs %}

### Deploying LibrePhotos <a href="#deploying-librephotos" id="deploying-librephotos"></a>

While in the `librephotos-docker` directory, execute the following command in the command line to start creating your LibrePhotos instance:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the resources](https://docs.docker.com/engine/reference/commandline/pull/) and dependencies required for LibrePhotos and create the required containers. You can expect the initial deployment to take several minutes.

## Set up your LibrePhotos web interface <a href="#set-up-your-librephotos-web-interface" id="set-up-your-librephotos-web-interface"></a>

With the containers up and running, you can access the web interface of LibrePhotos to configure your picture library. By default, the web interface listens on port 3000.

### Creating an administrator account <a href="#creating-an-administrator-account" id="creating-an-administrator-account"></a>

To control LibrePhotos, you must first create an administrator account. To create the account:

1. Open your internet browser and visit the following URL:\
   &#x20;\
   `localhost:3000/`\
   &#x20;
2. Fill in the provided fields with your personal information, such as your username, email, and password, and click **Sign up**.

   <figure><img src="/files/Tt4EBKaS6hx6JHW9zNsm" alt="Filling in the account details on the LibrePhotos sign up page."><figcaption></figcaption></figure>

   &#x20;
3. On the login page, enter your username and password and click **Log in**.

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

If you see the login page instead of the account creation screen, reload the page.
{% endhint %}

### Scanning the picture library <a href="#scanning-the-picture-library" id="scanning-the-picture-library"></a>

At first, you will not see any images in your LibrePhotos web interface. This is because the tool has not yet scanned and indexed your pictures.

#### Perform the initial scan <a href="#perform-the-initial-scan" id="perform-the-initial-scan"></a>

To scan the picture library for the first time:

1. Click the **Edit user** button.
2. In the new window, under **Choose a directory from below**, click **data**.

   <figure><picture><source srcset="/files/IpPRn0nHZMgNt5sfXvoL" media="(prefers-color-scheme: dark)"><img src="/files/sNrRc0rouGqj7vY4AMHt" alt="Arrow pointing to the &#x22;data&#x22; directory."></picture><figcaption></figcaption></figure>

   &#x20;
3. Click **Save**.

LibrePhotos will start scanning all files in the directory that was specified in the `.env` file. Once the scan is over, you will see a Finished message in the lower-right corner of the screen.

To see all of the pictures, reload the page.

#### Add more pictures <a href="#add-more-pictures" id="add-more-pictures"></a>

LibrePhotos does not automatically scan the added folders. This means newly added pictures will not appear until you re-scan the folders. To start a scan:

1. Click the user icon in the upper-right corner and select **Library**.

   <div align="left"><figure><picture><source srcset="/files/e1QIayWNkIGlJd7pTb5o" media="(prefers-color-scheme: dark)"><img src="/files/RnGjwYjF2aNJUGBJxNIj" alt="&#x22;Library&#x22; option highlighted." width="311"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Under **Photos**, click the **Scan** button.

   <figure><picture><source srcset="/files/FQMrUaI8AxsIKPs17iPD" media="(prefers-color-scheme: dark)"><img src="/files/xbl4vGebRw3ykrQ36sXh" alt="&#x22;Scan&#x22; button highlighted."></picture><figcaption></figcaption></figure>

Once the scan finishes, you will see a Finished message in the lower-right corner of the page.

### Creating albums <a href="#creating-albums" id="creating-albums"></a>

By default, all images are sorted by their creation date. However, you may want to categorize your pictures into albums for a more convenient user experience. To create albums:

1. Under **Photos**, click the Toggle select mode button.

   <figure><picture><source srcset="/files/xNMZqLCjpwmALPhOajIv" media="(prefers-color-scheme: dark)"><img src="/files/ILkSfB0gXuZqUsvjOWd9" alt="Clicking the &#x27;Toggle select mode&#x27; button."></picture><figcaption></figcaption></figure>

   &#x20;
2. Select the pictures you want to include in your album by clicking them.
3. Click the plus (+) button on the right and select **Album**.

   <figure><picture><source srcset="/files/NDwqp8qdhWybSquQGKGx" media="(prefers-color-scheme: dark)"><img src="/files/XWBlbsAxs1Fin9IxWTby" alt="Selecting &#x27;Album&#x27; form the list of options."></picture><figcaption></figcaption></figure>

   &#x20;
4. In the **Album title** field, enter the name of your album and click **Create**.

To view the new album and its contents, select **Albums** > **My albums** from the left-side menu.

<figure><picture><source srcset="/files/DPTSN4bYFu2s7i6CPaFK" media="(prefers-color-scheme: dark)"><img src="/files/K4W41kC1HgRR71LMJ1aJ" alt="&#x22;My albums&#x22; section of LibrePhotos."></picture><figcaption></figcaption></figure>

### Creating new users <a href="#creating-new-users" id="creating-new-users"></a>

Giving administrator access to other people may pose risks. It is good practice to have dedicated user accounts for people who only want to view the pictures, but should not have control over the library’s settings. To create additional users:

1. Click the user icon in the upper-right corner and select **Admin area**.
2. Under **Users**, select **Add new user**.
3. Fill in the required fields for the new user and click **Save**.

   <figure><picture><source srcset="/files/tYnGWL3ayf1gJKXtAvNZ" media="(prefers-color-scheme: dark)"><img src="/files/0PvC5jvoSwR80VLAB1fp" alt="Filling in details for a new user account and clicking &#x22;Save&#x22;."></picture><figcaption></figcaption></figure>

   &#x20;
4. In the **Users** table, select the **Modify** button next to the newly created account.

   <figure><picture><source srcset="/files/obhZlZDQ7nK3IXkaUopL" media="(prefers-color-scheme: dark)"><img src="/files/gJy3Zy9WZBclLxJ77qiH" alt="&#x22;Modify&#x22; button highlighted in the &#x22;Users&#x22; table."></picture><figcaption></figcaption></figure>

   &#x20;
5. Under **Choose a directory from below**, click the dropdown arrow next to **data**.
6. Select the folder that you want the user to see pictures from.

   <figure><picture><source srcset="/files/JaWGzqaVr4CsFePvLfwN" media="(prefers-color-scheme: dark)"><img src="/files/dJmK7LANEEOoXOtSeVMp" alt="Library directories highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
7. Click **Save**.

The new account is now active. LibrePhotos will automatically start a scan of the selected picture library for the new user.

## Access your picture library over Meshnet <a href="#access-your-picture-library-over-meshnet" id="access-your-picture-library-over-meshnet"></a>

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

If you're hosting LibrePhotos on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

With the pictures indexed and visible, you can share your photo library with others or access it remotely yourself. To access your LibrePhotos instance using Meshnet:

1. Copy the Nord name of the device hosting LibrePhotos from the NordVPN app.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name followed by `:3000` and press **Enter**.\
   &#x20;\
   **Example**

   <figure><img src="/files/z0hdOkMnsNLdridOgbOo" alt="Accessing LibrePhotos using the Nord name."><figcaption></figcaption></figure>

   &#x20;
4. Enter your username and password and click **Login**.

You can now freely browse the picture library from a remote location without compromising your device’s security.

<figure><picture><source srcset="/files/bLaeK314fUCIzAlmjMAx" media="(prefers-color-scheme: dark)"><img src="/files/aQnHa9m79fwTePQXfqzS" alt="Browsing LibrePhotos over Meshnet."></picture><figcaption></figcaption></figure>


# How to use Syncthing for remote continuous file synchronization

Learn how to securely synchronize files between remote devices using Syncthing with Meshnet.

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

Backing up files is a crucial aspect of data management and should be considered a top priority for individuals and organizations alike. Accidental deletion, hardware failure, [malware attacks](https://nordvpn.com/cybersecurity/what-is-malware/), and natural disasters are some potential threats that can lead to data loss. You can recover lost data and avoid potential disruptions by synchronizing files between different devices and using backup folders.

[Syncthing](https://syncthing.net/) is a free and open-source continuous file synchronization program. The app allows you to link various devices and exchange data between them in real time. In addition, Syncthing allows you to select a network interface on each device that is used for file synchronization.

Once you enable [Meshnet ](https://nordvpn.com/meshnet/)on your device, it creates a new network interface using the [NordLynx technology](https://nordvpn.com/blog/nordlynx-protocol-wireguard/). This interface can then be used to increase the security of Syncthing file transfers even further with encrypted network tunnels. Moreover, you do not need to worry about allowing remote connections between your devices because Meshnet connects them to a single virtual network without poking additional holes in your firewall.

This article showcases how you can set up Syncthing on Windows, macOS, and Linux devices and synchronize your files over Meshnet.

## Installing Syncthing <a href="#installing-syncthing" id="installing-syncthing"></a>

To start the configuration, you need to install Syncthing on your system.

{% tabs %}
{% tab title="Windows" %}
For convenience, the Syncthing Tray app will be used for Windows. Unlike the standard version, which requires an active terminal window during operation, Syncthing Tray can run in the background and be minimized to the system tray. If needed, alternative versions are available for download on Syncthing’s [Community contributions](https://docs.syncthing.net/users/contrib.html) page.

To install the app:

1. Visit the [Releases page](https://github.com/Martchus/syncthingtray/releases) of the Syncthing Tray GitHub repository.
2. Download the latest `syncthingtray` installer archive for the 64-bit version of Windows.

   <div align="left"><figure><img src="/files/tN6KjBiXaA2DAG9OClEU" alt="Downloading the latest version of Syncthing Tray from GitHub."><figcaption></figcaption></figure></div>

   &#x20;
3. Extract the downloaded archive.
4. Launch **Syncthing Tray** by opening the executable file.

   <figure><picture><source srcset="/files/WBanOwTnq4mTpl1rcTGP" media="(prefers-color-scheme: dark)"><img src="/files/1hInYAZgvHw5KvUmFgi4" alt="SyncthingTray executable file selected."></picture><figcaption></figcaption></figure>

   &#x20;
5. Follow the setup wizard to configure Syncthing for your device.
6. If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click **Allow access** to allow incoming connections through the firewall.

   <div align="left"><figure><img src="/files/3wOdpUI3M7y2FvQxSqMn" alt="&#x22;Allow access&#x22; button highlighted in the Windows Security Alert dialog." width="375"><figcaption></figcaption></figure></div>

Syncthing is now active and ready for use on your system. Additionally, the app will launch automatically each time you reboot your device. You can see the Syncthing Tray icon in your system tray.

<div align="left"><figure><picture><source srcset="/files/DxQJwOD3hz6d5Si9nbFY" media="(prefers-color-scheme: dark)"><img src="/files/HrHSgvriX9H1oYD9y6IW" alt="Syncthing Tray icon in the system tray." width="251"></picture><figcaption></figcaption></figure></div>

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

If the Windows Defender SmartScreen warning appears when attempting to launch the app, select **More info** and click **Run anyway**.
{% endhint %}
{% endtab %}

{% tab title="macOS" %}
To install the Syncthing macOS application bundle:

1. Visit the [Releases page](https://github.com/syncthing/syncthing-macos/releases) of the syncthing-macos GitHub repository.
2. Download the latest Syncthing `.dmg` file.

   <div align="left"><figure><img src="/files/vYikWbZzob8sclNS2ip2" alt="Downloading the Syncthing installation file from GitHub."><figcaption></figcaption></figure></div>

   &#x20;
3. Open the downloaded file.
4. In the new window, drag and drop **Syncthing** to the **Applications** folder.
5. Launch **Syncthing**. If you receive a confirmation dialog, click **Open**.

   <div align="left"><figure><picture><source srcset="/files/zWLoCujGhzoUvACeEvmj" media="(prefers-color-scheme: dark)"><img src="/files/FjMPvIh5oWeBhyBtAZbH" alt="Clicking &#x22;Open&#x22; in the confirmation dialog." width="261"></picture><figcaption></figcaption></figure></div>

Syncthing is now installed on your device and ready for use.

### Launch Syncthing automatically <a href="#launch-syncthing-automatically" id="launch-syncthing-automatically"></a>

To ensure the highest up-time and continuous file synchronization, it is best to launch Syncthing every time your system is started. However, launching the app manually may get tedious. To auto-launch Syncthing upon each reboot:

1. In the menu bar, click the Syncthing icon and select **Preferences**.

   <div align="left"><figure><picture><source srcset="/files/jy899L3Qdpl4ftEISwaQ" media="(prefers-color-scheme: dark)"><img src="/files/zJFYCYBRRWwFKK81M6PX" alt="Selecting &#x22;Preferences&#x22; from the dropdown menu." width="206"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Select the **Start at login** checkbox.

   <div align="left"><figure><picture><source srcset="/files/2mkHOGYzUsJuQFcvJqWy" media="(prefers-color-scheme: dark)"><img src="/files/wGTYYrAfNQGxh1TNprfy" alt="" width="375"></picture><figcaption></figcaption></figure></div>

Syncthing will now automatically start each time you log in to your computer.
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this section, the Ubuntu 24.04 LTS distribution is used as an example.
{% endhint %}

To install Syncthing on Linux:

1. Open **Terminal**.
2. Download and import Syncthing’s [PGP key](https://help.gnome.org/users/seahorse/stable/about-pgp.html.en) to your device by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo curl -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
   </code></pre>

   &#x20;
3. Add the Syncthing repository to your repository list with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
   </code></pre>

   &#x20;
4. Fetch all available repository updates and install Syncthing by executing the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install syncthing -y
   </code></pre>

### Launch Syncthing automatically <a href="#launch-syncthing-automatically.1" id="launch-syncthing-automatically.1"></a>

To ensure the highest up-time and continuous file synchronization, it is best to launch Syncthing every time your system is started. On many Linux distributions, you can utilize SystemD to start the Syncthing process each time your device is started by taking these steps:

1. Open **Terminal**.
2. Run the following command to initiate the Syncthing service upon each reboot:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl enable syncthing@$USER.service
   </code></pre>

   &#x20;
3. Execute this command to start Syncthing right now:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl start syncthing@$USER.service
   </code></pre>

Syncthing is now active and ready for use on your system. You can check the status of the service with this command:

{% code overflow="wrap" %}

```bash
sudo systemctl status syncthing@$USER.service
```

{% endcode %}

The output should tell you that the service is active.

<figure><img src="/files/UIhwfjkaLzyXgQx22m9l" alt="Terminal output showing the the Syncthing process is active and running."><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Configuring Syncthing for remote file synchronization <a href="#configuring-syncthing-for-remote-file-synchronization" id="configuring-syncthing-for-remote-file-synchronization"></a>

Once you install Syncthing, its web interface is created. You can use the web interface to control all aspects of Syncthing, including managing your synchronization folders and devices.

### Set up web interface authentication <a href="#set-up-web-interface-authentication" id="set-up-web-interface-authentication"></a>

Even though, currently, the web interface can only be accessed from the host device, it is highly recommended to use username and password authentication. This is especially important to minimize the risk of [unauthorized access](https://nordvpn.com/blog/unauthorized-access/) if you plan to allow connecting to the web interface from other devices. To enable authentication:

1. Open your internet browser and visit the following URL:\
   &#x20;\
   `127.0.0.1:8384/`\
   &#x20;
2. Under **GUI authentication: set user and password**, click the **Settings** button.

   <div align="left"><figure><picture><source srcset="/files/2ZPkb4m1qE1yiycsu17r" media="(prefers-color-scheme: dark)"><img src="/files/XE07pktRQbQsPoSCrJEV" alt="Clicking the &#x22;Settings&#x22; button under GUI authentication."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Switch to the **GUI** tab.
4. Type in your authentication details.
   * In the **GUI authentication user** field, enter your desired username.
   * In the **GUI authentication password** field, enter a secure password.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/aCFZExe34gGBRemoz2iE" media="(prefers-color-scheme: dark)"><img src="/files/OPL9RjnzRpvBrEDyC5qu" alt="Entering the GUI authentication username and password."></picture><figcaption></figcaption></figure></div>

     &#x20;
5. Click **Save**.
6. On the **Authentication required** screen, enter your newly created credentials and click **Log in**.

   <figure><img src="/files/HfEUFqzlYjfQNC4xYJD4" alt="Signing in to the Syncthing web interface."><figcaption></figcaption></figure>

### Connect remote devices <a href="#connect-remote-devices" id="connect-remote-devices"></a>

With authentication in place, you can start linking other devices for data synchronization. You must have control of both devices to complete the connection procedure.

#### Connect the host device <a href="#connect-the-host-device" id="connect-the-host-device"></a>

1. In your Syncthing web interface, under **Remote devices**, click **Add remote device**.

2. On the **General** tab specify the following information:
   * In the **Device ID** field, enter the Device ID of the remote device that you want to synchronize your files with.
   * In the **Device name** field, type in a custom name for the specific device.

3. Select the **Advanced** tab.

4. In the **Addresses** field, enter `tcp://<peer>:22000`, replacing `<peer>` with the other device’s Nord name or Meshnet IP address.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/0tdwPbdSYK4PvIazG6Ah" media="(prefers-color-scheme: dark)"><img src="/files/PruUa0g6SXKXT3iGggzw" alt="Entering the address of the client device using the assigned Nord name."></picture><figcaption></figcaption></figure></div>

5. Click **Save**.

#### Connect the client device <a href="#connect-the-client-device" id="connect-the-client-device"></a>

On the other device, you will receive a message asking if you want to connect with the new device. To finish linking the devices, you must accept the connection on the client device as well.

1. Open the Syncthing web interface.
2. Under **New device**, click **Add device**.

   <div align="left"><figure><picture><source srcset="/files/KwNVVf2n7BGTKQfGtYyz" media="(prefers-color-scheme: dark)"><img src="/files/LL9DvfLtwHPsOSYeZJXZ" alt="Clicking &#x27;Add device&#x27; on the client device."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **Device name** field, enter a custom name for the device. Alternatively, you can leave the default name that was selected by the other device.
4. Switch to the **Advanced** tab.
5. In the **Addresses** field, enter `tcp://<peer>:22000`, replacing `<peer>` with the host device’s Nord name or Meshnet IP address.\
   &#x20;\
   **Example**&#x20;

   <div align="left"><figure><picture><source srcset="/files/i0fMETQuISagEQVSxx1k" media="(prefers-color-scheme: dark)"><img src="/files/6hfNn7PVZDFUrj6fJBdx" alt="Entering the address of the host device using the assigned Nord name."></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Save**.

After a few seconds, the device status will change to **Connected (unused)**.

<div align="left"><figure><picture><source srcset="/files/5B04WemVo2fwBl3Z4Y1B" media="(prefers-color-scheme: dark)"><img src="/files/vxABMI5yhY4KwLMXcRWp" alt="New remote device connected."></picture><figcaption></figcaption></figure></div>

### Add synchronization folders <a href="#add-synchronization-folders" id="add-synchronization-folders"></a>

Syncthing automatically creates a default synchronization folder called `Sync` in the user’s home directory. Nevertheless, you can create and share multiple new folders with selected devices.

#### Share a folder from the host device <a href="#share-a-folder-from-the-host-device" id="share-a-folder-from-the-host-device"></a>

1. On the Syncthing web interface, under **Folders**, select **Add folder**.

   <div align="left"><figure><picture><source srcset="/files/V3bdzwzob0MF71rVLi3C" media="(prefers-color-scheme: dark)"><img src="/files/F53bHnZpeAWic5wNF7ve" alt="Clicking the &#x22;Add folder&#x22; button."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Fill in the following fields:
   * In the **Folder label** field, type in a custom label to easily differentiate the folder.
   * In the **Folder path** field, enter the path to the folder you want to synchronize. If the folder does not exist, it will be created automatically.
3. Switch to the **Sharing** tab.
4. Under **Unshared devices**, select the devices that you want to synchronize the folder with.

   <div align="left"><figure><picture><source srcset="/files/2WWstG5yRKbkVMQOwelm" media="(prefers-color-scheme: dark)"><img src="/files/nIcL8IpWTMdlXtIKvzMS" alt="Sharing a folder with the added remote device."></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Save**.

The new folder is now visible under **Folders** on your Syncthing web interface.

<div align="left"><figure><picture><source srcset="/files/GpKbwucUmJVXDxnm48ij" media="(prefers-color-scheme: dark)"><img src="/files/gvWF5YRO640xTQXdU5jp" alt="New shared folder visible on the Syncthing web interface." width="563"></picture><figcaption></figcaption></figure></div>

#### Share a folder from the client device <a href="#share-a-folder-from-the-client-device" id="share-a-folder-from-the-client-device"></a>

On the client device, you will receive a message asking if you wish to add the shared folder to your system. To finish linking the folders:

1. Open the Syncthing web interface.
2. Under **New folder**, click **Add**.

   <div align="left"><figure><picture><source srcset="/files/x60lE1Kt33CFfcY3cAPs" media="(prefers-color-scheme: dark)"><img src="/files/egTPFvRXTnJvM9lx0r6R" alt="Adding a new shared folder on the client device."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Fill in the following fields:
   * In the **Folder label** field, type in a custom label to easily differentiate the folder.
   * In the **Folder path** field, enter the path where you want the synchronized folder to be located on your system.
4. Click **Save**.

The new folder should be visible under **Folders** on your device.

Your folders are now synchronized between your remote devices over Meshnet, and you can securely make backups of your storage hassle-free.

### Optional: Allow access to the web interface from other devices <a href="#allow-access-to-the-web-interface-from-other-devices-optional" id="allow-access-to-the-web-interface-from-other-devices-optional"></a>

While having access to the web interface only from the host device is more secure, you may want to have access to it over the network. To change the address of the web interface:

1. On your Syncthing web interface, in the upper-right corner, select **Actions** > **Settings**.
2. Switch to the **GUI** tab.
3. Change the **GUI listen address** to `0.0.0.0:8384`.

   <div align="left"><figure><picture><source srcset="/files/zQ5iDZdBrvtBeY2kDkOA" media="(prefers-color-scheme: dark)"><img src="/files/ciY1Mnwc3kuJUoXV0NO2" alt="Changing the GUI listen address to 0.0.0.0:8384"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Save**.

Your Syncthing web interface can now be accessed from the device’s local network or over Meshnet using the Nord name or the Meshnet IP address with the port number `8384`.


# How to set up a remote Airsonic music server

Discover how to configure a music server using Airsonic on Windows, macOS, and Linux and access it remotely over Meshnet.

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

In today's digital landscape, cloud-based audio services have become the go-to choice for many individuals seeking convenient access to their music. However, these solutions often fall short when providing access to personal audio files stored on separate devices. This limitation emphasizes the importance of finding a solution that grants users full control over their audio streaming experience, leading many to explore the option of setting up their own music servers.

[Airsonic](https://airsonic.github.io/) is a self-hosted, free, and open-source application that enables you to easily configure a personal music server. This tool is optimized for various audio formats and large music collections. While self-hosting a server can be an exciting learning experience, setting up secure remote access may be the opposite.

Tinkering with [port forwarding](https://nordvpn.com/blog/port-forwarding/) or looking for available domain names can be tedious work. With [Meshnet](https://nordvpn.com/meshnet/), you can allow remote connections to your server without any difficult networking configurations. In addition, you do not have to expose any ports on your server.

This guide contains instructions on how you can set up your own Airsonic music server on Windows, macOS, and Linux devices using Docker, and access the server remotely using Meshnet.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

To follow this guide, you must have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Deploy Airsonic using Docker <a href="#deploy-airsonic-using-docker" id="deploy-airsonic-using-docker"></a>

With Docker and Docker Compose installed, you can begin setting up your Airsonic music server. Running the Airsonic server as a Docker container requires fewer resources than a standalone installation. Besides, you can easily make changes to the server’s configuration by adjusting the Docker Compose file and restarting the container.

### Creating a Docker Compose file <a href="#creating-a-docker-compose-file" id="creating-a-docker-compose-file"></a>

First, you need to create a Docker Compose file that contains the deployment instructions for the Airsonic Docker container.

{% tabs %}
{% tab title="Windows" %}
To create a Docker Compose file for Airsonic on Windows:

1. Open **PowerShell**.
2. Run the following command to create a new `airsonic` folder with a `data` subfolder, and then navigate to the `airsonic` folder:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir airsonic/data; cd airsonic
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/VQnJcpYOevaCYvCZfOug" alt="PowerShell output after creating the required directories and navigating to the &#x27;airsonic&#x27; folder."><figcaption></figcaption></figure></div>

   &#x20;
3. Create a `docker-compose.yml` file and open it using Notepad with the following command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad docker-compose.yml
   </code></pre>

   &#x20;\
   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="/files/M9QOg0wUfm960mexzO5w" media="(prefers-color-scheme: dark)"><img src="/files/kxCdxz5aZkotttBYkUCH" alt="" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the Notepad window, paste the following information containing instructions for the [Airsonic-advanced Docker container](https://hub.docker.com/r/airsonicadvanced/airsonic-advanced):\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: "3"
   services:
     airsonic-advanced:
       container_name: airsonic-advanced
       image: airsonicadvanced/airsonic-advanced:latest
       restart: unless-stopped
       ports:
         - 4040:4040
         - 4041:4041
       environment:
         TZ: &#x3C;YourTimezone>
       volumes:
         - &#x3C;\path\to\music>:/var/music
         - &#x3C;\path\to\playlists>:/var/playlists
         - &#x3C;\path\to\podcasts>:/var/podcasts
         - ./data:/var/airsonic
   </code></pre>

   &#x20;
5. Replace the placeholders with the values appropriate for your setup:
   * Instead of `<TimeZone>`, enter your [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
   * Instead of `<\path\to\music>`, enter the path to your music folder.
   * Instead of `<\path\to\playlists>`, enter the path to your playlists folder.
   * Instead of `<\path\to\podcasts>`, enter the path to your podcasts folder.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/FqjPNPXaOXAW7sR7gBf5" media="(prefers-color-scheme: dark)"><img src="/files/bXZZCTUOab7iUCainx5a" alt="Example Docker Compose file for Airsonic on Windows."></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Press **Ctrl** + **S** to save changes.
7. Exit **Notepad**.
   {% endtab %}

{% tab title="macOS and Linux" %}
To create a Docker Compose file for Airsonic on macOS and Linux:

1. Open **Terminal**.
2. Run the `id` command to find the `uid` and `gid` values for your user account.

   <div align="left"><figure><img src="/files/aeAWmOzyIDVmwU6jMwmS" alt="UID and GID values underlined in the terminal output."><figcaption></figcaption></figure></div>

   &#x20;
3. Run the following command to create a new `airsonic` folder with a `data` subfolder, and then navigate to the `airsonic` folder:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir -p airsonic/data &#x26;&#x26; cd airsonic
   </code></pre>

   &#x20;
4. Create a `docker-compose.yml` file and open it using the Nano text editor with the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano docker-compose.yml
   </code></pre>

   &#x20;
5. In the terminal window, paste the following information containing instructions for the [Airsonic-advanced Docker container](https://hub.docker.com/r/airsonicadvanced/airsonic-advanced):\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: "3"
   services:
     airsonic-advanced:
       container_name: airsonic-advanced
       image: airsonicadvanced/airsonic-advanced:latest
       restart: unless-stopped
       ports:
         - 4040:4040
         - 4041:4041
       user: &#x3C;UID>:&#x3C;GID>
       environment:
         TZ: &#x3C;YourTimezone>
       volumes:
         - &#x3C;/path/to/music>:/var/music
         - &#x3C;/path/to/playlists>:/var/playlists
         - &#x3C;/path/to/podcasts>:/var/podcasts
         - ./data:/var/airsonic
   </code></pre>

   &#x20;
6. Replace the placeholders with the values appropriate for your setup:
   * Instead of `<UID>` and `<GID>`, enter your user account’s values from Step 2.
   * Instead of `<TimeZone>`, enter your [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
   * Instead of `</path/to/music>`, enter the path to your music folder.
   * Instead of `</path/to/playlists>`, enter the path to your playlists folder.
   * Instead of `</path/to/podcasts>`, enter the path to your podcasts folder.\
     &#x20;

     **Example**

     <div align="left"><figure><img src="/files/KAV06Nu9BZlEfneMGIG4" alt="Example Docker Compose file for Airsonic on Linux."><figcaption></figcaption></figure></div>

     &#x20;
7. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.
   {% endtab %}
   {% endtabs %}

### Starting the Airsonic container <a href="#starting-the-airsonic-container" id="starting-the-airsonic-container"></a>

With the Compose file created, while in the `airsonic` directory, execute the following command in the command line to create your Airsonic instance:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the Airsonic-advanced image](https://docs.docker.com/engine/reference/commandline/pull/) from Docker Hub and create the container.

You can run the `docker ps` command to check if your Airsonic container is up and healthy.

<div align="left"><figure><img src="/files/et3b5OCmssNQ5yUnST4u" alt="Output of the &#x27;docker ps&#x27; command showing that the Airsonic container is active."><figcaption></figcaption></figure></div>

## Access the Airsonic web interface <a href="#access-the-airsonic-web-interface" id="access-the-airsonic-web-interface"></a>

Now that the server is active, you can control all of its settings using the Airsonic web interface. To access the web interface:

1. Open your internet browser.
2. Navigate to the following URL:\
   &#x20;\
   `localhost:4040/login`\
   &#x20;
3. In the **Username** and **Password** fields, enter `admin` and click **Log in**.

   <div align="left"><figure><img src="/files/ETIGsZgULB1hQg6HMdYG" alt="Logging in to the Airsonic web interface using the default credentials."><figcaption></figcaption></figure></div>

Upon logging in, you will be redirected to the Airsonic “Getting started” page. You can disable this page by clicking **Don’t show this again**.

### Updating the administrator account credentials <a href="#updating-the-administrator-account-credentials" id="updating-the-administrator-account-credentials"></a>

It is essential to secure administrator access to your Airsonic instance with strong credentials. To update the login details for the administrator account:

1. In the upper-right corner, click **admin** and select **Credentials**.
2. Click **Add credentials**.
3. Enter your new password twice, select its expiry date, and click **Create**.

   <div align="left"><figure><img src="/files/cha2hOouDUFiHYcSUhd6" alt="Filling in the required information in the &#x27;Add credentials&#x27; dialog." width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Credentials** table, next to the initial entry, select the **Delete** checkbox and click **Save**.

   <div align="left"><figure><img src="/files/fZROEJ7g0ihuKYV7F5FG" alt="Deleting the default administrator login credentials."><figcaption></figcaption></figure></div>

The old default credentials are now removed and administrator access to your Airsonic instance is secured with the newly created password.

### Creating new user accounts <a href="#creating-new-user-accounts" id="creating-new-user-accounts"></a>

Using an administrator account for standard access is not recommended, especially if you plan to share the server with your peers. Airsonic allows you to create new accounts with specific permissions. This way, you can be sure that no accidental changes to the server will be made.

To create a new user:

1. Go to Airsonic **Settings** and select **Users**.
2. Make sure that **New user** is chosen next to **Select user**.
3. Select the appropriate permissions and access to media folders for the new user.
4. Enter the username, email address, and password of the new user.
5. Click **Save**.

   <div align="left"><figure><img src="/files/9G52BNtcYZe7rPGzvd2J" alt="Clicking &#x27;Save&#x27; on the filled in new user creation screen." width="375"><figcaption></figcaption></figure></div>

The new user account is now created.

## Connect to Airsonic over Meshnet <a href="#connect-to-airsonic-over-meshnet" id="connect-to-airsonic-over-meshnet"></a>

With your Airsonic server fully set up, you can use it remotely over Meshnet.

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

If you're hosting Airsonic on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices connecting to it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using an internet browser <a href="#method-1-using-an-internet-browser" id="method-1-using-an-internet-browser"></a>

The easiest method to access your audio files stored on the Airsonic server is using an internet browser.

1. Copy the Nord name of your Airsonic server from the NordVPN application.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name followed by `:4040/` and press **Enter**.\
   &#x20;

   **Example**\
   `secret.meerkat-olympic.nord:4040/`\
   &#x20;
4. Log in to your Airsonic account.

   <div align="left"><figure><img src="/files/7Lv3yHapj7FP9I5qV82u" alt="Logging in to the Airsonic web interface using the newly created user account."><figcaption></figcaption></figure></div>

Now you should have full access to your Airsonic music library while being away from home.

### Method 2: Using mobile apps <a href="#method-2-using-mobile-apps" id="method-2-using-mobile-apps"></a>

You can also use Airsonic-compatible apps to conveniently access and listen to your audio library. A list of compatible apps is available on the [Airsonic applications documentation](https://airsonic.github.io/docs/apps/) page.

{% tabs %}
{% tab title="Android" %}
To connect to your Airsonic server using the Ultrasonic app for Android:

1. Install Ultrasonic from the [Google Play Store](https://play.google.com/store/apps/details?id=org.moire.ultrasonic) and launch it.
2. In the **Welcome to Ultrasonic!** pop-up window, tap **Take me to the settings**.

   <div align="left"><figure><picture><source srcset="/files/EWsBGztvpxocN6vNr9dX" media="(prefers-color-scheme: dark)"><img src="/files/xZrOs77arTVoEIkVBNrR" alt="Tapping &#x27;Take me to the settings&#x27;." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the lower-right corner, tap the plus (+) button.
4. In the **Add server** screen, fill in the following information:
   * In the **Name** field, enter a custom name for your server.
   * In the **Server address** field, append the Nord name of your Airsonic server followed by `:4040`.
   * In the **Username** and **Password** fields, enter the user credentials for your Airsonic server account.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/p2YMSlg63xW83gVhRAHj" media="(prefers-color-scheme: dark)"><img src="/files/9VZ0QNSdpV1hM0WtzNr5" alt="Filled in details for the Meshnet Airsonic server." width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
5. Under **Advanced settings**, enable the **Force plain password authentication** toggle.

   <div align="left"><figure><picture><source srcset="/files/uglu6oJJHwhMiy5yCydH" media="(prefers-color-scheme: dark)"><img src="/files/AcxE76FfBDTJkLAgrLu0" alt="Enabling the &#x27;Force plain password authentication&#x27; toggle." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Tap **Test connection** to ensure that you can reach your server and tap **Save**.
7. From the **Configured servers** list, select your newly added server.

   <div align="left"><figure><picture><source srcset="/files/PfgD1yrghujk6wX80qF0" media="(prefers-color-scheme: dark)"><img src="/files/jRcavWrmrunuynTU7W70" alt="Selecting the Meshnet Airsonic server." width="375"></picture><figcaption></figcaption></figure></div>

Now you can navigate your music library and play selected recordings directly from the Ultrasonic app.
{% endtab %}

{% tab title="iOS" %}
To connect to your Airsonic server using the iSub music streamer app for iOS:

1. Install iSub from the [Apple App Store](https://apps.apple.com/us/app/isub-music-streamer/id362920532) and launch it.
2. Fill in the presented fields as follows:
   * In the first field, enter `http://<peer>:4040`, replacing `<peer>` with your Airsonic server’s Nord name.\
     &#x20;\
     **Example**\
     `http://secret.meerkat-olympic.nord:4040`\
     &#x20;
   * In the **username** and **password** fields, enter authentication credentials for your Airsonic server account.
3. Tap **Save**.

   <figure><img src="/files/UicZ973aSuG7qKpoyuFI" alt="&#x22;Save&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
4. Tap **App settings** and switch to the **Settings** tab.
5. Under **General**, turn on the **Enable basic authentication** toggle.

   <div align="left"><figure><img src="/files/BFU9Yj941a7beYooVcUT" alt="Turning on the &#x27;Enable basic authentication&#x27; toggle in the iSub settings." width="375"><figcaption></figcaption></figure></div>

Now you can navigate your music library and play selected recordings directly from the iSub app.
{% endtab %}
{% endtabs %}


# How to set up HTTP File Server for remote file access

Discover how to use HTTP File Server on Windows, macOS, and Linux devices to remotely share and download files over Meshnet.

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

[HTTP File Server](https://github.com/rejetto/hfs) (HFS) is an open-source web server designed for convenient file sharing. It can be used as a more user-friendly alternative to [shared folder](/how-to/remote-files-media-access/set-up-folder-sharing) configurations. However, without [port forwarding](https://nordvpn.com/blog/port-forwarding/), the HFS instance is limited only to the [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN).

With the help of [Meshnet](https://nordvpn.com/meshnet/), you can form your own virtual network with devices from different networks all around the globe. This setup allows you to remotely access the HFS instance and share files with others without compromising your home network’s security.

This guide showcases how you can set up HTTP File Server on Windows, macOS, and Linux devices and access the shared files from remote devices over Meshnet.

## Set up HTTP File Server <a href="#set-up-http-file-server" id="set-up-http-file-server"></a>

First, you need to configure the HTTP File Server software on your device.

### Starting HFS <a href="#starting-hfs" id="starting-hfs"></a>

Begin by downloading the latest version of HFS and starting it.

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

1. Visit the [Releases page](https://github.com/rejetto/hfs/releases) of the HFS GitHub repository.
2. Download the latest archive for Windows and extract its contents to a dedicated folder.
3. Launch the **hfs** executable file.

   <figure><picture><source srcset="/files/vfdFGye4HKR42JILS8y4" media="(prefers-color-scheme: dark)"><img src="/files/V41u4O68wPtrHkSm27i6" alt="HFS executable file selected in File explorer."></picture><figcaption></figcaption></figure>

   &#x20;\
   If the Microsoft Defender SmartScreen window shows up, select **More info** and click **Run anyway**.

The executable will open a PowerShell window displaying information about your HFS instance and network interfaces.

<div align="left"><figure><img src="/files/ovD1O3uu4mDXhtmT1kLG" alt="Windows PowerShell window displaying information about the HFS configuration."><figcaption></figcaption></figure></div>

Once the server is started, the HFS admin panel should open in your default internet browser.

<figure><picture><source srcset="/files/0S8AB2CJmctdHlUGNrDz" media="(prefers-color-scheme: dark)"><img src="/files/25YJvmDceANIcv2LDdc4" alt="&#x22;Home&#x22; page of the HFS web interface."></picture><figcaption></figcaption></figure>

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

If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click **Allow access** to allow connections through the firewall.\
![](/files/Cbzw0UEbGZaAI7dOomml)
{% endhint %}
{% endtab %}

{% tab title="macOS" %}

1. Visit the [Releases page](https://github.com/rejetto/hfs/releases) of the HFS GitHub repository.
2. Download the archive for your macOS architecture.
   * If you are using an Intel Mac, choose the `hfs-mac.zip` archive.
   * If you are using an Apple silicon Mac, choose the `hfs-mac-arm.zip` archive.
3. Extract the downloaded archive to a dedicated folder.
4. Open the HFS folder and launch the **hfs** executable file.

   <figure><picture><source srcset="/files/NUu9Kez7ebPdWBt7cxH7" media="(prefers-color-scheme: dark)"><img src="/files/tYsNZgXLp5u6zRYukFg4" alt="HFS executable file selected in Finder."></picture><figcaption></figcaption></figure>

The executable will open a terminal window displaying information about your HFS instance and network interfaces.

<div align="left"><figure><picture><source srcset="/files/IZc8BBeGtis4qf0SaPGh" media="(prefers-color-scheme: dark)"><img src="/files/T9BA3890sZklWSqEPnoR" alt="Terminal window displaying information about the HFS configuration."></picture><figcaption></figcaption></figure></div>

Once the server is started, the HFS admin panel should open in your default internet browser.

<figure><picture><source srcset="/files/0S8AB2CJmctdHlUGNrDz" media="(prefers-color-scheme: dark)"><img src="/files/25YJvmDceANIcv2LDdc4" alt="&#x22;Home&#x22; page of the HFS web interface."></picture><figcaption></figcaption></figure>

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

When trying to launch HFS, you may receive an error message indicating that the developer cannot be identified. To proceed with the installation, open **System settings** > **Privacy & security**, scroll down and click **Open anyway**.

<picture><source srcset="/files/qs7z1gIzCxSKfpBR6vAq" media="(prefers-color-scheme: dark)"><img src="/files/xUF8GFHZ3stlkIT5tMS2" alt="Clicking &#x27;Open anyway&#x27; in macOS system settings." data-size="original"></picture>
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

1. Visit the [Releases page](https://github.com/rejetto/hfs/releases) of the HFS GitHub repository.
2. Download the archive for Linux and extract its contents to a dedicated folder.
3. Open the HFS folder, right-click anywhere inside, and select **Open in terminal**.

   <div align="left"><figure><picture><source srcset="/files/miBoD9vRoBQG8NCbnOtx" media="(prefers-color-scheme: dark)"><img src="/files/BEhYQ8jp3donP2zXIkwo" alt="Selecting &#x27;Open in Terminal&#x27; from the Ubuntu context menu."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the terminal, run the following command to start HFS:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo ./hfs
   </code></pre>

   &#x20;\
   The terminal window will display information about your HFS instance and network interfaces.

   <div align="left"><figure><img src="/files/JOmczcX0EcJLcF54fawF" alt="Terminal window displaying information about the HFS configuration."><figcaption></figcaption></figure></div>

   &#x20;
5. Open your internet browser and navigate to the following URL to access the HFS admin panel:\
   &#x20;\
   `localhost/~/admin/`\
   &#x20;

   <figure><picture><source srcset="/files/0S8AB2CJmctdHlUGNrDz" media="(prefers-color-scheme: dark)"><img src="/files/25YJvmDceANIcv2LDdc4" alt="&#x22;Home&#x22; page of the HFS web interface."></picture><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

### Creating a new administrator account <a href="#creating-a-new-administrator-account" id="creating-a-new-administrator-account"></a>

When the server is active, it is recommended to create a dedicated administrator account. This way, you can manage your server’s settings from other devices. The default configuration allows administrator access only from the same device.

1. On the HFS admin panel, click the **Accounts** option on the left.
2. Select **Add** > **User**.
3. Fill in your preferred username and password and turn on the **Admin-panel access** toggle.

   <div align="left"><figure><picture><source srcset="/files/wbiNu8M7FFCT0avjjOkn" media="(prefers-color-scheme: dark)"><img src="/files/DmyCRf0Wu5TVIO0sTjIh" alt="Entering the administrator account credentials with the &#x27;Permission to access admin-panel&#x27; toggle enabled." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Save**.

Your newly created user entry should be visible on the **Accounts** page.

### Adding shared files <a href="#adding-shared-files" id="adding-shared-files"></a>

After securing administrator access, you can import files you want to share with your Meshnet peers.

1. On the HFS admin panel, select the **Shared files** section.
2. In the lower-right corner, click **Add** > **From disk**.
3. Choose the files or folders you want to be shared on your HFS web interface and click **Select**.

   <div align="left"><figure><picture><source srcset="/files/rYyQmM1GDop0NQsoxqnC" media="(prefers-color-scheme: dark)"><img src="/files/pyOwU8UssMF5ujRnBXVm" alt="Selecting folders to be shared on the server." width="375"></picture><figcaption></figcaption></figure></div>

The selected files should now appear on the **Shared files** page under **Virtual file system**.

<div align="left"><figure><picture><source srcset="/files/Ni2WtSMDvjTU4naPqn2L" media="(prefers-color-scheme: dark)"><img src="/files/wgtQLQ6of8zTyPHE588A" alt="Shared files page showing the imported files for sharing." width="563"></picture><figcaption></figcaption></figure></div>

## Remotely download your files over Meshnet <a href="#remotely-download-your-files-over-meshnet" id="remotely-download-your-files-over-meshnet"></a>

After setting up the server, you can use its functionality remotely over Meshnet. The shared files can be seen on the HFS front-end page.

### Accessing HFS from remote devices <a href="#accessing-hfs-from-remote-devices" id="accessing-hfs-from-remote-devices"></a>

To access the HFS front-end page from remote devices in your Meshnet:

1. Copy the Nord name of the device running HFS from the NordVPN app.
2. Open your internet browser.
3. Paste the copied Nord name followed by a slash (/) to the URL field and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-andes.nord/`

The HFS front-end page should load, showcasing all of the files that are being shared from the server.

<div align="left"><figure><picture><source srcset="/files/NcVV944brJ8v2WZhEibk" media="(prefers-color-scheme: dark)"><img src="/files/f6DySRLDTwYRAe2sReBL" alt="HFS front-end website accessed using the Nord name."></picture><figcaption></figcaption></figure></div>

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

To access the admin panel from a remote device, click **Login** in the upper-right corner and enter your administrator account credentials. Upon logging in, click **Options** > **Admin-panel**.
{% endhint %}

### Downloading files <a href="#downloading-files" id="downloading-files"></a>

Once you have accessed the HFS front-end page, you can download your preferred files. You can choose to download individual files and folders or group multiple items into a single download.

#### Downloading individual items <a href="#downloading-individual-items" id="downloading-individual-items"></a>

1. Hover your mouse over the name of the item you want to download.
2. If it is a single file, click its name. If it’s a folder — click the **Menu** button next to its name.
3. Click **Download** to start downloading the item.

   <div align="left"><figure><picture><source srcset="/files/h90cclyDjx4ovzr3bHHs" media="(prefers-color-scheme: dark)"><img src="/files/eIbxHevUAE861tXcXLks" alt="Clicking &#x27;Download&#x27; in the Folder menu dialog." width="375"></picture><figcaption></figcaption></figure></div>

#### Downloading grouped items <a href="#downloading-grouped-items" id="downloading-grouped-items"></a>

1. Click the **Select** button at the top of the page.
2. Select the checkboxes next to the items you want to download.
3. In the upper-right corner, click **ZIP** to start the download.

   <figure><picture><source srcset="/files/BfpL5vAdoxEfvbNSm1FQ" media="(prefers-color-scheme: dark)"><img src="/files/mRyyEtiAEiidJmUcvAvW" alt="Clicking &#x27;ZIP&#x27; to download selected files."></picture><figcaption></figcaption></figure>

Now you can conveniently share files between remote computers and mobile devices using the HFS web interface over Meshnet.


# How to set up a remote audiobook server

Learn how to configure a personal audiobook server and listen to it remotely using Meshnet.

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

[Audiobookshelf](https://www.audiobookshelf.org/) is a feature-rich, open-source solution for managing audiobooks. This platform allows you to have a centralized location for audiobooks and podcasts, enabling convenient access from various devices over the network. Due to its self-hosted nature, the server is accessible only from the [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN). However, you may want to listen to your favorite audiobook while you’re on a commute from work or just taking a stroll around town.

With [Meshnet](https://nordvpn.com/meshnet/), you don’t need to leave your home network vulnerable and mess with difficult configurations to remotely access the server. Simply [enable Meshnet](/getting-started/how-to-start-using-meshnet) on your device and the server, and enjoy seamless access to your audiobook collection from anywhere.

This tutorial showcases how you can host an audiobookshelf server using Docker on Windows, macOS, and Linux, and access it remotely over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To follow this guide, ensure you have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. You can find instructions on how to download and install these tools on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Deploy audiobookshelf using Docker <a href="#deploy-audiobookshelf-using-docker" id="deploy-audiobookshelf-using-docker"></a>

With the prerequisites taken care of, you can begin setting up your audiobookshelf instance. Docker allows you to run the server as a lightweight app on all three desktop platforms.

### Creating a Docker Compose file <a href="#creating-a-docker-compose-file" id="creating-a-docker-compose-file"></a>

First, you need to make a Docker Compose file, which will contain all of the instructions for deploying the audiobookshelf instance.

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

1. Open **PowerShell**.

2. In your preferred directory, create a new `audiobookshelf` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir audiobookshelf; cd audiobookshelf
   </code></pre>

   &#x20;

3. Create a `docker-compose.yml` file and open it using Notepad by running:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">notepad docker-compose.yml
   </code></pre>

   &#x20;\
   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="/files/5rrj56xWsyfxge0sajqt" media="(prefers-color-scheme: dark)"><img src="/files/CVLBDBIXw69FtPcm2oLN" alt="Notepad dialog asking to create a file, with the &#x22;Yes&#x22; button highlighted." width="384"></picture><figcaption></figcaption></figure></div>

   &#x20;

4. In **Notepad**, paste the following instructions for the audiobookshelf Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: "3.7"
   services:
     audiobookshelf:
       container_name: audiobookshelf
       image: ghcr.io/advplyr/audiobookshelf:latest
       ports:
         - 13378:80
       volumes:
         - .\config:/config
         - .\metadata:/metadata
         - &#x3C;\path\to\audiobooks>:/audiobooks
         - &#x3C;\path\to\podcasts>:/podcasts
   </code></pre>

   &#x20;

5. Replace the placeholders with the paths appropriate for your configuration:
   * Swap `<\path\to\audiobooks>` with the path to your audiobook folder.
   * Swap `<\path\to\podcasts>` with the path to your podcasts folder.\
     &#x20;

     **Example**

     <figure><picture><source srcset="/files/fhrkWG0Lc3yoSesIyKEM" media="(prefers-color-scheme: dark)"><img src="/files/fYAVJs7yuej5szyUbTJK" alt="Notepad window with two lines highlighted."></picture><figcaption></figcaption></figure>

6. Press **Ctrl** + **S** to save changes.

7. Exit **Notepad**.
   {% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. In your preferred directory, create a new `audiobookshelf` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir audiobookshelf &#x26;&#x26; cd audiobookshelf
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor by running:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano docker-compose.yml
   </code></pre>

   &#x20;
4. In the compose file, paste the following instructions for the audiobookshelf Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: "3.7"
   services:
     audiobookshelf:
       container_name: audiobookshelf
       image: ghcr.io/advplyr/audiobookshelf:latest
       ports:
         - 13378:80
       volumes:
         - ./config:/config
         - ./metadata:/metadata
         - &#x3C;/path/to/audiobooks>:/audiobooks
         - &#x3C;/path/to/podcasts>:/podcasts
   </code></pre>

   &#x20;
5. Replace the placeholders with the paths appropriate for your configuration:
   * Swap `</path/to/audiobooks>` with the path to your audiobook folder.
   * Swap `</path/to/podcasts>` with the path to your podcasts folder.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/gSEggw55hL9OGBUgrorh" alt="Terminal window with two lines highlighted."><figcaption></figcaption></figure></div>

     &#x20;
6. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the text editor.
   {% endtab %}
   {% endtabs %}

### Starting the audiobookshelf instance <a href="#starting-the-audiobookshelf-instance" id="starting-the-audiobookshelf-instance"></a>

With the instructions in place, you can deploy the audiobookshelf container by running the following command from the `audiobookshelf` directory:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the audiobookshelf image](https://docs.docker.com/engine/reference/commandline/pull/) from [Docker Hub](https://hub.docker.com/r/advplyr/audiobookshelf) and deploy the container.

### Verifying the container status

You can run the `docker ps` command to check the status of your container. In the output, under `STATUS`, you should see `Up` and the duration indicating how long the container has been running.

<figure><img src="/files/q5zdZkvCaWbpcjmkIQWK" alt="Terminal window showing the output of the &#x27;docker ps&#x27; command."><figcaption></figcaption></figure>

## Configure your audiobookshelf <a href="#configure-your-audiobookshelf" id="configure-your-audiobookshelf"></a>

The audiobookshelf server creates a web interface on port `13378`. The interface contains all the settings for managing the server and its properties.

### Creating an administrator account <a href="#creating-an-administrator-account" id="creating-an-administrator-account"></a>

To begin personalizing the server, complete the initial setup and create an administrator user account.

1. Open your internet browser.
2. Navigate to the following URL:\
   &#x20;\
   `localhost:13378/`\
   &#x20;
3. Enter your preferred administrator username and password.

   <div align="left"><figure><img src="/files/NxueWKVs0zlftGJw69Bt" alt="Username and password fields for the root user filled in." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Submit**.
5. On the login page, enter the credentials you just created and select **Submit** once more.

   <div align="left"><figure><img src="/files/KLFAKttiIeFzhKVb6w3E" alt="&#x22;Submit&#x22; button highlighted on the Login screen." width="375"><figcaption></figcaption></figure></div>

### Adding audiobook libraries <a href="#adding-audiobook-libraries" id="adding-audiobook-libraries"></a>

Upon logging in, you are taken to the **Libraries** page of your audiobook server. From here, you can add directories containing your audiobook collection.

1. Select **Add your first library**.
2. In the **Library name** field, enter a custom name for the library you are importing.
3. Click **Browse for folder**.&#x20;
4. Choose the `audiobooks` folder, and click **Select folder path**.

   <div align="left"><figure><img src="/files/bI0qhHwZmYcBTfHVTXAY" alt="&#x22;audiobooks&#x22; folder and the &#x22;Select folder path&#x22; buttons highlighted."><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Create**.

Under **Libraries**, click the **Scan** button to scan your newly added directory for audiobooks.

<div align="left"><figure><img src="/files/dVwHc7cDbddVCre7lUuX" alt="&#x22;Scan&#x22; button highlighted."><figcaption></figcaption></figure></div>

### Creating additional user accounts <a href="#creating-additional-user-accounts" id="creating-additional-user-accounts"></a>

If you decide to share the audiobook server with your peers, creating new standard user accounts for each user is recommended. This ensures that your administrator account remains secure and that each person can easily keep track of the books they are listening to.

To create a new user account:

1. On your audiobookshelf web interface, from the left side menu, select **Users**.
2. In the upper-right corner, click **Add user**.

   <figure><img src="/files/CbPFwoQ6hwQKXZSj3M3p" alt="&#x22;Add user&#x22; button highlighted."><figcaption></figcaption></figure>

   &#x20;
3. In the **Username** and **Password** fields, enter the login credentials for the new user account.
4. Under **Permissions**, choose the permissions you want the new account to have.
5. Click **Submit**.

   <div align="left"><figure><img src="/files/kuJU4vemqZ0sNIOTNbxq" alt="&#x22;Submit&#x22; button highlighted."><figcaption></figcaption></figure></div>

The newly added account should now be visible under **Users** and can be used to log in to the server.

<div align="left"><figure><img src="/files/uotuGx3YcPzWweFyILbN" alt="Table of users with one entry highlighted."><figcaption></figcaption></figure></div>

## Listen to audiobooks over Meshnet <a href="#listen-to-audiobooks-over-meshnet" id="listen-to-audiobooks-over-meshnet"></a>

Now that the server is fully set up, you can start listening to your audiobook collection remotely with the help of Meshnet.

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

If you're hosting Audiobookshelf on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using a mobile app <a href="#method-1-using-a-mobile-app" id="method-1-using-a-mobile-app"></a>

Audiobookshelf currently has apps available for Android and iOS devices that streamline the user experience. You can find download links for the mobile apps on the [audiobookshelf documentation](https://www.audiobookshelf.org/docs#mobile-apps-install) page.

After installing the mobile app:

1. Copy the server device’s Nord name from the NordVPN app.
2. Launch **audiobookshelf**.
3. Tap **Connect**.

   <div align="left"><figure><img src="/files/17opiqGTnr3EbYWyCwnk" alt="&#x22;Connect&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20; &#x20;
4. In the **Server address** field, paste the copied Nord name, followed by `:13378`, and tap **Submit**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/7PwlFtkNqJsbYiZr5jMd" alt="Server&#x27;s Nord name and port entered and the &#x22;Submit&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Enter your account’s login credentials and tap **Submit**.<br>

   <div align="left"><figure><img src="/files/7lqY7QUC7jaujYRdTH2N" alt="Login dialog with entered credentials and the &#x22;Submit&#x22; button highlighted." width="375"><figcaption></figcaption></figure></div>

You should now see your audiobook library in the app. To play an audiobook, select it and tap **Stream**.

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

Another method to access the audiobook server is directly from an internet browser. This option is universally applicable to all devices because it doesn’t require installing additional software.

To access the audiobookshelf server:

1. Copy the server device’s Nord name from the NordVPN app.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name, add `:13378/`, and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-himalayas.nord:13378/`\
   &#x20;
4. Enter the credentials for your audiobookshelf account and click **Submit**.

   <figure><img src="/files/aRtHI0ql0xhFIe45p5Yx" alt="Login page of the audiobookshelf server open in an internet browser and the &#x22;Submit&#x22; button highlighted."><figcaption></figcaption></figure>

Now you can navigate the server and listen to your audiobook collection from your browser wherever you are.


# How to host a remote Kavita e-book server

Discover how to set up a Kavita e-book server to manage your digital library and access it remotely over Meshnet.

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

[Kavita](https://www.kavitareader.com/) is a multi-platform, open-source digital library server. It allows you to import your e-book collection and then conveniently access it from any device. Such a setup eliminates the need for downloading files on different devices and keeping track of your progress on each one.

Since the Kavita server is web-based, it can be easily shared between peers. However, leaving your home network open for remote access can be considered a vulnerability and be exploited for malicious intents.

By using [Meshnet](https://nordvpn.com/meshnet/), you don’t have to set up [port forwarding](https://nordvpn.com/blog/port-forwarding/) or manually configure a [VPN connection](https://nordvpn.com/what-is-a-vpn/). Meshnet uses encrypted network tunnels to connect devices into a single virtual network allowing secure, unrestricted remote connections.

This article demonstrates how you can self-host a Kavita server for your digital book collection using Docker and remotely connect to the server via Meshnet.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Before you begin, ensure you have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. You can find instructions on how to download and install these tools on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Create your Kavita instance using Docker  <a href="#create-your-kavita-instance-using-docker" id="create-your-kavita-instance-using-docker"></a>

You can begin preparing your Kavita server once you have Docker running on your device.

### Prepare a Docker Compose file <a href="#prepare-a-docker-compose-file" id="prepare-a-docker-compose-file"></a>

To start, you have to define the instructions for deploying the Kavita instance. This is done in the form of a Docker Compose file.

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

1. Open **PowerShell**.
2. In your preferred directory, make a new `kavita` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir kavita; cd kavita
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using Notepad by running:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">notepad docker-compose.yml
   </code></pre>

   &#x20;

   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="/files/Vez9D5oA2jGt28m6G455" media="(prefers-color-scheme: dark)"><img src="/files/2dlTST6sxl9Mbc0UIXAV" alt="Notepad dialog asking to create a file, with the &#x22;Yes&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In **Notepad**, paste the following instructions for the Kavita Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
       kavita:
           image: jvmilazz0/kavita:latest
           container_name: kavita
           volumes:
               - .\data:/kavita/config
               - &#x3C;\path\to\e-books>:/books
           environment:
               - TZ=&#x3C;TimeZone>
           ports:
               - "5000:5000"
           restart: unless-stopped
   </code></pre>

   &#x20;
5. Update the placeholders with the values relevant to your configuration:
   * Replace `<\path\to\e-books>` with the path to your e-book folder.
   * Replace `<TimeZone>` with your [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).\
     &#x20;

     **Example**

     <div align="left"><figure><picture><source srcset="/files/WMdcW2jiASl5cWZM6kY4" media="(prefers-color-scheme: dark)"><img src="/files/ebl3961BqXhgWxJwcXxX" alt="Notepad window with two lines highlighted."></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Press **Ctrl** + **S** to save changes.
7. Exit **Notepad**.

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

If you want to include additional folders, such as comic books and manga, you can append new lines under the `volumes` section. For example:

```yaml
- <\path\to\comics>:/comics
- <\path\to\manga>:/manga
```

{% endhint %}
{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. In your preferred directory, make a new `kavita` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir kavita &#x26;&#x26; cd kavita
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor by running:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano docker-compose.yml
   </code></pre>

   &#x20;
4. In the compose file, paste the following instructions for the Kavita Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
       kavita:
           image: jvmilazz0/kavita:latest
           container_name: kavita
           volumes:
               - ./data:/kavita/config
               - &#x3C;/path/to/e-books>:/books
           environment:
               - TZ=&#x3C;TimeZone>
           ports:
               - "5000:5000"
           restart: unless-stopped
   </code></pre>

   &#x20;
5. Update the placeholders with the values relevant to your configuration:
   * Replace `</path/to/e-books>` with the path to your e-book folder.
   * Replace `<TimeZone>` with your [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).\
     &#x20;

     **Example**

     <div align="left"><figure><picture><source srcset="/files/36mgMYr0oq9Cx4nGu1MO" media="(prefers-color-scheme: dark)"><img src="/files/EpyChtVYXXmUHqqewplH" alt="Terminal window with two lines highlighted."></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the text editor.

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

If you want to include additional folders, such as comic books and manga, you can append new lines under the `volumes` section. For example:

{% code overflow="wrap" %}

```yaml
- </path/to/comics>:/comics
- </path/to/manga>:/manga
```

{% endcode %}
{% endhint %}
{% endtab %}
{% endtabs %}

### Deploy the Kavita container <a href="#deploy-the-kavita-container" id="deploy-the-kavita-container"></a>

Now, you can use the instructions declared in the compose file to create your Kavita server instance. To deploy the container, while in the `kavita` directory, run the following command:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the Kavita image](https://docs.docker.com/engine/reference/commandline/pull/) from [Docker Hub](https://hub.docker.com/r/jvmilazz0/kavita) and deploy the container.

### Verify the container status <a href="#verify-the-container-status" id="verify-the-container-status"></a>

Run the `docker ps` command to check the state of the container. In the output, under `STATUS`, you should see `Up` and the duration indicating how long the container has been active.

<div align="left"><figure><picture><source srcset="/files/QhoqGO3TpIzAYuc3JixC" media="(prefers-color-scheme: dark)"><img src="/files/Ri1xuteN9T4zbvcioeoN" alt="Terminal output showing the container status as &#x22;Up&#x22;"></picture><figcaption></figcaption></figure></div>

## Personalize your Kavita server <a href="#personalize-your-kavita-server" id="personalize-your-kavita-server"></a>

The Kavita server is controlled and used directly from a web interface which is created when the service is deployed.

### Set up an administrator user <a href="#set-up-an-administrator-user" id="set-up-an-administrator-user"></a>

To start using the server, you need to create an administrator account. This account will have all of the permissions to manage the server.

1. Open your internet browser.
2. Navigate to the following URL:\
   &#x20;\
   `localhost:5000/`\
   &#x20;
3. Fill in the following details:
   * In the **Username** field, enter a custom username for the administrator account.
   * In the **Email** field, type in an email address that should be associated with the administrator user.
   * In the **Password** field, enter a strong password that will be used for administrator authentication.
4. Click **Register**.

   <div align="left"><figure><img src="/files/9OcZKuLpFrAUItGFnGi1" alt="&#x22;Register&#x22; button highlighted with the username, email, and password fields filled in." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. On the login page, enter your newly created authentication details and click **Submit.**

   <div align="left"><figure><img src="/files/Yq2IwJuPm11G2Opd9YM6" alt="&#x22;Submit&#x22; button highlighted on the login screen." width="375"><figcaption></figcaption></figure></div>

You should now see the home page of the Kavita web interface.

### Add your e-book library <a href="#add-your-e-book-library" id="add-your-e-book-library"></a>

Currently, your Kavita server does not display any e-books present in the folder you provided when deploying the Docker container. To fix this, you need to create a new library and point it to the location of your e-book collection.

1. On the Kavita web interface, in the upper-right corner, click **Server settings**.

   <div align="left"><figure><img src="/files/5aFQljQqU2oGz7WjrsOn" alt="&#x22;Server settings&#x22; icon button highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Select the **Libraries** tab and click **Add library.**
3. In the **Name** field, enter a custom name for the new library.
4. From the **Type** dropdown list, select **Book**, and click **Next**.

   <div align="left"><figure><img src="/files/J9e0DWjBt3ADicA03NGS" alt="&#x22;Book&#x22; type selected and &#x22;Next&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Browse for media folders**.
6. Select `/`, then `books`, and click **Share**.

   <div align="left"><figure><img src="/files/8XPFvfZMDNNXe3Pz9Qc2" alt="Path to the e-book folder and &#x22;Share&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

   &#x20;
7. Click **Next** twice and then **Save** to finish.

The newly added folder should now be visible under **Libraries**.

<div align="left"><figure><img src="/files/4hOPpomCnuH5AmRb81cR" alt="&#x22;Libraries&#x22; tab of the Kavita dashboard showing the new library."><figcaption></figcaption></figure></div>

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

Ensure that your e-book folder structure follows the requirements provided in the [Kavita documentation](https://wiki.kavitareader.com/guides/scanner/#file-layout). Otherwise, the server may not detect your e-books.
{% endhint %}

### Turn on automatic library scans <a href="#turn-on-automatic-library-scans" id="turn-on-automatic-library-scans"></a>

To make sure that your libraries are updated as soon as possible, you can enable the "Folder watching" feature of Kavita. It will monitor your library folders for any changes and update them when necessary.

1. Open the **Server settings** page.
2. In the **General** tab, scroll down to the **Folder watching**.
3. Turn on the **Enable folder watching** toggle.

   <div align="left"><figure><img src="/files/yP0SdgD9hWHhUzbemyxV" alt="&#x22;Enable folder watching&#x22; toggle turned on." width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Save**.

### Invite additional users <a href="#invite-additional-users" id="invite-additional-users"></a>

If you wish to share access to the Kavita server with your friends or family, it is advisable to have distinct accounts for each user. Kavita has a user management system that allows you to send invitation links or manually create accounts yourself.

To create a new user account:

1. Open Kavita **Server settings**.
2. Select the **Users** tab and click **Invite**.

   <div align="left"><figure><img src="/files/hBIZhFvaxmGXLKMPMnpI" alt="&#x22;Invite&#x22; button highlighted."><figcaption></figcaption></figure></div>

   &#x20;
3. In the **Email field**, enter a username for the new user account.
4. Select the roles and libraries you want the new account to have access to and click **Invite**.

   <div align="left"><figure><img src="/files/07k0qptfYh3lVQsWXvJl" alt="&#x22;Invite&#x22; button highlighted with the roles and libraries for the new user account selected." width="563"><figcaption></figcaption></figure></div>

You should now see a registration link in the **Invite url** field. From here, you can choose if you want to finish the new user creation yourself or send the invitation link to your Meshnet peer.

<details>

<summary>Complete account setup</summary>

To finish the user creation process yourself:

1. Copy the provided URL.

   <div align="left"><figure><img src="/files/NS43zxyvhtNgjKmrCMq0" alt="Copy button next to the invite URL highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Open a new tab in your browser.
3. Paste the copied link in the URL field.
4. Fill in the **Username** and **Password** fields, and click **Register**.

   <div align="left"><figure><img src="/files/iVeYFAbtK73eupRRRqlh" alt="Registration form with the account details filled in." width="375"><figcaption></figcaption></figure></div>

A notification claiming **Account registration complete** should prompt.

</details>

<details>

<summary>Send invitation</summary>

To send an invitation to your Meshnet peer:

1. Copy the provided URL.

   <div align="left"><figure><img src="/files/NS43zxyvhtNgjKmrCMq0" alt="Copy button next to the invite URL highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Change the `localhost` part of the link to the Nord name of your Kavita server.\
   &#x20;\
   **Example**

   <pre data-overflow="wrap"><code>http:/secret.meerkat-himalayas.nord:5000/registration/confirm-email?token=CfDJ8GCw%2fIYkjOBCikS3942rGk%2f1oYUHCPIC6fHx%2bYM%2fZW%2bP04ir6UiYOaeyk2UVAZc2FE5ug9Zc2MGmg%2fMTgSyPcdrS3QrK3ZaIx6j5Pl1Pkya2bqrO7pLNkcCm2ne8ndLA8UgTElFkx7NH9SZMUbIPxDsfN83iqLVOkAXhDkk1dusAcieahaz6s1lmr3r68tU9Qg%3d%3d&#x26;email=fernando.thewhale
   </code></pre>

   &#x20;
3. Share the updated link with your peer.

After opening the link, the invitee will need to fill in the registration details and create the account.

</details>

## Remotely access your e-books with Meshnet <a href="#remotely-access-your-e-books-with-meshnet" id="remotely-access-your-e-books-with-meshnet"></a>

Your Kavita e-book server is now fully set up and ready for use. You can remotely connect to the server over Meshnet by either using a third-party e-book reader app or directly from your internet browser.

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

If you're hosting Kavita on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using mobile reader apps <a href="#method-1-using-mobile-reader-apps" id="method-1-using-mobile-reader-apps"></a>

This section contains instructions for connecting to the Kavita server using the [Moon+ Reader](https://www.moondownload.com/) app on Android as an example.

You can download and install Moon+ Reader for free from [Google Play](https://play.google.com/store/apps/details?id=com.flyersoft.moonreader\&hl=en\&gl=US). After installing the app:

1. Copy the Nord name of the device hosting the Kavita server from the NordVPN app.
2. Launch **Moon+ Reader**.
3. If prompted, grant the **All files access** permission to the reader app.

   <div align="left"><figure><picture><source srcset="/files/43wyE83Dy60kiGQD5ZuI" media="(prefers-color-scheme: dark)"><img src="/files/XrJ4DhvV2rq8g5agHz6S" alt="&#x22;Allow access to manage all files&#x22; toggle enabled." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Tap the arrow icon in the upper-right corner of the **Net library** section.

   <div align="left"><figure><picture><source srcset="/files/yqMfZVFdbp9XG3AWkzlL" media="(prefers-color-scheme: dark)"><img src="/files/xLYZx2ltQvIDAzLulL8J" alt="Arrow button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. In the upper-right corner, tap the three-dot icon and select **Add new catalog**.
6. Fill in the following details:
   * In the **Catalog name** field, enter a custom name for the Kavita library that will be displayed in the reader.
   * In the **Catalog URL** field, type in `http://`, paste the copied Nord name, and add `:5000/`.\
     &#x20;

     **Example**\
     `http://secret.meerkat-himalayas.nord:5000`\
     &#x20;
7. Tap **OK**.

   <div align="left"><figure><picture><source srcset="/files/MnDpMMfCW3aG8M5k6ErP" media="(prefers-color-scheme: dark)"><img src="/files/JpdK4Xer91m95jp6MRE9" alt="&#x22;OK&#x22; button highlighted on the filled in Add new catalog dialog." width="375"></picture><figcaption></figcaption></figure></div>

Your Kavita library should now be visible on the **Net library** screen.

<div align="left"><figure><picture><source srcset="/files/yH18OVireQfqKVGsltjv" media="(prefers-color-scheme: dark)"><img src="/files/QGIUAztLnNSflRa027x3" alt="Newly added Kavita library highlighted." width="375"></picture><figcaption></figcaption></figure></div>

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

To access your e-book library on the Kavita server from an internet browser:

1. Copy the Nord name of the device hosting the Kavita server.

   <div align="left"><figure><picture><source srcset="/files/8PEGvmON6B53DHWdHuv9" media="(prefers-color-scheme: dark)"><img src="/files/zMcwiNpQqTOQhpHB6zVT" alt="Nord name copied from the Windows NordVPN app."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open your internet browser.
3. In the URL field, paste the copied Nord name, add `:5000/`, and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-himalayas.nord:5000/`\
   &#x20;
4. Type in the username and password of the Kavita user account.
5. Click **Submit** to log in.

   <figure><picture><source srcset="/files/yoXvCd7cXBxIMEPk7PTp" media="(prefers-color-scheme: dark)"><img src="/files/5FvqnC2qNhMgIszJBk3C" alt="&#x22;Submit&#x22; button highlighted on the Kavita login page."></picture><figcaption></figcaption></figure>

Now you can access your digital e-book library from the comfort of your internet browser.


# How to set up and remotely access Immich using Meshnet

Discover how you can configure and remotely access Immich with Meshnet.

## What is Immich? <a href="#what-is-immich" id="what-is-immich"></a>

[Immich](https://immich.app/) <img src="/files/7Y8I7SauOh6GpPT2kxlq" alt="" data-size="line"> is a self-hosted and open-source tool for backing up and managing your images and videos. It offers an intuitive solution with a wide range of features, including multi-user support, asset sharing, and [facial recognition](https://nordvpn.com/blog/facial-recognition/). Unlike other self-hosted picture libraries, such as [LibrePhotos](https://meshnet.nordvpn.com/how-to/remote-files-media-access/librephotos-picture-library), Immich is primarily focused on backup functionality, allowing you to easily upload pictures from desktop and mobile platforms.

By supplementing your Immich setup with [Meshnet](https://nordvpn.com/meshnet/), you can enable secure content backup and remote access over an encrypted [NordLynx](https://nordvpn.com/blog/nordlynx-protocol-wireguard/) tunnel. This configuration does not require [port forwarding](https://nordvpn.com/blog/port-forwarding/) or experience with [firewalls](https://nordvpn.com/cybersecurity/glossary/firewall/). Even if you are on the other side of the globe, simply turn on Meshnet and connect to your Immich server as if you were on the same[ local area network](https://nordvpn.com/blog/what-is-lan/) (LAN).

This guide will walk you through the process of setting up a personal Immich instance and showcase how Meshnet can be integrated to allow for seamless remote connections to the server.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that you have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. You can find instructions on how to download and install these tools on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Run Immich using Docker <a href="#run-immich-using-docker" id="run-immich-using-docker"></a>

Immich operates as a multi-container app, comprising Docker containers for the server, database, and machine learning, all working together seamlessly. The Docker Compose tool is used to manage the preparation, deployment, and operation of these interconnected containers.

### Prepare the Immich directory <a href="#prepare-the-immich-directory" id="prepare-the-immich-directory"></a>

To start, you need to prepare a folder that will hold all files and data required to run Immich.

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

1. Open **PowerShell**.
2. In your preferred directory, create a new `immich` folder and navigate to it using the following command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir immich; cd immich
   </code></pre>

   &#x20;
3. Run the two commands below to download the Docker Compose and the environmental variable files from the [Immich GitHub repository](https://github.com/immich-app/immich):

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">Invoke-WebRequest https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml -OutFile docker-compose.yml 
   Invoke-WebRequest https://github.com/immich-app/immich/releases/latest/download/example.env -OutFile .env
   </code></pre>

   &#x20;
4. Use the `ls` command to check if both files have downloaded successfully.

   <figure><img src="/files/0nQ0Ady5ykJO073rSade" alt="Output of the &#x22;ls&#x22; command with &#x22;.env&#x22; and &#x22;docker-compose.yml&#x22; file names highlighted."><figcaption></figcaption></figure>

{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. In your preferred directory, create a new `immich` folder and navigate to it using the following command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir immich &#x26;&#x26; cd immich
   </code></pre>

   &#x20;
3. Run the two commands below to download the Docker Compose and the environmental variable files from the [Immich GitHub repository](https://github.com/immich-app/immich):

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml 
   wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
   </code></pre>

   &#x20;
4. Use the `ls -a` command to check if both files have downloaded successfully.&#x20;

   <figure><picture><source srcset="/files/MUa50RwQQlP5orFKBMWr" media="(prefers-color-scheme: dark)"><img src="/files/eVS087aXv7oaZAj5345h" alt="Output of the &#x22;ls -a&#x22; command with &#x22;.env&#x22; and &#x22;docker-compose.yml&#x22; file names highlighted."></picture><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

### Modify environmental variables <a href="#modify-environmental-variables" id="modify-environmental-variables"></a>

Next, you need to alter some of the default values provided in the downloaded files to fit your setup.

{% tabs %}
{% tab title="Windows" %}
{% hint style="info" %}
**Note**

Immich relies on a [PostgreSQL database](https://www.postgresql.org/), which is incompatible with [NTFS ](https://en.wikipedia.org/wiki/NTFS)or [FAT](https://en.wikipedia.org/wiki/File_Allocation_Table) file systems used by Windows. To overcome this limitation, the database folder must be mapped as a [Docker volume](https://docs.docker.com/engine/storage/volumes/) rather than a standard system directory.

For more information, see the “Special requirements for Windows users” section of the [Immich requirements page](https://immich.app/docs/install/requirements#special-requirements-for-windows-users).
{% endhint %}

1. In **PowerShell**, run the following command to create a new volume that will be used for database storage.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker volume create pgdata
   </code></pre>

   &#x20;

   <figure><img src="/files/BTUK9H59FZtMmD1aKKsu" alt="Command line output of the &#x22;docker volume create pgdata&#x22; command."><figcaption></figcaption></figure>

   &#x20;
2. Open the `.env` file using Notepad with the command below:

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad .env
   </code></pre>

   &#x20;
3. Make the following changes to the environmental file:
   * Set the value of `UPLOAD_LOCATION` to the path where you want the uploaded pictures and videos to be saved, as shown:&#x20;

     <div align="left"><figure><picture><source srcset="/files/EeYOVO9SDVWN0a9UgDs3" media="(prefers-color-scheme: dark)"><img src="/files/YVanUsSRjzKWa7Ulr3Sc" alt="File path next to &#x22;UPLOAD_LOCATION&#x22; highlighted."></picture><figcaption></figcaption></figure></div>

     &#x20;\
     If the path contains spaces, enclose it with single quotation marks.
   * Change the `DB_DATA_LOCATION` location value to `postgres` to ensure the database uses the Docker volume.&#x20;

     <figure><picture><source srcset="/files/EWW3ICTYk4Og9VJfJNiR" media="(prefers-color-scheme: dark)"><img src="/files/s2sOwLehWESAeEsLpUzu" alt="&#x22;pgdata&#x22; entered next to &#x22;DB_DATA_LOCATION&#x22;."></picture><figcaption></figcaption></figure>

     &#x20;
   * Uncomment the `TZ` line by removing the hash (#) symbol at the start. Then, replace the default `Etc/UTC` value with your current [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/paCeZhlO2WZtv5ixVFUh" media="(prefers-color-scheme: dark)"><img src="/files/abYshYhGnVCCb9btd3gu" alt="Time zone identifier highlighted."></picture><figcaption></figcaption></figure>

     &#x20;
4. Press **Ctrl** + **S** to save changes and then exit **Notepad**.
5. Open the `docker-compose.yml` file using Notepad using the command provided below:

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad docker-compose.yml
   </code></pre>

   &#x20;
6. At the end of the file, under the `volumes`, append a new `pgdata:` line, to map the Docker volume to the container.

   <figure><picture><source srcset="/files/1qMSNdNtrIAvTIptMsse" media="(prefers-color-scheme: dark)"><img src="/files/whWxNaSzHQ8CPFDHPIHM" alt="&#x22;pgdata:&#x22; highlighted under the &#x22;volumes&#x22; section."></picture><figcaption></figcaption></figure>

   &#x20;
7. Press **Ctrl** + **S** to save changes and then exit **Notepad**.
   {% endtab %}

{% tab title="macOS and Linux" %}

1. From the terminal, open the `.env` file using the Nano text editor with the following command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano .env
   </code></pre>

   &#x20;
2. Set the value of `UPLOAD_LOCATION` to the path where you want the uploaded pictures and videos to be saved, as shown:<br>

   <div align="left"><figure><picture><source srcset="/files/H39zXjZ9kXkoiRBHlrZq" media="(prefers-color-scheme: dark)"><img src="/files/snZL0rKbQO0uge1T0hc2" alt="File path next to &#x22;UPLOAD_LOCATION&#x22; highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;\
   If the path contains spaces, enclose it with single quotation marks.
3. Uncomment the `TZ` line by removing the hash (#) symbol at the start. Then, replace the default `Etc/UTC` value with your current [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).\
   &#x20;\
   **Example**

   <figure><picture><source srcset="/files/A9reduJDR92G1rnQCexM" media="(prefers-color-scheme: dark)"><img src="/files/3wzHOHg7SyKjMfN4UHtm" alt="Time zone identifier highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
4. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the text editor.
   {% endtab %}
   {% endtabs %}

### Start the Immich containers <a href="#start-the-immich-containers" id="start-the-immich-containers"></a>

While in the `immich` directory, execute the following command in the command line to deploy your Immich instance:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the resources](https://docs.docker.com/engine/reference/commandline/pull/) and dependencies required for Immich and create the necessary containers.

#### Verify the containers' status <a href="#verify-the-containers-status" id="verify-the-containers-status"></a>

Run the `docker ps` command to check the state of the containers. In the output, under `STATUS`, you should see `Up` and the duration indicating how long the containers have been active.

<figure><img src="/files/ITMZj8HTgvkG1LpOrxLx" alt="Command line output of the &#x22;docker ps&#x22; command with the &#x22;STATUS&#x22; column highlighted."><figcaption></figcaption></figure>

## Configure your Immich access <a href="#configure-your-immich-access" id="configure-your-immich-access"></a>

Once the Immich server container completes initialization, it will start a web interface that allows you to manage your Immich instance.

### Set up the administrator user <a href="#set-up-the-administrator-user" id="set-up-the-administrator-user"></a>

Upon accessing the Immich web interface for the first time, you will be prompted to create an administrator user account.

1. Open your internet browser and navigate to the Immich web interface.
   * If you’re accessing Immich from the same device that is hosting it, go to `localhost:2283/`.
   * Otherwise, swap the `localhost` part with the server’s local IP address. For example, `192.168.1.50:2283/`.
2. Click **Getting started**.
3. Fill in the **Admin** **registration** form with the administrator user’s email address, password, and username. Then, click **Sign up**.

   <div align="left"><figure><picture><source srcset="/files/31Xx3c3GAQIilK9jClsS" media="(prefers-color-scheme: dark)"><img src="/files/pi9QRSUrR8V5dY2dUbr7" alt="Email address, password, and the username for the administrator user typed in and the sign up button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. On the login page, enter your email and password and select **Login**.

   <div align="left"><figure><picture><source srcset="/files/qMDTYwzUO62zOXG9L8u1" media="(prefers-color-scheme: dark)"><img src="/files/zUCS1DTX22LRKjExrNux" alt="Logging in to the administrator user account." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Complete the onboarding process and click **Done**.

Now you should see the main page of the Immich app. This is where all the pictures you upload will be displayed.

### Create a new user account <a href="#create-a-new-user-account" id="create-a-new-user-account"></a>

With the available user management features, you can create user accounts for friends or family members who will be joining your server. It is recommended to set up individual accounts for each user to ensure their uploaded assets remain private and secure.

1. In the upper-right corner, click the user icon and choose **Administration**.

   <div align="left"><figure><picture><source srcset="/files/iki66yyJtRSENRF8yVqL" media="(prefers-color-scheme: dark)"><img src="/files/HHmHbT2il23vE48bjdFV" alt="Arrow pointing to the user icon and selecting the &#x22;Administration&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Select **Create user**.
3. Enter the email address, password, and username of the new user account.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/vlSIVr6orChiuOe6AoKL" media="(prefers-color-scheme: dark)"><img src="/files/7xpFvEKtTVBukMSPLtXN" alt="Filling in the new user account details." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Create**.

The new user account has been created and you can see its details under the **User management** table.

<div align="left"><figure><picture><source srcset="/files/ptqa5tAv0hG6j0FR3F9G" media="(prefers-color-scheme: dark)"><img src="/files/hzLs6FB51PL3c6eorSmp" alt="New user account visible in the &#x22;User management&#x22; table."></picture><figcaption></figcaption></figure></div>

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

To enhance account security, new users must change their password upon logging in for the first time. If you prefer to disable this feature, turn off the **Require user to change password on first login** toggle during account creation.
{% endhint %}

### Add Meshnet address as an external domain <a href="#add-meshnet-address-as-an-external-domain" id="add-meshnet-address-as-an-external-domain"></a>

The external domain specified in the Immich settings is used to generate links for media sharing. While this setting is not mandatory for allowing remote connections over Meshnet, entering your Meshnet address as the external domain simplifies the item-sharing process between Meshnet peers.

1. In the upper-right corner, click the user icon and choose **Administration**.
2. From the menu on the left, select **Settings**, locate **Server settings,** and expand the dropdown.
3. In the **External domain** field, enter `http://<server>:2283`, replacing the `<server>` placeholder with your server’s Nord name or Meshnet IP address.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/yRHOq1sHUtxYL87oSYCU" media="(prefers-color-scheme: dark)"><img src="/files/Cl0dZ8Yho50qLME2GHNf" alt="Nord name with port 2283 entered in the &#x22;External domain&#x22; field."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Save**.

## Access Immich over Meshnet <a href="#access-immich-over-meshnet" id="access-immich-over-meshnet"></a>

Depending on your device type, you can choose from two different methods to connect to your Immich server over Meshnet.

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

If you're hosting Immich on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using the Immich mobile app <a href="#method-1-using-the-immich-mobile-app" id="method-1-using-the-immich-mobile-app"></a>

The Immich mobile app is developed alongside the server software and includes additional features tailored specifically for mobile devices.

1. Download and install the Immich app on your mobile device.
   * On Android, you can download Immich from any of the following sources:
     * [Google Play Store](https://play.google.com/store/apps/details?id=app.alextran.immich)
     * [F-droid app catalog](https://f-droid.org/packages/app.alextran.immich/)
     * [Immich GitHub repository](https://github.com/immich-app/immich/releases)
   * On iPhone and iPad, you can get it from the [App Store](https://apps.apple.com/us/app/immich/id1613945652).
2. Launch **Immich** <img src="/files/7Y8I7SauOh6GpPT2kxlq" alt="" data-size="line">.
3. When requested, grant the Immich app access to your photo library.
4. In the **Server endpoint URL** field, enter `http://<server>:2283/api`, where `<server>` is the Nord name or Meshnet IP address of your Immich server device. Then, tap **Next**.\
   &#x20;\
   **Example**\
   `http://secret.meerkat-himalayas.nord:2283/api`\
   &#x20;
5. Enter the email and password of your Immich account and select **Login**.

   <div align="left"><figure><picture><source srcset="/files/Ug9gHVNEpPmhmK3kbDZs" media="(prefers-color-scheme: dark)"><img src="/files/3FDWXNDjGsSQP4SSqoqm" alt="Logging in to Immich on the mobile app." width="375"></picture><figcaption></figcaption></figure></div>

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

If you’re using a desktop device, you’ll need to access and use Immich through an internet browser.

1. Copy the Nord name of the Immich server directly from the NordVPN app.
2. Open your internet browser.
3. Paste the copied Nord name followed by `:2283` to the URL field and press **Enter**.

   &#x20;\
   **Example**\
   `secret.meerkat-himalayas.nord:2283/`\
   &#x20;
4. Type in the authentication details of your Immich account and click **Login**.

   <div align="left"><figure><picture><source srcset="/files/RlcS6zOxqLPhZE1eSbKd" media="(prefers-color-scheme: dark)"><img src="/files/OteG534HhtIjxzCh9j46" alt="Logging in to Immich via an internet browser. "></picture><figcaption></figcaption></figure></div>

## Upload your media <a href="#upload-your-media" id="upload-your-media"></a>

Once you have established a connection to your Immich instance, you can select and backup your photographs and recordings to your server.

{% tabs %}
{% tab title="Using the mobile app" %}

1. In the upper-right corner, tap the backup button.

   <div align="left"><figure><picture><source srcset="/files/nvjbocsAsDi4Xcrf5q0m" media="(prefers-color-scheme: dark)"><img src="/files/Hga5IGZV0Gyv1Puug88s" alt="Cloud button highlighted in the upper-right corner of the Immich app." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Tap **Select** to choose the media folders you want to back up on your Immich server.
3. Return to the **Backup** screen and select **Start backup** to begin uploading items to Immich.

   <div align="left"><figure><picture><source srcset="/files/f3LwMX9Z0xdPQ40RjbaH" media="(prefers-color-scheme: dark)"><img src="/files/JMO9xbXX8LcUZe09ozK6" alt="&#x22;Start backup&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

Your assets should immediately start being uploaded to Immich. The transfer statistics are displayed on the **Backup** screen and are updated in real time.

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

You can configure the Immich mobile app to automatically upload media from the selected locations to the server. For further details and instructions, see the “Automatic backup” page of [Immich documentation](https://immich.app/docs/features/automatic-backup).
{% endhint %}
{% endtab %}

{% tab title="Using an internet browser" %}

1. Using your internet browser, open the Immich web interface.
2. In the upper-right corner, select **Upload**.

   <div align="left"><figure><picture><source srcset="/files/66aHitKVVnDrZ6RAz1NH" media="(prefers-color-scheme: dark)"><img src="/files/ELiueK5I86A4ZBosyUP8" alt="&#x22;Upload&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the file explorer dialog, select the files you want to upload to Immich and click **Open**.

While uploading the media, a pop-up dialog will be displayed in the lower-right corner of the screen showcasing the upload progress.

<div align="left"><figure><picture><source srcset="/files/Bt6xY8n9Fn9Qcb0fgvRy" media="(prefers-color-scheme: dark)"><img src="/files/BtcbeEGBe9Wo0R1dBgKR" alt="File upload progress dialog." width="375"></picture><figcaption></figcaption></figure></div>

Immich will notify you when the upload completes and inform you to refresh the page to view the content.
{% endtab %}
{% endtabs %}

## Organize and share your media <a href="#organize-and-share-your-media" id="organize-and-share-your-media"></a>

With all of the assets backed up on your Immich server, you can start organizing the media and sharing it with other users.

### Create a new album <a href="#create-a-new-album" id="create-a-new-album"></a>

All uploaded media is sorted by date and displayed on a single page. You may want to improve upon this layout by grouping content into albums. To create an album:

1. In Immich, select the items you want to include in your album by clicking the checkmark in the upper-left corner of the thumbnail.
2. In the upper-right corner, click the **Add to** button.

   <figure><picture><source srcset="/files/yPIkw0HE9uzKcuDJfejy" media="(prefers-color-scheme: dark)"><img src="/files/zgbwCWojjZwBrBo7C6yi" alt="Images selected and the plus button highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
3. In the **Search** field, enter the name of your album and select **New album**.

   <div align="left"><figure><picture><source srcset="/files/78jN8TM4FSgNhT5FNn9G" media="(prefers-color-scheme: dark)"><img src="/files/wVmDspDlTmg9QFnY7Pyv" alt="&#x22;New album&#x22; button highlighted under the album name." width="375"></picture><figcaption></figcaption></figure></div>

A new album with your chosen title is now created. You can view and manage the album and its contents on the **Albums** page.

<div align="left"><figure><picture><source srcset="/files/f9eXSy5WoJjYxCYCmi6z" media="(prefers-color-scheme: dark)"><img src="/files/WULnt16uup7qWf7Duupp" alt="Albums page open in Immich."></picture><figcaption></figcaption></figure></div>

### Share an album between users <a href="#share-an-album-between-users" id="share-an-album-between-users"></a>

To simplify file management and conserve storage space, you can upload assets from a single account, organize them into an album, and grant access to other Immich users, allowing them to view the album from their accounts.

1. Open the Immich web interface.
2. From the menu on the left, select **Albums**.
3. Hover your cursor over the album you want to share and click the three-dot menu button.

   <div align="left"><figure><picture><source srcset="/files/R0HFY0ivhsQfRfnTDmQq" media="(prefers-color-scheme: dark)"><img src="/files/isPopppdlMTdvtlASNqV" alt="Arrow pointing to the three-dot menu." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Choose **Share**.
5. In the **Invite to album** dialog, select the user with whom you want to share the album.
6. Click **Add**.

   <div align="left"><figure><picture><source srcset="/files/gf6ZholvJMDE2Tdia6Gw" media="(prefers-color-scheme: dark)"><img src="/files/113x2Z07P2V4ojkoXvmQ" alt="&#x22;Add&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

The chosen user can now view the album you shared by navigating to their account’s **Albums** page.

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

By default, the invitees are granted editing permissions in the album. If you wish to share the album as view-only, in the **Invite to album** dialog, instead of **Editor**, select **Viewer**.
{% endhint %}

### Generate a sharing URL <a href="#generate-a-sharing-url" id="generate-a-sharing-url"></a>

If you want to share some content with a peer who doesn’t use Immich, you can use the integrated link-sharing feature.

{% tabs %}
{% tab title="Share selected items" %}

1. Open the Immich web interface.
2. Select the items you want to share by clicking the checkmark in the upper-left corner of the thumbnail.
3. In the upper-right corner, select **Share**.

   <figure><picture><source srcset="/files/riLDP6HylLeA3wcGHl23" media="(prefers-color-scheme: dark)"><img src="/files/gsGFBsf6Ht18YXGiCgkV" alt="Pictures selected and the share button is highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
4. Optionally, enter a description for the items you are sharing.
5. Click **Create link**.
6. Highlight the generated URL, right-click it, and choose **Copy**.

Since you set the server’s Meshnet address as its external domain earlier, Immich will generate links using this address. This means that the receiving Meshnet peer can simply paste the link to their browser to view the shared content without needing to modify the link.

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

When accessing Immich over HTTP, the integrated button for copying generated links is disabled. As a result, sharing links must be copied manually.
{% endhint %}
{% endtab %}

{% tab title="Share an album" %}

1. Open the Immich web interface.
2. Navigate to the **Albums** page.
3. Hover your cursor over the album you want to share and click the three-dot menu button.

   <div align="left"><figure><picture><source srcset="/files/R0HFY0ivhsQfRfnTDmQq" media="(prefers-color-scheme: dark)"><img src="/files/isPopppdlMTdvtlASNqV" alt="Arrow pointing to the three-dot menu." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Choose **Share** and select **Create link**.
5. Optionally, enter a description for the content you are sharing.
6. Click **Create link**.
7. Highlight the generated URL, right-click it, and choose **Copy**.

Since you set the server’s Meshnet address as its external domain earlier, Immich will generate links using this address. This means that the receiving Meshnet peer can simply paste the link to their browser to view the shared content without needing to modify the link.

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

When accessing Immich over HTTP, the integrated button for copying generated links is disabled. As a result, sharing links must be copied manually.
{% endhint %}
{% endtab %}
{% endtabs %}

## (Advanced) Import an external library <a href="#advanced-import-an-external-library" id="advanced-import-an-external-library"></a>

The [external libraries feature](https://immich.app/docs/features/libraries) enables you to import a folder pre-filled with content, eliminating the need to upload everything manually. This is especially useful for individuals who already store their footage in a centralized location but want to take advantage of the management features that Immich provides.

### Modify the Compose file <a href="#modify-the-compose-file" id="modify-the-compose-file"></a>

First, you must update the Docker Compose file with the path of the library you want to import.

1. Using a text editor, open the `docker-compose.yml` file of your Immich instance.
2. Under the `volumes` section, append a new line using this format:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">- &#x3C;library/host/path>:/mnt/media/&#x3C;directory>:ro
   </code></pre>

   &#x20;\
   Where:

   * `<path/to/library>` is the path to the media folder you want to import.
   * `<directory>` is a custom name of the folder where the library will be mounted inside the Immich container.\
     &#x20;\
     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">- /Users/secretmeerkat/Documents/Videos:/mnt/media/external-videos:ro
     </code></pre>

     &#x20;

     <figure><picture><source srcset="/files/XkMnEnmVrtaVaBorsL51" media="(prefers-color-scheme: dark)"><img src="/files/OAuXX1UJgHpM2rmxgMIZ" alt="New volume line highlighted in the docker-compose.yml file."></picture><figcaption></figcaption></figure>

     &#x20;
3. Save changes and close the `docker-compose.yml` file.
4. Open **PowerShell** (on Windows) or **Terminal** (on macOS and Linux) and navigate to your Immich directory using the `cd` command.
5. Run the command below to recreate the Immich server container with the updated Compose file.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker compose up -d
   </code></pre>

Once the container restarts, the newly mounted volume will be available for importing in Immich.

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

The `:ro` parameter at the end of the volume line assigns read-only permissions to the container for the specific folder, ensuring that the data cannot be modified or deleted.
{% endhint %}

### Create a library <a href="#create-a-library" id="create-a-library"></a>

On your Immich web interface, take the following steps to create a new external library:

1. In the upper-right corner, click the user icon and choose **Administration**.

   <div align="left"><figure><picture><source srcset="/files/iki66yyJtRSENRF8yVqL" media="(prefers-color-scheme: dark)"><img src="/files/HHmHbT2il23vE48bjdFV" alt="Arrow pointing to the user icon and selecting the &#x22;Administration&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
2. From the menu on the left, select **External libraries** and click **Create library**.

   <div align="left"><figure><picture><source srcset="/files/8Z3ljl46CF4DPdUP3HR6" media="(prefers-color-scheme: dark)"><img src="/files/2rFtyq70rmzT5fpdBWJd" alt="Arrow pointing to &#x22;External libraries&#x22; and the &#x22;Create library&#x22; button is highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Choose the owner of the library and select **Create**.
4. Next to your new external library, click the three-dot menu icon, choose **Edit import paths**, and click **Add path**.
5. In the **Path** field, enter the mounting path of the new volume you added in the Compose file.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/ohvJPLEQLsHjEBJvlM6A" media="(prefers-color-scheme: dark)"><img src="/files/0EemRBljlq3RaPKdIPKY" alt="Container path of the external library folder highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Click **Add** and then **Save**.
7. From the three-dot menu next to your library, choose **Scan** to index the items stored in the imported folder.

You should now see all of the media placed in the folder of the external library on the **Photos** page.

#### Rename the library <a href="#rename-the-library" id="rename-the-library"></a>

All new external libraries are assigned the same default name. For more convenient management, it is recommended to assign a unique and identifiable name to each library.

1. Next to the external library, click the three-dot menu button and choose **Rename**.
2. In the **Name** field, enter a unique name for the library.
3. Click **Save**.

### Turn on periodic scanning <a href="#turn-on-periodic-scanning" id="turn-on-periodic-scanning"></a>

Lastly, to ensure that new files from the external library are detected and indexed in Immich, you should turn on the periodic library scanning feature.

1. In the upper-right corner, click the user icon and choose **Administration**.
2. From the menu on the left, select **Settings**, locate **External library**, and expand the dropdown.
3. Under **Periodic scanning**, ensure that the **Enable periodic library scanning** toggle is turned on.

   <figure><picture><source srcset="/files/kJcXbxPUUrYuhkFWcQVC" media="(prefers-color-scheme: dark)"><img src="/files/XEILtokxEpyOsLi84HkZ" alt="&#x22;Enable periodic library scanning&#x22; toggle set to the on position."></picture><figcaption></figcaption></figure>

   &#x20;
4. Optionally, select a custom scanning time interval by adjusting the values in the **Cron expression** field.
5. Click **Save**.

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

With the version `v1.94.0`, Immich introduced a **Library watching** feature that can be used instead of periodic scanning. The feature automatically imports new files when the server’s operating system detects changes in the external library folder. However, as of version `v.1.24.2`, the feature is still experimental and should be used with caution.
{% endhint %}


# Remote device access

Learn how to access your devices remotely by using Meshnet.

The ability to instantly access and control your devices from anywhere is usually difficult to achieve. Changes to your home network, such as port forwarding, can significantly decrease your security. In addition, software solutions that assist with remote access can be costly.

With the introduction of Meshnet, you can circumvent exposing ports and keep your network security intact. Meshnet allows hassle-free [remote access](https://nordvpn.com/meshnet/remote-access/) with minimal configuration.

In this section, you can find how-to guides on remotely reaching your devices with the help of Meshnet.

### **Desktop and server remote access**

* [Access remote systems over Meshnet using SSH](/how-to/remote-access/access-remote-systems-over-ssh)
* [Use Ansible over Meshnet](/how-to/remote-access/ansible-over-meshnet)
* [Log in to your PC remotely over Meshnet](/how-to/remote-access/log-in-to-pc-remotely)
* [Use Proxmox VE remotely over Meshnet](/how-to/remote-access/use-proxmox-remotely)
* [Set up and remotely access a CasaOS server](/how-to/remote-access/casaos-remote-access)
* [Set up OpenClaw AI assistant](/how-to/remote-access/openclaw-ai-assistant)

### **Surveillance and home control**

* [Access your IP camera over Meshnet](/how-to/remote-access/access-ip-camera)
* [Set up a phone as a security camera with remote access](/how-to/remote-access/phone-security-camera)
* [Use Home Assistant over Meshnet](/how-to/remote-access/home-assistant)
* [Set up a remotely controlled 3D printer](/how-to/remote-access/3d-printer)

### **Data management**

* [Make macOS Time Machine backups from anywhere](/how-to/remote-access/macos-time-machine-backups)
* [Access files in your NAS from anywhere securely](/how-to/remote-access/access-nas)

### **Meshnet networking and customization**

* [Assign custom host names to Meshnet services with a reverse proxy](/how-to/remote-access/custom-host-names-using-reverse-proxy)


# How to log in to your PC remotely over Meshnet

Learn how to access your computer remotely over Meshnet from Windows, macOS, or Linux.

You may want to remotely access your PC while traveling or working from another location. [Meshnet](https://nordvpn.com/meshnet/) helps protect your remote connection from unauthorized access while keeping it easy to set up.

With Meshnet, you don't have to open your remote device to the public internet, leaving your sensitive data vulnerable to interception. Instead, all the data sent between your local computer and the remote system is encrypted. Additionally, you can restrict which devices are allowed to connect to your Meshnet or [manage access permissions](/features/explaining-permissions) for already linked devices.

This guide helps you connect to your computer remotely over Meshnet by using various solutions and technologies tailored for a graphical user interface (GUI) approach.&#x20;

If you're ready to start, have a look at our instructional video below:

{% embed url="<https://www.youtube.com/watch?v=UKuspy3XRco>" %}

Alternatively, if you prefer written instructions, you can follow the detailed, text-based guides:

* [Connect to a Windows device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-windows)
* [Connect to a macOS device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-macos)
* [Connect to a Linux device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-linux)

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

For information on accessing devices via SSH, refer to the [How to access remote systems over Meshnet using SSH](/how-to/remote-access/access-remote-systems-over-ssh) article.
{% endhint %}


# Connect to a Windows device

Learn how to access a Windows computer over Meshnet remotely from any platform.

To log in to your Windows PC remotely over Meshnet, enable remote access on your PC and use a remote desktop app on the device you're connecting from.

## Before you begin <a href="#prerequisites-and-requirements" id="prerequisites-and-requirements"></a>

Make sure that:

* Both the Windows device you wish to access remotely (remote PC) and the device you're using to connect are [linked over Meshnet](/getting-started/how-to-start-using-meshnet).
* Your remote PC is on.
* Your remote PC runs a Pro edition of Windows 10 or 11.&#x20;

<details>

<summary>To check your PC edition</summary>

1. On your PC, select **Start** <img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> and open **Settings**.
2. Go to **System** > **About**.
3. Under **Windows specifications**, look for **Edition**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/nI12WPZymvJ0XJ26aEt8" media="(prefers-color-scheme: dark)"><img src="/files/gZBd6EeSbsIh5dwaFU3A" alt="&#x22;Windows 10 Pro N&#x22; is displayed next to &#x22;Edition&#x22; in system settings" width="563"></picture><figcaption></figcaption></figure></div>

</details>

## Set up your remote PC for access <a href="#enable-remote-access-on-your-pc" id="enable-remote-access-on-your-pc"></a>

Before you can connect to your remote PC, you'll need to enable **Remote Desktop** on it.

{% tabs %}
{% tab title="Windows 11" %}

1. Select **Start** <img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> and open **Settings**.
2. Go to **System** > **Remote Desktop**

   <div align="left"><figure><picture><source srcset="/files/VmOdqXzrlku9hy0kqtcd" media="(prefers-color-scheme: dark)"><img src="/files/NkwKMTVUNkdryLGMi2eg" alt="Showing the Remote Desktop option"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Turn on the **Remote Desktop** toggle.&#x20;

   <figure><picture><source srcset="/files/qLts39aFqqa7L1xkzFgo" media="(prefers-color-scheme: dark)"><img src="/files/R6ouIBgcyktNtaWI3YX2" alt="Remote Desktop toggle  is set to the &#x22;On&#x22; position"></picture><figcaption></figcaption></figure>

   &#x20;
4. Select **Confirm** when prompted.
   {% endtab %}

{% tab title="Windows 10" %}

1. Select **Start** <img src="/files/FMatxyVrSnM3svAOBPqk" alt="" data-size="line"> and open **Settings**.

   <div align="left"><figure><picture><source srcset="/files/ORJ4ZfYhw8HQXfGwoWHP" media="(prefers-color-scheme: dark)"><img src="/files/X48BiWal3VxB5GrCrrxV" alt="Settings highlighted" width="349"></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
2. Go to **System** and select **Remote Desktop** from the left sidebar.

   <div align="left"><figure><picture><source srcset="/files/CI036lOva45O0O5h5cHD" media="(prefers-color-scheme: dark)"><img src="/files/2LAOE0QyN9Pgw5v472o1" alt="&#x22;Remote Desktop&#x22; option highlighted" width="327"></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
3. Turn on the **Enable** **Remote Desktop** toggle.&#x20;

   <div align="left"><figure><picture><source srcset="/files/sssJV2ME7Z3TCocYPgVb" media="(prefers-color-scheme: dark)"><img src="/files/sycx5YHFM0NKo7Gt7qa9" alt="Enable Remote Desktop toggle is set to the &#x22;Off&#x22; position" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select **Confirm** when prompted.

   <div align="left"><figure><img src="/files/62au4CC4qo4GmWtR6UZT" alt="&#x22;Enable remote desktop?&#x22; dialog with the &#x22;Confirm&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

### Finding PC account credentials

You will be prompted to enter authentication details when attempting a remote connection to your Windows PC. The credentials you must enter depend on the type of Windows account the PC is using.

* If you're using a Microsoft account, you can use either:
  * Your Microsoft account's email address and password.\
    &#x20;\
    **Example**

    <div align="left"><figure><picture><source srcset="/files/GG6kmFcYx42MLi8zhg1T" media="(prefers-color-scheme: dark)"><img src="/files/dMpBL4phdH9TC9oFcY5H" alt="Email and password entered in the authentication dialog." width="375"></picture><figcaption></figcaption></figure></div>

    &#x20;&#x20;
  * Your Windows account's username and Microsoft account's password.\
    &#x20;\
    **Example**

    <div align="left"><figure><picture><source srcset="/files/0DVCqDnrHTSJGwAJ3JNc" media="(prefers-color-scheme: dark)"><img src="/files/AJQrSYfl3FGmYewIZL5m" alt="Username and password entered in the authentication dialog." width="375"></picture><figcaption></figcaption></figure></div>

    &#x20;
* If you're using a local Windows account, you need to use the account's username and password.

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

To view your Windows account's username, run the following command in **PowerShell**:

{% code overflow="wrap" %}

```powershell
$env:username
```

{% endcode %}
{% endhint %}

## Connect to your remote PC <a href="#connect-to-your-remote-pc" id="connect-to-your-remote-pc"></a>

{% tabs %}
{% tab title="Windows" %}
For Windows-only connections, follow these steps on the device you're using to connect:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.

   <div align="left"><figure><picture><source srcset="/files/vYtIu19l4v2PofJsLXG4" media="(prefers-color-scheme: dark)"><img src="/files/uY0yj9zb4zqRbUyVC2AT" alt="Copying the Nord name of the peer device from the NordVPN app."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. In the search box on the taskbar, type `Remote Desktop Connection` and click **Remote Desktop Connection** <img src="/files/H1P1D4WElM9cLzwzyaEK" alt="" data-size="line">.

   <div align="left"><figure><picture><source srcset="/files/7TVQqYqfbw9NoTJPRLzw" media="(prefers-color-scheme: dark)"><img src="/files/VAR8DjqzuMKAgU3S8tEV" alt="&#x22;Remote Desktop Connection&#x22; search result is shown as best match" width="534"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the dialog that opens, paste either the Nord name or Meshnet IP of the PC you want to access.

   <div align="left"><figure><img src="/files/X9E9VP311UzppoBFTUL4" alt="Nord name is entered in the Remote Desktop Connection dialog" width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Connect**.
5. Enter the following information, and then click **OK**:
   * Your remote PC account name
   * The password you use to log in to your remote PC

     <div align="left"><figure><picture><source srcset="/files/QYc0gJF0ANlJc2vHvdZn" media="(prefers-color-scheme: dark)"><img src="/files/y4H2CH6n9jsoOKJHi1zq" alt="Entering account credentials" width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;\
     See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.&#x20;
6. You may receive a warning indicating that the remote computer's identity cannot be verified. When connecting to a trusted computer, such as one on your Meshnet, click **Yes** to continue.

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

If you don't want to see this dialog in the future, select the **Don't ask me again for connections to this computer** checkbox.
{% endhint %}

You should now be able to securely access and control your PC remotely.
{% endtab %}

{% tab title="Android" %}

### Install Remote Desktop on Android

To connect to your remote PC from Android, first install the [Remote Desktop](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx\&hl=en) <img src="/files/qqjzcQlQoWKnFxMgaxKz" alt="" data-size="line"> app, available for free from Google Play.

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices**, tap the three-dot menu next to the device you want to access, and copy the device's Nord name or IP address.

   <div align="left"><figure><picture><source srcset="/files/HzkjpvpxcN49LmN9ZQTH" media="(prefers-color-scheme: dark)"><img src="/files/f6VBSyL2A1mg4ObpEkmv" alt="&#x22;Copy&#x22; options highlighted from the three-dot menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open the **RD Client** app that you installed earlier.
3. From the bottom row, select **Add** > **Add PC**.

   <div align="left"><figure><picture><source srcset="/files/3td0tfQ93ouMl3cXSSel" media="(prefers-color-scheme: dark)"><img src="/files/jH1sKBeBvOdwPBjzBDt6" alt="Plus button and the Add PC option are highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Under **PC name**, paste the copied Nord name or Meshnet IP of the PC you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/VdVgFJrbixZFW0msN6Ld" media="(prefers-color-scheme: dark)"><img src="/files/eJbd3YnqBbplPs1Voiho" alt="Nord name of the remote PC highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Under **User account**, select the **Add user account** option.
6. In the **Username** and **Password** fields, enter your credentials for the remote computer to save for use with this connection, and tap **Save**. \
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/uSMT5gGZi89MnRAZga4c" media="(prefers-color-scheme: dark)"><img src="/files/x6RHg2LkUWQdWYmkTOHE" alt="Remote account username and password entered" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.
7. In the upper-right corner, tap **Save**.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. From the main screen, select the saved connection that you added.

   <div align="left"><figure><picture><source srcset="/files/oGXL5YD3kGMuLeNkZtAz" media="(prefers-color-scheme: dark)"><img src="/files/s8vJVpPNOg3Cmv4BrF1Y" alt="" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. You may receive a warning indicating that the digital certificate of the computer you're trying to access cannot be verified.  If you don't want to see this dialog in the future, select the **Never ask again for connections to this PC** checkbox.
3. Tap **Connect**.

   <div align="left"><figure><picture><source srcset="/files/0jWQRjlUXqdTDlaOwLfA" media="(prefers-color-scheme: dark)"><img src="/files/gaXewWUio33om60yvVhJ" alt="Connect button highlighted " width="375"></picture><figcaption></figcaption></figure></div>

You should now be able to securely access and control your PC remotely over Meshnet.
{% endtab %}

{% tab title="iOS" %}

### Install Windows App on iOS

To connect to the remote PC from iPhone/iPad, install the [Windows App Mobile](https://apps.apple.com/us/app/windows-app-mobile/id714464092), available for free from the App Store.

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

To install Windows App Mobile, your device must run iOS 17.0 or later.
{% endhint %}

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices** and copy the Nord name or Meshnet IP of the device you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/sBl1PXyxDpDEFNPx0tyK" media="(prefers-color-scheme: dark)"><img src="/files/S9UuAbnTNve9Q6Zg9vVx" alt="Nord name and Meshnet IP of a Windows device highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch the **Windows**<img src="/files/RuaYIRLEI1dAUQdWqjGw" alt="" data-size="line"> app that you installed.
3. In the upper-right corner, tap the plus (+) button and select **PC**.
4. Tap **PC name** and paste the copied Nord name or Meshnet IP of the PC you want to access.

   <div align="left"><figure><picture><source srcset="/files/JGClDnMgrpD8rAMwOg2U" media="(prefers-color-scheme: dark)"><img src="/files/VMuYzUR9sRxjuQkdc4bL" alt="Entering the Nord name" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Return to the previous menu and select **Credentials** > **Add credentials**.
6. Enter the following information to save for use with this connection:
   * The remote PC account name
   * The remote PC account password
   * Optionally, tap **Friendly name** to give a nickname to the connection.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/Rhnaq9J8Uu7IZN2h2yyW" media="(prefers-color-scheme: dark)"><img src="/files/HoCxUJDf3Ee7AFIhojTr" alt="Entering remote PC credentials" width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
7. Tap **Save**, return to the previous screen, and tap **Save** again.

The new connection will appear under **Saved devices**. Tap it whenever you want to initiate a remote session.

<div align="left"><figure><picture><source srcset="/files/iL1kOtsTwrRFwfwDQ5ST" media="(prefers-color-scheme: dark)"><img src="/files/G62DlSFPX0wdeOHMLg4E" alt="Newly added connection visible under &#x22;Saved devices&#x22;." width="375"></picture><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="macOS" %}

### Install Windows App on macOS

To connect to your remote PC from macOS, first install the [Windows App](https://apps.apple.com/us/app/windows-app/id1295203466?mt=12), available for free from the Mac App Store.

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.

   <div align="left"><figure><picture><source srcset="/files/lUWNKN7ABcl5lOIcs2BH" media="(prefers-color-scheme: dark)"><img src="/files/UQoQIjD6xWjj8YmSEexZ" alt="Pointing to the &#x22;Copy device&#x27;s IP address&#x22; option in the NordVPN app"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open **Windows app**<img src="/files/RuaYIRLEI1dAUQdWqjGw" alt="" data-size="line">, click the plus (+) button, and select **Add PC**.

   <div align="left"><figure><picture><source srcset="/files/i3AkxiVDT40aX9WAaS2O" media="(prefers-color-scheme: dark)"><img src="/files/7pMX4CveXKQ1LHds2ZRR" alt="The plus (+) button is highlighted and the &#x22;Add PC&#x22; option is selected." width="413"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **PC name** box, paste the Nord name or Meshnet IP you copied earlier.

   <div align="left"><figure><picture><source srcset="/files/W76xxSYvMIbpRHqII3VV" media="(prefers-color-scheme: dark)"><img src="/files/RvWO8vVqpp40tsQfAbzU" alt="Nord name entered in the &#x22;PC name&#x22; field."></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
4. From the **User account** dropdown list, select **Add credentials**.&#x20;
5. In the **Username** and **Password** fields, enter your credentials for the remote computer to save for future connections, and click **Add**.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/BUNizURLXBbleGFYTDAy" media="(prefers-color-scheme: dark)"><img src="/files/wSsNUR640dYFnlZiJvOs" alt="Username and password fields filled in with the authentication details." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;\
   See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.&#x20;
6. Optionally, give a nickname to your connection in the **Friendly name** field.

   <div align="left"><figure><picture><source srcset="/files/mne8qH4iImBLt6IRYkFZ" media="(prefers-color-scheme: dark)"><img src="/files/XuHYakzUIeb719GBxf2i" alt="&#x22;Home PC&#x22; connection nickname entered in the &#x22;Friendly name&#x22; field" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
7. Click **Add** to save changes.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. Under **Saved PCs**, double-click the new connection that you added.

   <div align="left"><figure><picture><source srcset="/files/phoo2ESJRNsTAVJkINHY" media="(prefers-color-scheme: dark)"><img src="/files/v6XKjheaEJ4RRd4kYUqa" alt="Newly added connection selected in the app." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. You may receive a warning indicating that the digital certificate of the computer you're trying to access cannot be verified. If you don't want to see this dialog in the future, click **Show certificate** and then select the **Always trust** checkbox.
3. If you're connecting to a computer you trust, click **Continue**.

   <div align="left"><figure><picture><source srcset="/files/DB0kxmlRW6HCwcKggdxR" media="(prefers-color-scheme: dark)"><img src="/files/AQaEHLFR0VjNvnckcnMY" alt="&#x22;Continue&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

You should now be able to remotely access and control your PC securely.
{% endtab %}

{% tab title="Linux" %}
To connect to the remote PC from Linux, first install the **Remmina** <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line"> remote desktop client on your Linux device.&#x20;

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

The instructions below use Ubuntu 24.04 LTS as an example.
{% endhint %}

### Install Remmina on Linux

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

1. Open **Terminal**.
2. Update the package manager list of available packages by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update
   </code></pre>

   &#x20;
3. Install Remmina by entering this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install remmina -y
   </code></pre>

{% endtab %}

{% tab title="App Center" %}

1. Launch **App Center**<img src="/files/NrHXTROwU0YeHpe9aXFI" alt="" data-size="line">.
2. In the search bar, enter `remmina` and select the matching result.
3. Click the **Install** button.&#x20;

   <figure><picture><source srcset="/files/F5syZyWi1cMY4L7c1a2C" media="(prefers-color-scheme: dark)"><img src="/files/rLcW0DaHxw6h13xOltVf" alt="Clicking &#x22;Install&#x22; in the App Center to install Remmina."></picture><figcaption></figcaption></figure>

   &#x20;
4. If requested, enter the password of your Linux user account and click **Authenticate**.
   {% endtab %}
   {% endtabs %}

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the terminal, run the `nordvpn meshnet peer list` command and copy the Nord name of the device you want to access:

   <div align="left"><figure><img src="/files/hcsVhQS7xK6GPSk68T3w" alt="Peer device&#x27;s Nord name and Meshnet IP address are highlighted in the terminal window"><figcaption></figcaption></figure></div>

   &#x20;
2. Launch the **Remmina** <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line"> app that you installed earlier.
3. Click the **New connection profile** button in the upper-left corner of the app window.

   <div align="left"><figure><picture><source srcset="/files/wk3OZGKA7SEtPoaQzih0" media="(prefers-color-scheme: dark)"><img src="/files/p737fa6cHeu9wI8hNK53" alt="New connection profile button highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Name** field, type in a custom name to identify the connection.
5. Make sure **RDP** — **Remote Desktop Protocol** is selected in the **Protocol** field.
6. Under **Basic**, enter the following information to create a reusable connection:
   * In the **Server** field, paste the Nord name you copied earlier.
   * In the **Username** field, enter your remote PC account name.
   * In the **Password** field, enter the password you use to log in to your remote PC.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/iI5mu4iQY4Pc6IiK9p81" media="(prefers-color-scheme: dark)"><img src="/files/mmrgqF4sfiotBcU1tPLE" alt="Filling in the Server, Username, and Password fields"></picture><figcaption></figcaption></figure></div>

     &#x20;\
     See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.
7. Click **Save**.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. Double-click the new connection profile you've created.

   <div align="left"><figure><picture><source srcset="/files/fjdHXuCnDtlF0iQitEcc" media="(prefers-color-scheme: dark)"><img src="/files/2wjtWBXVu3zqNrmvkp3W" alt=" The newly connection profile is selected in the Remmina window"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Accept the certificate presented by the server to verify that you trust the computer you are trying to access.

You should now be able to securely access and control your PC remotely.
{% endtab %}
{% endtabs %}

## Alternative remote desktop tools

You can also use other remote access software like NoMachine or AnyDesk to establish a remote connection between your devices.

### Using NoMachine

Once remote access is configured on the target PC, install the [NoMachine](https://www.nomachine.com/) <img src="/files/HjC1PPdhxkhzdjupAPgz" alt="" data-size="line"> app on *both* your remote and local devices.

<details>

<summary>Connect from Windows, macOS, or Linux using NoMachine</summary>

On your local machine:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the device you want to access.

   <figure><picture><source srcset="/files/vYtIu19l4v2PofJsLXG4" media="(prefers-color-scheme: dark)"><img src="/files/uY0yj9zb4zqRbUyVC2AT" alt="Copying the Nord name of the peer device from the NordVPN app."></picture><figcaption></figcaption></figure>

   &#x20;
2. Launch **NoMachine** and select the **Add** button to create a new connection.&#x20;

   <figure><picture><source srcset="/files/lMAhsSqTEZAqAW8pENbk" media="(prefers-color-scheme: dark)"><img src="/files/5oHQ71MwdQq3ct2IuTeB" alt="Clicking the &#x22;Add&#x22; button in NoMachine."></picture><figcaption></figcaption></figure>

   &#x20;
3. Fill in the following information and, in the upper-right corner, click **Add**:
   * In the **Name** field, enter a custom name to identify the connection.
   * In the **Host** field, paste the copied Nord name of the device you want to access.\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/BGJgGWfViniE6PEiuSYs" media="(prefers-color-scheme: dark)"><img src="/files/d5p36mighxSZl4BwQU6z" alt="&#x22;Home PC&#x22; entered in the Name field and Nord name entered in the Host field."></picture><figcaption></figcaption></figure>

     &#x20;&#x20;
4. Double-click the newly created connection to initiate the remote connection.

   <figure><picture><source srcset="/files/afWlIrkgJStQWwJEiZ0X" media="(prefers-color-scheme: dark)"><img src="/files/oNA2Ej4Mo8569UlKb0nE" alt=""></picture><figcaption></figcaption></figure>

   &#x20;
5. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
6. Enter your remote desktop credentials and select **OK**.
   * **Username:** your remote PC account name
   * **Password:** the password you use to log in to your remote PC\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/w4r26tXameK92spNWV8D" media="(prefers-color-scheme: dark)"><img src="/files/jC9S3SP6bA24oaBZHXHm" alt="Username and password fields filled in with the remote PC credentials."></picture><figcaption></figcaption></figure>

     &#x20;\
     See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.

**Y**ou should now be able to securely access and control your PC remotely.

</details>

<details>

<summary>Connect from Android or iPhone/iPad using NoMachine</summary>

On your mobile device, perform the following steps to add a remote PC connection:&#x20;

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.
2. Open **NoMachine** and select the **Add** button in the upper-left corner to create a new connection.

   <div align="left"><figure><picture><source srcset="/files/bQNHcMiM7VtzGemyRAtL" media="(prefers-color-scheme: dark)"><img src="/files/YGI79AOFE50TuuqFFzzN" alt="Tapping the &#x22;Add&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Ensure that **NX** is selected as the protocol and tap **Continue**.
4. In the **Host** field, enter either the Nord name or Meshnet IP of the computer you want to access, and then select **Continue**.

   <div align="left"><figure><picture><source srcset="/files/tSg0Y7G92jM3fXyWU3sa" media="(prefers-color-scheme: dark)"><img src="/files/YJqSeqqjnZrJtPO2j9OX" alt="The Meshnet IP address of the remote PC is entered in the Host field, which is highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Keep the default options for **Authentication** and **Proxy**.&#x20;
6. Optionally, in the **Name** field, provide a custom name for the connection and tap **Done**.

To access your remote PC:

1. On the **NoMachine** main screen, double-tap the newly created connection to initiate the remote connection.
2. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
3. Enter your remote desktop credentials and select **OK**.
   * **Username:** your remote PC account name
   * **Password:** the password you use to log in to your remote PC\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/i5Hd55nzPcXpEoNYsgYV" media="(prefers-color-scheme: dark)"><img src="/files/hQXtZivri37VW4zSB1Iw" alt="" width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;\
     See the [Finding PC account credentials](#finding-pc-account-credentials) section above for more details regarding correct credential usage.

You should now be able to securely access and control your PC remotely.

</details>

With these steps completed, you should now be connected to your remote Mac using NoMachine over Meshnet.

### Using AnyDesk

Once remote access is configured on the target PC, install the [AnyDesk](https://anydesk.com/downloads/windows) <img src="/files/PMc6JvZ03SxfP7ZqHxrB" alt="" data-size="line"> app on *both* the PC and the device you're connecting from.

For this setup, you won't need remote PC account credentials. Instead, you can use either manual approval on the remote PC or set up a dedicated unattended access password.

<details>

<summary>Optional: Enable unattended access with AnyDesk</summary>

By default, AnyDesk needs manual approval for incoming connections. To bypass this, you can enable the app’s [Unattended access feature](https://support.anydesk.com/knowledge/unattended-access):

1. On the *remote computer*, launch **AnyDesk** you installed earlier.
2. In the upper-right corner, click the **Main Menu** button and select **Settings**.

   <div align="left"><figure><picture><source srcset="/files/HjZ38dDKYa3gzeTzEVNa" media="(prefers-color-scheme: dark)"><img src="/files/wDLJtczZA7F2ARcej8vU" alt="Opening the Settings menu on the AnyDesk app" width="208"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. From the menu on the left, under **Security**, select **Access**.

   <div align="left"><figure><picture><source srcset="/files/oBezix48M5ef58ETc1KR" media="(prefers-color-scheme: dark)"><img src="/files/U3AQ7zMJiBdbsOfc9V2g" alt="Arrow pointing to the &#x22;Access&#x22; option under the &#x22;Security&#x22; section." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Under **Unattended access**, click **Set password**.
5. Enter and confirm a secure password that will be used for authentication, and then click **Apply**.

   <div align="left"><figure><picture><source srcset="/files/mX2mdY51AXRvRhLF8cY2" media="(prefers-color-scheme: dark)"><img src="/files/QdZd1S84AZeYb1I4meOY" alt="Password entry fields filled in and the &#x22;Apply&#x22; button is highlighted." width="286"></picture><figcaption></figcaption></figure></div>

After applying the changes, connect to the device without manual approval by following the platform-specific instructions below.

</details>

<details>

<summary>Connect from Windows, macOS, or Linux using AnyDesk</summary>

On your local machine:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the device you want to access.&#x20;

   <figure><picture><source srcset="/files/vYtIu19l4v2PofJsLXG4" media="(prefers-color-scheme: dark)"><img src="/files/uY0yj9zb4zqRbUyVC2AT" alt="Copying the Nord name of the peer device from the NordVPN app."></picture><figcaption></figcaption></figure>

   &#x20;
2. Launch **AnyDesk** you installed earlier.
3. In the remote address field at the top, enter either the Nord name or the Meshnet IP address of the remote PC and click **Connect**.

   <div align="left"><figure><picture><source srcset="/files/DqpJ7GFKCyQjqScoGWdu" media="(prefers-color-scheme: dark)"><img src="/files/7wzRfePY4PFZPIpTCAKh" alt="The Nord name of the remote PC and the &#x22;Connect&#x22; button are highlighted on the AnyDesk app"></picture><figcaption></figcaption></figure></div>

   &#x20;

If you set up an unattended password on the remote PC:

1. In the **Authorization** dialog that appears, enter the password you created for unattended access on the remote PC and click **OK**.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/Q5CLt32kuhjmDmXn33WC" media="(prefers-color-scheme: dark)"><img src="/files/dsuZElq2gQ0XfTtPSV3T" alt="&#x22;Log in automatically from now on&#x22; option is selected and highlighted." width="375"></picture><figcaption></figcaption></figure></div>

If you haven't set up an unattended password, wait for the user at the remote device to accept the connection request manually.

</details>

<details>

<summary>Connect from Android or iPhone/iPad using AnyDesk</summary>

On your mobile device:&#x20;

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.
2. Open **AnyDesk** you installed earlier.
3. In the remote address field, paste either the Nord name or the Meshnet IP address of the remote PC and tap the arrow button to connect.

   <div align="left"><figure><picture><source srcset="/files/k6qtIxlL2iUjZjt4uOrl" media="(prefers-color-scheme: dark)"><img src="/files/8VgGd1xey8eHQFddb0if" alt="Nord name of the remote PC and the arrow button are highlighted" width="375"></picture><figcaption></figcaption></figure></div>

If you set up an unattended password on the remote PC:

1. In the **Authorization** dialog, enter the password you created for unattended access on the remote PC and tap **OK**.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/9I0AWkm4Xq21hMfqtimB" media="(prefers-color-scheme: dark)"><img src="/files/g1bz8HMlpUaMVsPS8xxl" alt="The &#x22;Log in automatically from now on&#x22; option is selected." width="375"></picture><figcaption></figcaption></figure></div>

If you haven't set up an unattended password, wait for the user at the remote device to accept the connection request manually.

</details>

With these steps completed, you should now be connected to your remote Mac using AnyDesk over Meshnet.

## Checklist for a successful connection

If you encounter issues while attempting to connect, check that:

* [ ] Both devices are linked over Meshnet.
* [ ] Both devices see each other as active in the Meshnet peer list.
* [ ] The remote PC is turned on and not in sleep or hibernate mode.
* [ ] The remote PC’s network settings allow for incoming Remote Desktop connections.
* [ ] The correct Nord name or Meshnet IP address is used for the connection.
* [ ] You are logging in with the correct remote [PC account credentials](#finding-pc-account-credentials).
* [ ] Any firewall or antivirus software is not blocking the connection.

## See also

* [Connect to a macOS device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-macos)
* [Connect to a Linux device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-linux)


# Connect to a macOS device

Learn how to access a macOS computer over Meshnet from Windows, macOS, or Linux.

To log in to your macOS computer remotely over Meshnet, enable remote access on your macOS system and use a remote desktop client on the device from which you connect.

## Before you begin <a href="#prerequisites" id="prerequisites"></a>

Make sure that:

* Both the macOS device you wish to access remotely (remote Mac) and the device you're using to connect are [linked over Meshnet](/features/linking-devices-in-meshnet).
* Your remote Mac is on.

Also, it's a good idea to look up the Nord name or Meshnet IP address of the Mac you're connecting to in your NordVPN app. To copy this information for later use, go to **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line">, click the device’s Nord name or IP address, and choose to copy it.

## Set up your remote Mac for access <a href="#enable-remote-access-on-your-pc" id="enable-remote-access-on-your-pc"></a>

Before attempting a remote connection, it's crucial to set up your remote Mac to allow these connections.

{% tabs %}
{% tab title="macOS Sonoma 14" %}
Enable screen sharing or remote management:

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings**.

2. Navigate to **General**, and select **Sharing**.

   <div align="left"><figure><picture><source srcset="/files/1DeFbR6N4y4hJKlThtP5" media="(prefers-color-scheme: dark)"><img src="/files/TkefqlscNMrXDnKWvt5I" alt="Selecting &#x22;General&#x22; and then &#x22;Sharing&#x22;."></picture><figcaption></figcaption></figure></div>

   &#x20;

3. Do any of the following:
   * For basic tasks, under **Content & media**, turn on the **Screen sharing** toggle.

     <div align="left"><figure><picture><source srcset="/files/WpOrgmLbYCa8wciDGGHr" media="(prefers-color-scheme: dark)"><img src="/files/3iml8QR9Q97WTz4qXfU5" alt="Turning on the &#x27;Screen sharing&#x27; toggle." width="563"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * For more advanced control, such as installing software, under **Advanced**, turn on **Remote management**.

     <div align="left"><figure><picture><source srcset="/files/8HUEdzT07hEAIswRWhBv" media="(prefers-color-scheme: dark)"><img src="/files/27ddEGai1VEaoT1bH9zK" alt="&#x22;Remote management&#x22; toggle enabled." width="563"></picture><figcaption></figcaption></figure></div>

4. Next to the toggle, click the Info <img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line"> button.

5. In the **Password** field, enter a secure password that will be used to authenticate the connection.

   <div align="left"><figure><picture><source srcset="/files/0BNuuJi5hI4aXyDs83Xk" media="(prefers-color-scheme: dark)"><img src="/files/ttrmHCxHQLyXWFAvgEEu" alt="Filled in &#x22;Password&#x22; field is highlighted." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;

6. Click **Done**.

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

Have ready the name and password for the account you're using on your Mac.\
You can find this information by going to the Apple <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> menu > **System settings** > **Users & groups**.
{% endhint %}
{% endtab %}

{% tab title="macOS Ventura 13" %}
Enable screen sharing or remote management:

1. Select the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings**.
2. Navigate to **General**, and select **Sharing**.

   <div align="left"><figure><picture><source srcset="/files/1DeFbR6N4y4hJKlThtP5" media="(prefers-color-scheme: dark)"><img src="/files/TkefqlscNMrXDnKWvt5I" alt="Selecting &#x22;General&#x22; and then &#x22;Sharing&#x22;."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Do any of the following:
   * For basic tasks, turn on the **Screen sharing** toggle.

     <div align="left"><figure><picture><source srcset="/files/8cG2LrMw8T29NvCXZW9Y" media="(prefers-color-scheme: dark)"><img src="/files/Oqcp5NPneNDHNTGliWa2" alt="Turning on the &#x27;Screen sharing&#x27; toggle." width="563"></picture><figcaption></figcaption></figure></div>

     &#x20;
   * For more advanced control, such as installing software, under **Advanced**, turn on **Remote management**.

     <div align="left"><figure><picture><source srcset="/files/a3pDG86LqaQaJSAfPETp" media="(prefers-color-scheme: dark)"><img src="/files/0IAqUq5uIUawqyn8j1Iu" alt="Turning on &#x22;Remote management&#x22; toggle." width="563"></picture><figcaption></figcaption></figure></div>

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

Have ready the name and password for the account you're using on your Mac.\
You can find this information by going to the Apple <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> menu > **System settings** > **Users & groups**.
{% endhint %}
{% endtab %}

{% tab title="macOS Monterey 12 or older" %}

1. Select the **Apple** menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System preferences** and click **Sharing**.
2. Do any of the following:&#x20;
   * For basic tasks, select the **Screen sharing** checkbox.

     <div align="left"><figure><img src="/files/aWVNHx6UMjdo5WdY6nvZ" alt="" width="200"><figcaption></figcaption></figure></div>

     &#x20;
   * For more advanced control, such as installing software, select **Remote management**.&#x20;

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

Have ready the name and password for the account you're using on your Mac.\
You can find this information by going to the Apple <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> menu > **System preferences** > **Users & groups**.
{% endhint %}
{% endtab %}
{% endtabs %}

## Connect to your remote Mac <a href="#connect-to-your-remote-pc" id="connect-to-your-remote-pc"></a>

{% tabs %}
{% tab title="macOS" %}
If you are looking to establish a remote connection between two Mac devices, the macOS Connect to Server feature offers a straightforward solution.

On the Mac you are connecting from:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the Mac you want to access.

   <div align="left"><figure><picture><source srcset="/files/jYrJMeSrfUnKQPAfAttI" media="(prefers-color-scheme: dark)"><img src="/files/efOHmTx1y62WCGeqd5BK" alt="Remote device&#x27;s Nord name and Meshnet IP address are highlighted in the NordVPN app"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Control-click **Finder** <img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FzliXwqqNaTS1rMMHONSJ%2Fmac-finder.svg?alt=media&#x26;token=0c2f76d2-bdd5-4321-b458-b4f777d05622" alt="" data-size="line"> and choose **Connect to server**.

   <div align="left"><figure><picture><source srcset="/files/Iu4IOK8nD33ppUBrjf9r" media="(prefers-color-scheme: dark)"><img src="/files/rT2aQwBn4s4nuQ5bmWBj" alt="" width="251"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **Server address** field, type `vnc://` followed by the Nord name or Meshnet IP of the Mac you want to access and click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/Y6ScTTssbPlVLkLWyfiA" media="(prefers-color-scheme: dark)"><img src="/files/QZgrjHMqJRsuCGU6PhNm" alt="Remote device&#x27;s Nord name is entered in the &#x22;Connect to Server&#x22; dialog" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. When prompted, enter the name and password of your account on the Mac you're trying to access.

   <div align="left"><figure><picture><source srcset="/files/Zv0Z1CChw1guESMZWC2u" media="(prefers-color-scheme: dark)"><img src="/files/F6ASCMs24mJTHB2QZegt" alt="Remote device&#x27;s credentials are entered" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Sign in**.

With these steps completed, you should now be connected to your remote Mac over Meshnet.
{% endtab %}

{% tab title="Windows or Linux" %}
To connect to the remote Mac from Windows or Linux, first install the [NoMachine](https://www.nomachine.com/) <img src="/files/4BYeHC3IpFMXNO4WmGRH" alt="" data-size="line"> app on both your remote and local computers.

On your local machine, perform the following steps:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the Mac you want to access.

   <div align="left"><figure><picture><source srcset="/files/GKy0yYz3Lev20tB7jes5" media="(prefers-color-scheme: dark)"><img src="/files/hcUgVuGxEY6LZIJWOcWt" alt="Nord name and Meshnet IP address of a macOS device highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch **NoMachine** and select the **Add** button to create a new connection.

   <figure><picture><source srcset="/files/lMAhsSqTEZAqAW8pENbk" media="(prefers-color-scheme: dark)"><img src="/files/5oHQ71MwdQq3ct2IuTeB" alt="Clicking the &#x22;Add&#x22; button in NoMachine."></picture><figcaption></figcaption></figure>

   &#x20;
3. Fill in the following information and, in the upper-right corner, click **Add**:
   * In the **Name** field, enter a custom name for the connection.
   * In the **Host** field, paste the copied Nord name of the Mac you want to access.\
     \
     **Example**

     <div align="left"><figure><picture><source srcset="/files/s1lAvOpO4VKk6q9uvoZH" media="(prefers-color-scheme: dark)"><img src="/files/CXwB1saz8irzbfVW7TmA" alt="Nord name is entered in the &#x22;Host&#x22; field and the Add button is highlighted"></picture><figcaption></figcaption></figure></div>

     &#x20;
4. Double-click the newly created connection to initiate the remote connection.

   <figure><picture><source srcset="/files/oBhDHmS1aGmGXuwPzmYN" media="(prefers-color-scheme: dark)"><img src="/files/7oRjxyfvVhlA0RFhYbqX" alt="Connection to the remote Mac selected on the main screen of NoMachine."></picture><figcaption></figcaption></figure>

   &#x20;
5. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
6. Enter your remote desktop credentials and select **OK**.
   * **Username:** your remote Mac's account name
   * **Password:** the password you use to log in to your remote Mac\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/w4r26tXameK92spNWV8D" media="(prefers-color-scheme: dark)"><img src="/files/jC9S3SP6bA24oaBZHXHm" alt=""></picture><figcaption></figcaption></figure></div>

With these steps completed, you should now be connected to your remote Mac using NoMachine over Meshnet.
{% endtab %}

{% tab title="Android or iPhone/iPad" %}
To connect to the remote Mac from Android or iPhone/iPad, first install the [NoMachine](https://www.nomachine.com/) <img src="/files/QWGtPctInliNVFVVvI2m" alt="" data-size="line"> app on both your remote and local devices.

### Add a remote connection

On your mobile device, perform the following steps:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.

   <div align="left"><figure><picture><source srcset="/files/ZJdYcUr6x6zMkKe9mZ3H" media="(prefers-color-scheme: dark)"><img src="/files/fEwSM1nnqgWUFGxSmCsu" alt="Copy Nord name and Meshnet IP address options highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open **NoMachine** and select the **Add** button, represented by a computer icon with a plus sign, in the upper-left corner to create a new connection.

   <div align="left"><figure><picture><source srcset="/files/bQNHcMiM7VtzGemyRAtL" media="(prefers-color-scheme: dark)"><img src="/files/YGI79AOFE50TuuqFFzzN" alt="The Add button is highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Ensure that **NX** is selected as the protocol and tap **Continue**.
4. In the **Host** field, enter either the Nord name or Meshnet IP of the computer you want to access, and then select **Continue**.

   <div align="left"><figure><picture><source srcset="/files/Tbl1isqbQkrvMCKf2u2s" media="(prefers-color-scheme: dark)"><img src="/files/aRaHkCxDbtRsC7kxwmzV" alt="The Meshnet IP address of the remote PC is entered in the Host field, which is highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Keep the default options for **Authentication** and **Proxy**.&#x20;
6. Optionally, in the **Name** field, provide a custom name for the connection and tap **Done**.

### Access your remote Mac

1. On the **NoMachine** main screen, double-tap the newly created connection to initiate the remote connection.&#x20;

   <div align="left"><figure><picture><source srcset="/files/fQO1nsLyVqZ4ixdSq6Pg" media="(prefers-color-scheme: dark)"><img src="/files/29GCh7POcsDV9ASbWGSx" alt="The newly created connection shown on the main screen of the app" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
3. Enter your remote desktop credentials and select **OK**.
   * **Username**: your remote Mac's account name
   * **Password**: the password you use to log in to your remote Mac\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/i5Hd55nzPcXpEoNYsgYV" media="(prefers-color-scheme: dark)"><img src="/files/hQXtZivri37VW4zSB1Iw" alt="Step indicators are places next to remote PC credentials fields and the &#x22;OK&#x22; button" width="375"></picture><figcaption></figcaption></figure></div>

With these steps completed, you should now be connected to your remote Mac using NoMachine over Meshnet.
{% endtab %}

{% tab title="Linux" %}
On Linux, you can use Remmina <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line">, which is a free remote desktop client available in the default repositories of many Linux distributions.

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

The instructions below use Ubuntu 24.04 LTS as an example.
{% endhint %}

### Install Remmina

If you don't have Remmina installed on your system, install it using one of the methods described below.

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

1. Open **Terminal**.
2. Update the package manager list of available packages by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update
   </code></pre>

   &#x20;
3. Install Remmina by entering this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install remmina -y
   </code></pre>

{% endtab %}

{% tab title="App Center" %}

1. Launch **App Center**<img src="/files/NrHXTROwU0YeHpe9aXFI" alt="" data-size="line">.
2. In the search bar, enter `remmina` and select the matching result.
3. Click the **Install** button.

   <div align="left"><figure><picture><source srcset="/files/F5syZyWi1cMY4L7c1a2C" media="(prefers-color-scheme: dark)"><img src="/files/rLcW0DaHxw6h13xOltVf" alt="Clicking &#x22;Install&#x22; in the App Center to install Remmina."></picture><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

### Add a remote Mac connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the terminal, run the `nordvpn meshnet peer list` command and copy the Nord name of the device you want to access:

   <figure><img src="/files/PoV5fD9oT5ybmblwioc6" alt="Peer device&#x27;s Nord name and Meshnet IP address are highlighted in the terminal window"><figcaption></figcaption></figure>

   &#x20;
2. Launch the **Remmina** <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line"> app that you installed earlier.
3. Click the **New connection profile** button in the upper-left corner of the app window.

   <div align="left"><figure><picture><source srcset="/files/wk3OZGKA7SEtPoaQzih0" media="(prefers-color-scheme: dark)"><img src="/files/p737fa6cHeu9wI8hNK53" alt="New connection profile button highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. From the **Protocol** dropdown list, select **Remmina VNC plugin**.

   <div align="left"><figure><picture><source srcset="/files/ShoHg779aReq1i2eNQOY" media="(prefers-color-scheme: dark)"><img src="/files/3gNLdn1aeBa838BTBdYV" alt="Selecting Remmina VNC plugin from the Protocol dropdown list."></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Under **Basic**, enter the information to create a reusable connection.
   * **Server:** the Nord name of the Mac you want to access.
   * **Username:** your remote Mac's account name.
   * **User password:** the password for the specified username.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/CjFGW7QaXbOTYL25jAY6" media="(prefers-color-scheme: dark)"><img src="/files/5PQjy7E3sByDP8lFJNrB" alt="Filling in the Server, Username, and User password boxes"></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Click **Save**.

### Access your remote Mac <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. Double-click the new connection profile you've created.

   <figure><picture><source srcset="/files/9piYPkXLkHfC5ZYEhv7O" media="(prefers-color-scheme: dark)"><img src="/files/sUunQ6lDdrSLjFJs7Jqt" alt=" The newly connection profile is selected in the Remmina window"></picture><figcaption></figcaption></figure>

   &#x20;
2. Accept the certificate presented by the server to verify that you trust the computer you are trying to access.

With these steps completed, you should now be connected to your remote Mac using Remmina over Meshnet.
{% endtab %}
{% endtabs %}

## Alternative remote desktop tools

If you prefer, you can use other remote access software like AnyDesk.

### Using AnyDesk <a href="#using-anydesk-for-remote-connections.1" id="using-anydesk-for-remote-connections.1"></a>

Once remote access is configured on the target Mac, install the [AnyDesk](https://anydesk.com/en/downloads/mac-os) <img src="/files/LqM0NsOTwDzBmCO6N04P" alt="" data-size="line"> app on *both* the Mac and the device you're connecting from.

For this setup, you won't need remote Mac account credentials. Instead, you can use either manual approval on the remote Mac or set up a dedicated unattended access password.

<details>

<summary>Optional: Enable unattended access with AnyDesk</summary>

By default, AnyDesk needs manual approval for incoming connections. To bypass this, you can enable the app’s [Unattended access feature](https://support.anydesk.com/knowledge/unattended-access):

1. On the *remote computer*, launch **AnyDesk** <img src="/files/LqM0NsOTwDzBmCO6N04P" alt="" data-size="line">.
2. In the menu bar, click **AnyDesk** > **Preferences**.

   <div align="left"><figure><picture><source srcset="/files/QA1TElnDU0CM1XU83Sea" media="(prefers-color-scheme: dark)"><img src="/files/Z5NxQK5PfvEEaEQJB96C" alt="Opening AnyDesk preferences from the menu bar" width="336"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. From the menu on the left, under **Security**, select **Access**.
4. Under **Unattended access**, click **Set password**.

   <div align="left"><figure><picture><source srcset="/files/mSSQgg8bfcwOolsSeHfg" media="(prefers-color-scheme: dark)"><img src="/files/GoxtKdCxWYo33p73O2L5" alt="&#x22;Set password&#x22; button is highlighted in the Anydesk preferences."></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Enter a secure password that will be used for authentication and click **Change password**.

   <div align="left"><figure><picture><source srcset="/files/fALCm9ESpev4mshnFbMS" media="(prefers-color-scheme: dark)"><img src="/files/2u5Rfk6VFYhYsYhb98tz" alt="Password fields filled in and an arrow pointing to the &#x22;Change password&#x22; button." width="375"></picture><figcaption></figcaption></figure></div>

After applying the changes, you can connect to the remote device without having to manually accept the connection request.

</details>

<details>

<summary>Connect from Windows, macOS, or Linux</summary>

On your local machine:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the Mac you want to access.

   <figure><picture><source srcset="/files/GKy0yYz3Lev20tB7jes5" media="(prefers-color-scheme: dark)"><img src="/files/hcUgVuGxEY6LZIJWOcWt" alt="Nord name and Meshnet IP address of a macOS device highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
2. Launch **AnyDesk** you installed earlier.
3. In the remote address field at the top, enter either the Nord name or the Meshnet IP address of the remote Mac and click **Connect**.

   <figure><picture><source srcset="/files/1Ke4kr5PaG9HTZMWrCOW" media="(prefers-color-scheme: dark)"><img src="/files/bItILqkVnRw7XkEv8aJZ" alt="Remote Mac&#x27;s Nord name entered in the address field and the connect button is highlighted."></picture><figcaption></figcaption></figure>

   &#x20;

If you set up an [unattended password](#optional-enable-unattended-access-on-the-remote-pc) on the remote Mac:

1. In the **Authorization** dialog that appears, enter the password you created for unattended access on the remote Mac and click **OK**.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/Q5CLt32kuhjmDmXn33WC" media="(prefers-color-scheme: dark)"><img src="/files/dsuZElq2gQ0XfTtPSV3T" alt="&#x22;Log in automatically from now on&#x22; option selected and highlighted." width="375"></picture><figcaption></figcaption></figure></div>

If you haven't set up an unattended password, wait for the user at the remote Mac to accept the connection request manually.

</details>

<details>

<summary>Connect from Android or iPhone/iPad</summary>

On your mobile device:&#x20;

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.
2. Open **AnyDesk** you installed earlier.
3. In the remote address field, paste either the Nord name or the Meshnet IP address of the remote Mac and tap the arrow button to connect.

   <div align="left"><figure><picture><source srcset="/files/VzZypnulIuncabZDS5wj" media="(prefers-color-scheme: dark)"><img src="/files/bThclXApTO9gTUio250P" alt="" width="375"></picture><figcaption></figcaption></figure></div>

If you set up an unattended password on the remote Mac:

1. In the **Authorization** dialog, enter the password you created for unattended access on the remote Mac and tap **OK**.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/9I0AWkm4Xq21hMfqtimB" media="(prefers-color-scheme: dark)"><img src="/files/g1bz8HMlpUaMVsPS8xxl" alt="Entering the Unattended access password and tapping OK in the Authorization prompt." width="375"></picture><figcaption></figcaption></figure></div>

If you haven't set up an unattended password, wait for the user at the remote device to accept the connection request manually.

</details>

With these steps completed, you should now be connected to your remote Mac using AnyDesk over Meshnet.

## Checklist for a successful connection

If you encounter issues while attempting to connect, check that:

* [ ] Both devices are linked over Meshnet.
* [ ] Both devices see each other as active in the Meshnet peer list.
* [ ] The remote Mac is turned on and not in sleep or hibernate mode.
* [ ] The remote Mac's network settings allow for incoming Remote Desktop connections.
* [ ] The correct Nord name or Meshnet IP address is being used for the connection.
* [ ] You are logging in with the correct remote Mac account credentials, if applicable.
* [ ] Any firewall or antivirus software is not blocking the connection.

## See also

* [Connect to a Windows device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-windows)
* [Connect to a Linux device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-linux)


# Connect to a Linux device

Learn how to access a Linux computer over Meshnet from Windows, macOS, or Linux.

Depending on your purpose, you can choose among the following methods to remotely connect to your Linux computer over Meshnet:

* GUI-based remote connection using Remote Desktop Protocol (RDP) or Virtual Network Connection (VNC). This method is described further in this article.
* Text-based remote connection using Secure Shell (SSH). For instructions on this method, see the [How to access remote systems over Meshnet using SSH](/how-to/remote-access/access-remote-systems-over-ssh) article.

## Before you begin

Ensure that:

* Your remote PC and the device you want to use to access it are [linked over Meshnet](/getting-started/how-to-start-using-meshnet).
* Your remote PC is turned on.

## Enable remote access on your PC  <a href="#enable-remote-access-on-your-pc.1" id="enable-remote-access-on-your-pc.1"></a>

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

For the instructions provided in this guide, Ubuntu 24.04 LTS is used as an example.
{% endhint %}

1. Open **Settings**.
2. Navigate to **System** > **Remote desktop**.
3. Turn on the **Desktop sharing** and **Remote control** toggles to allow remote connections and grant them control of the desktop.

   <figure><picture><source srcset="/files/9qowppV4uerV62pQA85O" media="(prefers-color-scheme: dark)"><img src="/files/mDmrgI9fznAkNI6VQtbO" alt="&#x22;Desktop sharing&#x22; and &#x22;Remote control&#x22; toggles in the on position."></picture><figcaption></figcaption></figure>

   &#x20;
4. Under **Login details**, take note of the username and password required to access this computer.

   <figure><picture><source srcset="/files/ddF9tU0bxw8Ogwb4wmTC" media="(prefers-color-scheme: dark)"><img src="/files/y91fQfIyfAHXOfVd7T44" alt="Login details of the Linux device."></picture><figcaption></figcaption></figure>

   &#x20;\
   You can change the password generated by the app if you wish.

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

**Desktop sharing** settings permit remote connections only when a user account is already logged in. To access the device when no user is active, configure the **Remote Login** options instead.
{% endhint %}

## Connect to your remote PC <a href="#connect-to-your-remote-pc" id="connect-to-your-remote-pc"></a>

Once you have enabled remote access and have your remote desktop credentials, you can connect to your PC using a remote desktop client.

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

### Install Remote Desktop on Windows

To connect to your remote PC from Windows, first install the [Microsoft Remote Desktop](https://apps.microsoft.com/store/detail/microsoft-remote-desktop/9WZDNCRFJ3PS) <img src="/files/qqjzcQlQoWKnFxMgaxKz" alt="" data-size="line"> app, available for free from the Microsoft Store.

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

Alternatively, you can use the built-in Remote Desktop client on Windows, which you can find by typing `Remote Desktop Connection` in the search box on the taskbar.
{% endhint %}

### Add a remote connection <a href="#set-up-a-remote-connection.5" id="set-up-a-remote-connection.5"></a>

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/99kz54DRPNF2W5W33epv" media="(prefers-color-scheme: dark)"><img src="/files/X4xz5P5Xl2FmWc7eymDM" alt="Nord name and Meshnet IP address of a Linux device highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open the **Remote Desktop** app and click **Add** > **PCs**.

   <div align="left"><figure><picture><source srcset="/files/NYa2Wjg81mKEGC5ViZ3X" media="(prefers-color-scheme: dark)"><img src="/files/xAqCqHkvd3UuJZGoUTXC" alt="Arrow pointing to the &#x22;Add&#x22; button and the &#x22;PCs&#x22; option is highlighted." width="479"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **PC name** field, paste the copied Nord name or Meshnet IP of the PC you want to access.

   <div align="left"><figure><picture><source srcset="/files/OyZyYzSXu145IG4KbUD1" media="(prefers-color-scheme: dark)"><img src="/files/pzZRy3wadmOByvEmkF85" alt="Nord name of the remote device entered in the &#x22;PC name&#x22; field." width="554"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Next to **User account**, click the plus (+) button to add a profile.
5. Enter your credentials for the remote computer to save for use with this connection.
   * **Username**: your remote PC account name you recorded earlier.
   * **Password**: the password for the specified username.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/qsCKDtnCmLkntlk7f3S9" media="(prefers-color-scheme: dark)"><img src="/files/83dQexuNUlaNW2WqT471" alt="&#x22;Username&#x22; and &#x22;Password&#x22; fields filled in with the remote PC&#x27;s credentials." width="561"></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Optionally, you can give a nickname to your connection in the **Display name** field. It is a way to easily identify your Remote Desktop connections.
7. Click **Save**, and then click **Save** again.

### Access your remote PC <a href="#connect-to-your-remote-pc.3" id="connect-to-your-remote-pc.3"></a>

1. Under **Saved PCs**, double-click the connection that you added.

   <div align="left"><figure><picture><source srcset="/files/PQlLLcYaD1QZtsXibYHr" media="(prefers-color-scheme: dark)"><img src="/files/RCgVd47DCFRnrLZL5HkV" alt="Newly added PC displayed on the &#x22;Remote Desktop&#x22; app&#x27;s main screen." width="341"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. You may receive a warning message indicating that it might not be safe to connect to this computer. If you don't want to see this dialog in the future, select the **Don't ask about this certificate again** checkbox.
3. Click **Connect anyway**.

You should now be able to access and control your PC remotely.
{% endtab %}

{% tab title="Android" %}

### Install Remote Desktop on Android

To connect to your remote PC from Android, first install the [Remote Desktop](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) <img src="/files/JyDNVHej1hXuyIBvv1y3" alt="" data-size="line"> app, available for free from Google Play.

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices**, tap the three-dot menu next to the device you want to access, and copy the device's Nord name or IP address. &#x20;

   <div align="left"><figure><picture><source srcset="/files/gduTXUhPzVMsIQfBCxgK" media="(prefers-color-scheme: dark)"><img src="/files/MqQkGMD72Uz6ndDrPJCE" alt="Copy Nord name and Meshnet IP address options highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;

2. Launch the **RD Client** app that you installed earlier.

3. From the bottom row, select **Add** > **Add PC**.

   <div align="left"><figure><picture><source srcset="/files/3td0tfQ93ouMl3cXSSel" media="(prefers-color-scheme: dark)"><img src="/files/jH1sKBeBvOdwPBjzBDt6" alt="Plus button and the Add PC option are highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;

4. Under **PC name**, paste the copied Nord name or Meshnet IP of the PC you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/X0FGZ85olKGE6519sqCe" media="(prefers-color-scheme: dark)"><img src="/files/D5tUnz83cupJpQ1yf5Hl" alt="Nord name of the remote PC highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;

5. Under **User account**, select the **Add user account** option.

6. In the **Username** and **Password** fields, enter your credentials for the remote computer to save for use with this connection, and tap **Save**.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/uSMT5gGZi89MnRAZga4c" media="(prefers-color-scheme: dark)"><img src="/files/x6RHg2LkUWQdWYmkTOHE" alt="Remote account username and password entered" width="375"></picture><figcaption></figcaption></figure></div>

7. In the upper-right corner, tap **Save**.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. From the main screen, select the saved connection that you added.

   <div align="left"><figure><picture><source srcset="/files/a8z4Kft1q9vpMeYC6Qrp" media="(prefers-color-scheme: dark)"><img src="/files/C8o3UCNLHqIhqYGwowRX" alt="" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. You may receive a warning indicating that the digital certificate of the computer you're trying to access cannot be verified.  If you don't want to see this dialog in the future, select the **Never ask again for connections to this PC** checkbox.
3. Tap **Connect**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/vgqoo5OKUbjv1eWDfaBZ" media="(prefers-color-scheme: dark)"><img src="/files/yskEUf2lJOJ4GN7Vhdhj" alt="" width="375"></picture><figcaption></figcaption></figure></div>

You should now be able to securely access and control your Linux  PC remotely over Meshnet.
{% endtab %}

{% tab title="iOS" %}

### Install Windows App on iOS

To connect to the remote PC from iOS, install the [Windows Mobile App](https://apps.apple.com/us/app/windows-app-mobile/id714464092), available for free from the App Store.

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

To install Windows App Mobile, your device must run iOS 17.0 or later.
{% endhint %}

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, go to **Products** <img src="/files/fnGLtxGkWpaBrxQKqCU4" alt="" data-size="line"> > **Meshnet** <img src="/files/ZKtk7xbdpRRtNXmrvNrx" alt="" data-size="line"> > **Manage devices** and copy the Nord name or Meshnet IP of the device you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/5dGydN5l1YueqLjREUTP" media="(prefers-color-scheme: dark)"><img src="/files/zP4ZQtb4nWcS5f4CEv6G" alt="Linux device&#x27;s Nord name and Meshnet IP highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch the **Windows**<img src="/files/RuaYIRLEI1dAUQdWqjGw" alt="" data-size="line"> app that you installed.
3. In the upper-right corner, tap the plus (+) button and select **PC**.
4. Tap **PC name** and paste the Nord name or Meshnet IP of the PC you want to access.&#x20;

   <div align="left"><figure><picture><source srcset="/files/YmtlFwLjrKCsUHBJyoSf" media="(prefers-color-scheme: dark)"><img src="/files/4CjsQp7Xb7Qysl0Y3SvK" alt="Entering the Nord name" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Return to the previous menu and tap **Credentials** > **Add credentials**.
6. Enter the following information to save for use with this connection:
   * The remote PC account name
   * The remote PC account password
   * Optionally, tap **Friendly name** to give a nickname to your connection.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/UNdewMVr5dFxywB9eFeD" media="(prefers-color-scheme: dark)"><img src="/files/Fa7qluwm3rGJkClbFKea" alt="Entering remote PC credentials" width="375"></picture><figcaption></figcaption></figure></div>

     &#x20;
7. Tap **Save**, return to the previous screen, and tap **Save** again.

The new connection will appear under **Saved devices**. Tap it whenever you want to initiate a remote desktop session.

<div align="left"><figure><picture><source srcset="/files/lWNFD5KBDmTCLp715gA0" media="(prefers-color-scheme: dark)"><img src="/files/nklJhXNSnyecglYR6DG1" alt="New connection to a Linux device visible on the main app screen." width="375"></picture><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="macOS" %}

### Install Windows App on macOS

To connect to your remote PC from macOS, first install the [Windows App](https://apps.apple.com/us/app/windows-app/id1295203466?mt=12), available for free from the Mac App Store.

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.

   <div align="left"><figure><picture><source srcset="/files/OseKUnBJsAiLphGL6eEw" media="(prefers-color-scheme: dark)"><img src="/files/nwlIkNPXQE7Z2Hv8IVID" alt="Nord name and Meshnet IP address of a Linux peer device highlighted."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Open **Microsoft Remote Desktop**, click the plus (+) button, and select **Add PC**.

   <div align="left"><figure><picture><source srcset="/files/i3AkxiVDT40aX9WAaS2O" media="(prefers-color-scheme: dark)"><img src="/files/7pMX4CveXKQ1LHds2ZRR" alt="Arrow pointing to the plus (+) button and the &#x22;Add PC&#x22; option is selected." width="413"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the **PC name** box, paste the Nord name or Meshnet IP you copied earlier.

   <div align="left"><figure><picture><source srcset="/files/pqjcWxRBFteQZYvvaD8i" media="(prefers-color-scheme: dark)"><img src="/files/vcXyicGZKsPv5ubHmEm5" alt="Nord name entered in the &#x22;PC name&#x22; field."></picture><figcaption></figcaption></figure></div>

   &#x20;&#x20;
4. From the **User account** dropdown list, select **Add credentials**.&#x20;
5. In the **Username** and **Password** fields, enter your credentials for the remote computer to save for future connections, and click **Add**.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/BUNizURLXBbleGFYTDAy" media="(prefers-color-scheme: dark)"><img src="/files/wSsNUR640dYFnlZiJvOs" alt="Username and password fields filled in with the authentication details." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Optionally, give a nickname to your connection in the **Friendly name** field.

   <div align="left"><figure><picture><source srcset="/files/n9tYDwr4u1IrhzrxxrBr" media="(prefers-color-scheme: dark)"><img src="/files/rSloJNQsQ1RFwa5hYpjv" alt="&#x22;Home PC&#x22; connection nickname entered in the &#x22;Friendly name&#x22; field" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
7. Click **Add** to save changes.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. Under **Saved PCs**, double-click the new connection that you added.

   <div align="left"><figure><picture><source srcset="/files/6ECHwRQY2a5W8nGfGHOj" media="(prefers-color-scheme: dark)"><img src="/files/GGmXpQIYVqcYPI6cQ9cm" alt="Newly added connection selected in the app." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. You may receive a warning indicating that the digital certificate of the computer you're trying to access cannot be verified. If you don't want to see this dialog in the future, click **Show certificate** and then select the **Always trust** checkbox.

   <div align="left"><figure><picture><source srcset="/files/8Z72PqzoUc8mog5GbzOD" media="(prefers-color-scheme: dark)"><img src="/files/0mojlcErc7DkOtj0OPS7" alt="The &#x22;Always trust&#x22; checkbox is selected." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. If you're connecting to a computer you trust, click **Continue**.

You should now be able to remotely access and control your PC securely.
{% endtab %}

{% tab title="Linux" %}
For Linux-to-Linux connections, you can use Remmina <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line">, a free remote desktop client available in the default repositories of many Linux distributions.

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

The instructions below use Ubuntu 24.04 LTS as an example.
{% endhint %}

### Install Remmina

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

1. Open **Terminal**.
2. Update the package manager list of available packages by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update
   </code></pre>

   &#x20;
3. Install Remmina by entering this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install remmina -y
   </code></pre>

{% endtab %}

{% tab title="App Center" %}

1. Launch **App Center**<img src="/files/NrHXTROwU0YeHpe9aXFI" alt="" data-size="line">.
2. In the search bar, enter `remmina` and select the matching result.
3. Click the **Install** button.

   <div align="left"><figure><picture><source srcset="/files/F5syZyWi1cMY4L7c1a2C" media="(prefers-color-scheme: dark)"><img src="/files/rLcW0DaHxw6h13xOltVf" alt="Clicking &#x22;Install&#x22; in the App Center to install Remmina."></picture><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

### Add a remote PC connection <a href="#add-a-remote-pc-connection" id="add-a-remote-pc-connection"></a>

1. In the terminal, run the `nordvpn meshnet peer list` command and copy the Nord name of the device you want to access.

   <figure><img src="/files/klI6HkbqaUeabjkfmyue" alt="Nord name of a Linux device highlighted."><figcaption></figcaption></figure>

   &#x20;
2. Launch the **Remmina** <img src="/files/diP7xEfKwY5D69ux0Jca" alt="" data-size="line"> app that you installed earlier.
3. Click the **New connection profile** button in the upper-left corner of the app window.

   <div align="left"><figure><picture><source srcset="/files/wk3OZGKA7SEtPoaQzih0" media="(prefers-color-scheme: dark)"><img src="/files/p737fa6cHeu9wI8hNK53" alt="New connection profile button highlighted"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Name** field, type in a custom name to identify the connection.
5. Make sure **RDP** — **Remote Desktop Protocol** is selected in the **Protocol** field.
6. Under **Basic**, enter the following information to create a reusable connection:
   * In the **Server** field, paste the Nord name you copied earlier.
   * In the **Username** field, enter your remote PC account name.
   * In the **Password** field, enter the password you use to log in to your remote PC.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/ZTKahBTFXfGuQG8K7vOX" media="(prefers-color-scheme: dark)"><img src="/files/USjKJ4Oj4e5SPSsYU8mv" alt="Filling in the Server, Username, and Password fields"></picture><figcaption></figcaption></figure></div>

     &#x20;
7. Click **Save**.

### Access your remote PC <a href="#connect-to-your-remote-pc.1" id="connect-to-your-remote-pc.1"></a>

1. Double-click the new connection profile you've created.

   <div align="left"><figure><picture><source srcset="/files/LqMpTejSMDqwV1HDcnYX" media="(prefers-color-scheme: dark)"><img src="/files/XsrsQP8VjcNTS0exyklT" alt=" The newly connection profile is selected in the Remmina window"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Accept the certificate presented by the server to verify that you trust the computer you are trying to access.

With these steps completed, you should now be connected to your remote Linux PC using Remmina over Meshnet.
{% endtab %}
{% endtabs %}

## Alternative remote desktop tools

If you prefer, you can also use other remote access software like NoMachine or AnyDesk to establish a remote connection between your devices.

### Using NoMachine

Once remote access is configured on the target PC, install the [NoMachine](https://www.nomachine.com/) <img src="/files/YY63GzXtwsjKUhRqZEcz" alt="" data-size="line"> app on *both* your remote and local devices.

<details>

<summary>Connect from Windows, macOS, or Linux using NoMachine</summary>

On your local machine:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the device you want to access.

   <figure><picture><source srcset="/files/99kz54DRPNF2W5W33epv" media="(prefers-color-scheme: dark)"><img src="/files/X4xz5P5Xl2FmWc7eymDM" alt="Nord name and Meshnet IP address of a Linux device highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
2. Launch **NoMachine** and select the **Add** button to create a new connection.&#x20;

   <figure><picture><source srcset="/files/lMAhsSqTEZAqAW8pENbk" media="(prefers-color-scheme: dark)"><img src="/files/5oHQ71MwdQq3ct2IuTeB" alt="Clicking the &#x22;Add&#x22; button in NoMachine."></picture><figcaption></figcaption></figure>

   &#x20;
3. Fill in the following information and, in the upper-right corner, click **Add**:
   * In the **Name** field, enter a custom name to identify the connection.
   * In the **Host** field, paste the copied Nord name of the device you want to access.\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/WHSleMIlxms6xAYNFFpH" media="(prefers-color-scheme: dark)"><img src="/files/Zrx6CfKgwWfveZL0pZ80" alt="&#x22;Meshnet to Linux&#x22; entered in the Name field and Nord name entered in the Host field."></picture><figcaption></figcaption></figure>

     &#x20;&#x20;
4. Double-click the newly created connection to initiate the remote connection.

   <figure><picture><source srcset="/files/IS1yWcQ8Vt0Jm5NOzH2e" media="(prefers-color-scheme: dark)"><img src="/files/JpmOhywX91nmJ0gHP9MJ" alt="Newly added connection selected on the main screen of NoMachine."></picture><figcaption></figcaption></figure>

   &#x20;
5. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
6. Enter your remote desktop credentials and select **OK**.
   * **Username:** your remote PC account name
   * **Password:** the password you use to log in to your remote PC\
     &#x20;\
     **Example**

     <figure><picture><source srcset="/files/w4r26tXameK92spNWV8D" media="(prefers-color-scheme: dark)"><img src="/files/jC9S3SP6bA24oaBZHXHm" alt="Username and password fields filled in with the remote PC credentials."></picture><figcaption></figcaption></figure>

**Y**ou should now be able to securely access and control your PC remotely.

</details>

<details>

<summary>Connect from Android or iPhone/iPad using NoMachine</summary>

On your mobile device, perform the following steps to add a remote PC connection:&#x20;

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.&#x20;
2. Open **NoMachine** and select the **Add** button in the upper-left corner to create a new connection.

   <div align="left"><figure><picture><source srcset="/files/bQNHcMiM7VtzGemyRAtL" media="(prefers-color-scheme: dark)"><img src="/files/YGI79AOFE50TuuqFFzzN" alt="The Add button is highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Ensure that **NX** is selected as the protocol and tap **Continue**.
4. In the **Host** field, enter either the Nord name or Meshnet IP of the computer you want to access, and then select **Continue**.

   <div align="left"><figure><picture><source srcset="/files/LF556YDnel9oL395ClUM" media="(prefers-color-scheme: dark)"><img src="/files/IxbvWSq8cOqfjKSXVRIV" alt="The Meshnet IP address of the remote PC is entered in the Host field, which is highlighted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Keep the default options for **Authentication** and **Proxy**.&#x20;
6. Optionally, in the **Name** field, provide a custom name for the connection and tap **Done**.

To access your remote PC:

1. On the **NoMachine** main screen, double-tap the newly created connection to initiate the remote connection.&#x20;

   <div align="left"><figure><picture><source srcset="/files/Pi0V5yKUIi8WX1l55j2l" media="(prefers-color-scheme: dark)"><img src="/files/oyn7AHvNZDTvJca3PZE7" alt="The newly created connection is highlighted on the main screen" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. If a warning appears indicating that the host's authenticity cannot be confirmed, select **OK** to proceed.
3. Enter your remote desktop credentials and select **OK**.
   * **Username:** your remote PC account name
   * **Password:** the password you use to log in to your remote PC\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/i5Hd55nzPcXpEoNYsgYV" media="(prefers-color-scheme: dark)"><img src="/files/hQXtZivri37VW4zSB1Iw" alt="Remote PC credentials being entered" width="375"></picture><figcaption></figcaption></figure></div>

You should now be able to securely access and control your PC remotely.

</details>

### Using AnyDesk

Once remote access is configured on the target PC, install the [AnyDesk](https://anydesk.com/en/downloads/linux) <img src="/files/PMc6JvZ03SxfP7ZqHxrB" alt="" data-size="line"> app on *both* the PC and the device you're connecting from.

For this setup, you won't need remote PC account credentials. Instead, you can use either manual approval on the remote PC or set up a dedicated unattended access password.

<details>

<summary>Optional: Enable unattended access with AnyDesk</summary>

By default, AnyDesk needs manual approval for incoming connections. To bypass this, you can enable the app’s [Unattended access feature](https://support.anydesk.com/knowledge/unattended-access):&#x20;

1. On the *remote* computer, open **Terminal**.
2. Run the following command to open AnyDesk security settings:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo anydesk --admin-settings
   </code></pre>

   &#x20;
3. From the **Permission profile** dropdown list, choose **Unattended access**.

   <div align="left"><figure><img src="/files/wq5zdEnVek7mDxtKijGD" alt="&#x22;Unattended access&#x22; option highlighted from the &#x22;Permission profile&#x22; dropdown." width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. Select the **Enable unattended access** option.
5. Enter and confirm a secure password that will be used for authentication. Then, click **OK**.

   <div align="left"><figure><img src="/files/cWq24uxLhpL4VPwn2KVz" alt="Password fields filled in and an arrow pointing to the &#x22;OK&#x22; button." width="563"><figcaption></figcaption></figure></div>

After applying the changes, connect to the device without manual approval by following the platform-specific instructions below.

</details>

<details>

<summary>Connect from Windows, macOS, or Linux using AnyDesk</summary>

On your local machine:

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP address of the device you want to access.&#x20;

   <figure><picture><source srcset="/files/99kz54DRPNF2W5W33epv" media="(prefers-color-scheme: dark)"><img src="/files/X4xz5P5Xl2FmWc7eymDM" alt="Nord name and Meshnet IP address of a Linux device highlighted."></picture><figcaption></figcaption></figure>

   &#x20;
2. Launch **AnyDesk** you installed earlier.
3. In the remote address field at the top, enter either the Nord name or the Meshnet IP address of the remote PC and click **Connect**.

   <div align="left"><figure><picture><source srcset="/files/YbpfjZBkTuwfmWX7EgvX" media="(prefers-color-scheme: dark)"><img src="/files/G9MEWVnWCTnyCdyyZXjM" alt="The Nord name of the remote PC and the &#x22;Connect&#x22; button are highlighted on the AnyDesk app"></picture><figcaption></figcaption></figure></div>

   &#x20;

If you set up an unattended password on the remote PC:

1. In the **Authorization** dialog that appears, enter the password you created for unattended access on the remote PC.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/Q5CLt32kuhjmDmXn33WC" media="(prefers-color-scheme: dark)"><img src="/files/dsuZElq2gQ0XfTtPSV3T" alt="&#x22;Log in automatically from now on&#x22; option is selected and highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Click **OK**.

If you haven't set up an unattended password, wait for the user at the remote device to accept the connection request manually.

</details>

<details>

<summary>Connect from Android or iPhone/iPad using AnyDesk</summary>

On your mobile device:&#x20;

1. In the **NordVPN** app, locate and copy the Nord name or Meshnet IP of the device you want to access.
2. Open **AnyDesk** you installed earlier.
3. In the remote address field, paste either the Nord name or the Meshnet IP address of the remote PC and tap the arrow button to connect.

   <div align="left"><figure><picture><source srcset="/files/erJ8pQwjsTjrQ6uvqR4C" media="(prefers-color-scheme: dark)"><img src="/files/g6TxdZiej02JaT3AGFNC" alt="Nord name of the remote PC and the arrow button are highlighted" width="375"></picture><figcaption></figcaption></figure></div>

If you set up an unattended password on the remote PC:

1. In the **Authorization** dialog, enter the password you created for unattended access on the remote PC.
2. Optionally, you can select the **Log in automatically from now on** checkbox to avoid entering the password again for subsequent connections.

   <div align="left"><figure><picture><source srcset="/files/9I0AWkm4Xq21hMfqtimB" media="(prefers-color-scheme: dark)"><img src="/files/g1bz8HMlpUaMVsPS8xxl" alt="The &#x22;Log in automatically from now on&#x22; option is selected." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Tap **OK**.

If you haven't set up an unattended password, wait for the user at the remote device to accept the connection request manually.

</details>

## Checklist for a successful connection

If you encounter issues while attempting to connect, check that:

* [ ] Both devices are linked over Meshnet.
* [ ] Both devices see each other as active in the Meshnet peer list.
* [ ] The [Remote access](/features/explaining-permissions/remote-access-permissions) permission is enabled in Meshnet for the connecting device.
* [ ] The remote PC is turned on and not in sleep or hibernate mode.
* [ ] The remote PC’s network settings allow for incoming Remote Desktop connections.
* [ ] The correct Nord name or Meshnet IP address is being used for the connection.
* [ ] You are logging in with the correct remote PC account credentials.
* [ ] Any firewall or antivirus software is not blocking the connection.

## See also

* [Connect to a macOS device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-macos)
* [Connect to a Windows device](/how-to/remote-access/log-in-to-pc-remotely/connect-to-windows)


# How to access remote systems over Meshnet using SSH

Discover the best practices for accessing remote systems securely over Meshnet using SSH, including key-based authentication.

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

With the advancement of technology, remote system management has become crucial in today's digital landscape. [Secure Shell](https://en.wikipedia.org/wiki/Secure_Shell) (SSH) is a popular choice when it comes to accessing remote servers, desktop computers, and devices like Raspberry Pi due to its flexibility and efficiency. While the client-server architecture of SSH makes communication between devices secure, it is not completely risk free, especially if you rely on password authentication.

Used in conjunction with [Meshnet](https://nordvpn.com/meshnet/), the SSH method can be as safe as physically accessing the server. Not only does Meshnet save time and travel costs, allowing you to connect directly to your remote device, but it also protects your SSH connection. Using an SSH key pair to authenticate your identity provides an additional layer of security by reducing the risk of password-based attacks.

This article explains what an SSH connection is, how it can be established via Meshnet, and how you can generate an SSH key pair to additionally protect the connection.

## What is SSH? <a href="#what-is-ssh" id="what-is-ssh"></a>

SSH is a command-line access method that lets you log in to another computer, execute commands, and transfer files between computers.

Being a lightweight protocol, SSH is typically used for remote server administration and is especially prevalent in the Linux infrastructure.

## Using SSH on Linux, Windows, and macOS <a href="#using-ssh-on-linux-windows-and-macos" id="using-ssh-on-linux-windows-and-macos"></a>

While SSH is mostly used for controlling Linux machines, both Windows and macOS can also be accessed using this method. All three operating systems employ an open-source implementation of SSH tools called [OpenSSH server](https://www.ssh.com/academy/ssh/openssh).

### Enable SSH access <a href="#enable-ssh-access" id="enable-ssh-access"></a>

To make your device accessible via SSH, you need to install and enable the OpenSSH server software.

{% tabs %}
{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this guide, Ubuntu 22.04.1 LTS serves as the example for the provided instructions.
{% endhint %}

To install SSH server on Linux:

1. Open the terminal and install the SSH server by running this command:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install openssh-server
   </code></pre>

   &#x20;
2. Once the installation is complete, confirm that the SSH service is running by checking its status. The output should tell you that the service is active. Run the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl status ssh
   </code></pre>

   &#x20;
3. To prevent the firewall from blocking your remote connection, open the SSH port by typing:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo ufw allow ssh
   </code></pre>

You can now connect to your Linux system via SSH from any remote device over Meshnet.
{% endtab %}

{% tab title="Windows" %}
To enable SSH on Windows, complete the following steps:

1. Open **Settings** and select **System** > **Optional features**.
2. Click **View features**.
3. In the search field, type in `OpenSSH`, select the **OpenSSH Server** checkbox, and click **Next**.

   <div align="left"><figure><picture><source srcset="/files/pUOU59jv3QQHrpfLTreN" media="(prefers-color-scheme: dark)"><img src="/files/8U49KQ7pHdU8JM3qNslu" alt="OpenSSH Server feature." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Add**.
5. Once the installation is finished, open PowerShell as an administrator by pressing the **Windows** <img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> key + **R**, typing in `powershell`, and pressing **Ctrl** + **Shift** + **Enter**.
6. Run the following command to start the OpenSSH server process:

   &#x20;

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">Start-Service sshd
   </code></pre>

   &#x20;
7. Ensure the SSH service is enabled each time you reboot your computer using this command:\
   &#x20;

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">Set-Service -Name sshd -StartupType 'Automatic'
   </code></pre>

You can now connect to your Windows machine via SSH from any remote device over Meshnet.
{% endtab %}

{% tab title="macOS" %}
To connect to your Mac using SSH, you need to enable remote login in your system settings.

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings** > **General**, and click **Sharing**.
2. Under **Advanced**, turn on the **Remote login** toggle.

   <div align="left"><figure><picture><source srcset="/files/W1XcHOVQMsP9wpYt84ng" media="(prefers-color-scheme: dark)"><img src="/files/jEr7zyhwwM8wYgT0GfUR" alt="Remote login option"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. If needed, select the Info <img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line"> and turn on the **Allow full disk access for remote users** option.
4. Optionally, specify which users can log in.

You can now connect to your Mac via SSH from any remote device over Meshnet.
{% endtab %}
{% endtabs %}

### Connect to your remote computer through SSH <a href="#connect-to-your-remote-computer" id="connect-to-your-remote-computer"></a>

Before attempting to connect, ensure you have the correct username for the remote computer account.

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

To view your username, run the following command in **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS):

```
whoami
```

{% endhint %}

{% tabs %}
{% tab title="Windows, macOS, and Linux" %}
To access your remote system via SSH from a desktop device:

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).
2. Enter the following command, where `<username>` is your remote PC account name and `<server>` is the Nord name or Meshnet IP of the computer you want to access:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh &#x3C;username>@&#x3C;server>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh ubuntu@100.105.90.201
   </code></pre>

   or

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh ubuntu@secret.meerkat-altai.nord
   </code></pre>

   &#x20;
3. The first time you connect, you will be asked to verify the authenticity of the server. This message is displayed to make sure you’re connecting to the correct remote server. Type `yes` to continue, as shown:

   <div align="left"><figure><img src="/files/Ob0YTx6gGraYXpSV0pF5" alt="SSH key fingerprint confirmation"><figcaption></figcaption></figure></div>

   &#x20;
4. Enter the password for the specified username.

You should now be connected to your remote device using SSH.
{% endtab %}

{% tab title="Android" %}
To access your remote system via SSH from an Android device:

1. Download and install the [ConnectBot](https://play.google.com/store/apps/details?id=org.connectbot) SSH client from the Google Play Store.
2. Open **ConnectBot**.
3. Tap the plus (+) button to add a host device.
4. Under **Protocol**, enter the following information, where `<username>` is your remote PC account name and `<server>` is the Nord name or Meshnet IP of the computer you want to access.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">&#x3C;username>@&#x3C;server>
   </code></pre>

   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/zDX5T0HSZPOGTUtyqEXp" alt="Remote device&#x27;s username and hostname" width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Tap the plus (+) button in the upper-right corner.
6. Select the newly added host device to initiate a connection.
7. Enter the password for the specified username.

You should now be connected to your remote device using SSH.

<div align="left"><figure><img src="/files/crZVyt5X9t5sefXS0k5C" alt="Terminal of the remote device." width="375"><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="iPhone/iPad" %}
To access your remote system via SSH from an iOS device:

1. Download and install the [WebSSH](https://apps.apple.com/us/app/webssh-sysadmin-tools/id497714887) application from the Apple App Store.
2. Open **WebSSH**.
3. To add a new host device, tap the empty area of the main screen or the plus button in the upper-right corner.
4. Specify the following information:
   * In the **Host** field, enter the Nord name or Meshnet IP of the remote PC.
   * In the **User** field, enter the account name of the remote computer.
   * In the **Password** field, enter the authentication password of the user account.

     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/bto2LCbLGd8lWtDJCKpy" alt="Remote device&#x27;s details for SSH connection." width="352"><figcaption></figcaption></figure></div>

     &#x20;
5. Tap the check mark button in the upper-right corner.
6. From the main application screen, tap the newly added device to initiate a connection.
7. Tap **Continue** to confirm the host key fingerprint.

   <div align="left"><figure><img src="/files/vIYZ8zlJsXKhbQpkRhpx" alt="SSH fingerprint confirmation." width="270"><figcaption></figcaption></figure></div>

You should now be connected to your remote device using SSH.

<div align="left"><figure><img src="/files/uNqL8j1K87jxqhPIVyYo" alt="Terminal of the remote device"><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

## Configuring SSH keys <a href="#configuring-ssh-keys" id="configuring-ssh-keys"></a>

An [SSH key](https://www.ssh.com/academy/ssh-keys) is a cryptographic key that is used for user authentication while establishing an SSH connection. It increases the security of SSH connections and allows for efficient automation, as it doesn't require human intervention for authentication.

### Generate an SSH key <a href="#generate-an-ssh-key" id="generate-an-ssh-key"></a>

To use key-based authentication, you first need to generate a key pair on the device from which you will be making an SSH connection.

1. Run the following command in **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS):

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh-keygen
   </code></pre>

   &#x20;
2. Press **Enter** to keep the default file location.
3. For additional security, you can choose a custom password. Otherwise, press **Enter**.

A pair of keys (private and public) will be generated with the same `id_rsa` name. However, the public key can be distinguished from the private key by its file extension, which is `.pub`.

<div align="left"><figure><img src="/files/y2tzA5uWXyctWWVlaMzt" alt="SSH keys generated"><figcaption></figcaption></figure></div>

### Copy your public SSH key to a remote device <a href="#copy-your-public-key-to-a-client-device" id="copy-your-public-key-to-a-client-device"></a>

To use SSH keys for authentication, you need to copy the public key of your device to the device you will be accessing. For example, if you are using Windows and want to connect to a Linux server, you need to copy the public SSH key of the Windows device to the Linux machine.&#x20;

When establishing an SSH connection, the public key is matched with the private key to authorize the connection.

<details>

<summary>Allow SSH key authentication on Windows</summary>

To connect to a Windows device using an SSH key, you must first enable public key authentication. Otherwise, you will be asked to enter the SSH password even after sharing the public key.&#x20;

On the remote device that you will be accessing, take the following steps:

1. Open **PowerShell** as an administrator.
2. Navigate to the `ssh` folder by using the `cd` command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">cd C:\ProgramData\ssh
   </code></pre>

   &#x20;
3. Run the following command to create a new `administrators_authorized_keys` file which will store the public keys of the connecting devices:\
   &#x20;

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">New-Item -ItemType File -Name administrators_authorized_keys
   </code></pre>

   &#x20;
4. Update the permissions to the newly created file with the following command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">icacls administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
   </code></pre>

   &#x20;
5. Run the command below to open the `sshd_config` file:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad sshd_config
   </code></pre>

   &#x20;
6. Locate and uncomment the `PubkeyAuthentication yes` line by removing the hash (`#`) symbol at the start.

   <figure><picture><source srcset="/files/zH4y6YTgFMJ9nXeAzfg1" media="(prefers-color-scheme: dark)"><img src="/files/VrjlTSeuBSbqRg31r7hk" alt="&#x22;PubkeyAuthentication yes&#x22; line highlighted in Notepad."></picture><figcaption></figcaption></figure>

   &#x20;
7. Press **Ctrl** + **S** to save changes and exit **Notepad**.

</details>

{% tabs %}
{% tab title="From Windows" %}
To exchange the SSH public key, follow these steps on the device from which you want to establish an SSH connection:

1. Open **PowerShell**.
2. Depending on the device that you will be accessing, run the following appropriate commands, where `<username>` is the username of the remote device's account and `<server>` is the remote device’s Nord name or Meshnet IP.
   * If you're copying your SSH key to a Linux or a macOS device, use this command:\
     &#x20;

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">type $env:userprofile\.ssh\id_rsa.pub | ssh &#x3C;username>@&#x3C;server> "cat >> .ssh/authorized_keys"
     </code></pre>

     &#x20;\
     **Example**

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">type $env:userprofile\.ssh\id_rsa.pub | ssh ubuntu@secret.meerkat-altai.nord "cat >> .ssh/authorized_keys"
     </code></pre>

     &#x20;
   * If you're copying your SSH key to a Windows device, use the following three commands:\
     &#x20;

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">$PublicKey = Get-Content "$env:userprofile\.ssh\id_rsa.pub"
     $CopyKey= "echo $PublicKey >> %programdata%\ssh\administrators_authorized_keys"
     ssh &#x3C;username>@&#x3C;server> $CopyKey
     </code></pre>

     &#x20;\
     **Example**

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">$PublicKey = Get-Content "$env:userprofile\.ssh\id_rsa.pub"
     $CopyKey = "echo $PublicKey >> %programdata%\.ssh\administrators_authorized_keys"
     ssh meshnet@secret.meerkat-andes.nord $CopyKey
     </code></pre>

     &#x20;
3. If prompted, type in yes and press **Enter** to confirm the key fingerprint.

   <div align="left"><figure><img src="/files/Ob0YTx6gGraYXpSV0pF5" alt="SSH key fingerprint confirmation"><figcaption></figcaption></figure></div>

   &#x20;
4. Enter the remote device’s account password and press **Enter**.
   {% endtab %}

{% tab title="From Linux and macOS" %}
To exchange the SSH public key, follow these steps on the device from which you want to establish an SSH connection:

1. Open **Terminal**.
2. Run the following command, where `<username>` is the username of the remote device's account and `<server>` is the remote device’s Nord name or Meshnet IP:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh-copy-id &#x3C;username>@&#x3C;server>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh-copy-id ubuntu@secret.meerkat-altai.nord
   </code></pre>

   &#x20;
3. If prompted, type in `yes` and press **Enter** to confirm the key fingerprint.

   <div align="left"><figure><img src="/files/SySelLk9LCHU6rJDjQ2I" alt="SSH key fingerprint confirmation"><figcaption></figcaption></figure></div>

   &#x20;
4. Enter the remote device’s account password and press **Enter**.

You will see a message that the key has been added.

<div align="left"><figure><img src="/files/nTJrUs3KUWMrCLRKBc3S" alt="SSH key added"><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

Once the SSH key exchange is complete, you can use the same format to establish an SSH connection to the remote device:

{% code overflow="wrap" %}

```bash
ssh <username>@<server>
```

{% endcode %}

However, you will not be prompted to enter a password unless you choose a passphrase while generating the SSH key. And now you can securely access your remote device via SSH over Meshnet.

## (Showcase) SSH connection using Visual Studio Code

A tool that is often used by beginners and novices alike for SSH connection is Visual Studio Code (VS Code). At its core, VS Code is an integrated development environment (IDE). However, with the help of a vast marketplace, it can be used as a powerful tool for remote server management.

### Install VS Code

You can download VS Code for Windows, macOS, and Linux from the [VS Code downloads page](https://code.visualstudio.com/download). Choose the file appropriate for your operating system and install the app.

### Install the SSH extension

Once you have installed VS Code, you need to install an extension that will allow you to establish SSH connections to remote devices.

1. Launch **VS Code**.
2. From the left sidebar, select **Extensions**.
3. In the search field, type in `Remote - SSH` and select the corresponding option.

   <div align="left"><figure><picture><source srcset="/files/yrx2tvIgoQpIA2NSvOAv" media="(prefers-color-scheme: dark)"><img src="/files/GcEm4Z7MEFE6oZ56ALzJ" alt="Selecting the &#x22;Remote - SSH&#x22; extension from the marketplace." width="314"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Install**.

   <figure><picture><source srcset="/files/IavElFUKjudkxT6F3FkL" media="(prefers-color-scheme: dark)"><img src="/files/q7DOlKSLr6Vyq2VppCAT" alt="&#x22;Install&#x22; button highlighted."></picture><figcaption></figcaption></figure>

### Add a new SSH host device

Next, create a new entry in your system's SSH configuration file for the remote device you want to access directly from the VS Code app. This saved information enables VS Code to display all configured host devices, allowing you to quickly connect to any of them.

1. From the left sidebar, select the **Remote explorer** tab.
2. Next to **SSH**, click **New remote**.

   <div align="left"><figure><picture><source srcset="/files/DlnRq5aR0wljYxR9rdb4" media="(prefers-color-scheme: dark)"><img src="/files/WsOXn6TQ14bVMrZn7W4n" alt="Arrow pointing to the &#x22;New remote&#x22; button next to SSH." width="350"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. In the text field, type in the command to access the remote device using SSH. \
   &#x20;\
   **Example**

   <figure><picture><source srcset="/files/SJ4EnJ3LoigQWppUA4xx" media="(prefers-color-scheme: dark)"><img src="/files/n1DdHLSs2BslXlKGvkhU" alt="SSH command entered in the provided text field."></picture><figcaption></figcaption></figure>

   &#x20;\
   See the [Connect to your remote computer through SSH](#connect-to-your-remote-computer) section above for more details.
4. Select in which SSH configuration file the connection should be saved.

VS Code should prompt a notification that the host has been added.

### Establish the SSH connection

Finally, you can connect to the added host device using the Remote - SSH extension.

1. In the **Remote explorer** tab, under **SSH**, locate your newly added connection.
2. Click **Connect in current window**.

   <div align="left"><figure><picture><source srcset="/files/YrmhPqp1DvskmB9q68qc" media="(prefers-color-scheme: dark)"><img src="/files/Z0tsFUoqmLuDM3uvULjT" alt="Arrow pointing to the &#x22;Connect in current window&#x22; button." width="373"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select the operating system of the remote device and, if prompted, click **Continue** to confirm the device fingerprint.
4. Enter the password of the remote user account and press **Enter**.

The first connection may take some time, while the relevant packages are installed. After that, you can control the remote device's CLI and navigate its directories using VS Code.

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

If the remote device is not visible under the **SSH** section, click the **Refresh** button next to **Remotes (tunnels/SSH)**.
{% endhint %}


# How to access your IP camera over Meshnet

Learn how to access your home IP camera remotely using Meshnet.

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

Security cameras are becoming a popular purchase for every household. They allow you to see what is happening in your home 24/7. While having cameras is a good security practice, the method of accessing them can raise privacy concerns.

Security cameras tend to come with proprietary software that allows you to access them remotely. However, for the application to function, the cameras send data to a cloud server and only then to your device. This flow of information leaves more space for interception by a malicious entity. In addition, the video feed leaving your home network and going through a third-party server can be considered unsafe.

Setting up [port forwarding](https://nordvpn.com/blog/port-forwarding/) is another method to have direct remote access to the cameras, without using additional software. Nevertheless, opening ports can leave your network vulnerable to hackers.

By using [Meshnet](https://nordvpn.com/meshnet/), you can easily access your home IP camera without opening additional ports in your firewall. The connections are made via encrypted tunnels using [NordLynx technology](https://nordvpn.com/blog/nordlynx-protocol-wireguard/). This results in fast and secure access from anywhere in the world.

In this article, you will find instructions on how to access your home IP cameras over Meshnet.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Before starting the setup process, ensure that:

* You have a [host device for traffic routing](/features/routing-traffic-in-meshnet#feature-availability).
* You have an IP camera that supports connections via its IP address.
* You know the IP camera’s local IP address and port number (if required).
* The host device and the IP camera are in the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN).

## Set up a host device <a href="#set-up-a-host-device" id="set-up-a-host-device"></a>

First, set up Meshnet on your traffic routing-capable device, which will act as an intermediary between your client devices and the network camera you want to access.

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

Instructions for downloading and installing NordVPN can be found in the following articles:

* [Instructions for Windows](https://support.nordvpn.com/1888230932)
* [Instructions for macOS](https://support.nordvpn.com/1135836372)
* [Instructions for Linux](https://support.nordvpn.com/1182453582)

### Manage permissions <a href="#manage-permissions" id="manage-permissions"></a>

After installing the app, you must enable the following Meshnet permissions for all peer devices that you want to have access to the IP camera:

* [Traffic routing](/features/explaining-permissions/traffic-routing-permissions)
* [Local network](/features/explaining-permissions/local-network-permissions)

The permissions can be managed in the Meshnet menu of the NordVPN app.

## Connect to an IP camera <a href="#connect-to-an-ip-camera" id="connect-to-an-ip-camera"></a>

With Meshnet fully set up, you can start using the traffic routing feature to reach your IP camera from outside of the home network.

### Route traffic <a href="#route-traffic" id="route-traffic"></a>

First, you need to start routing traffic from a client device through the host device you have set up. To do this, follow the steps provided in the [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also) article.

**Example**

<div align="left"><figure><picture><source srcset="/files/FMc9MBwayIcKsf5xHTgZ" media="(prefers-color-scheme: dark)"><img src="/files/QVJOBJFuFTEM6IO3KFw7" alt="Selecting a traffic routing host device under the &#x22;Devices in Meshnet&#x22; category." width="348"></picture><figcaption></figcaption></figure></div>

### Access the IP camera <a href="#access-the-ip-camera" id="access-the-ip-camera"></a>

With the traffic routing connection established, the client device can freely interact with all devices located in the host device’s LAN, including the IP cameras. This allows you to access your camera using an internet browser.

1. Open your internet browser.
2. In the URL bar, enter the following:\
   &#x20;\
   `<IP>:<Port>/`\
   &#x20;\
   Where:\
   • `<IP>` is the local IP address of the network camera.\
   • `<Port>` is the port used by the network camera (if required).\
   &#x20;\
   **Example:**

   ![](/files/dYZ3xoLK57hbeNDmoN9Z)

The interface of your IP camera should load, giving you full access to the camera.&#x20;

{% hint style="warning" %}
**Caution**

Ensure you set up strong user authentication for your camera's interface. Without it, other devices in your Meshnet that have traffic routing and local network permissions enabled can also interact with your IP camera, potentially compromising its security.
{% endhint %}


# How to use Home Assistant remotely over Meshnet

Learn how to configure Home Assistant using Docker on Windows, macOS, and Linux and access it remotely using Meshnet.

## Introduction

[Home Assistant](https://www.home-assistant.io/) is the leading free and open-source smart home control system. It enables seamless addition, control, and automation of smart devices without depending on third-party cloud solutions. Since Home Assistant functions locally, it is not reachable from outside without [port forwarding or a VPN](https://nordvpn.com/blog/port-forwarding/) to your home network.

Enter [Meshnet](https://nordvpn.com/meshnet/), a solution that establishes encrypted tunnels between your devices, allowing direct and secure remote access from any device to your Home Assistant instance. With this setup, you can monitor and control your [Internet of Things](https://nordvpn.com/blog/internet-of-things/) (IoT) devices from anywhere in the world.

Watch the video below for an overview of the setup process or follow along with our step-by-step written instructions to set up your own Home Assistant instance in a [Docker container](https://www.docker.com/resources/what-container/) and remotely control it using Meshnet.

{% embed url="<https://www.youtube.com/watch?v=yiNKVJpWhQk>" %}

## Install Docker

To follow this guide, you must have Docker installed on your device. You can find instructions for downloading and installing Docker on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux (app with a GUI)](https://docs.docker.com/desktop/install/linux-install/)
* [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)

## Create a Home Assistant Docker container

With Docker installed, you can start creating Docker containers for various services, including Home Assistant.

For this guide, [Docker run](https://docs.docker.com/engine/reference/run/) will be used. If you prefer the [Docker Compose](https://docs.docker.com/compose/) method, you can find instructions on the [Home Assistant website](https://www.home-assistant.io/installation/alternative/#docker-compose).

### Creating a volume

First, you need to create a dedicated [Docker volume](https://docs.docker.com/storage/volumes/) where the container's files will be stored. Without a persistent volume, all of the instance's files are lost once the container is stopped. You can create the volume directly from the Docker Desktop app or via the command line.

{% tabs %}
{% tab title="Using Docker Desktop" %}

1. Open the **Docker Desktop** app.
2. From the menu on the left, select **Volumes**.

   <div align="left"><figure><picture><source srcset="/files/fWzSuZCaqL1ZQG3iksvo" media="(prefers-color-scheme: dark)"><img src="/files/VEvyPazh6P8mAA24VRmx" alt="Docker Desktop application"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. If you don't have any volumes created, select the **Create a volume** button. Otherwise, click **Create** in the upper-right corner.
4. In the **Volume name** field, type in `homeassistant_config` and click **Create**.

   <div align="left"><figure><picture><source srcset="/files/X9Lcv4jU3gYtToPZ5co2" media="(prefers-color-scheme: dark)"><img src="/files/dc7q9wvaYpGVoNteMVuI" alt="Name of the new Docker volume." width="375"></picture><figcaption></figcaption></figure></div>

The newly created volume will now be visible in the **Volumes** section.
{% endtab %}

{% tab title="Using the command line" %}

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).
2. Run the following command to create a volume called `homeassistant_config`:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker volume create homeassistant_config
   </code></pre>

If the creation is successful, you will see the name of your volume in the command line window.
{% endtab %}
{% endtabs %}

### Creating a container

With the volume ready for Home Assistant, you can proceed to create the Docker container itself.

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).
2. Depending on your operating system, execute one of the following `docker run` commands, replacing `<TimeZone>` with your [time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones):\
   &#x20;
   * If you're running Windows or macOS, use the command below:

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker run -d --name homeassistant --privileged --restart=unless-stopped -p 8123:8123 -e TZ=&#x3C;TimeZone> -v homeassistant_config:/config ghcr.io/home-assistant/home-assistant:stable
     </code></pre>

     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/nGo74J3Jyo1r2JNVEJk2" alt="Example docker run command to deploy a Home Assistant container"><figcaption></figcaption></figure></div>

   * If you're using Linux, run this command:

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker run -d --name homeassistant --privileged --restart=unless-stopped -p 8123:8123 -e TZ=&#x3C;TimeZone> -v homeassistant_config:/config --network=host ghcr.io/home-assistant/home-assistant:stable
     </code></pre>

Docker will [pull the Home Assistant image](https://docs.docker.com/engine/reference/commandline/pull/) from Docker Hub and create the container.

If the creation is successful, you will see the full container ID of your Home Assistant container in the command line window.

## Set up Home Assistant

Once the container is running, you can start using Home Assistant. By default, the Home Assistant service listens on port `8123`, unless you've configured it differently.

1. Open your internet browser and visit your Home Assistant page.
   * If you are accessing Home Assistant from the host device directly, you can use the following URL:\
     `http://localhost:8123/`\
     &#x20;&#x20;

     <figure><img src="/files/qKA8sQyVqXO1kgj60fHn" alt="Home Assistant account creation screen"><figcaption></figcaption></figure>

     &#x20;
   * Otherwise, you must use the device’s local IP address instead of the `localhost` part.

2. Create your Home Assistant account and finish the setup process.

Now, when you visit your Home Assistant page again, you will be prompted to log in to your account. Upon logging in, you will be taken to your Home Assistant dashboard, where you can configure your devices and services.

## Access Home Assistant remotely

Your Home Assistant is now fully set up. With Meshnet enabled on the host device, the Home Assistant dashboard can be [accessed remotely](https://nordvpn.com/meshnet/remote-access/) by other devices in your Meshnet.

{% hint style="warning" %}
**Caution**

Ensure you set up strong user authentication. Without it, other devices in your Meshnet that have [remote access permissions](/features/explaining-permissions/remote-access-permissions) enabled can interact with your Home Assistant instance, potentially compromising its security.
{% endhint %}

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

If you're hosting Home Assistant on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using an internet browser

The easiest way to manage your Home Assistant remotely is via an internet browser.

1. Copy the Nord name of the device running Home Assistant from the NordVPN app.
2. Open your internet browser.
3. Paste the copied Nord name followed by `:8123/` to the URL field and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-himalayas.nord:8123/`

   &#x20;
4. Log into your Home Assistant account.

   <figure><picture><source srcset="/files/cnRIr3oqO94pTWUGn6Fr" media="(prefers-color-scheme: dark)"><img src="/files/49m60sZDJreGMfO3AVNm" alt=""></picture><figcaption></figcaption></figure>

The Home Assistant dashboard will load, and you will have full control over it from your internet browser.

<div align="left"><figure><picture><source srcset="/files/pgv3UwVybuQEJzTn1863" media="(prefers-color-scheme: dark)"><img src="/files/kPqELyTWkQXXuXMqdu5G" alt="Home Assistant dashboard"></picture><figcaption></figcaption></figure></div>

### Method 2: Using the Home Assistant companion app

You can also access the Home Assistant dashboard remotely through the companion app. However, it is currently available only on Android, macOS, and iOS.

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

1. Download and install the [Home Assistant app](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) from the Google Play Store.
2. Copy the Nord name of the device running Home Assistant directly from the NordVPN app.
3. Open **Home Assistant** and tap **Continue**.
4. Select **Enter address manually**.
5. In the **Home assistant URL** field, type `http://` and paste the Nord name of the device running Home Assistant, followed by `:8123`. Tap **Connect**.

   <div align="left"><figure><picture><source srcset="/files/AuTI4poRFIlwgKOLvxfv" media="(prefers-color-scheme: dark)"><img src="/files/g9T8pm54SHsWa5RLLDpk" alt="Nord name entered in the Home Assistant application." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Log into your Home Assistant account.
7. Choose the name of your device, select the notification preferences, and tap **Continue**.

Once the setup process is complete, you will have full access to your Home Assistant dashboard using the mobile companion app.
{% endtab %}

{% tab title="macOS" %}

1. Download and install the [Home Assistant app](https://apps.apple.com/us/app/home-assistant/id1099568401) from the macOS App Store.
2. Copy the Nord name of the device running Home Assistant directly from the NordVPN app.
3. Open **Home Assistant** and click **Continue**.
4. Click **Enter address manually**.
5. Under **Enter URL**, type `http://` and paste the Nord name of the device running Home Assistant followed by `:8123`. Click **Connect**.

   <div align="left"><figure><img src="/files/nGofOgxtJURtP30cpva7" alt="Nord name entered in the Home Assistant application"><figcaption></figcaption></figure></div>

   &#x20;
6. Log into your Home Assistant account and configure the permission and notification preferences.

Once the setup process is complete, you will have full access to your Home Assistant dashboard using the companion application.
{% endtab %}

{% tab title="iOS" %}

1. Download and install the [Home Assistant app](https://apps.apple.com/us/app/home-assistant/id1099568401?itsct=apps_box_badge\&itscg=30200) from the iOS App Store.
2. Launch **Home Assistant** and select the app's permissions that you are comfortable with.
3. In the lower-right corner, tap the gear bubble and select **Add server**.
4. If you receive a dialog asking for permission to find local devices, choose **OK**.

   <div align="left"><figure><picture><source srcset="/files/fV5ovxhEI1rqmETEVNIf" media="(prefers-color-scheme: dark)"><img src="/files/ZnRXELVWYcug0nvc770S" alt="iOS system message regarding local connections" width="272"></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Tap **Enter address manually**.
6. Type `http://` and paste the Nord name of the device running Home Assistant, followed by `:8123`. Then, tap **Connect**.

   <div align="left"><figure><img src="/files/3XrkA0nsihjalLBSF091" alt="Nord name entered in the Home Assistant application." width="375"><figcaption></figcaption></figure></div>

   &#x20;
7. Log into your Home Assistant account.

Once the setup process is complete, you will have full access to your Home Assistant dashboard using the mobile companion app.
{% endtab %}
{% endtabs %}

You have successfully configured Home Assistant and can now access its dashboard remotely with the help of Meshnet.


# How to make secure macOS Time Machine backups from anywhere

Discover how to create remote Time Machine backups for your Mac with Meshnet.

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

Making regular backups of the information on your Mac helps protect your files against accidental deletion or other types of data loss events, such as hardware failure, malware infections, or power surges. Apple’s Time Machine tool that comes pre-installed on Mac devices provides a convenient way to recover your data after these types of incidents. It periodically backs up all the information on your Mac, keeping multiple versions of your files.

To store backups, Time Machine requires [a separate storage medium](https://support.apple.com/en-gb/HT202784). The advantage of using [Meshnet ](https://nordvpn.com/meshnet/)in the context of backup creation is that your storage device can be accessed from anywhere. Meshnet facilitates remote file transfer and ensures secure connectivity between devices, irrespective of where they are located.

This guide describes how you can use another Mac as a Time Machine backup destination and access it over Meshnet for regular backups.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that:

* Your backup disk has at least twice the storage capacity of the disk you're backing up with Time Machine. This will provide you with the flexibility to continue backing up your Mac regularly.
* The other Mac is turned on and has [Meshnet enabled](/getting-started/how-to-start-using-meshnet/using-meshnet-on-macos) whenever you want to back up your data.

## Configure a shared folder <a href="#configure-a-shared-folder" id="configure-a-shared-folder"></a>

To use another Mac on your Meshnet as a backup destination, you need to configure a network share on the other Mac.

{% tabs %}
{% tab title="macOS Sonoma 14" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings** > **General**, and then click **Sharing**.
2. Turn on **File sharing**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/M2bSiXPs2QAsfvlK1c24" media="(prefers-color-scheme: dark)"><img src="/files/5MsmaryXtjknIXiZg1rF" alt="&#x22;File sharing&#x22; toggle enabled." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Click the Info<img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line">button next to **File sharing**.
4. Click the Add button(+) under **Shared folders**, and then choose or create a folder to use for Time Machine backups.
5. Control-click the folder you've added and choose **Advanced options**.&#x20;

   <div align="left"><figure><picture><source srcset="/files/GgKGFgRiLALLIquaFD3D" media="(prefers-color-scheme: dark)"><img src="/files/LPP11OP7qWLYZJzHLB6S" alt="&#x22;Advanced options&#x22; are selected in the shortcut menu" width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Share as a Time Machine backup destination**, and then click **OK**.
   {% endtab %}

{% tab title="macOS Ventura 13" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System settings**.

2. Click **General** in the sidebar, and then click **Sharing** on the right.

3. Turn on **File sharing**. <br>

   <div align="left"><figure><picture><source srcset="/files/hgJgC7dffzFhY4dkV3LO" media="(prefers-color-scheme: dark)"><img src="/files/fkJeNJWXgWxxjiBeZFPv" alt="&#x22;File sharing&#x22; toggle turned on." width="563"></picture><figcaption></figcaption></figure></div>

4. Click the Info<img src="/files/Da3q5ncdAAtV0ag7zZpP" alt="" data-size="line">button next to **File sharing**.

5. Click the Add button(+) under **Shared folders**, and then choose or create a folder to use for Time Machine backups.

6. Control-click the folder you've added and choose **Advanced options**. <br>

   <div align="left"><figure><picture><source srcset="/files/SU8PbNjdv4dOCvqZ3Jd9" media="(prefers-color-scheme: dark)"><img src="/files/7iqhvVv3I213WmiN6Jfh" alt="&#x22;Advanced options&#x22; are selected in the shortcut menu" width="563"></picture><figcaption></figcaption></figure></div>

7. Select **Share as a Time Machine backup destination**, and then click **OK**.
   {% endtab %}

{% tab title="macOS Monterey 12 or older" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System preferences**.

2. Click **Sharing**, and then select the **File sharing** checkbox.

3. Click the Add (+) button under **Shared Folders** on the right, and then choose or create a folder to use for Time Machine backups.

4. Control-click the folder you've added and choose **Advanced options**.<br>

   <div align="left"><figure><img src="/files/sGlSOkgM0DJ2aWeM4Ldu" alt="The Advanced options menu item is selected"><figcaption></figcaption></figure></div>

5. Select **Share as a Time Machine backup destination**, and then click **OK**.
   {% endtab %}
   {% endtabs %}

## Connect to your remote storage location

Once you’ve set up your remote folder, you can access it as a network drive using Meshnet.

1. Copy the device’s Nord name or Meshnet IP address from the NordVPN app.
2. Control-click **Finder** <img src="/files/8CGDSomU3nlKJ0EEI2jB" alt="" data-size="line"> and choose **Connect to server**.

   <div align="left"><figure><img src="/files/uX64ADtL1SdFRInA6LhQ" alt="The Connect to server option is selected in Finder&#x27;s shortcut menu." width="230"><figcaption></figcaption></figure></div>

   &#x20;
3. In the server address box, enter `smb://`, paste the Nord name or IP address of the Mac you want to access, and then click **Connect**.

   <div align="left"><figure><img src="/files/4FEMgbdK7eRAz1YPl5tG" alt="The server address is entered"><figcaption></figcaption></figure></div>

   &#x20;
4. Click **Connect** again to confirm the connection.
5. Enter your username and password for the other Mac.
6. Select the shared folder you configured earlier.

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

To make it easier to connect to the remote drive in the future, select **Remember this password in my keychain** to save your username and password for this connection.
{% endhint %}

## Set up Time Machine and make a backup <a href="#set-up-time-machine-and-make-a-backup" id="set-up-time-machine-and-make-a-backup"></a>

After you have connected to your remote storage location, you can set up Time Machine to use it as your backup destination.

{% tabs %}
{% tab title="macOS Sonoma 14" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System Settings** > **General**, and then click **Time Machine**.

2. Click **Add backup disk** and select the folder you configured earlier from the list of available disks.

3. Click **Set up disk**.

4. Select **Registered user**, enter your credentials for the remote Mac, and click **Connect**.

5. If you want Time Machine to encrypt your backup disk, turn on the **Encrypt backup** toggle and create a password for the backup bundle.

   <div align="left"><figure><picture><source srcset="/files/6zsBL3HSxlZzf3JYMELX" media="(prefers-color-scheme: dark)"><img src="/files/r0vikdPfdD2j6D0vo45f" alt="&#x22;Encrypt backup&#x22; toggle enabled." width="563"></picture><figcaption></figcaption></figure></div>

6. Control-click your mounted disk and select **Back up now** to start your backup immediately.

   <div align="left"><figure><picture><source srcset="/files/vDNh7IKXQIKuSVCH8HW2" media="(prefers-color-scheme: dark)"><img src="/files/dOkzQ28PMtg5zmOdWutv" alt="Backup is preparing." width="563"></picture><figcaption></figcaption></figure></div>

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

You can click on the **Options** button to customize the backup frequency.
{% endhint %}
{% endtab %}

{% tab title="macOS Ventura 13" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System Settings** > **General**, and then click **Time Machine**.
2. Click **Add backup disk** and select the folder you configured earlier from the list of available disks.
3. Click **Set up disk**.
4. Select **Registered user**, enter your credentials for the remote Mac, and click **Connect**.
5. If you want Time Machine to encrypt your backup disk, turn on the **Encrypt backup** toggle and create a password for the backup bundle.

   <div align="left"><figure><img src="/files/gd5ZntIZgTCu9J3qvkOi" alt="The encrypt backup toggle is selected"><figcaption></figcaption></figure></div>

   &#x20;
6. Control-click your mounted disk and select **Back up now** to start your backup immediately.

   <div align="left"><figure><img src="/files/s7yxK5tEridyLUZCE0NN" alt="The initial backup is in progress"><figcaption></figcaption></figure></div>

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

You can click on the **Options** button to customize the backup frequency.
{% endhint %}
{% endtab %}

{% tab title="macOS Monterey 12 or older" %}

1. Choose the Apple menu <img src="/files/F6JFWhCzgCN9hpk1f6wQ" alt="" data-size="line"> > **System preferences**, and then click **Time Machine**.
2. Click **Select backup disk**.
3. Select the folder you configured earlier from the list of available disks and click **Use disk**.
4. If you want Time Machine to encrypt your backup disk, select the **Encrypt backups** checkbox and create a password for the backup bundle.
5. Select **Registered user**, enter your credentials for the remote Mac, and click **Connect**.
6. Control-click your mounted disk and select **Back up now** to start your backup immediately.

   <div align="left"><figure><img src="/files/JGA3Ccm8dXooTwGoQzeH" alt="Time Machine is set up to use the Meshnet device as a backup destination"><figcaption></figcaption></figure></div>

{% endtab %}
{% endtabs %}

<br>


# How to use Ansible over Meshnet

Learn how to configure Ansible for remote connections over Meshnet on macOS and Linux.

## Introduction

[Ansible](https://www.redhat.com/en/technologies/management/ansible/what-is-ansible) is free, open-source software available on macOS and Linux that is used for cross-platform automation. It allows you to control numerous host devices at the same time. You can automate virtual machine creation, operating system installation, software configuration, and much more.

While you can use Ansible with remote devices, you must ensure that the host device’s network allows outside connections by opening ports in the firewall. This configuration may leave the host device vulnerable to malicious intrusion.

By using [Meshnet](https://nordvpn.com/meshnet/) in your Ansible configuration, you can connect devices to virtual private networks. All commands and [playbooks ](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_intro.html)are executed via an encrypted tunnel using the [NordLynx technology](https://nordvpn.com/blog/nordlynx-protocol-wireguard/). This results in a fast and secure data exchange between the devices.

In this article, you will find instructions on how to prepare an Ansible control node on macOS and Linux for remote connections over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

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

For the purpose of this article, Ansible host devices will be Linux machines.
{% endhint %}

Ansible uses a [secure shell](https://en.wikipedia.org/wiki/Secure_Shell) (SSH) connection between devices. While username and password authentication can be used, SSH keys are preferred. SSH key-based authentication is more secure due to its asymmetric encryption. Additionally, no user input is required for authentication, which makes it easier to set up and execute automated workflows.

### Enable host SSH access <a href="#enable-host-ssh-access" id="enable-host-ssh-access"></a>

Ensure that your Ansible host devices accept SSH connections by following instructions from the [Enable SSH access](/how-to/remote-access/access-remote-systems-over-ssh#enable-ssh-access) section of the "How to access remote systems over Meshnet using SSH" article.

### Prepare SSH key authentication <a href="#prepare-ssh-key-authentication" id="prepare-ssh-key-authentication"></a>

For this configuration, you need to generate an SSH key on your control node device and copy it to your Ansible host devices. For instructions on setting up SSH keys, see the [Configuring SSH keys](/how-to/remote-access/access-remote-systems-over-ssh#configuring-ssh-keys) section of the "How to access remote systems over Meshnet using SSH" article.

## Install Ansible <a href="#install-ansible" id="install-ansible"></a>

With the prerequisites taken care of, you can proceed with installing the Ansible software.

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

1. Open **Terminal**.
2. Execute this command to update your repositories and install Ansible:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install ansible -y
   </code></pre>

Ansible and its required packages are now installed on your system and ready for use.
{% endtab %}

{% tab title="macOS" %}
To install Ansible on macOS, you need to use the [Homebrew](https://brew.sh/) package manager.

1. Open **Terminal**.
2. Enter the following command to install Homebrew:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   </code></pre>

   &#x20;

   For additional information about the installation process, refer to [Homebrew documentation](https://docs.brew.sh/Installation).
3. Follow the on-screen instructions to finish the installation.
4. Install Ansible by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew install ansible
   </code></pre>

Ansible and its required packages are now installed on your system and ready for use.
{% endtab %}
{% endtabs %}

## Add Meshnet host devices <a href="#add-meshnet-host-devices" id="add-meshnet-host-devices"></a>

After installing, you need to point Ansible to the host devices in Ansible’s `hosts` file.

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

1. Open the `hosts` file in the Nano text editor using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /etc/ansible/hosts
   </code></pre>

   &#x20;

   If the `hosts` file or the `ansible` directory are not present on your system, you can create them using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo mkdir /etc/ansible &#x26;&#x26; sudo nano /etc/ansible/hosts
   </code></pre>

   &#x20;&#x20;
2. Append a line for your Meshnet device as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">&#x3C;alias> ansible_host=&#x3C;NordName> ansible_user=&#x3C;username>
   </code></pre>

   &#x20;\
   Where:

   * `<alias>` is a custom alias for the host device.
   * `<NordName>` is the host device's Nord name or Meshnet IP address.
   * `<username>` is the username of the host device's account used for SSH.\
     &#x20;\
     This line creates an alias for a specified IP address or hostname. The alias can then be used in Ansible commands or playbooks for controlling the specified device.\
     &#x20;\
     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">meshUbuntu ansible_host=secret.meerkat-altai.nord ansible_user=ubuntu
     </code></pre>

     &#x20;&#x20;
3. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.

For each additional host device, you need to append a new line in the `hosts` file.

You can also assign host devices into groups. This allows you to control all devices in a group with a single command by addressing them via the group name. The group name must be written inside square brackets before any of the host devices in that group.

For example, to create a group called `meshDevices`, you need to append a `[meshDevices]` line above all device lines.

<figure><img src="/files/Ksk7mePgxvZomHk0vwzx" alt="Ansible hosts file"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="macOS (Intel)" %}

1. Create and open the `hosts` file using the Nano text editor by running this command in the terminal:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir /usr/local/etc/ansible &#x26;&#x26; nano /usr/local/etc/ansible/hosts
   </code></pre>

   &#x20;
2. Append a line for your Meshnet device as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">&#x3C;alias> ansible_host=&#x3C;NordName> ansible_user=&#x3C;username>
   </code></pre>

   &#x20;

   Where:

   * `<alias>` is a custom name for the host device.
   * `<NordName>` is the host device's Nord name or Meshnet IP address.
   * `<username>` is the username of the host device's account used for SSH.\
     &#x20;\
     This line creates an alias for a specified IP address or hostname. The alias can then be used in Ansible commands or playbooks for controlling the specified device.\
     &#x20;

     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">meshUbuntu ansible_host=secret.meerkat-altai.nord ansible_user=ubuntu
     </code></pre>

     &#x20;&#x20;
3. Press **Control** + **X**, **Y**, and **Return** to save changes and exit.
4. Create an Ansible configuration file and point it to the `hosts` file using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">echo "[defaults]\ninventory = /usr/local/etc/ansible/hosts" >> /usr/local/etc/ansible/ansible.cfg
   </code></pre>

   &#x20;&#x20;
5. Check if the `ansible.cfg` file has been created with the correct `hosts` file path by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cat /usr/local/etc/ansible/ansible.cfg
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/2BhQfUqHu999gMF6OFMf" alt="Ansible configuration file"><figcaption></figcaption></figure></div>

For each additional host device, you need to append a new line in the `hosts` file.

You can also assign host devices into groups. This allows you to control all devices in a group with a single command by addressing them via the group name. The group name must be written inside square brackets before any of the host devices in that group.

For example, to create a group called `meshDevices`, you need to append a `[meshDevices]` line above all device lines.

<div align="left"><figure><img src="/files/rFpJHoQfqRjjjo9cWHZc" alt="Ansible hosts file"><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="macOS (Apple silicon)" %}

1. Create and open the `hosts` file using Nano by running this command in the terminal:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir /opt/homebrew/etc/ansible &#x26;&#x26; nano /opt/homebrew/etc/ansible/hosts
   </code></pre>

   &#x20;
2. Append a line for your Meshnet device as shown:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">&#x3C;alias> ansible_host=&#x3C;NordName> ansible_user=&#x3C;username>
   </code></pre>

   &#x20;

   Where:

   * `<alias>` is a custom name for the host device.
   * `<NordName>` is the host device's Nord name or Meshnet IP address.
   * `<username>` is the username of the host device's account used for SSH.\
     &#x20;\
     This line creates an alias for a specified IP address or hostname. The alias can then be used in Ansible commands or playbooks for controlling the specified device.\
     &#x20;

     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">meshUbuntu ansible_host=secret.meerkat-altai.nord ansible_user=ubuntu
     </code></pre>

     &#x20;&#x20;
3. Press **Control** + **X**, **Y**, and **Return** to save changes and exit.
4. Create an Ansible configuration file and point it to the `hosts` file via this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">echo "[defaults]\ninventory = /opt/homebrew/etc/ansible/hosts" >> /opt/homebrew/etc/ansible/ansible.cfg
   </code></pre>

   &#x20;
5. Check if the `ansible.cfg` file has been created with the correct `hosts` file path by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cat /opt/homebrew/etc/ansible/ansible.cfg
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/FMEd3QcyfoBRHSpLUwkn" alt="Ansible configuration file"><figcaption></figcaption></figure></div>

For each additional host device, you need to append a new line in the `hosts` file.

You can also assign host devices into groups. This allows you to control all devices in a group with a single command by addressing them via the group name. The group name must be written inside square brackets before any of the host devices in that group.

For example, to create a group called `meshDevices`, you need to append a `[meshDevices]` line above all device lines.

<div align="left"><figure><img src="/files/7toHaK0xslopRJTTLih4" alt="Ansible hosts file"><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

## Enable passwordless sudo access <a href="#enable-passwordless-sudo-access" id="enable-passwordless-sudo-access"></a>

To make Ansible more efficient, you want to minimize the number of times you need user input. By default, you are prompted to enter the root password to perform many tasks, for example, installing software or performing updates.

To avoid this, you can disable the sudo password prompt for a specific user on your Ansible host devices.

1. Open **Terminal**.

2. Run the following command to safely edit the `sudoers` file:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo visudo
   </code></pre>

   &#x20;

3. At the end of the file, append a line, replacing `<username>` with the account’s username:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">&#x3C;username> ALL=(ALL) NOPASSWD:ALL
   </code></pre>

   &#x20;\
   This command will disable the root password requirement for the specified user.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/s1s4K3ipgYmO3wugjiuG" alt="sudoers file being edited"><figcaption></figcaption></figure></div>

4. Press **Ctrl** + **X**, **Y**, and **Return** to save changes and exit.

## Test connection to Meshnet hosts <a href="#test-connection-to-meshnet-hosts" id="test-connection-to-meshnet-hosts"></a>

Check if a connection between the control node and host devices can be established by using the following command:

{% code overflow="wrap" %}

```bash
ansible -m ping all
```

{% endcode %}

The response you receive should be `SUCCESS`.

<div align="left"><figure><img src="/files/lBrwxT4iXpOJKnNSouyt" alt="Ansible ping success"><figcaption></figcaption></figure></div>

## Execute an Ansible command <a href="#execute-an-ansible-command" id="execute-an-ansible-command"></a>

With the Ansible `hosts` file configured for your Meshnet devices and the connection verified, you can use standard Ansible commands or playbooks. For detailed instructions, refer to the [Ansible documentation](https://docs.ansible.com/ansible/latest/index.html).

Consider the following example:

{% code overflow="wrap" %}

```bash
ansible meshUbuntu -bm apt -a "name=cowsay state=latest"
```

{% endcode %}

In this example, the [cowsay](https://github.com/cowsay-org/cowsay) application is installed on a remote Ubuntu server, which is specified under the `meshUbuntu` alias in the `hosts` file.

Once the process finishes, `cowsay` commands can be used on the remote server.

<div align="left"><figure><img src="/files/aC5OvNVctz2DHUPj7XJu" alt="Cowsay application output"><figcaption></figcaption></figure></div>

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

If you choose not to configure SSH keys, you will need to use the `--ask-pass` or the `-k` option with your Ansible commands and enter the SSH password.
{% endhint %}


# How to access files in your NAS from anywhere without compromising its security

Discover how to access your NAS data remotely in a secure way over Meshnet.

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

[Network-Attached Storage (NAS)](https://nordvpn.com/cybersecurity/glossary/nas/) devices provide a convenient solution for storing and sharing vast amounts of data, including media files and computer backups. When connected to a local network, a NAS device is assigned a private IP address, enabling robust and flexible data sharing within the network. However, remote access to NAS data can present security challenges.

As remote work, online learning, and the demand for reliable entertainment options continue to grow, it is crucial to find a secure and user-friendly way to share data between geographically dispersed networks. For example, educators need a reliable method for storing and sharing large amounts of data with their students in virtual classrooms. Common NAS remote access options have their drawbacks, such as expensive cloud storage solutions or techniques that rely on [port forwarding](https://nordvpn.com/blog/port-forwarding/), exposing the data to potential attackers.

[Meshnet](https://nordvpn.com/meshnet/) revolutionizes NAS remote access by combining strong encryption with an easy setup to provide a secure experience when accessing data from distant locations.

By following the step-by-step guide in this article, you can set up remote access to your NAS device from anywhere.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

To prepare for the setup process, ensure you have the following:

* A host device you can use for [traffic routing](/features/routing-traffic-in-meshnet#feature-availability).
* The local IP address and [port number](https://nordvpn.com/blog/what-is-my-port/) (if required) of your NAS device. To find this information, refer to the user manual of your NAS device.
* The host device and the NAS device are connected to the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN).

## Set up a host device <a href="#set-up-a-host-device" id="set-up-a-host-device"></a>

The first step is to set up Meshnet on a desktop device connected to your local network. This device will serve as an intermediary between your client devices and the NAS device you want to access remotely.

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

Mobile devices cannot be used as hosts.
{% endhint %}

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

1. On the device you've chosen to act as a host, [install NordVPN](https://nordvpn.com/download/).
2. Log in to your account and [turn on Meshnet](/getting-started/how-to-start-using-meshnet).

### Manage Meshnet permissions <a href="#manage-meshnet-permissions" id="manage-meshnet-permissions"></a>

Once you've installed the app, make sure the following Meshnet permissions are enabled for all the peer devices that you want to have access to the NAS device:

* [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions)
* [Local network permissions](/features/explaining-permissions/local-network-permissions)

The permissions can be managed in the Meshnet menu of the NordVPN app.

## Route traffic through the host device <a href="#route-traffic-through-the-host-device" id="route-traffic-through-the-host-device"></a>

With the host device set up, you can begin routing traffic through it to access your NAS from outside of your home network. To do this, follow the steps provided in the [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also) article.

## Access your NAS device <a href="#access-your-nas-device" id="access-your-nas-device"></a>

Now that you’ve established the traffic routing connection, the client device can freely interact with all devices located in the host device’s LAN. This allows you to access your NAS device using an internet browser.

1. Open your internet browser.
2. In the address bar, enter the following, replacing `<IP>` with the local IP address of your NAS and `<Port>` with the port used by the NAS (if applicable).\
   &#x20;\
   `<IP>:<Port>`

For example, if your NAS device's local IP address is `192.168.1.100` and it uses port `5000`, enter:

`http://192.168.1.100:5000`

After entering the appropriate address, your NAS device's web interface should load, granting you full access to the device.


# How to set up a phone as a security camera with remote access

Discover how you can reuse a mobile phone as an IP camera with remote access over Meshnet.

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

Home security cameras are increasingly common for added peace of mind. Instead of investing in a costly system, many opt for budget-friendly alternatives, such as transforming older phones into security cameras. This approach allows you to test the waters without a high upfront cost. Normally, to access the camera remotely, you'd have to set up port forwarding on your router.

Fortunately, you can completely bypass port forwarding by using [Meshnet](https://nordvpn.com/meshnet/). With this feature, you can create a virtual device network with remote and local devices. The connected devices can then interact with one another as if they were on the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN). This way, you to gain access to your phone security camera without compromising the security of your home network.

This guide contains a video tutorial, as well as written instructions, on how you can create a remotely accessible security camera by pairing Android and iOS phones with Meshnet.

{% embed url="<https://www.youtube.com/watch?v=VyazrtWUWcw>" %}

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that:

* Your phone is running Android 9 or later.
* Your phone has a stable internet connection.
* Your phone has a constant power source.
* You have [installed NordVPN on Android](https://support.nordvpn.com/1047409182).
* You have [enabled Meshnet on Android](/getting-started/how-to-start-using-meshnet/using-meshnet-on-android#enable-meshnet-on-android).

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

The article demonstrates the setup procedure using Android 13 as an example.
{% endhint %}

## Install IP Webcam software <a href="#install-ip-webcam-software" id="install-ip-webcam-software"></a>

With all of the prerequisites taken care of, you can install IP Webcam — the application that will turn your phone into a security camera. You can download IP Webcam for free from the [Google Play Store](https://play.google.com/store/apps/details?id=com.pas.webcam\&hl=en\&gl=US).

<div align="left"><figure><picture><source srcset="/files/B77mjqb1hqC3oTv1a06g" media="(prefers-color-scheme: dark)"><img src="/files/FGyqFT4rBYUztCdItLS1" alt="Tapping the Install button." width="375"></picture><figcaption></figcaption></figure></div>

## Set up login credentials <a href="#set-up-login-credentials" id="set-up-login-credentials"></a>

By default, the IP Webcam interface does not require any authentication. To minimize the [risk of unauthorized access](https://nordvpn.com/blog/unauthorized-access/), it is best to secure your camera with strong login credentials. To enable login authentication:

1. Open **IP Webcam**.
2. Under **Connection settings**, tap the **Local broadcasting** option.

   <div align="left"><figure><img src="/files/Lpg9TeWegF3lLPUgtQKM" alt="Tapping the Local broadcasting option." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Select **Login/password**.
4. Enter your desired username and password combination and click **OK**.<br>

   <div align="left"><figure><img src="/files/ou3w3bG24URJxHIXMpq8" alt="" width="375"><figcaption></figcaption></figure></div>

## Select a recording location <a href="#select-a-recording-location" id="select-a-recording-location"></a>

It is recommended to select a specific directory for your recordings. This way, all of the footage is organized and easily accessible. To choose a folder:

1. Open **IP Webcam**.
2. Under **IP Webcam settings**, select **Video preferences**.
3. Tap **Video recording** > **Save videos to**.
4. Select your preferred folder or create a new one and tap **Use this folder**.

## Start your security camera <a href="#start-your-security-camera" id="start-your-security-camera"></a>

Your phone is now fully prepared to function as a security camera. To start the IP Webcam server:

1. Open **IP Webcam**.
2. Tap the three-dot menu in the upper-right corner and select **Start server**.

   <div align="left"><figure><img src="/files/Bl1vPunR0noKCmh9RRE6" alt="Tapping Start server." width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. If requested, grant IP Webcam the required permissions.

After a few seconds, the camera output will be visible on-screen.

## Access your security camera over Meshnet <a href="#access-your-security-camera-over-meshnet" id="access-your-security-camera-over-meshnet"></a>

{% hint style="warning" %}
**Caution**

Ensure you set up strong user authentication for your camera's web interface. Without it, other devices in your Meshnet that have [remote access permissions](/features/explaining-permissions/remote-access-permissions) enabled can also access the camera, potentially compromising its security.
{% endhint %}

Your security camera is now active, and you can access it either from your local network or remotely, using Meshnet.

1. Copy the Nord name of your new security camera from the NordVPN application.

2. Open your internet browser.

3. In the URL field, paste the copied Nord name, add `:8080/`, and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-sierranevada.nord:8080/`\
   &#x20;

4. Type in your login username and password and click **Sign in**.

   <figure><img src="/files/oqmBHiLSprLiCUSPcISW" alt="Logging in to the IP Webcam web interface."><figcaption></figcaption></figure>

5. Next to **Video renderer**, select **Browser** to monitor your camera in real-time.

   <div align="left"><figure><img src="/files/tfj1dcn93UCJ0OuNUMwn" alt="Selecting the Browser video renderer."><figcaption></figcaption></figure></div>

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

To start recording the footage of your security camera, click the **Record manual** button under **Recorder control** in the IP Webcam web interface.

<figure><img src="/files/x7NdC0cXeOhTWpeKrK1F" alt="Starting a recording."><figcaption></figcaption></figure>

After you have started the recording, you will see the name of the file in which the footage is being saved.

<div align="left"><figure><img src="/files/ngJz33A4Dtxk5UNFnvRS" alt="Name of the recording." width="375"><figcaption></figcaption></figure></div>

If you wish to stop the recording, click the **Stop** button.

### View recorded footage <a href="#view-recorded-footage" id="view-recorded-footage"></a>

You can check all of the recorded footage from your security camera in the **Video archive** tab of the IP Webcam web interface.

<figure><img src="/files/QMAsMIetGrwWxFUKIGp3" alt="Recordings in the Video archive tab."><figcaption></figcaption></figure>


# How to assign custom host names to Meshnet services using Nginx proxy manager

Learn how to use the Nginx proxy manager to create custom host names for Meshnet services.

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

As the popularity of self-hosted services continues to grow, so does the challenge of managing multiple IP addresses, host names, and port numbers. It can quickly become overwhelming to keep track of which port number to enter for services like [Home Assistant](/how-to/remote-access/home-assistant), [Jellyfin](/how-to/remote-files-media-access/access-jellyfin-media-sever-remotely), or [LibrePhotos](/how-to/remote-files-media-access/librephotos-picture-library).

While a custom [DNS server](https://nordvpn.com/blog/what-is-dns-server/) can help overcome the problem of remembering the IP addresses or host names of your peer devices, it's not enough to handle requests that need to be forwarded to a specific port number. This is where a [reverse proxy](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/), such as the [Nginx proxy manager](https://nginxproxymanager.com/guide/) (NPM), can come in handy. With NPM, you can easily create reverse proxies without needing prior networking knowledge. By combining a custom DNS server with NPM, you can eliminate the need to remember and enter port numbers altogether.

This article showcases the process of setting up the Nginx proxy manager alongside a DNS server to create custom host names for your [Meshnet](https://nordvpn.com/meshnet/) services, simplifying their management.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Before you begin the setup process, make sure that:

* You have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your system.
  * [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
  * [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
  * [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
    * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
    * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)
* You have a custom DNS server set up on your network. For example, [AdGuard Home](/how-to/security/protect-network-with-adguard-home).
* You have changed the DNS addresses of your devices to your custom DNS server.
* Port 80 is not in use by any service on your system.

## Creating DNS rewrites <a href="#creating-dns-rewrites" id="creating-dns-rewrites"></a>

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

For this configuration, a standard AdGuard Home installation is used as an example DNS server. If you are running your DNS server using Docker, the steps may differ.
{% endhint %}

To start, you need a way to create DNS rewrites from a custom host name to a specific IP or host name. While this can be achieved by editing your operating system’s `hosts` file, a much more convenient and easily manageable alternative is a custom DNS server.

To create a DNS rewrite using AdGuard Home:

1. Open your AdGuard Home web interface.
2. From the menu bar, select **Filters** > **DNS rewrites**.
3. Click **Add DNS rewrite**.
4. In the pop-up window, fill in the following information:
   * In the upper field, enter a custom host name that you want to use to access a specific service.
   * In the lower field, enter `localhost`.\
     &#x20;

     **Example**

     <div align="left"><figure><picture><source srcset="/files/uOF8YOzaqSo216p578zB" media="(prefers-color-scheme: dark)"><img src="/files/VuHWH3LWXR1kXQqLCxXd" alt="Creating a new DNS rewrite to redirect &#x27;jellyfin.mesh.net&#x27; to &#x27;localhost&#x27;." width="375"></picture><figcaption></figcaption></figure></div>
5. Click **Save**.

You should now see a new entry in the **DNS rewrites** table. Repeat this procedure for any other host names you want to create.

<div align="left"><figure><picture><source srcset="/files/8PRzY9bBcLGDSJxF5GsE" media="(prefers-color-scheme: dark)"><img src="/files/FM91QgbpKSRatYbO40YG" alt="DNS rewrites table in the AdGuard Home web interface with the newly created rewrite."></picture><figcaption></figcaption></figure></div>

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

AdGuard Home supports [wildcard domain names](https://en.wikipedia.org/wiki/Wildcard_DNS_record). You can use the format `*.example.com` to redirect all subdomains of `example.com`. This way, you don’t have to add new DNS entries for each service.
{% endhint %}

## Setting up the Nginx proxy manager <a href="#setting-up-nginx-proxy-manager" id="setting-up-nginx-proxy-manager"></a>

With the DNS rewrites created, you can deploy your Nginx proxy manager instance. To set up NPM, you need to use Docker Compose.

### Create a Docker Compose file <a href="#create-a-docker-compose-file" id="create-a-docker-compose-file"></a>

First, you need to create a [Docker Compose file](https://docs.docker.com/reference/compose-file/) containing instructions for NPM.

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

1. Open **PowerShell**.
2. Create a new folder called `nginx-proxy-manager` and navigate to it using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir nginx-proxy-manager &#x26;&#x26; cd nginx-proxy-manager
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using Notepad with the following command:

   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">notepad docker-compose.yml
   </code></pre>

   &#x20;
4. In the Notepad window, paste the following information that specifies the NPM docker image, publishes the required ports, and creates two new folders in your working directory.\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: '3.8'
   services:
     app:
       container_name: nginx-proxy-manager
       image: 'jc21/nginx-proxy-manager:latest'
       restart: unless-stopped
       ports:
         - '80:80'
         - '443:443'
         - '81:81'
       volumes:
         - ./data:/data
         - ./letsencrypt:/etc/letsencrypt
   </code></pre>

   &#x20;
5. Press **Ctrl** + **S** to save changes.
6. Exit Notepad.
   {% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. Create a new folder called `nginx-proxy-manager` and navigate to it using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir nginx-proxy-manager &#x26;&#x26; cd nginx-proxy-manager
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor with the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano docker-compose.yml
   </code></pre>

   &#x20;
4. In the terminal window, paste the following information that specifies the NPM docker image, publishes the required ports, and creates two new folders in your working directory.\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">version: '3.8'
   services:
     app:
       container_name: nginx-proxy-manager
       image: 'jc21/nginx-proxy-manager:latest'
       restart: unless-stopped
       ports:
         - '80:80'
         - '443:443'
         - '81:81'
       volumes:
         - ./data:/data
         - ./letsencrypt:/etc/letsencrypt
   </code></pre>

   &#x20;
5. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.
   {% endtab %}
   {% endtabs %}

### Deploy NPM <a href="#deploy-npm" id="deploy-npm"></a>

With the Compose file created, while in the `nginx-proxy-manager` directory, execute the following command in the command line to create your NPM instance:

{% code overflow="wrap" %}

```bash
docker-compose up -d
```

{% endcode %}

Docker will [pull the NPM image](https://docs.docker.com/engine/reference/commandline/pull/) from Docker Hub and create the container.

### Log in to your NPM web interface <a href="#log-in-to-your-npm-web-interface" id="log-in-to-your-npm-web-interface"></a>

Once the container is active, you can visit the NPM web interface.

1. Open your internet browser.
2. In the URL bar, enter `localhost:81/` and press **Enter**.
3. Log in using the default email (`admin@example.com`) and password (`changeme`).

After logging in, you will be asked to change the details of your account. Follow the on-screen instructions to update your credentials.

### Create proxy redirects <a href="#create-proxy-redirects" id="create-proxy-redirects"></a>

Finally, you can create a proxy redirect for your created host name to reach a specific service.

1. From the NPM dashboard, select **Proxy hosts**.
2. Click **Add proxy host**.
3. In the new window, specify the following information:
   * In the **Domain names** field, enter the custom host name you created in the [Creating DNS rewrites](#creating-dns-rewrites) section.
   * In the **Forward hostname / IP** field, type in the Nord name or the Meshnet IP address of your Meshnet peer device.
   * In the **Forward port** field, enter a port number that the peer device’s service is using.\
     \
     **Example**

     <div align="left"><figure><img src="/files/e6frfouOMQnXgXkOkCrY" alt="Creating a new proxy host in NPM to redirect &#x27;jellyfin.mesh.net&#x27; to &#x27;secret.meerkat-fuji.nord:8096&#x27;." width="375"><figcaption></figcaption></figure></div>
4. Click **Save**.

You should see a new entry for your proxy appear in the **Proxy** **hosts** table.

<div align="left"><figure><img src="/files/WXrmUnHkm5iccdikN0PE" alt="A new entry visible in the Proxy hosts table in the NPM dashboard."><figcaption></figcaption></figure></div>

## Accessing Meshnet services using the reverse proxy

Now you can access your Meshnet services without needing to specify the Nord name or the port that you want to reach. Simply enter the custom host name into the search field of your internet browser and your specified service will open.

<div align="left"><figure><img src="/files/IHN3Tw09wvnuSGqQu93L" alt="Accessing a Jellyfin server using the custom &#x27;jellyfin.mesh.net&#x27; host name."><figcaption></figcaption></figure></div>


# How to use Proxmox VE remotely over Meshnet

Learn how you can incorporate Meshnet into your Proxmox VE configuration for secure remote access.

## 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 this article, a standalone Proxmox VE 8.2 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="/files/PoP4LVzS2T11N5S46guY" 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 user details during Proxmox installation and click **Login**.
   * In the **User name** field, type in `root`.
   * In the **Password** field, type in the password you created during Proxmox installation.

     <div align="left"><figure><picture><source srcset="/files/lR3wIJS7pGzpU0N9Z7VZ" media="(prefers-color-scheme: dark)"><img src="/files/f0AXOZvFhaiCjPuaGw2J" alt="Username and password entered in the Proxmox VE login dialog.," width="375"></picture><figcaption></figcaption></figure></div>

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)**.

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. Go to **Updates** > **Repositories**.
3. In the **APT repositories** table, select the enterprise Proxmox repository entry and click **Disable**.

   <div align="left"><figure><picture><source srcset="/files/n8oPfw7UIvphGsyMqEjy" media="(prefers-color-scheme: dark)"><img src="/files/Mf3rWmRC8HSymkgXd8L5" alt="Disabling the enterprise Proxmox update repository."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Click the **Add** button.
5. From the **Repository** dropdown list, select **No-subscription** and click **Add**.

   <div align="left"><figure><picture><source srcset="/files/7KNd5uUf9FvKbMFWWyal" media="(prefers-color-scheme: dark)"><img src="/files/Z2SERIVYnzbaTkDJSHwX" alt="Adding the &#x27;No-Subscription&#x27; repository." width="375"></picture><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.

   <div align="left"><figure><picture><source srcset="/files/CDLajJkdPMje8PS9PQaV" media="(prefers-color-scheme: dark)"><img src="/files/sJu3rPLgk80gZceE4h9j" alt="Clicking &#x27;Upgrade&#x27; to install all available system updates."></picture><figcaption></figcaption></figure></div>

   &#x20;
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:\
   &#x20;

   <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><picture><source srcset="/files/agOAAcZTj3UqRiksDHT9" media="(prefers-color-scheme: dark)"><img src="/files/dYbhjSnX8Q6qj9MJvsGB" alt="Executing the NordVPN installation script in the Proxmox VE shell."></picture><figcaption></figcaption></figure></div>

   &#x20;
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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the verification code sent to your email address.
4. Under **Access token**, click **Generate new token**.

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><figcaption></figcaption></figure></div>

   &#x20;
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**.

   <div align="left"><figure><img src="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Copy and close**.
7. In your Proxmox shell, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   &#x20;\
   **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.

</details>

<details>

<summary>Log in using a URL</summary>

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.\
   &#x20;\
   **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.

</details>

{% 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 %}

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

Upon logging in, [enable Meshnet](/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:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

<div align="left"><figure><img src="/files/gfHEJWl147IVDzydzcAU" 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.

   <div align="left"><figure><picture><source srcset="/files/pnaxIlYf6QzkdipEZxSE" media="(prefers-color-scheme: dark)"><img src="/files/G8LUoon6nUrU8jcyJk3x" alt="Logging in to the Proxmox VE over Meshnet."></picture><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.

   <div align="left"><figure><picture><source srcset="/files/PvsGnIraSlGHpKBpcWpw" media="(prefers-color-scheme: dark)"><img src="/files/xA0jQFoOYBer00fCCysE" alt="Selecting the local storage option in Proxmox VE." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Select **ISO images** and click **Upload**.
4. In the pop-up dialog, click **Select file**.
5. Locate the ISO file for your preferred VM and click **Open**.

   <div align="left"><figure><picture><source srcset="/files/UtZlQ7WxE2PlwtaNZpyh" media="(prefers-color-scheme: dark)"><img src="/files/YUoF5xOjTDzrs2PTVoNh" alt="Selecting the ISO file in file explorer."></picture><figcaption></figcaption></figure></div>

   &#x20;
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.
{% 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**.

   <div align="left"><figure><picture><source srcset="/files/5GqTDj0sr8egy2eFhhFU" media="(prefers-color-scheme: dark)"><img src="/files/LcoE2cVaN1Vil9p4F8Sm" alt="Starting the ISO image download in Proxmox VE." width="563"></picture><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.
{% 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**.

   <div align="left"><figure><picture><source srcset="/files/ji3GkxJwhqRWcrzmvtiU" media="(prefers-color-scheme: dark)"><img src="/files/2SG5Zf2D75yfJ9QgAsDr" alt="Clicking &#x27;Finish&#x27; in the virtual machine creation window." width="563"></picture><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.


# How to set up a remotely controlled 3D printer

Learn how you can integrate Meshnet into your 3D printing setup for remote control.

## Introduction

With the availability of 3D printers swiftly increasing, more and more people have decided to start learning, experimenting, and working with 3D printers. The printers are often used as cost-efficient prototyping tools and supplement many home and office setups.

Leaving a 3D printer unattended can be considered a hazard. However, with adequate supervision, having remote access to your printer can make printing more time-efficient. By implementing [Meshnet](https://nordvpn.com/meshnet/) into your network configuration, you can forego [port forwarding](https://nordvpn.com/blog/port-forwarding/) and easily access your 3D printer while not being physically present.

This guide showcases how you can turn a Linux device into a remotely accessible 3D printer controller and how to remotely initiate print jobs using slicers over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure you have the following:

* A 3D printer
* A Linux device running a [supported distribution](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#before-you-begin) that will function as the 3D printer controller
* Installed 3D printer firmware on the Linux device

An example device and firmware pair you may use could be a [Raspberry Pi](https://www.raspberrypi.com/) running [Klipper](https://www.klipper3d.org/) or [Octoprint](https://octoprint.org/).

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

For firmware installation instructions, refer to your selected firmware’s documentation.
{% endhint %}

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

To enable secure remote connections to your device, you need to install NordVPN and enable Meshnet.

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

Follow these steps to install NordVPN on your controller device:

1. Download and install the NordVPN Linux client by running the command below.\
   &#x20;

   <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;
2. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

3. Enter the verification code sent to your email address.

4. Under **Access token**, click **Generate new token**.

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><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**.

   <div align="left"><figure><img src="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

6. Select **Copy and close**.

7. On your controller, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   &#x20;\
   **Example**

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

You should now see a welcome message.

</details>

<details>

<summary>Log in using a URL</summary>

1. Run the following command:\
   &#x20;

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

   &#x20;
2. Open the provided link on any device in your browser.
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.\
   &#x20;\
   **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.

</details>

{% 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 %}

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

If you encounter the error message “Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock,” enter `sudo usermod -aG nordvpn $USER`. Then, reboot your controller and log back in.
{% endhint %}

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

Upon logging in, you can [enable Meshnet on Linux](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#enable-meshnet-on-linux) by typing this command:

{% code overflow="wrap" %}

```bash
nordvpn set meshnet on
```

{% endcode %}

To check your device’s Nord name and the Meshnet IP address, enter the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

**Example**

<div align="left"><figure><img src="/files/4cFaB1jXswn5Ju7514jw" alt="Output of the &#x27;nordvpn meshnet peer list&#x27; command" width="563"><figcaption></figcaption></figure></div>

You will also see your Meshnet peer devices with their corresponding permissions.

## Setting up 3D slicer software <a href="#setting-up-3d-slicer-software" id="setting-up-3d-slicer-software"></a>

A slicer is an intermediary that transforms a 3D design file into [G-code](https://en.wikipedia.org/wiki/G-code) — a set of instructions that a 3D printer understands. While many printers come with their own slicers, there are various other options that you may choose to use.

This section covers the process of adding the remote Meshnet 3D printer controller using the following slicers on desktop devices:

* [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/)
* [PrusaSlicer](https://www.prusa3d.com/)
* [Slic3r](https://slic3r.org/)

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

Certain firmware might limit controller access exclusively to its local network. In these situations, you will need to include the Meshnet IP range `100.64.0.0/10` as a trusted network within your controller's configuration. Refer to the firmware's documentation on how to make such changes.
{% endhint %}

<details>

<summary>UltiMaker Cura</summary>

### Set up Ultimaker Cura <a href="#set-up-ultimaker-cura" id="set-up-ultimaker-cura"></a>

Begin by preparing Ultimaker Cura for use on your device:

1. Download and install the latest version of [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/) for your OS.
2. Launch **UltiMaker Cura**.
3. Follow the instructions provided in the onboarding dialog.

### Add your printer controller <a href="#add-your-printer-controller" id="add-your-printer-controller"></a>

For this part, a controller running Klipper is used. By default, such controllers are not recognized by Cura. Due to this, an additional plug-in must be installed.

1. In the upper-right corner, click **Marketplace**.
2. Search for `Moonraker` and install the **Moonraker connection** plugin.

   <div align="left"><figure><img src="/files/GqrQknkAk948x1ZkIfnf" alt="&#x22;Moonraker connection&#x22; plugin visible after entering &#x22;Moonraker&#x22; in the search field."><figcaption></figcaption></figure></div>

   &#x20;
3. Accept the license agreement and restart **Cura**.
4. From the menu bar, select **Settings** > **Printer** > **Manage printers**.&#x20;

   <div align="left"><figure><img src="/files/DSHhIZNuz5csXajmj98p" alt="Selecting &#x22;Manage printers&#x22;"><figcaption></figcaption></figure></div>

   &#x20;
5. In the **Preferences** window, click **Connect Moonraker**.
6. In the **Address (URL)** field, enter `http://`, followed by the Nord name or the Meshnet IP address of your controller, and click **Create**.\
   &#x20;\
   **Example**&#x20;

   <div align="left"><figure><img src="/files/BPtKeP5TraI3fHcj5kiz" alt="Clicking &#x22;Create&#x22; after entering the Nord name and the port number of the 3D printer controller."><figcaption></figcaption></figure></div>

The printer is now added. After uploading and slicing your model file, choose the **Upload to printer** option in the lower-right corner of the app to print over Meshnet.

</details>

<details>

<summary>PrusaSlicer</summary>

1. Download and install the latest version of [PrusaSlicer](https://www.prusa3d.com/) for your OS.
2. Launch **PrusaSlicer**.
3. From the main app screen, switch to the **Printer settings** tab and click the gear button.

   <div align="left"><figure><img src="/files/ULArj9riKLLKTjgn3uf9" alt="Clicking the gear button under the &#x22;Printer settings&#x22; tab."><figcaption></figcaption></figure></div>

   &#x20;
4. In the pop-up dialog, fill in the details of your 3D printer.
   * In the **Descriptive name for the printer** field, enter a custom name for your 3D printer.
   * From the **Host type** dropdown menu, select the firmware of your controller.
   * In the **Hostname, IP or URL** field, enter the Nord name or Meshnet IP address of your controller.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/UrsZb9E2IuHOUsHhbZJh" alt="Custom name, firmware, and the Nord name of the 3D printer controller."><figcaption></figcaption></figure></div>

     &#x20;
5. Click **Test** to check whether the connection to the controller can be established successfully.
6. Select **OK** to save the changes and close the dialog.\
   &#x20;\
   Whenever you want to print over Meshnet, select your Meshnet printer option from the **Printer** dropdown menu on the right of the main app window.

   <div align="left"><figure><img src="/files/liVgfW0pI7AGJBCF3cOg" alt="Meshnet 3D printer selected from the &#x22;Printer&#x22; dropdown menu."><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Slic3r</summary>

1. Download and install the latest version of Slic3r for your OS from the [Slic3r downloads page](https://slic3r.org/download/).
2. Launch **Slic3r**.
3. From the top menu bar, select **Settings** > **Printer settings**. Alternatively, you can click **Ctrl** + **3** on your keyboard.

   <div align="left"><figure><img src="/files/moD93ZpIIyhmxVAbypTM" alt="Selecting &#x22;Printer settings&#x22; from the &#x22;Settings&#x22; tab of the menu bar."><figcaption></figcaption></figure></div>

   &#x20;
4. Under the **Print server upload**, fill in the details of your 3D printer.
   * From the **Host type** dropdown, select the firmware of your printer’s controller.
   * In the **Host** **or IP** field, enter your controller’s Nord name or Meshnet IP address.\
     &#x20;\
     **Example**

     <div align="left"><figure><img src="/files/PnOPSCzvByWYnnjNdFQT" alt="Selected Octoprint as the host type and entered the Meshnet IP address of the 3D printer controller."><figcaption></figcaption></figure></div>

     &#x20;
5. Click **Test** to check whether the connection to the controller can be established successfully.
6. Under the **Printer settings** tab, click the **Save current printer settings** button, enter a custom name for the profile, and click **OK** to create the new profile.<br>

   <div align="left"><figure><img src="/files/6AAbObpvROP7JGip87BW" alt="Clicking the save button, entering a profile name, and selecting OK."><figcaption></figcaption></figure></div>

Whenever you want to print over Meshnet, select your Meshnet printer profile from the **Printer** dropdown menu on the right of the main app window.

![Meshnet 3D printer selected from the "Printer" dropdown menu.](/files/9dEbTc03Hgs9DFDJO40G)

</details>

With the slicer setup completed, you can securely manage your 3D printer without any network or distance restrictions using Meshnet.


# How to set up and remotely access a CasaOS server

Learn how to set up a personal Linux server with CasaOS and remotely access it over Meshnet.

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

For many individuals, the initial steps of [self-hosting](https://en.wikipedia.org/wiki/Self-hosting_\(web_services\)) and personal server setups can often appear daunting. Beginners frequently seek straightforward solutions that offer guidance without requiring significant commitments.

A tool novices use to familiarize themselves with self-hosting is [CasaOS](https://github.com/IceWhaleTech/CasaOS) — open-source software designed to convert a Linux machine into a functional personal server. CasaOS offers an intuitive web interface, simplifying the deployment and management of various [Docker-based](https://www.docker.com/) apps. Depending on the apps you decide to host, you may want remote access to the server. This would allow you to access your apps while away from home and perform remote maintenance.

By pairing CasaOS with [Meshnet](https://nordvpn.com/meshnet/), you can create a private device network that mimics a traditional [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) without [port forwarding](https://nordvpn.com/blog/port-forwarding/). This functionality enables seamless [remote access](https://nordvpn.com/meshnet/remote-access/) to your CasaOS server, regardless of your physical location.

To start, check out the video tutorial below for a visual walkthrough:

{% embed url="<https://youtu.be/PgXAJiqaMWY>" %}

Alternatively, if you prefer written instruction, this page contains a step-by-step guide on installing CasaOS on a Linux machine and establishing a remote connection using Meshnet.

## Installing CasaOS <a href="#installing-casaos" id="installing-casaos"></a>

CasaOS can be installed by using a single-line installation script. The script will check whether your system is compatible with CasaOS and then start downloading and installing all required software. To begin the installation:

1. Open **Terminal**.
2. Run the following command to execute the CasaOS installation script:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl -fsSL https://get.casaos.io | sudo bash
   </code></pre>

You can monitor the installation progress in the terminal window. Once the installation is complete, you will see the address for accessing your CasaOS dashboard.

<div align="left"><figure><img src="/files/OryM7thp6NJs9meSWYCw" alt="URL for accessing CasaOS web interface highlighted in the terminal."><figcaption></figcaption></figure></div>

### Access the CasaOS web interface <a href="#access-the-casaos-web-interface" id="access-the-casaos-web-interface"></a>

To use your CasaOS instance, navigate to its web interface and create an account.

1. Open your internet browser.
2. In the URL bar, enter the address shown after completing the CasaOS installation and press **Enter**.\
   &#x20;\
   **Example**\
   `http://192.168.202.83`\
   &#x20;
3. On the CasaOS welcome screen, select **Go**.
4. Type in your preferred username and password.
5. Click **Create**.

   <figure><img src="/files/Fqjns6NSH2XNEM9YDVkN" alt="&#x22;Create&#x22; button highlighted on the CasaOS account creation page."><figcaption></figcaption></figure>

The page should now reload and showcase your CasaOS dashboard.

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

If you forget your username or password, you can reset the credentials by following the instructions on the [CasaOS documentation](https://wiki.casaos.io/en/guides#user) page.
{% endhint %}

## Installing apps <a href="#installing-apps" id="installing-apps"></a>

To streamline the process of installing apps on your home server, CasaOS has a dedicated App Store. In the store, you can choose from a wide range of popular apps, such as [Jellyfin](/how-to/remote-files-media-access/access-jellyfin-media-sever-remotely), [Pi-hole](/how-to/security/pi-hole), [Home Assistant](/how-to/remote-access/home-assistant), and many others. Alternatively, if you cannot find a wanted service in the store, you can manually configure and launch it using Docker.

### Method 1: From the App Store <a href="#method-1-from-the-app-store" id="method-1-from-the-app-store"></a>

This section will use [AdGuard Home](/how-to/security/protect-network-with-adguard-home) as an example. However, the process for installing other apps is nearly identical.

1. Open your CasaOS web interface.
2. Under **App**, select **App Store**.

   <div align="left"><figure><img src="/files/dnQRgxvAA46dqA3b0Lzs" alt="App store card highlighted." width="350"><figcaption></figcaption></figure></div>

   &#x20;
3. Locate the app you want to install.
4. Click the **Install** button if you wish to install it using the default configuration.

   <div align="left"><figure><img src="/files/I4bP5kd7bnq85Nvhw4XP" alt="&#x22;Install&#x22; button for AdGuard Home highlighted."><figcaption></figcaption></figure></div>

   &#x20;\
   Otherwise, if you want to review the settings or make some adjustments before installing:

   1. Select the app in the App Store.
   2. Hover over the dropdown arrow next to the **Install** button and click **Custom install**.

      <figure><img src="/files/9i9fOtlneSfxwigN3yhr" alt="Arrows pointing to the dropdown menu icon and the &#x22;Custom install&#x22; button."><figcaption></figcaption></figure>

      &#x20;
   3. Check and adjust the available values to your preference.
   4. Click **Install**.

      <div align="left"><figure><img src="/files/gNcOlthXlbD2NZuLNHA9" alt="&#x22;Install&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

      &#x20;
5. Close the installation dialog by clicking the **Continue in background** button.

Once the software is installed, you will see it under the **App** section of the dashboard. Click it to navigate to the app’s web interface.

<div align="left"><figure><img src="/files/kx3bL1xTki3jb9xuSDBX" alt="AdGuard Home underlined under the App category." width="563"><figcaption></figcaption></figure></div>

### Method 2: Manual setup <a href="#method-2-manual-setup" id="method-2-manual-setup"></a>

CasaOS provides a graphical user interface (GUI) solution for manually deploying Docker containers. It provides you with all of the relevant fields where you need to enter the data for the app you want to install. To install an app manually:

1. Open your CasaOS web interface.
2. Under **App**, select **App Store**.
3. In the upper-right corner, click **Custom install**.
4. Fill in the **Manual app install** dialog with the data for your Docker container. The image below is an example of the [Kavita e-book server’s](/how-to/remote-files-media-access/kavita-ebook-server) Docker configuration.&#x20;

   <div align="left"><figure><img src="/files/RdsXJJUyDTVKK3fTtk7y" alt="Kavita Docker container configuration in CasaOS." width="375"><figcaption></figcaption></figure></div>

   &#x20;
5. Click **Install**.

Once the software is installed, you will see it under the **App** section of the dashboard. Click it to navigate to the app’s web interface.

<div align="left"><figure><img src="/files/5kwENxRilvjxft2FylDi" alt="&#x22;Kavita&#x22; underlined under the App category." width="563"><figcaption></figcaption></figure></div>

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

After you’ve installed the apps you want to have on your server, you can proceed with setting up Meshnet to remotely access the server.

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

Take the following steps to set up NordVPN on your CasaOS server:

1. Open your CasaOS web interface.
2. In the upper-left corner, select **Terminal and logs**.

   <div align="left"><figure><img src="/files/AE7e8xZ7dBUxqERqkIVa" alt="Arrow pointing to the &#x22;Terminal and logs&#x22; button on the CasaOS web interface."><figcaption></figcaption></figure></div>

   &#x20;
3. Under **Terminal**, enter the username and password of your Linux user account (not the CasaOS web account) and click **Connect**.

   <div align="left"><figure><img src="/files/po2b0zzt9t8v6C3bBbPq" alt="Username and password of the CasaOS server filled in." width="563"><figcaption></figcaption></figure></div>

   &#x20;
4. Download and install the NordVPN Linux client by running this command:\
   &#x20;

   <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;
5. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the verification code sent to your email address.
4. Under **Access token**, click **Generate new token**.

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><figcaption></figcaption></figure></div>

   &#x20;
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**.

   <div align="left"><figure><img src="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Copy and close**.
7. On your server, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   &#x20;\
   **Example**

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

You should now see a welcome message.

</details>

<details>

<summary>Log in using a URL</summary>

1. Run the following command:\
   &#x20;

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

   &#x20;
2. Open the provided link on any device in your browser.
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.\
   &#x20;\
   **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.

</details>

{% 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 %}

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

If you encounter the error message “Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock,” enter `sudo usermod -aG nordvpn $USER`. Then, reboot your server and log back in.
{% endhint %}

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

Upon logging in, [enable Meshnet](https://meshnet.nordvpn.com/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 device, enter the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

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

For more convenient device access, you can [rename this device](/features/renaming-devices/linux#rename-this-device) and use its nickname instead of the default Nord name.
{% endhint %}

## Accessing CasaOS over Meshnet <a href="#accessing-casaos-over-meshnet" id="accessing-casaos-over-meshnet"></a>

Once Meshnet is set up, you can start accessing and using your CasaOS instance, and the apps hosted on it, from remote devices with the help of Meshnet. To remotely access CasaOS:

1. Copy the Nord name of your CasaOS server device from the NordVPN app.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name followed by `:81/` and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-atlas.nord:81/`\
   &#x20;
4. Enter the login credentials for your CasaOS account and click **Log in**.

To access any of your hosted apps, simply click its card under the **App** section. The app’s web interface will open in a new browser tab.

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

To directly access a specific app, replace the `:81/` part of the URL in step 3 with the corresponding port number of the app you want to reach.

**Example**\
`secret.meerkat-atlas.nord:8096/`
{% endhint %}

## Optional: Configuring folder sharing <a href="#optional-configuring-folder-sharing" id="optional-configuring-folder-sharing"></a>

The **Files** app of CasaOS provides a simple interface for configuring and accessing [Samba ](https://en.wikipedia.org/wiki/Samba_\(software\))network shares. This allows you to make a folder accessible over the network or connect to a folder shared by another device.

### Share a folder <a href="#share-a-folder" id="share-a-folder"></a>

To start sharing a folder:

1. Open your CasaOS web interface.
2. Under **App**, select **Files**.
3. Navigate to the folder you want to share.
4. Hover over the folder, select the three-dot menu, and click **Share**.

   <div align="left"><figure><img src="/files/Y2UWYf8qkZrAFjs74sp2" alt="Arrow pointing to the three-dot menu button and the &#x22;Share&#x22; option is highlighted." width="284"><figcaption></figcaption></figure></div>

   &#x20;
5. Note the path to the shared folder and close the dialog by clicking **Got it**.

   <div align="left"><figure><img src="/files/kCYevDmhvek4uS2kYTNh" alt="&#x22;Got it&#x22; button highlighted." width="563"><figcaption></figcaption></figure></div>

Now, your Meshnet peer devices can access the shared folder using the previously presented path. However, the local IP address must be replaced by the CasaOS server’s Nord name or Meshnet IP address.

**Example**\
`\\secret.meerkat-atlas.nord\Videos`

For detailed instructions on accessing shared folders from different platforms, consult the following pages:

* [Accessing shared folders from Windows](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-windows#access-shared-folders)
* [Accessing shared folders from macOS](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-macos#access-shared-folders)
* [Accessing shared folders from Linux](/how-to/remote-files-media-access/set-up-folder-sharing/configure-and-access-shared-folders-on-linux#access-shared-folders)
* [Accessing shared folders from Android](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-android)
* [Accessing shared folders from iPhone/iPad](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-on-ios)
* [Accessing shared folders from Android TV](/how-to/remote-files-media-access/set-up-folder-sharing/access-shared-folders-from-android-tv)

### Connect to a shared folder <a href="#connect-to-a-shared-folder" id="connect-to-a-shared-folder"></a>

To access a folder shared by another Meshnet peer device:

1. Open your CasaOS web interface.
2. Under **App**, select **Files**.
3. On the left, next to **Location**, click the add (+) button and select **Connect to network storage**.

   <div align="left"><figure><img src="/files/HbsuHMvgIvfnP3AiFC1k" alt="The Add (plus) button and &#x22;Connect to network storage&#x22; option highlighted." width="330"><figcaption></figcaption></figure></div>

   &#x20;
4. In the **Server address field**, enter `smb://` followed by the Nord name of the Meshnet peer that has shared the folder.\
   &#x20;\
   **Example**\
   `smb://secret.meerkat-himalayas.nord`\
   &#x20;
5. Turn off the **Connect as guest** toggle and enter the authentication details for accessing the shared folder.
6. Click **Connect**.

   <div align="left"><figure><img src="/files/ldtrQiLJMYyGdDEQZ7Ej" alt="Shared folder URL and authentication credentials entered and the &#x22;Connect&#x22; button is highlighted." width="563"><figcaption></figcaption></figure></div>

The **Files** app should now display all shared folders of the Meshnet peer device you specified. In addition, the network share will be available under the **Location** section on the left.

<div align="left"><figure><img src="/files/xH3FkbnGaGHAyQFDAR5Z" alt="Added network share visible under &#x22;Location&#x22;." width="330"><figcaption></figcaption></figure></div>


# How to set up OpenClaw AI assistant with Meshnet

Learn how to configure a personal AI assistant using OpenClaw and remotely access it over Meshnet.

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

[Artificial intelligence](https://nordvpn.com/cybersecurity/glossary/artificial-intelligence/) (AI) has made significant progress in recent years, with [AI agents](https://nordvpn.com/cybersecurity/glossary/intelligent-agent/) increasingly integrated into our daily lives. These agents automate tasks, manage communications, and execute complex tasks, making workflows more efficient. As AI technology advances, people are relying more heavily on AI agents to boost productivity.

[OpenClaw](https://openclaw.ai/) is an [open-source](https://github.com/openclaw/openclaw) AI assistant that enables users to automate digital tasks and interact with various applications. With its ability to run on most machines, remember context, and autonomously handle real tasks via different messaging channels, OpenClaw offers a unique solution for people looking to maximize AI power.

With OpenClaw and [Meshnet](https://nordvpn.com/meshnet/) combined, you can access and control your instance remotely, no matter where you are. Meshnet creates a virtual network that connects devices worldwide, mimicking a [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN). The use of the [NordLynx protocol](https://nordvpn.com/blog/nordlynx-protocol-wireguard/) in Meshnet ensures that the communication between devices matches the security standards of a [VPN](https://nordvpn.com/) connection.

This article demonstrates how you can set up your OpenClaw instance and use it over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

If you’re using a Linux device, you can proceed directly to the [next section](#configure-the-openclaw-ai-assistant).

As for Windows devices, it is highly recommended to install OpenClaw using [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/) (WSL). WSL installs a light-weight version of a chosen Linux distribution. This approach ensures that the packages required for running OpenClaw can be installed and managed as the creator intended.

<details>

<summary>Install WSL</summary>

To install WSL on your Windows machine:

1. Open **PowerShell** as an administrator.

   <div align="left"><figure><picture><source srcset="/files/WliNk2m2SoZZHg4J5g6v" media="(prefers-color-scheme: dark)"><img src="/files/vLelBkLahUgimAfoOYTe" alt="&#x22;Run as Administrator&#x22; option highlighted in the Windows search." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Run the command below to install the recommended version of Ubuntu via WSL.

   ```powershell
   wsl.exe --install
   ```

   &#x20;
3. Wait until the installation process is finished.
4. When requested, create the username and password for your Ubuntu user account.
5. Fetch and install all available updates for your system by running the following command:

   ```bash
   sudo apt update && sudo apt upgrade -y
   ```

   &#x20;

   If required, enter the Ubuntu account password you just created and press **Enter**.

Your WSL2 instance is now installed and ready for use. To access it, launch **Ubuntu** from your Windows start menu.&#x20;

<div align="left"><figure><img src="/files/UKkflcRpXmM904nO3Wxz" alt="Launching Ubuntu from the Windows search." width="563"><figcaption></figcaption></figure></div>

All further instructions should be performed inside the WSL terminal.

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

When installing WSL for the first time, you may be required to restart your computer.
{% endhint %}

</details>

## Configure the OpenClaw AI assistant <a href="#configure-the-openclaw-ai-assistant" id="configure-the-openclaw-ai-assistant"></a>

The most convenient way to begin with OpenClaw is to use its installation script. It installs software required to run OpenClaw and guides you through the onboarding procedure.

### Install OpenClaw <a href="#install-openclaw" id="install-openclaw"></a>

In **Terminal**, run the following command to download and run the OpenClaw installation script.

{% code overflow="wrap" %}

```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```

{% endcode %}

The script will check your system and install all of the prerequisites needed to run OpenClaw.

### Begin OpenClaw onboarding <a href="#begin-openclaw-onboarding" id="begin-openclaw-onboarding"></a>

Once the installation process successfully finishes, it will begin the OpenClaw onboarding procedure.

1. Read through the security warning, choose the **Yes** option using the arrow keys, and press **Enter**.
2. Select the **QuickStart** onboarding mode.

   <div align="left"><figure><img src="/files/XezFDJXx8zmedOF0HJE1" alt="Selecting the &#x22;QuickStart&#x22; onboarding option."><figcaption></figcaption></figure></div>

### Choose OpenClaw settings <a href="#choose-openclaw-settings" id="choose-openclaw-settings"></a>

1. Pick your preferred AI provider, authenticate using one of the available methods, and select the default AI model your assistant will use.
2. Under **Select channel (QuickStart)** choose **Skip for now**.

   <div align="left"><figure><img src="/files/qprwV2Ty63ryimxe7mCk" alt="Selecting the &#x22;Skip for now&#x22; channel." width="563"><figcaption></figcaption></figure></div>

   &#x20;
3. Choose whether you want to install any assistant skills right now. Otherwise, select **No**.
4. Enter any of the shown API key options or choose **No**.
5. Under **Enable hooks?** select **Skip for now**. This is an advanced feature that can be configured later.
6. Lastly, choose **Do this later** and pick **Yes** to install the shell completion script.
7. Update your path environment variable to accommodate OpenClaw with this command:

   ```bash
   export PATH="$(npm prefix -g)/bin:$PATH" && source ~/.bashrc
   ```

The onboarding process is now finished.

### Allow local and Meshnet connections <a href="#allow-local-and-meshnet-connections" id="allow-local-and-meshnet-connections"></a>

By default, OpenClaw is bound to the `loopback` network interface, meaning that it accepts connections only from the device on which it is installed. You will need to modify the OpenClaw configuration file to permit incoming connections from the local network and via Meshnet.

1. Run the following command to open the OpenClaw configuration file using the Nano text editor:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano ~/.openclaw/openclaw.json
   </code></pre>

   &#x20;

2. Locate the `"bind"` field and change its value from `"loopback"` to `"lan"` as shown:

   ```json
   "bind": "lan",
   ```

3. Enable remote HTTP-only connections, which will be used for Meshnet access, by adding the following block to the file, under the `"bind": "lan",` line:

   <pre class="language-json" data-overflow="wrap"><code class="lang-json">    "controlUi": {
         "enabled": true,
         "allowInsecureAuth": true
       },
   </code></pre>

   &#x20;\
   The modified area of the file should look as such:

   <figure><img src="/files/ejDtsdd9UrqkmO6U1wYe" alt="Extract from the modified configuration file."><figcaption></figcaption></figure>

   &#x20;

4. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.

5. Restart the OpenClaw gateway to apply the changes with the command below:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">openclaw gateway restart
   </code></pre>

If the changes to the configuration file were done correctly, the OpenClaw gateway should restart successfully and your AI assistant will be able to accept connections from the LAN and over Meshnet.

## Set up Meshnet

With the configuration changes applied, you can start setting up Meshnet.

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

Follow these steps to install NordVPN on your device:

1. Download and install the NordVPN Linux client by running the command below.

   <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;
2. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

   &#x20;
2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

   &#x20;
3. Enter the verification code sent to your email address.
4. Under **Access token**, click **Generate new token**.

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><figcaption></figcaption></figure></div>

   &#x20;
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**.

   <div align="left"><figure><img src="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Select **Copy and close**.
7. In your Proxmox shell, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   &#x20;\
   **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.

</details>

<details>

<summary>Log in using a URL</summary>

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.\
   &#x20;\
   **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.

</details>

{% 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 %}

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

Upon logging in, [enable Meshnet](/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:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

## Access OpenClaw over Meshnet

With Meshnet and OpenClaw setups finalized, you can connect to your OpenClaw instance using Meshnet.

1. Copy the Nord name or the Meshnet IP address of OpenClaw machine from the NordVPN application.
2. Open your internet browser.
3. In the URL bar, paste the copied Nord name or Meshnet IP address followed by `:18789/` and press **Enter**.\
   \
   **Example**\
   `secret.meerkat-fuji.nord:18789/`

Once the page loads, you will be greeted with an error message. This is expected, as OpenClaw requires authentication before granting access to the dashboard.

<figure><img src="/files/paKDbB7s87v5x085qkSC" alt="OpenClaw web gateway open in an internet browser."><figcaption></figcaption></figure>

### Get the authentication token

The default authentication method for OpenClaw is using a token. The token must be fetched from the device on which OpenClaw is installed. You can choose from two different methods to get it.

{% tabs %}
{% tab title="Method 1: using OpenClaw CLI" %}

1. Run the following command to display the OpenClaw dashboard details:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">openclaw dashboard --no-open
   </code></pre>

   &#x20;
2. The `Dashboard URL` address contains the login token for your OpenClaw dashboard. Copy all of the symbols following the `?token=` part of the URL to your clipboard.

   <figure><img src="/files/FhrFLTsR1pATgjiRMdwr" alt="Token highlighted in Terminal."><figcaption></figcaption></figure>

{% endtab %}

{% tab title="Method 2: using jq tool" %}
You can use [jq](https://github.com/jqlang/jq), a command-line JSON processor, to parse the token value directly from the OpenClaw configuration JSON file.

1. Install jq with this command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt install jq -y
   </code></pre>

   &#x20;
2. Use the command below to get the authentication token:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cat ~/.openclaw/openclaw.json | jq -r '.gateway.auth.token'
   </code></pre>

   &#x20;
3. Copy to token to your clipboard.

   <div align="left"><figure><img src="/files/hPwUd4XjA1vHYpfuUPNw" alt="Token highlighted in Terminal."><figcaption></figcaption></figure></div>

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

The command may work if the layout of your configuration file is different. In such a case, refer to the first method.
{% endhint %}
{% endtab %}
{% endtabs %}

### Authenticate the OpenClaw dashboard <a href="#authenticate-the-openclaw-dashboard" id="authenticate-the-openclaw-dashboard"></a>

1. Open your OpenClaw gateway dashboard.
2. From the menu on the left, select **Overview**.
3. Under **Gateway access**, locate the **Gateway token** field.
4. Paste in the authentication token copied earlier and click **Connect**.

   <div align="left"><figure><img src="/files/o1sReo7QJHgoDGrV3dHH" alt="Pasting the authentication token and clicking &#x22;Connect&#x22;."><figcaption></figcaption></figure></div>

You should see the **Status** on the right change to “Connected”.

### Chat to your AI assistant <a href="#chat-to-your-ai-assistant" id="chat-to-your-ai-assistant"></a>

Lastly, you can finalize setting up your OpenClaw AI assistant and begin chatting with it.

1. In the OpenClaw dashboard, from the menu on the left, select **Chat**.
2. Send any message to prompt the setup procedure.
3. Answer the questions provided by the AI agent to configure its properties.

That’s it. Your personal OpenClaw AI assistant is now ready to be used over a secure Meshnet connection from anywhere in the world. You can further improve it by setting up any of the various [integrations available for OpenClaw](https://openclaw.ai/integrations).


# Joint projects

Learn how to set up and work on joint projects over Meshnet.

Simultaneous collaboration is one of the most important factors for people working on a project. You get instant feedback from your peers and are able to make changes on the fly. However such joint solutions are usually cloud-based and can come at a cost. In most cases, self-hosting projects on a personal device is more convenient. The drawback of self-hosted configurations is that only people from the same local network are able to access the project.

With Meshnet, you can easily work on group projects remotely with your peers. Once a service is running on your machine, others can join and contribute to the work in a [Meshnet joint project](https://nordvpn.com/meshnet/joint-projects/). There is no need to set up a VPN connection or share information over the cloud. Meshnet connects devices to a virtual network, and they treat each other as if they were on the same LAN.

This section includes instructional articles for projects that you can work on with your friends.

### **Cooperative development**

* [Set up an NGINX web server and access it over Meshnet](/how-to/joint-projects/nginx-web-server-access)
* [Set up pair programming using tmux](/how-to/joint-projects/pair-programming-tmux)
* [Set up a Visual Studio Code server for remote development over Meshnet](/how-to/joint-projects/vs-code-server)
* [Use Meshnet for multi-screen Node.js development](/how-to/joint-projects/nodejs-multi-screen-development)
* [Use the Multi-user editing plugin in Unreal Engine over Meshnet](/how-to/joint-projects/unreal-engine-multi-user-editing)

### **Collaboration tools**

* [Use Nextcloud syncing with Meshnet](/how-to/joint-projects/nextcloud-file-syncing)

### **Community platforms**

* [Set up a private Mumble voice chat server](/how-to/joint-projects/mumble-voice-chat-server)
* [Host a private Rocket.Chat server](/how-to/joint-projects/private-rocket.chat-server)


# How to set up an NGINX web server and remotely access it over Meshnet

Learn how to configure an NGINX web server on Windows, macOS, and Linux and remotely access it using Meshnet.

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

Owning a [personal web server](https://nordvpn.com/cybersecurity/glossary/personal-web-server/) is a dream many people have. Self-hosting a website grants you complete control over its configuration during all development stages and enhances data privacy because the information does not leave your infrastructure.

A tool that is widely used for configuring web servers is [NGINX](https://www.nginx.com/resources/glossary/nginx/). It is free, open-source software that allows you to build and self-host websites. It can also function as a [reverse proxy](/how-to/remote-access/custom-host-names-using-reverse-proxy). However, the drawback of such a setup is that, without poking holes in your firewall, the server can only be accessed from the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN). Having a commonly used port exposed to the outside world is dangerous because it can be scanned and probed for vulnerabilities by attackers.

This is where [Meshnet ](https://nordvpn.com/meshnet/)comes to your aid. By using Meshnet, you can have a secure and encrypted tunnel from end devices to your web server without any custom configurations. The website can also be accessed by your friends or family, which you have as your [Meshnet peers](/features/linking-devices-in-meshnet).

Even though the NGINX web server can be run as a [Docker container](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/), this guide will focus on the standard setup process. You will learn how to configure a simple HTML web server and remotely access it from other devices using Meshnet.

## Configure a web server <a href="#configure-a-web-server-on-windows" id="configure-a-web-server-on-windows"></a>

In this part of the article, you can find instructions on how to configure the NGINX web server.

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

### Set up NGINX

To start setting up the web server, you will need to install NGINX.

1. Go to the [NGINX download page](http://nginx.org/en/download.html) and download the latest mainline version for Windows.&#x20;
2. Extract the downloaded archive.
3. Move the extracted folder to a convenient location — for example, the desktop.
4. Go inside the NGINX folder, open the **conf** folder, and locate the **nginx.conf** file.

   <div align="left"><figure><picture><source srcset="/files/fJEc3yLLEl47CuoiEDYL" media="(prefers-color-scheme: dark)"><img src="/files/0i0omElyxKFiX4pgHfmj" alt="nginx.conf file highlighted in the NGINX folder."></picture><figcaption></figcaption></figure></div>

   &#x20;
5. Open the **nginx.conf** file using a text editor, such as Notepad.
6. Locate the `listen` line and ensure that the number next to it is set to 80.

   <div align="left"><figure><img src="/files/nDStYtAuT6xdys033tZy" alt="Section of the nginx.conf file containing the port number highlighted."><figcaption></figcaption></figure></div>

   &#x20;
7. Save changes (**File** > **Save**) and exit.

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

If you do not change the [port number](https://nordvpn.com/blog/what-is-my-port/) to port 80, you will be required to specify the port from the `nginx.conf` file when accessing the website.

For example, if the port is set to 8080, you would need to enter the following in your internet browser:\
`localhost:8080`
{% endhint %}

### Control NGINX <a href="#control-nginx" id="control-nginx"></a>

You can control NGINX services by using the command line. Commands allow you to start, stop, and restart NGINX.

1. Locate the **nginx.exe** file in the NGINX folder, right-click it, and choose **Properties**.
2. Copy its full path, which is displayed next to **Location**.

   <div align="left"><figure><img src="/files/IzDS3eqSQPYeYtr7f5eE" alt="Full path of the NGINX folder highlighted. " width="375"><figcaption></figcaption></figure></div>

   &#x20;
3. Open the Windows Command Prompt by pressing the **Windows** <img src="/files/hNLhza7vIqpwOpUTP5ti" alt="" data-size="line"> key + **R** on your keyboard, typing in `cmd`, and pressing **Enter**.
4. In the Command Prompt window, enter `cd` and paste in the copied path surrounded by quotation marks.\
   &#x20;\
   **Example**

   ```bash
   cd "C:\Users\meshnet\Desktop\nginx-1.27.1\"
   ```

   &#x20;\
   Now, you can control the **nginx.exe** file using the Command Prompt.
5. Type in `nginx.exe` and press **Enter** to start the web server.\
   &#x20;\
   To check if the web server started, open an internet browser of your choice and enter `localhost` in the URL bar. If the setup is correct, you will be greeted with the default NGINX landing page.

   <div align="left"><figure><picture><source srcset="/files/Rvf8V0pdnUc4xQrlkkTQ" media="(prefers-color-scheme: dark)"><img src="/files/xevPZHIfy2y1YzUg1qse" alt="NGINX landing page visible after visiting localhost on an internet browser."></picture><figcaption></figcaption></figure></div>

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

If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click the **Allow access** button to allow incoming connections through the firewall.

![](/files/nNaeW6b7yMNCZEoOkx9Z)
{% endhint %}

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

You won't be able to run any other commands in the same Command Prompt that was used to start NGINX. To run any new NGINX-related commands, you should open a new command prompt window and navigate to the NGINX directory once again.
{% endhint %}

### Personalize your landing page <a href="#personalize-your-landing-page" id="personalize-your-landing-page"></a>

You can make adjustments to the landing page to customize the website to your preference.

1. In the NGINX folder, open the **html** folder and locate the **index.html** file.
2. Open **index.html** using a text editor, such as Notepad.
3. Make any necessary changes to the file using HTML.
4. Save changes (**File** > **Save**) and exit.
5. In the command prompt, run the following command to reload NGINX with the new configuration:\
   &#x20;

   ```bash
   nginx.exe -s reload
   ```

Lastly, visit `localhost` in your web browser once again to see the newly designed website.

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

The initial iteration of the web server may still be visible in the browser after reloading the NGINX server. This is because it is saved in the browser’s cache.&#x20;

To resolve this problem, [clear your cache](https://nordvpn.com/blog/how-to-clear-your-cache/) and try accessing the website once more.
{% endhint %}
{% endtab %}

{% tab title="macOS" %}
{% hint style="info" %}
**Note**

Homebrew is compatible with macOS Big Sur (Version 11) or later.

For this configuration, macOS Sonoma (Version 14.6.1) with an Intel processor was used.
{% endhint %}

### Install Homebrew

To install NGINX, you can use the [Homebrew](https://brew.sh/) package manager. Install Homebrew by taking these steps:

1. Open Terminal.
2. Enter the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   </code></pre>

   &#x20;\
   For additional information about the installation process, refer to [Homebrew documentation](https://docs.brew.sh/Installation).
3. Follow the on-screen instructions to finish the installation.

With Homebrew installed, you can proceed with installing NGINX.

### Install NGINX <a href="#install-nginx" id="install-nginx"></a>

To install NGINX using Homebrew, follow these steps:

1. Open **Terminal** and run the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew install nginx
   </code></pre>

   &#x20;
2. Wait for Homebrew to download and install NGINX with all of the required dependencies.

### Change the configuration file <a href="#change-the-configuration-file" id="change-the-configuration-file"></a>

By default, the NGINX port will be set to 8080. However, you can change it to port 80 to allow easier access to the web server via Meshnet.

<div align="left"><figure><picture><source srcset="/files/nFzDP4uNmzsLhbJ6wZiR" media="(prefers-color-scheme: dark)"><img src="/files/gQrFCmt0h8hGAHmHBL0w" alt="Port 8080 highlighted in the NGINX installation output"></picture><figcaption></figcaption></figure></div>

To change the port number for the NGINX web server, do the following:

1. Open the `nginx.conf` file using the Nano text editor by running this command in **Terminal**:\
   &#x20;\
   For Intel Macs:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano /usr/local/etc/nginx/nginx.conf
   </code></pre>

   &#x20;\
   For [Apple silicon Macs](https://support.apple.com/en-us/HT211814):

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano /opt/homebrew/etc/nginx/nginx.conf
   </code></pre>

   &#x20;
2. Locate the `listen` line and change the number next to it from 8080 to 80.

   <div align="left"><figure><picture><source srcset="/files/TxdeBimky13OBp0Jp5vk" media="(prefers-color-scheme: dark)"><img src="/files/SxvtXfrHfZZTy2pHccjD" alt="nginx.conf file section indicating the port number."></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Press **Control** + **X**, **Y**, and **Return** to save changes and exit.
4. Run the following command to restart the NGINX service:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew services restart nginx
   </code></pre>

With the service restarted, open an internet browser of your choice and enter localhost in the URL bar. If the setup is successful, you will be greeted with the default NGINX landing page.

<div align="left"><figure><picture><source srcset="/files/j2W2buAfvCmkX2uV8qmV" media="(prefers-color-scheme: dark)"><img src="/files/SctoZXF41QwJfRUMrfpj" alt="NGINX landing page visible after visiting localhost on an internet browser."></picture><figcaption></figcaption></figure></div>

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

If you do not change the port number to port 80, you will be required to specify the port from the `nginx.conf` file when accessing the website.

For example, if you leave the default port 8080, you would need to enter the following in your internet browser:\
`localhost:8080`
{% endhint %}

### Personalize your landing page <a href="#personalize-your-landing-page.1" id="personalize-your-landing-page.1"></a>

Now you should have the web server up and running. You can make adjustments to the landing page to customize the website to your preference.

1. Open **Terminal** and run the following command:\
   &#x20;\
   For Intel Macs:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano /usr/local/var/www/index.html
   </code></pre>

   &#x20;\
   For [Apple silicon Macs](https://support.apple.com/en-us/HT211814):

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano /opt/homebrew/var/www/index.html
   </code></pre>

   &#x20;
2. Make any necessary changes to the file using HTML.
3. After modifying the file, press **Control** + **X**, **Y**, and **Return** to save changes and exit.
4. Run the following command to restart the NGINX service:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew services restart nginx
   </code></pre>

   &#x20;\
   Enter your user password, if prompted.

Lastly, visit `localhost` in your web browser once again to see the newly designed website.

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

The initial iteration of the web server may still be visible in the browser after reloading the NGINX server. This is because it is saved in the browser’s cache.&#x20;

To resolve this problem, [clear your cache](https://nordvpn.com/blog/how-to-clear-your-cache/) and try accessing the website once more.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

For this configuration, Ubuntu 24.04.1 LTS was used.
{% endhint %}

### Set up NGINX <a href="#set-up-nginx.1" id="set-up-nginx.1"></a>

To start setting up the web server, you need to install NGINX.

1. Update all of your repositories and install NGINX by running the following command in **Terminal**:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install nginx -y
   </code></pre>

   &#x20;
2. Once the installation finishes, run the following command to open the NGINX configuration file using the Nano text editor.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /etc/nginx/sites-available/default
   </code></pre>

   &#x20;\
   For other Linux distributions, use this command:

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /etc/nginx/nginx.conf
   </code></pre>

   &#x20;
3. Locate the `listen` line and ensure that the number next to it is set to 80.

   <div align="left"><figure><img src="/files/ETYLwCHcL40EnaE3IhAO" alt="Section of the default file indicating the port number used by NGINX."><figcaption></figcaption></figure></div>

   &#x20;\
   If you do make any changes, press **Ctrl** + **X**, **Y**, and **Enter** to save and exit.

Now, open your internet browser and enter `localhost` into the URL bar. If the setup was correct, you will be greeted with the default NGINX landing page.

<div align="left"><figure><picture><source srcset="/files/OTi9gVbxSPEaQazRgZkp" media="(prefers-color-scheme: dark)"><img src="/files/dQQjI91gYRiZTLLi0fuN" alt="NGINX landing page visible after visiting localhost on an internet browser."></picture><figcaption></figcaption></figure></div>

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

If you do not change the [port number](https://nordvpn.com/blog/what-is-my-port/) to port 80, you will be required to specify the port from the `/etc/nginx/sites-available/default` file when accessing the website.

For example, if the port is set to 8080, you would need to enter the following in your internet browser:\
`localhost:8080`
{% endhint %}

### How to fix error 98

The most common error that you can encounter while trying to start NGINX is error 98. It may come with either of the following messages:

{% code overflow="wrap" %}

```bash
nginx: [emerg] bind() to failed (98: Address already in use)
nginx: [emerg] bind() to failed (98: Unknown error)
```

{% endcode %}

If you receive this error, you will not be able to finish the configuration without resolving it.

To fix the error, find what service is using the required port (for example, port 80) by running the following command:

{% code overflow="wrap" %}

```bash
sudo netstat -tulpn | grep :80
```

{% endcode %}

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

The `net-tools` package is required to use the `netstat` command.

It can be installed by executing the following command:

```bash
sudo apt install net-tools
```

{% endhint %}

In the output, you will see the name of the process and its process identification number (PID). With that information, you can kill the process by using `sudo kill <PID>`.&#x20;

**Example**

{% code overflow="wrap" %}

```bash
sudo kill 2059
```

{% endcode %}

<div align="left"><figure><img src="/files/CIQzELqkW3UwAzdGaH3j" alt="Terminal output showing processes that are using port 80."><figcaption></figcaption></figure></div>

Alternatively, you can either change the port of NGINX or the port of the other service.

### Personalize your landing page <a href="#personalize-your-landing-page.2" id="personalize-your-landing-page.2"></a>

Now you should have the web server up and running. You can make adjustments to the landing page to customize the website to your preference.

1. Open the `index.nginx-debian.html` file using the Nano text editor by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nano /var/www/html/index.nginx-debian.html
   </code></pre>

   &#x20;\
   If you do not have the `index.nginx-debian.html` file, use the following command to find the necessary .html file on your system.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ls /var/www/html
   </code></pre>

   &#x20;
2. Make any necessary changes to the file using HTML.
3. After modifying the file, press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.
4. If NGINX is still running, run the following command to restart it with the new change:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo nginx -s reload
   </code></pre>

   &#x20;\
   Otherwise, you can start NGINX by running the `sudo nginx` command.

Lastly, visit `localhost` in your web browser once again to see the newly designed website.

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

The initial iteration of the web server may still be visible in the browser after reloading the NGINX server. This is because it is saved in the browser’s cache.&#x20;

To resolve this problem, [clear your cache](https://nordvpn.com/blog/how-to-clear-your-cache/) and try accessing the website once more.
{% endhint %}
{% endtab %}
{% endtabs %}

## Access the web server using Meshnet <a href="#access-the-web-server-using-meshnet" id="access-the-web-server-using-meshnet"></a>

Once the web server is up and running, you can reach it remotely via Meshnet from your peer devices.

1. Copy the NGINX server device's Nord name from the NordVPN application.
2. Open your internet browser.
3. Paste the copied Nord name followed by a slash (/) to the URL field and press **Enter**.\
   &#x20;\
   **Example**

   <div align="left"><figure><picture><source srcset="/files/aapwFnc6CGnDuLlovoIo" media="(prefers-color-scheme: dark)"><img src="/files/YZjCuJOjJLTDhnOsaV8t" alt="Custom NGINX website showing after entering the Nord name to the URL bar."></picture><figcaption></figcaption></figure></div>


# How to use Nextcloud file syncing with Meshnet

Learn how to deploy a Nextcloud Docker container for remote file syncing over Meshnet.

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

[Nextcloud ](https://nextcloud.com/about/)is a free and open-source online collaboration platform. It offers a wide range of tools and applications, such as file sharing and synchronization, calendar, tasks, and workflow integrations. Nextcloud is scalable from personal use to enterprise-level environments.

In standard configurations, to share your Nextcloud servers with remote devices, you must set up public domain names and SSL certificates or port forwarding, which can be both expensive and time-consuming.

With [Meshnet](https://nordvpn.com/meshnet/), you can forget about the difficult networking procedures. With only a couple of tweaks to the Nextcloud configuration, your Meshnet peer devices can access the server over encrypted, private network tunnels without exposing Nextcloud to the internet.

While Nextcloud can be set up using various methods, such as a [virtual machine](https://github.com/nextcloud/vm) or a [standalone operating system](https://github.com/nextcloud/nextcloudpi/releases), this article will show you how to run Nextcloud in a [Docker container](https://www.docker.com/resources/what-container/) and access it over Meshnet.

## Install Docker <a href="#install-docker" id="install-docker"></a>

To begin the configuration, you must have Docker installed on your device. Instructions on how to download and install Docker can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux (application with a GUI)](https://docs.docker.com/desktop/install/linux-install/)
* [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)

## Create a Nextcloud Docker container <a href="#create-a-nextcloud-docker-container" id="create-a-nextcloud-docker-container"></a>

After installing Docker on your system, you have the ability to deploy various applications and services as Docker containers. Now you can proceed with creating your Nextcloud container.

### Creating a volume <a href="#creating-a-volume" id="creating-a-volume"></a>

First, you need to create a specific [Docker volume](https://docs.docker.com/storage/volumes/) (directory) where the container’s files will be stored.

#### Method 1: Using Docker Desktop <a href="#method-1-using-docker-desktop" id="method-1-using-docker-desktop"></a>

This method utilizes the Docker Desktop application to create a volume for the Nextcloud Docker container.

1. Open the Docker Desktop application.

2. From the menu on the left, select **Volumes**.<br>

   <div align="left"><figure><img src="/files/VEvyPazh6P8mAA24VRmx" alt="Docker Desktop application"><figcaption></figcaption></figure></div>

3. Click the **Create** button in the upper-right corner.

4. Name it `nextcloud` and click **Create**.\
   &#x20;

   ![Docker Desktop new volume](/files/AyRAmS57YK65kQv3o6PG)

   &#x20;

5. The newly created volume will now be visible in the **Volumes** section.

#### Method 2: Using the command line <a href="#method-2-using-the-command-line" id="method-2-using-the-command-line"></a>

This method shows you how to create a volume for your Nextcloud Docker container via the command line.

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).
2. Run the following command to create a volume called `nextcloud`:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker volume create nextcloud
   </code></pre>

If the creation was successful, you will see the name of your volume in the command line window.

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

Once the volume has been created, you can deploy the Nextcloud container itself.

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

1. Open **Command Prompt**.
2. Execute the following `docker run` command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker run -d ^
   --name nextcloud ^
   --restart=unless-stopped ^
   -p 8080:80 ^
   -v nextcloud:/var/www/html ^
   nextcloud
   </code></pre>

Docker will [pull the Nextcloud image](https://docs.docker.com/engine/reference/commandline/pull/) from Docker Hub and create the container.
{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.
2. Execute the following `docker run` command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker run -d \
   --name nextcloud \
   --restart=unless-stopped \
   -p 8080:80 \
   -v nextcloud:/var/www/html \
   nextcloud
   </code></pre>

Docker will [pull the Nextcloud image](https://docs.docker.com/engine/reference/commandline/pull/) from Docker Hub and create the container.
{% endtab %}
{% endtabs %}

## Set up Nextcloud <a href="#set-up-nextcloud" id="set-up-nextcloud"></a>

With the container up and running, your Nextcloud service is listening on port 8080 (unless changed in the `docker run` command). To complete the initial configuration, do the following:

1. Open your internet browser and visit this URL:\
   `http://localhost:8080/`<br>
2. Enter authentication details for your admin account, select the preferred database, and click **Install**.\
   \
   ![Nextcloud admin account creation](/files/wSrglDEvAsDbzPKUQpfs)

   &#x20;
3. Finish the setup procedure by following the on-screen instructions.

Now, you have a fully customizable Nextcloud instance.

<figure><img src="/files/NWkUDPefcjKjjFojUhsS" alt="Nextcloud dashboard"><figcaption></figcaption></figure>

## Allow Meshnet connections <a href="#allow-meshnet-connections" id="allow-meshnet-connections"></a>

At this time, Nextcloud is only reachable from the host device. You need to adjust its configuration file to allow connections over Meshnet.

### Method 1: Using Docker Desktop <a href="#method-1-using-docker-desktop.1" id="method-1-using-docker-desktop.1"></a>

This method uses the built-in terminal in Docker Desktop to make changes.

1. Open Docker Desktop and click your Nextcloud container entry.

2. Switch to the **Terminal** tab.

3. Run the following command to update the repository list, install Nano, and open the `config.php` file using Nano:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">apt update &#x26;&#x26; apt install nano &#x26;&#x26; nano config/config.php
   </code></pre>

   &#x20;

4. Locate the `trusted_domains` array and append the following two lines, where `<NordName>` is the host device’s Nord name and `<MeshnetIP>` is the host device’s Meshnet IP address:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">1 => '&#x3C;NordName>',
   2 => '&#x3C;MeshnetIP>',
   </code></pre>

   \
   **Example**

   <div align="left"><figure><img src="/files/kYYzp77VdzKf8HcjVyM4" alt="Nord name and Meshnet IP address added to the &#x27;trusted domains&#x27; array"><figcaption></figcaption></figure></div>

5. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit.

6. Restart the Nextcloud container to apply the changes by clicking the restart button in Docker Desktop.<br>

   <div align="left"><figure><img src="/files/GWoUlZub2nC4qZ0xjjuw" alt=""><figcaption></figcaption></figure></div>

### Method 2: Using the command line <a href="#method-2-using-the-command-line.1" id="method-2-using-the-command-line.1"></a>

This method uses Nextcloud’s built-in command-line interface called `occ`.

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).

2. Add new trusted domains by executing the following two commands, where `<NordName>` is the host device’s Nord name and `<MeshnetIP>` is the host device’s Meshnet IP address:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker exec -u www-data -it nextcloud php occ config:system:set trusted_domains 1 --value=&#x3C;NordName>

   docker exec -u www-data -it nextcloud php occ config:system:set trusted_domains 2 --value=&#x3C;MeshnetIP>
   </code></pre>

   \
   **Example**

   <div align="left"><figure><img src="/files/QQXVjjiNSrd1mRF1l8PH" alt="Adding trusted domains using occ"><figcaption></figcaption></figure></div>

3. Check if the Nord name and Meshnet IP address have been assigned by running this command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker exec -u www-data -it nextcloud php occ config:system:get trusted_domains
   </code></pre>

   &#x20;

   <div align="left"><figure><img src="/files/8mLsLQ3shiq4kgWejXop" alt="List of trusted domains"><figcaption></figcaption></figure></div>

4. Restart the Nextcloud container to apply the changes.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">docker restart nextcloud
   </code></pre>

## Connect to Nextcloud over Meshnet <a href="#connect-to-nextcloud-over-meshnet" id="connect-to-nextcloud-over-meshnet"></a>

After adding the Meshnet addresses to the trusted domains, your Nextcloud instance can be reached by Meshnet peer devices.

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

If you're hosting Nextcloud on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using Nextcloud software <a href="#method-1-using-nextcloud-software" id="method-1-using-nextcloud-software"></a>

To use file syncing between different machines, you need to install the Nextcloud application on client devices.

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

Folder synchronization is possible only on desktop devices. On mobile devices, you can only upload and download files manually.
{% endhint %}

{% tabs %}
{% tab title="Windows, macOS, and Linux" %}

1. Download and install the Nextcloud application from the [Nextcloud website](https://nextcloud.com/install/).
2. Launch Nextcloud and click **Log in**.
3. In the server address field, enter `http://`, followed by the Nord name of the host device, and `:8080`.<br>

   **Example**\
   `http://secret.meerkat-himalayas.nord:8080`\
   \
   ![Nextcloud application window](/files/LzKVp3wBxDJN6X70kXYJ)

   &#x20;
4. Click **Next** and proceed with the login procedure.
5. Select your folder synchronization options and click **Connect**.\
   \
   ![Folder synchronization window](/files/naM4BdWHE4H70W8pGYfV)

   &#x20;

Nextcloud settings can now be accessed from the system tray (on Windows) and the menu bar (on macOS or Linux).

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

For ease of use, you may download the Nextcloud application from the [Snap Store](https://snapcraft.io/nextcloud) on compatible Linux distributions.
{% endhint %}
{% endtab %}

{% tab title="Android and iOS" %}

1. Download and install the Nextcloud application on your device.
   * [For Android](https://play.google.com/store/apps/details?id=com.nextcloud.client\&hl=en\&gl=US)
   * [For iOS](https://apps.apple.com/us/app/nextcloud/id1125420102)
2. Open Nextcloud and tap **Log in**.
3. In the server address field, enter `http://`, followed by the Nord name of the host device and `:8080`.<br>

   **Example**\
   `http://secret.meerkat-himalayas.nord:8080`\
   \
   ![Nextcloud application window](/files/fJnb79YWewbrJHXRo6B7)

   &#x20;
4. Log in to your Nextcloud account.

Now you have full access to the Nextcloud interface directly from the application.
{% endtab %}
{% endtabs %}

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

To access the Nextcloud dashboard via a browser, do these steps:

1. Copy the Nord name of the host device from the NordVPN application.

2. Open your internet browser.

3. Paste the copied Nord name followed by `:8080/` to the URL field and press **Enter**.\
   \
   **Example**\
   `secret.meerkat-everest.nord:8080/`<br>

   <div align="left"><figure><img src="/files/0aa8VuXalb3OsnXMvt7b" alt="Nextcloud login page"><figcaption></figcaption></figure></div>

4. Log in to your account.

Now you can freely navigate your Nextcloud from a remote device. You can view, upload, or remove files and use all other applications inside Nextcloud.

<div align="left"><figure><img src="/files/8A8WRgrq1RY9za8iQGae" alt="Nextcloud file list"><figcaption></figcaption></figure></div>


# How to set up pair programming using tmux

Learn how to use tmux for remote pair programming on macOS and Linux over Meshnet.

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

Command-line interface (CLI) text editors, such as [Vim](https://www.vim.org/), are widely used by developers. CLI development environments can offer many advantages over their counterparts, such as the ease of initial configuration, the ability to interact with other CLI utilities, and the convenience of working with remote servers. All of these factors can contribute to a large improvement in productivity.

A popular open-source terminal multiplexer [tmux](https://en.wikipedia.org/wiki/Tmux) is often used for CLI work. This tool can be beneficial on servers and devices that have only a single terminal interface. You can create several sessions for different workflows, for example:

* Interacting with Docker container shells
* Pair programming
* Continuous file transfers

By incorporating [Meshnet](https://nordvpn.com/meshnet/), devices from different networks can be connected to a single, secure virtual network. With this configuration, the developers' devices can be easily reached using remote access methods, such as [secure shell](https://en.wikipedia.org/wiki/Secure_Shell) (SSH). As a result, a shared tmux session between remote devices can be established.

This article contains instructions on how to set up tmux on macOS and Linux devices and initiate a shared terminal session using Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

To use tmux for pair programming, your system must allow SSH connections from other devices in your Meshnet. See the [Enable SSH access](/how-to/remote-access/access-remote-systems-over-ssh#enable-ssh-access) section of the "How to access remote systems over Meshnet using SSH" article for instructions on how to enable SSH on your devices.

## Installing tmux <a href="#installing-tmux" id="installing-tmux"></a>

{% tabs %}
{% tab title="Linux" %}
You can install tmux on Linux by running the following command in the terminal:

{% code overflow="wrap" %}

```bash
sudo apt install tmux -y
```

{% endcode %}
{% endtab %}

{% tab title="macOS" %}
To install tmux on macOS, you need to use the [Homebrew](https://brew.sh/) package manager.

1. Open **Terminal**.
2. Enter the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   </code></pre>

   &#x20;

   For additional information about the installation process, refer to [Homebrew documentation](https://docs.brew.sh/Installation).
3. Follow the on-screen instructions to finish the installation.
4. install tmux by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew install tmux
   </code></pre>

{% endtab %}
{% endtabs %}

## Connecting via SSH <a href="#connecting-via-ssh" id="connecting-via-ssh"></a>

To participate in the shared session, you have to access the host device from your client device via SSH.

1. Open **Command Prompt** (on Windows) or **Terminal** (on Linux or macOS).
2. Enter the following command, where `<username>` is your remote PC account name and `<server>` is the Nord name or Meshnet IP of the computer you want to access:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh &#x3C;username>@&#x3C;server>
   </code></pre>

   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh ubuntu@secret.meerkat-andes.nord
   </code></pre>

   or

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh ubuntu@100.96.239.181
   </code></pre>

   &#x20;
3. The first time you connect, you will be asked to verify the authenticity of the server. This message is displayed to make sure you are connecting to the correct remote server. Type `yes` to continue, as shown:

   <div align="left"><figure><img src="/files/FQ8sJozKdan7VzHCMhB1" alt="SSH key fingerprint confirmation"><figcaption></figcaption></figure></div>

   &#x20;
4. Enter the password for the specified username.

The SSH connection will be established, and you will have access to the host device’s terminal. However, for now, both terminal instances work separately.

## Controlling tmux <a href="#controlling-tmux" id="controlling-tmux"></a>

With tmux installed and SSH configured, you can start using the terminal-sharing capabilities of tmux.

### Start a shared session <a href="#start-a-shared-session" id="start-a-shared-session"></a>

On the host device’s terminal, run the following command, where `<SessionName>` is any name for the session:

{% code overflow="wrap" %}

```bash
tmux new -s <SessionName>
```

{% endcode %}

**Example:**

{% code overflow="wrap" %}

```bash
tmux new -s MeshnetSession
```

{% endcode %}

The terminal window will update and clear any commands that were entered previously.

### Join a shared session <a href="#join-a-shared-session" id="join-a-shared-session"></a>

After accessing the host via SSH, run the following command, replacing `<SessionName>` with the name of the active tmux session:

{% code overflow="wrap" %}

```bash
tmux attach -t <SessionName>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
tmux attach -t MeshnetSession
```

{% endcode %}

The terminal window will update, and you will be connected to the tmux shared session.

While you are attached to the tmux session, the terminal will update on both devices in real time. This means that any input on one machine will be seen on the other.

### Detach from a shared session <a href="#detach-from-a-shared-session" id="detach-from-a-shared-session"></a>

If you wish to disconnect from the tmux session without fully stopping it, you can do so by pressing **Ctrl** + **B** and **D** on your keyboard or running:

{% code overflow="wrap" %}

```bash
tmux detach
```

{% endcode %}

### Stop a shared session <a href="#stop-a-shared-session" id="stop-a-shared-session"></a>

If you wish to fully stop the tmux session, you can use the following command:

{% code overflow="wrap" %}

```bash
tmux kill-session
```

{% endcode %}

For additional tmux commands and options, refer to the [tmux manual page](http://man.openbsd.org/OpenBSD-current/man1/tmux.1).

You may now securely collaborate using only one terminal instance between two or more remote devices.


# How to set up a Visual Studio Code server for remote development over Meshnet

Learn how to set up a Visual Studio Code server on Linux and macOS and access it remotely using Meshnet.

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

[Visual Studio Code](https://code.visualstudio.com/) (VS Code) is a free and open-source code editor. It is a more lightweight alternative to the [Visual Studio](https://visualstudio.microsoft.com/) integrated development environment (IDE). VS Code provides a heavily customizable and easy-to-use interface for most development needs.

With traveling and work from anywhere (WFA) becoming more popular, the need for a centralized and easily accessible development environment is growing. With the combination of [Meshnet ](https://nordvpn.com/meshnet/)and the open-source project [code-server](https://coder.com/docs/code-server/latest), you can host your own VS Code server and securely work on all of your projects using any device from anywhere in the world.

The code-server tool creates a VS Code instance that can be accessed using an internet browser. Meshnet ensures an encrypted network tunnel between the connecting devices and the server. This network configuration allows you to work on your projects remotely and securely.

This article contains instructions on how you can install code-server on Linux and macOS and access the created VS Code server from remote devices over Meshnet.

## Install code-server

{% tabs %}
{% tab title="Linux" %}
{% hint style="info" %}
**Note**

Ubuntu 24.04.1 LTS distribution is used as an example in this article.
{% endhint %}

To install code-server on Linux:

1. Open **Terminal**.
2. Download and execute the installation script by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl -fsSL https://code-server.dev/install.sh | sh
   </code></pre>

   &#x20;
3. Once the script finishes, enter this command to ensure that the code-server background process is started each time the system reboots:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo systemctl enable --now code-server@$USER
   </code></pre>

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

If you want a preview of the installation process before proceeding, you can use this command:

{% code overflow="wrap" %}

```bash
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
```

{% endcode %}
{% endhint %}
{% endtab %}

{% tab title="macOS" %}
For convenient deployment and control, use the [Homebrew](https://brew.sh/) package manager to install code-server on macOS.

### Installing Homebrew <a href="#installing-homebrew" id="installing-homebrew"></a>

1. Open **Terminal**.
2. Enter the following command to install Homebrew:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   </code></pre>

   &#x20;\
   For additional information about the installation process, refer to the [Homebrew documentation](https://docs.brew.sh/Installation).
3. Follow the on-screen instructions to finish the Homebrew installation.

### Installing code-server using Homebrew <a href="#installing-code-server-using-homebrew" id="installing-code-server-using-homebrew"></a>

1. Install code-server by running the following command in the terminal:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew install code-server
   </code></pre>

   &#x20;
2. Generate the required configuration files by restarting code-server with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew services start code-server
   </code></pre>

   &#x20;
3. Check the status of the code-server service using the provided command. The output should indicate that the service is started.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">brew services list
   </code></pre>

   &#x20;&#x20;

   <figure><picture><source srcset="/files/g3LIRO2tFAlR0TRgE6Aq" media="(prefers-color-scheme: dark)"><img src="/files/oIO798bZpOuB7MYC935f" alt="Status of the &#x27;code-server&#x27; process is started"></picture><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

## Allow connections to your VS Code server <a href="#allow-connections-to-your-vs-code-server" id="allow-connections-to-your-vs-code-server"></a>

Some changes to the code-server configuration file are required to allow connections from other devices. By default, the server listens only on `127.0.0.1:8080`. This means that no other devices can reach it.

1. Open **Terminal**.
2. Open the code-server configuration file using the Nano text editor by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano ~/.config/code-server/config.yaml
   </code></pre>

   &#x20;
3. Change the IP and port combination in the first line to `0.0.0.0:8080` as shown:

   <figure><img src="/files/oer1q9zMAa42VTlMtnnZ" alt="Changing bind-addr to 0.0.0.0:8080 in the config.yaml file"><figcaption></figcaption></figure>

   &#x20;
4. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the file.

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

In the same `config.yaml` file, you can find the login password for your VS Code server, which is necessary for every device that connects to the server.

To change the password, edit the string following `password:` in the `config.yaml` file.
{% endhint %}

## Start your VS Code server  <a href="#start-your-vs-code-server" id="start-your-vs-code-server"></a>

After altering the configuration file, you can restart the code-server process.

{% tabs %}
{% tab title="Linux" %}
Run the following command to apply changes and restart the code-server process:

{% code overflow="wrap" %}

```bash
sudo systemctl restart code-server@$USER
```

{% endcode %}
{% endtab %}

{% tab title="macOS" %}
Run the following command to apply changes and restart the code-server process:

{% code overflow="wrap" %}

```bash
brew services restart code-server
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Access your VS Code server over Meshnet <a href="#access-your-vs-code-server-over-meshnet" id="access-your-vs-code-server-over-meshnet"></a>

Your VS Code server is now up and running. Due to the changes in the `config.yaml` file, the server can be reached from the same local area network (LAN) and by your Meshnet peer devices.

To access your server using Meshnet:

1. Copy the Nord name of the VS Code server device from the NordVPN app.
2. Open your internet browser.
3. Paste the copied Nord name followed by `:8080/` to the URL field and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-atlas.nord:8080/` \
   &#x20;

   <figure><img src="/files/aW2itXNUizM5yX5wjnsv" alt="The code-server login screen after entering the Nord name and port 8080 to the internet browser"><figcaption></figcaption></figure>

   &#x20;
4. Enter the login password and click **Submit**.
5. Select the **Trust the authors of all files in the parent folder** option and click **Yes, I trust the authors**.

   <div align="left"><figure><picture><source srcset="/files/vDAgPPF2ZCLHFqlgh9KS" media="(prefers-color-scheme: dark)"><img src="/files/5CNsSpu5ARmUvRkQ4YBB" alt="Confirmation that the authors of the files are trusted" width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Follow the on-screen guidelines to customize your VS Code interface.

You now have access to a fully functional VS Code instance and can work on your development projects directly from the internet browser. In addition, your Meshnet peer devices can connect to your VS Code server and work on the same project in real time.


# How to use Meshnet for multi-screen Node.js development

Discover how you can optimize your Node.js development processes using Meshnet.

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

[Node.js](https://nodejs.org/en/about) is an open-source, cross-platform runtime environment that is used for web app development. It allows developers to use JavaScript to build scalable, high-performance web applications.

Node.js also comes with an HTTP server module, which can be used to create and serve static web pages on the local device. This makes it easy for developers to test their applications locally, with changes and updates reflected in real time on the web app.

By incorporating [Meshnet](https://nordvpn.com/meshnet/) into your development process, the HTTP server feature of Node.js allows for a more efficient development process because you can make changes to the project and see the results immediately on other devices. In addition, the web application can easily be [accessed from remote devices](https://nordvpn.com/meshnet/remote-access/) even during the development stage.

This article showcases how junior developers can use Meshnet to monitor the development of their Node.js project from other devices.

## Installing Node.js <a href="#installing-node.js" id="installing-node.js"></a>

To begin, you need to download and install Node.js on your device.

* Windows and macOS installation packages can be downloaded from the [Node.js downloads page.](https://nodejs.org/en/download)
* For Linux distributions, installation instructions are available on the [NodeSource GitHub page](https://github.com/nodesource/distributions).

## Creating a Node.js project <a href="#creating-a-node.js-project" id="creating-a-node.js-project"></a>

You can create and control Node.js projects using the node package manager (`npm`) commands via a command-line interface (CLI). The package manager comes with a package runner `npx`, which is used to run JavaScript packages from the `npm` registry.

### Prepare your application <a href="#prepare-your-application" id="prepare-your-application"></a>

To create a [Next.js](https://nextjs.org/docs/getting-started) application in your Node.js project:

1. Open **PowerShell** (on Windows) or **Terminal** (on macOS and Linux).
2. Create a new folder for your project using the `mkdir` command and navigate to it using `cd`.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir node-projects
   cd node-projects
   </code></pre>

   &#x20;
3. Create your new application using the `create-next-app` package by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">npx create-next-app@latest
   </code></pre>

   &#x20;\
   If prompted, press **Enter** to install the `create-next-app` package.
4. Type in the name of your project and press **Enter**.
5. Select which options you want to use in your app.

   <figure><picture><source srcset="/files/2NdrrOaUOpqCYDRN1g5B" media="(prefers-color-scheme: dark)"><img src="/files/VemgeZ1eDQ1u4XKAunKw" alt="Selecting options for the Node.js application in the command line."></picture><figcaption></figcaption></figure>

   &#x20;
6. Wait for the dependencies to be installed.

You should receive a success message when the process finishes.

<figure><picture><source srcset="/files/JFNKJ63NPbHzxk18qBle" media="(prefers-color-scheme: dark)"><img src="/files/f3PacejyAVRmkCdAInzp" alt="Message indicating that the Next.js application has been created."></picture><figcaption></figcaption></figure>

### Test the development server <a href="#start-the-development-server" id="start-the-development-server"></a>

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

If you are using a CLI text editor and a device with a single terminal interface, you need to use a terminal multiplexer, such as [tmux](/how-to/joint-projects/pair-programming-tmux), to keep the server active and edit the app's files at the same time.
{% endhint %}

Once the project is created, you can start the development server to visually inspect it.

1. Using the command line, run the following command:\
   &#x20;

   ```
   npm run dev
   ```

   &#x20;\
   After a few seconds, your app should start and you should see a `ready` message.

   <figure><picture><source srcset="/files/Un3fHfGZW0WABYWNNU6u" media="(prefers-color-scheme: dark)"><img src="/files/A3TnK3mojvHElZpBNt2g" alt="Ready message indicating that the development server has been started."></picture><figcaption></figcaption></figure>

   &#x20;
2. Open your internet browser.
3. In the URL field, enter `localhost:3000/` and press **Enter**.

You should now see the default Next.js landing page in your browser.

<div align="left"><figure><img src="/files/zHS4WtQS4i7wmsGsjGHz" alt="URL of the Next.js landing page highlighted."><figcaption></figcaption></figure></div>

### Modify your landing page <a href="#modify-your-landing-page" id="modify-your-landing-page"></a>

After confirming that the server is running as expected, you can start developing your app by editing the project's files. For demonstration purposes, this article provides an example of modifying the landing page.

1. From the previously opened landing page, note the page file's location.

   <div align="left"><figure><img src="/files/0qimrnlRJuvt4aLbvfMJ" alt="Path to the &#x22;page.js&#x22; file highlighted on the Next.js app landing page." width="375"><figcaption></figcaption></figure></div>

   &#x20;\
   Depending on your choice when creating the project, it will be either:

   * `/app/page.js`
   * `/src/app/page.js` \
     &#x20;
2. Open the page.js file using a text or code editor of your choice, for example, Nano, Vim, Notepad, or Visual Studio Code.
3. Make any preferred changes to the landing page using JavaScript.
4. Save your changes and exit the file.

## Checking results using Meshnet <a href="#checking-results-using-meshnet" id="checking-results-using-meshnet"></a>

Your new web app should now be up and running. You can access it over Meshnet using any other device to see the app you created. To access your project:

1. Copy the Nord name of the device running Node.js from the NordVPN application.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name, followed by `:3000`, and press **Enter**.

Now you should see the visual result of the `page.js` file.

<figure><img src="/files/nLZ8cRhz6Pnl6wEsjS0P" alt="Landing page of the Next.js application accessed using the Nord name."><figcaption></figcaption></figure>

Whenever you make a change to the `page.js` file and save it, the web interface will update automatically. This allows you to monitor the development progress from any device. Additionally, you can share your results with people from remote locations with ease.

<figure><img src="/files/7C5Yeh6syU8llYWLmIEY" alt="GIF showcasing real time updates of the landing page"><figcaption></figcaption></figure>


# How to use the Multi-user editing plugin in Unreal Engine over Meshnet

Discover how to collaborate on your Unreal Engine projects using the Multi-user editing plugin over Meshnet.

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

[Unreal Engine](https://www.unrealengine.com/en-US/) is a development platform that provides tools and technologies for designing and creating immersive virtual environments. It is mainly used for video game development, but can also be utilized to create 3D simulations and visual effects.

The [Unreal Engine Multi-user editing plugin](https://docs.unrealengine.com/5.1/en-US/multi-user-editing-in-unreal-engine/) allows multiple team members to collaborate on the same project at the same time, making changes to the game world, assets, and code, and seeing the results instantly. The ability to cooperate in real time can greatly increase the developers' efficiency and improve morale through increased interaction with colleagues.

Additionally, with Meshnet, working on [joint projects](https://nordvpn.com/meshnet/joint-projects/) in Unreal Engine becomes much easier. Meshnet allows you to simulate a [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) connection with remote devices. This network configuration enables developers to work from anywhere in a secure environment, without needing to set up [VPN connections](https://nordvpn.com/what-is-a-vpn/).

This guide contains instructions on using the Unreal Engine Multi-user editing plugin remotely over Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that:

* You have an active [Epic Games account](https://www.epicgames.com/id/register).
* You have [installed Unreal Engine](https://docs.unrealengine.com/5.1/en-US/installing-unreal-engine/).
* All users have the same Unreal Engine project on their devices.

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

For this article, Unreal Engine version 5.1.1 is used as an example.
{% endhint %}

## Install the Multi-user editing plugin <a href="#install-the-multi-user-editing-plugin" id="install-the-multi-user-editing-plugin"></a>

First, you need to install the Multi-user editing plugin on all devices that will connect to the shared session. To install the plugin:

1. Launch **Unreal Engine**.
2. Open your project.
3. From the menu bar, select **Edit** > **Plugins**.
4. In the search field, type in `multi-user`.
5. Find the **Multi-user editing** plugin and click the checkbox to enable it.

   <figure><img src="/files/chO1h435rwJeu84kHd5g" alt="Enabling the Multi-user editing plugin."><figcaption></figcaption></figure>

   &#x20;
6. In the pop-up message, click **Yes** to confirm.
7. Click **Restart now** to install the plugin and restart your project.

## Prepare Unreal Engine for multi-user editing <a href="#prepare-unreal-engine-for-multi-user-editing" id="prepare-unreal-engine-for-multi-user-editing"></a>

It is recommended to configure unique multi-user settings for all devices. This way, it is easier to distinguish one device from the other and the changes each user makes. On all participating computers:

1. With your project open, from the menu bar, select **Edit** > **Project settings**.
2. From the list on the left, click **Multi-user editing**.
3. Configure the following settings:
   * Check the **Enable multi-user editing toolbar button** checkbox.
   * In the **Display name** field, enter any display name for your computer.
   * In the **Avatar color** field, choose any color for your computer.\
     &#x20;\
     **Example**

     <figure><img src="/files/nd1nVX4zyh44aG6TaMKu" alt="Customizing the Multi-user editing options."><figcaption></figcaption></figure>

     &#x20;
4. In the main Unreal Editor window, in the lower-right corner, click **Restart now** to apply the changes.

## Configure the network settings <a href="#configure-the-network-settings" id="configure-the-network-settings"></a>

Before starting the server, you need to make some adjustments to the network configuration in Unreal Engine.

### Setting up the server host <a href="#setting-up-the-server-host" id="setting-up-the-server-host"></a>

On the device that will be used to host the server, complete the following steps:

1. With your project open, from the menu bar, select **Edit** > **Project settings**.
2. From the list on the left, click **Multi-user editing**.
3. Under **Client settings**, expand the **Advanced** section.
4. In the **Server port** field, enter a port number for your server, other than 6666. For example, 7000.

   <figure><img src="/files/kF6b2beaJiRiYcruRv50" alt="Entering 7000 in to the Server port field."><figcaption></figcaption></figure>

   &#x20;
5. Close the **Project settings** window.

Your device is now ready for hosting the multi-user editing server and accepting connections from other devices.

### Setting up the client devices <a href="#setting-up-the-client-devices" id="setting-up-the-client-devices"></a>

Make sure that all client devices have the server host specified in their project settings. Otherwise, Unreal Engine won’t locate the server, and the plugin will not function as intended. To set up the client devices:

1. With your project open, from the menu bar, select **Edit** > **Project settings**.
2. From the list on the left, click **UDP messaging**.
3. Under **Transport**, ensure that the **Unicast endpoint** is set to `0.0.0.0:0`.
4. Expand the **Advanced** section.
5. Next to **Static endpoints**, click the Add element button.
6. In the new field, enter `<MeshnetIP>:<Port>`, replacing `<MeshnetIP>` with the server host’s Meshnet IP address and `<Port>` with the port number chosen by the server host in step 4 of [Setting up the server host](#setting-up-the-server-host).\
   &#x20;\
   **Example**

   <figure><img src="/files/o05Ug6gTYXHJeyQk28qW" alt="Adding Meshnet IP with the selected port as a static endpoint."><figcaption></figcaption></figure>

   &#x20;
7. Close the **Project settings** window.

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

If you change the port number on the server host device, you must also change it in the **Static endpoints** entry on all client devices.
{% endhint %}

## Multi-user editing over Meshnet <a href="#multi-user-editing-over-meshnet" id="multi-user-editing-over-meshnet"></a>

With all devices configured, you can proceed to start your development server and connect to it using Meshnet.

### Starting the editing server <a href="#starting-the-editing-server" id="starting-the-editing-server"></a>

On the server host device, take these steps to start the server:

1. With your project open, in the toolbar, click the "Open session browser" button.

   <div align="left"><figure><img src="/files/UpVTnnas9GNMuvWD75ku" alt="Clicking the &#x27;Open session browser&#x27; button form the toolbar."><figcaption></figcaption></figure></div>

   &#x20;
2. In the **Multi-user browser** window, click **Launch a server**.
3. Once the server is initialized, in the **Multi-user browser** window, click the **Create session** button.

   <div align="left"><figure><img src="/files/JTEChHceqAAMmORIddx3" alt="Clicking &#x27;Create session&#x27; in the Multi-user browser window."><figcaption></figcaption></figure></div>

   &#x20;
4. In the new window, in the **Session** column, enter the name of your session.
5. Click the "Create a session" button on the right.

   <figure><img src="/files/6xVV9aQfi3ufE8HY05sT" alt="Clicking the &#x27;Create a session&#x27; button."><figcaption></figcaption></figure>

The server and the shared session are now up and running. In the **Multi-user browser** window, under **Clients**, you will see your custom color and display name.

<figure><img src="/files/2QR0eI8FwMqOqApkyDjV" alt="Custom username visible in the Multi-user browser window."><figcaption></figcaption></figure>

### Joining the editing server <a href="#joining-the-editing-server" id="joining-the-editing-server"></a>

Once the server is active and a session is created by the server host, you can join the server from other devices. To join:

1. With your project open, in the toolbar, click the Open session browser button.
2. In the new window, double-click the session name created by the server host.

   <figure><img src="/files/feMKJt7fjv9mO6TYk295" alt="Selecting the active Meshnet session in Multi-user browser."><figcaption></figcaption></figure>

Your display name will show up in the **Multi-user browser** window, under **Clients**, indicating a successful connection to the server.

<figure><img src="/files/fJXeNWymPZzCC5vCBheQ" alt="Two clients connected to the Multi-user editing session."><figcaption></figcaption></figure>

Now you can remotely cooperate with your peers in Unreal Engine with the help of Meshnet.


# How to set up a private Mumble voice chat server

Discover how you can host a private Mumble voice chat server on Windows, macOS, and Linux and communicate with your friends over Meshnet.

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

In the realm of [online gaming](https://nordvpn.com/gaming/) and collaborative work, clear and reliable vocal communication is crucial. Whether you're strategizing with your teammates during a heated match or collaborating on a [joint project](https://nordvpn.com/meshnet/joint-projects/), efficient communication can make all the difference.

[Mumble](https://www.mumble.info/) is a popular, free, and open-source software tool designed for voice chat that provides high-quality, low-latency communication between users. By hosting your own Mumble server, you can customize your server configuration, manage user permissions, and avoid dependence on cloud-based communication services. However, accepting outside connections to your self-hosted server requires [port forwarding](https://nordvpn.com/blog/port-forwarding/), which can greatly reduce the security of your home network.

[Meshnet](https://nordvpn.com/meshnet/) provides technology for connecting remote devices to a single virtual network. This setup allows other devices in your Meshnet to connect remotely to your Mumble server without opening any ports in your [firewall](https://nordvpn.com/cybersecurity/glossary/firewall/).

This article will showcase how you can configure a personal Mumble server on Windows, macOS, and Linux and connect to it from other devices in your Meshnet.

## Set up the Mumble server <a href="#set-up-the-mumble-server" id="set-up-the-mumble-server"></a>

To begin, you need to install the Mumble server software on the device that will host your server.

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

### Install the Mumble server <a href="#install-the-mumble-server" id="install-the-mumble-server"></a>

To install the Mumble server on Windows:

1. Visit the [Mumble downloads page](https://www.mumble.info/downloads/).
2. Download the **Windows server (x64)** installer file.
3. Launch the downloaded file.
4. Follow the instructions provided by the installation wizard.
5. Click **Finish** to complete the installation.

### Configure your server <a href="#configure-your-server" id="configure-your-server"></a>

To configure and start your Mumble server on Windows:

1. Open **PowerShell**.
2. Execute the following command to create a new `Mumble` folder with a `Murmur` subfolder in your Local AppData directory, and then navigate to the `Murmur` folder.\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir $env:LOCALAPPDATA/Mumble/Murmur; cd $env:LOCALAPPDATA/Mumble/Murmur
   </code></pre>

   &#x20;
3. Create the `murmur.ini` server configuration file and open it using Notepad by running this command:

   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad murmur.ini
   </code></pre>

   &#x20;\
   When prompted to create the file, click **Yes**.

   <div align="left"><figure><img src="/files/xzzMTVSHpzWqYPGkYwQC" alt="Notepad pop-up dialog asking to create the &#x27;murmur.ini&#x27; file." width="335"><figcaption></figcaption></figure></div>

   &#x20;
4. Copy the contents of the `mumble-server.ini` file from [Mumble’s GitHub repository](https://github.com/mumble-voip/mumble/blob/master/auxiliary_files/mumble-server.ini) and paste it to the Notepad window.
5. Press **Ctrl** + **S** to save changes.
6. Exit Notepad.
7. Launch **Mumble server**.

Once the server is launched, you should see the Mumble server icon in your system tray.

<div align="left"><figure><picture><source srcset="/files/sh0CxWrJ5MD1oYmXdQsd" media="(prefers-color-scheme: dark)"><img src="/files/NhcEdYsgiaWdWBilBP2Z" alt="Mumble server icon in the Windows system tray." width="193"></picture><figcaption></figcaption></figure></div>

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

If the **Windows security alert** box appears, select both the *private* and *public* networks options, and then click the **Allow access** button to allow incoming connections through the firewall.

![Windows Defender Firewall prompt with both options selected and the "Allow access" button highlighted.](/files/dew7qnFJj6etiVuoWXqv)
{% endhint %}

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

You can make changes to the `murmur.ini` configuration file to customize your Mumble server. Learn more about the available options in the configuration file in the [Mumble wiki](https://wiki.mumble.info/wiki/Murmur.ini).
{% endhint %}
{% endtab %}

{% tab title="macOS" %}

### Download the Mumble server file <a href="#download-the-mumble-server-file" id="download-the-mumble-server-file"></a>

On macOS, you don’t have to install a separate package for the Mumble server. You only need to download the server file.

1. Visit the [Mumble downloads page](https://www.mumble.info/downloads/).
2. Download the **Static macOS server (x64)** file.
3. Place the downloaded file in a convenient location for future access.

### Configure your server <a href="#configure-your-server.1" id="configure-your-server.1"></a>

To configure your Mumble server:

1. Open **Terminal**.
2. Execute the following command to create a new hidden `murmurd` folder and navigate to it:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir ~/.murmurd &#x26;&#x26; cd ~/.murmur
   </code></pre>

   &#x20;
3. Create the `murmur.ini` server configuration file and open it using the Nano text editor by running this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">nano murmur.ini
   </code></pre>

   &#x20;
4. Copy the contents of the `mumble-server.ini` file from [Mumble’s GitHub repository](https://github.com/mumble-voip/mumble/blob/master/auxiliary_files/mumble-server.ini) and paste it to the terminal window.
5. Press **Control ⌃** + **X**, **Y**, and **Return** to save changes and exit.

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

You can make changes to the `murmur.ini` configuration file to customize your Mumble server. To learn more about the available options in the configuration file in the [Mumble wiki](https://wiki.mumble.info/wiki/Murmur.ini).
{% endhint %}

### Launch your server <a href="#launch-your-server" id="launch-your-server"></a>

To start your Mumble server:

1. Open **Terminal**.
2. Navigate to the previously downloaded server file’s location using the `cd` command.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Desktop/Mumble
   </code></pre>

   &#x20;&#x20;
3. Grant the server file executable permissions by entering:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">chmod +x mumble_server*
   </code></pre>

   &#x20;
4. Run the following command to start the server file:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./mumble_server* -fg
   </code></pre>

Your server should now be active. The terminal window that you used to start the server must be kept active for the server to run.

To stop the server, click **Control ⌃** + **C** in the terminal window.

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

When trying to start the Mumble server, you may receive an error message indicating that the developer cannot be verified. To proceed, open **System preferences** > **Privacy & security**, scroll down and click **Allow anyway**.\
\ <picture><source srcset="/files/BMAwZSi7X83epVgGyx54" media="(prefers-color-scheme: dark)"><img src="/files/HrwlqbbF4UhJ4hn5LgE6" alt="Clicking &#x27;Allow anyway&#x27; in the macOS system preferences."></picture>
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

In this article, Ubuntu 24.04.1 LTS distribution is used as an example.
{% endhint %}

### Install the Mumble server <a href="#install-the-mumble-server.1" id="install-the-mumble-server.1"></a>

To install the Mumble server on Linux:

1. Open **Terminal**.
2. Fetch all repository updates and install the Mumble server with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install mumble-server -y
   </code></pre>

Once the process is over, the Mumble server software is installed on your device.

### Configure your server <a href="#configure-your-server.2" id="configure-your-server.2"></a>

After installing, configure the settings for your server by taking these steps:

1. Open **Terminal**.
2. Start the Mumble server configuration wizard by running the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo dpkg-reconfigure mumble-server
   </code></pre>

   &#x20;
3. Select **Yes** to start your Mumble server automatically with each system reboot and allow higher network priority.
4. Create a secure password for your Mumble server super user and select **OK** to finish the configuration.

   <div align="left"><figure><img src="/files/5tiyolOuhuK0svp3xaDy" alt="Entering the super user password in the mumble-server configuration wizard." width="563"><figcaption></figcaption></figure></div>

Your server is now active and ready for use.

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

You can make additional changes to the `/etc/mumble-server.ini` configuration file to customize your Mumble server. To learn more about the available options in the configuration file in the [Mumble wiki](https://wiki.mumble.info/wiki/Murmur.ini).
{% endhint %}
{% endtab %}
{% endtabs %}

## Connecting to your Mumble server over Meshnet <a href="#connecting-to-your-mumble-server-over-meshnet" id="connecting-to-your-mumble-server-over-meshnet"></a>

With the server up and running, you and your friends can join the Mumble voice chat using Meshnet.

### Install the Mumble client <a href="#install-the-mumble-client" id="install-the-mumble-client"></a>

First, you need to install the Mumble client. You can download the Mumble client installer files for Windows and macOS from the [Mumble downloads page](https://www.mumble.info/downloads/).

For Linux, execute the following command in the terminal:

{% code overflow="wrap" %}

```bash
sudo apt install mumble -y
```

{% endcode %}

### Connect to your server <a href="#connect-to-your-server" id="connect-to-your-server"></a>

Once the client is installed, take the following steps to connect to your Mumble server:

1. Launch **Mumble**.
2. Follow the instructions provided by the initial setup wizard.
3. In the upper-left corner, click the **Open the server connection dialog** button.

   <div align="left"><figure><picture><source srcset="/files/4QQOFLDMLuaw3A9pXYYr" media="(prefers-color-scheme: dark)"><img src="/files/xAJNZDlg7OqMmlJbyhOG" alt="Clicking the &#x27;Open the server connection dialog&#x27; button in the Mumble client."></picture><figcaption></figcaption></figure></div>

   &#x20;
4. Select **Add new**.
5. In the new pop-up window, fill in the following information:
   * In the **Address** field, enter the server device’s Nord name or Meshnet IP address. \
     If you are connecting from the same device that is running the Mumble server, enter `localhost` instead.
   * In the **Username** field, enter your custom username.
   * In the **Label** field, enter a custom name for the server.\
     &#x20;\
     **Example**

     <div align="left"><figure><picture><source srcset="/files/tsMESk3mIsANEVSUcOe8" media="(prefers-color-scheme: dark)"><img src="/files/eXhvu98ha8WsyaIYfiuq" alt="Dialog filled in with Mumble server information." width="563"></picture><figcaption></figcaption></figure></div>

     &#x20;
6. Click **OK** and **Connect**.
7. Select **Yes** to accept the server certificate.

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

If you [change the port number](https://nordvpn.com/blog/what-is-my-port/) in the server configuration file, you must also specify the correct port number when connecting to the server.
{% endhint %}

You should now be connected to your personal Mumble server over Meshnet.

<div align="left"><figure><picture><source srcset="/files/Yoiq9Mgde5Ud2r3BkUmT" media="(prefers-color-scheme: dark)"><img src="/files/CGOPl0bDNcB1TQSByfXS" alt="Three clients connected to the Mumble server."></picture><figcaption></figcaption></figure></div>


# How to host a private Rocket.Chat server

Learn how to self-host a Rocket.Chat server on Windows, macOS, and Linux, and connect with your friends over Meshnet.

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

Having your own private chat server can be beneficial, no matter who you are — a developer talking to your colleagues about the latest project, or a gamer discussing your achievements. While there are many cloud-based chat platforms, self-hosting your server gives you full control over its configuration and security.

[Rocket.Chat](https://www.rocket.chat/) is an open-source communication platform that many people choose as their server. This platform offers an extensive range of features that cater to teams of all sizes. However, making the server accessible for people outside of your [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) can be a tall order. Registering a domain name or [opening ports](https://nordvpn.com/blog/port-forwarding/) in your firewall are not tasks many individuals want to participate in.

Using Meshnet on your Rocket.Chat server device allows you to connect to the server remotely without any difficult configurations. In addition, you can share the server with your Meshnet peers and work together on [joint projects](https://nordvpn.com/meshnet/joint-projects/).

This article covers the setup procedure of a private Rocket.Chat server on desktop devices using Docker and showcases how your friends can join the server using Meshnet.

## Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Make sure that you have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose V2](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop instructions for macOS](https://docs.docker.com/desktop/install/mac-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

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

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

## Deploy Rocket.Chat using Docker <a href="#deploy-rocket.chat-using-docker" id="deploy-rocket.chat-using-docker"></a>

Rocket.Chat requires two Docker containers that are dependent on each other to function. The Docker Compose tool is used to make deploying such multi-container apps easier.

### Preparing a Rocket.Chat directory <a href="#preparing-a-rocket.chat-directory" id="preparing-a-rocket.chat-directory"></a>

First, you should create a working directory for your Rocket.Chat instance. This is where all files related to the server will be stored.

{% tabs %}
{% tab title="Windows" %}
To prepare for Rocket.Chat deployment on Windows:

1. Open **PowerShell**.
2. Run the following command to create a new `rocketchat` folder and then navigate to it:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir rocketchat; cd rocketchat
   </code></pre>

   &#x20;
3. Execute the following two `curl` commands to download the Rocket.Chat Docker Compose and environmental files from its [GitHub repository](https://github.com/RocketChat/Rocket.Chat):\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl -o compose.yml https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml
   curl -Lo .env https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/env.example
   </code></pre>

   &#x20;
4. Ensure that both files are present by running the `ls` command.

   <div align="left"><figure><img src="/files/7Y96xlU8DRn2Q07NkA7E" alt="Output of the &#x27;ls&#x27; command showing both of the downloaded files."><figcaption></figcaption></figure></div>

Both of the required files are now downloaded, and you are ready to start your Rocket.Chat server.

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

You can edit the `.env` file to alter the properties of your server, such as the bind IP address or the port that the server is running on.
{% endhint %}
{% endtab %}

{% tab title="macOS and Linux" %}
To prepare for Rocket.Chat deployment on macOS and Linux:

1. Open **Terminal**.
2. Run the following command to create a new `rocketchat` and then navigate to it:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir rocketchat &#x26;&#x26; cd rocketchat
   </code></pre>

   &#x20;
3. Execute the following two `curl` commands to download the Rocket.Chat Docker Compose and environmental files from its [GitHub repository](https://github.com/RocketChat/Rocket.Chat):\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl -LO https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml
   curl -Lo .env https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/env.example
   </code></pre>

   &#x20;
4. Ensure that both files are present by running the `ls -a` command.

   <div align="left"><figure><img src="/files/2GkaMpErLD08Jyy9uXpG" alt="Output of the &#x27;ls -a&#x27; command showing both of the downloaded files."><figcaption></figcaption></figure></div>

Both of the required files are now downloaded, and you are ready to start your Rocket.Chat server.

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

You can edit the `.env` file to alter the properties of your server, such as the bind IP address or the port that the server is running on.
{% endhint %}
{% endtab %}
{% endtabs %}

### Starting Rocket.Chat <a href="#starting-rocket.chat" id="starting-rocket.chat"></a>

While in the `rocketchat` directory, execute the following command in the command line to deploy your Rocket.Chat server.

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the resources](https://docs.docker.com/engine/reference/commandline/pull/) required for the server and create two containers: one for the [MongoDB](https://www.mongodb.com/what-is-mongodb) database, and the other for the Rocket.Chat service.

You can use the `docker ps` command to check if both containers are active.

<div align="left"><figure><picture><source srcset="/files/BXpu8jU88fDnKFN5euQG" media="(prefers-color-scheme: dark)"><img src="/files/dkRSm6JKs8DDsvfzvuTj" alt="Output of the &#x27;docker ps&#x27; command showing that both containers are active."></picture><figcaption></figcaption></figure></div>

## Set up your Rocket.Chat workspace <a href="#set-up-your-rocket.chat-workspace" id="set-up-your-rocket.chat-workspace"></a>

Now that your server is up and running, it’s time to create your Rocket.Chat workspace, including accounts and channels.

### Creating an administrator account <a href="#creating-an-administrator-account" id="creating-an-administrator-account"></a>

You can start your workspace setup process by accessing the web interface of your Rocket.Chat server.

1. Open your internet browser.
2. Navigate to the following URL:\
   `localhost:3000/`\
   &#x20;
3. On the **Admin info** page, enter the full name, username, email address, and password of the administrator account. Click **Next**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="/files/W3R3RycSI7KMRpMaDTKg" alt="Filling in the administrator account information." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. On the **Organization info** page, fill in the required fields about your organization and click **Next**.
5. On the **Register your workspace** page, under **Admin email**, enter your email address, confirm that you agree with the **Terms and conditions** and **Privacy policy**, and then click **Register.**
6. Verify your account using the link sent to your email.

After the verification, you should be transferred to the home screen of your Rocket.Chat server.

<div align="left"><figure><picture><source srcset="/files/smuUDu1nmJIaeWLeBsXe" media="(prefers-color-scheme: dark)"><img src="/files/Dqc3GqvALgFSwquzVARe" alt="Rocket.Chat server&#x27;s home screen."></picture><figcaption></figcaption></figure></div>

### Adding new users <a href="#adding-new-users" id="adding-new-users"></a>

Now that the server is fully active and you have an administrator account configured, you can add new user accounts for your friends.

1. On the Rocket.Chat home page, click **Add users**.

   <div align="left"><figure><picture><source srcset="/files/eyccYd9woCiAkSWktXcN" media="(prefers-color-scheme: dark)"><img src="/files/BuP0SDXKxJkLGCU3BQ1S" alt="Arrow pointing to a highlighted &#x22;Add users&#x22; button." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. In the upper-right corner, select **New user**.

   <div align="left"><figure><picture><source srcset="/files/Xc086V8GNYpXRQzCRtlA" media="(prefers-color-scheme: dark)"><img src="/files/bjU20An6O8BToexU90zk" alt="&#x22;New user&#x22; button highlighted." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
3. Fill in the details for the new user account.
4. Click **Save**.

You should now see an entry for the new user on the **Users** page.

<div align="left"><figure><picture><source srcset="/files/Nc9nhAsTHujT5gpw9lHb" media="(prefers-color-scheme: dark)"><img src="/files/mWLC4oTeYxJi20lQYhIb" alt="Information of the new user account on the &#x27;Users&#x27; page."></picture><figcaption></figcaption></figure></div>

### Creating new channels <a href="#creating-new-channels" id="creating-new-channels"></a>

You also can create various new channels for specific purposes. To create a new channel:

1. On the Rocket.Chat home page, click **Create channel**.
2. Fill in the details for your new channel and select the members you want to include.
3. Click **Create**.

   <div align="left"><figure><picture><source srcset="/files/gikryM7JnRjaHSVHs4XU" media="(prefers-color-scheme: dark)"><img src="/files/Zg12qSJosKojCMk58iV1" alt="Clicking &#x27;Create&#x27; in the configured channel creation menu." width="375"></picture><figcaption></figcaption></figure></div>

The new channel should now be visible in the **Channels** list on the left.

<div align="left"><figure><img src="/files/48gwyZAaXH7v1c6Tarkv" alt="New channel visible in the &#x27;Channels&#x27; list." width="331"><figcaption></figcaption></figure></div>

### Disabling the two-factor authentication requirement <a href="#disabling-the-two-factor-authentication-requirement" id="disabling-the-two-factor-authentication-requirement"></a>

By default, Rocket.Chat requires email two-factor authentication for each new user. However, without setting up an [SMTP](https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol) server, the emails are not sent and the users are unable to log in. Since your server is not public and only accessible by your Meshnet peers, you can disable the two-factor authentication requirement entirely.

1. On your Rocket.Chat home page, in the upper-left corner, select the three-dot menu and choose **Workspace**.

   <div align="left"><figure><picture><source srcset="/files/qybfIW38YwEy6MckiN9R" media="(prefers-color-scheme: dark)"><img src="/files/SgvJb2XsJOVAsOzI9WXA" alt="Navigating to the &#x27;Workspace&#x27; option using the three-dot menu." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
2. From the list on the left, select **Settings**.
3. Under **Accounts**, click **Open**.
4. Expand the **Two factor authentication** section.
5. Turn off the **Enable two factor authentication** toggle.

   <div align="left"><figure><picture><source srcset="/files/6TvuyMHkDVGBBMXGx6Eu" media="(prefers-color-scheme: dark)"><img src="/files/OBBlR4MKR7b8803JePvo" alt="Turning off the &#x27;Enable two factor authentication&#x27; toggle." width="563"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. In the lower-right corner, click **Save changes**.

Two-factor authentication is now disabled for all users, and you won’t be required to confirm your identity via email when you log in to your Rocket.Chat server.

## Connect to your Rocket.Chat server <a href="#connect-to-your-rocket.chat-server" id="connect-to-your-rocket.chat-server"></a>

Now that your server is fully functional, you can invite your friends to connect over Meshnet using one of the following methods.

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

If you're hosting Rocket.Chat on a Linux device, you must grant the [local network permission](/features/explaining-permissions/local-network-permissions) for the devices accessing it. For more information, see [Common issues on Linux](/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

### Method 1: Using the Rocket.Chat client app <a href="#method-1-using-the-rocket.chat-client-app" id="method-1-using-the-rocket.chat-client-app"></a>

On desktop devices, you can connect to the Rocket.Chat server using Rocket.Chat’s client app.

1. Download and install the Rocket.Chat desktop app.
   * You can download the Rocket.Chat installer for Windows from the [Rocket.Chat website](https://www.rocket.chat/install#Apps).
   * You can download the [Rocket.Chat app for macOS](https://apps.apple.com/us/app/rocket-chat/id1086818840) from the Mac App Store.
   * You can download the [Rocket.Chat app for Linux](https://snapcraft.io/rocketchat-desktop) from the Snap store
2. Open **Rocket.Chat**.
3. For the server URL, enter `http://<NordName>:3000`, replacing `<NordName>` with your Rocket.Chat server’s Nord name. Click **Connect**.\
   &#x20;

   **Example**

   <div align="left"><figure><img src="/files/Rln9XlktT3qbigrVDCw8" alt="Entering the server address and clicking connect in the Rocket.Chat client app." width="375"><figcaption></figcaption></figure></div>

   &#x20;
4. Log in to your Rocket.Chat account.

Now you can conveniently use your Rocket.Chat server from the app.

<div align="left"><figure><picture><source srcset="/files/z84GiCwpBZSSa0QbanZF" media="(prefers-color-scheme: dark)"><img src="/files/wHgv4yvBlKrt698TMK5A" alt="Channel opened in the Rocket.Chat client app."></picture><figcaption></figcaption></figure></div>

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

Rocket.Chat mobile apps do not allow HTTP-only connections. Without setting up [SSL certificates](https://nordvpn.com/blog/what-is-ssl/), you won’t be able to connect to your Rocket.Chat server using the mobile apps.
{% endhint %}

### Method 2: Using an internet browser <a href="#method-2-using-an-internet-browser" id="method-2-using-an-internet-browser"></a>

In some cases, installing additional software on the client devices may not be convenient or permitted. In such scenarios, you can access the Rocket.Chat server using an internet browser.

1. Copy the Nord name of your Rocket.Chat server from the NordVPN application.
2. Open your internet browser.
3. In the URL field, paste the copied Nord name followed by `:3000/` and press **Enter**.\
   &#x20;\
   **Example**\
   `secret.meerkat-everest.nord:3000/`\
   &#x20;
4. Log in to your Rocket.Chat account.

You can now communicate with other members of your Rocket.Chat server from the convenience of your internet browser on any device.

<div align="left"><figure><img src="/files/7nDDpxImfVvJzpjMLbyy" alt="A channel in the Rocket.Chat server accessed using an internet browser on a mobile phone." width="375"><figcaption></figcaption></figure></div>


# Own VPN server setup

Learn how to effectively utilize the traffic routing feature of Meshnet.

Using pre-configured VPN servers can drastically improve your online security. However, in various cases, having access to your personal home IP address is beneficial. Alternatively, you may use a virtual private server (VPS) located in a different country with a specific IP address, which is required to access certain services.

[Meshnet’s traffic routing](/features/routing-traffic-in-meshnet) feature allows you to swiftly and securely change your [public IP address](https://nordvpn.com/what-is-my-ip/). You can turn your desktop devices into pseudo-VPN servers without any technical expertise.&#x20;

Learn how by watching this video:

{% embed url="<https://www.youtube.com/watch?v=HmdKRq649AA>" %}

Choose your preferred cloud service and proceed with the matching guide:

* [Set up a VPN server through self-hosting or with DigitalOcean](/how-to/traffic-routing/set-up-your-own-vpn-server)
* [Create a VPN server with Microsoft Azure](/how-to/traffic-routing/vpn-server-with-azure)
* [Create a VPN server with AWS](/how-to/traffic-routing/vpn-server-with-aws)
* [Create a VPN server with Google Cloud](/how-to/traffic-routing/vpn-server-with-google-cloud)
* [Create a VPN server with Linode](/how-to/traffic-routing/vpn-server-with-linode)
* [Create a VPN server with Hetzner](/how-to/traffic-routing/vpn-server-with-hetzner)


# How to set up a VPN server through self-hosting or with DigitalOcean

Learn how to create and configure a self-hosted or a cloud VPN server using Meshnet.

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

Whether you want to keep your online activity private by hiding your IP or protect your traffic by encrypting your internet connection, creating your own VPN server can be a solution to address these needs.

Setting up a VPN server requires a good understanding of network security. Therefore, it’s always a good idea to seek assistance from cybersecurity professionals. Still, by incorporating [Meshnet ](https://nordvpn.com/meshnet/)into the process, you can configure your VPN server quickly, even if you have no prior experience.

Watch this video tutorial that will walk you through the process of setting up a VPN server using Meshnet and DigitalOcean, or scroll down for a written guide.

{% embed url="<https://www.youtube.com/watch?v=HmdKRq649AA>" fullWidth="false" %}

When you create your own VPN server, you have several options for how to set it up, including:

* Hosting it on your own computer
* Renting a cloud server

This guide describes both methods and shows how Meshnet’s routing infrastructure is used as a component of your VPN.

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

Be aware that by setting up your own VPN server, you increase your online privacy but not to the same extent as when connecting to a regular VPN server provided by NordVPN, which follows a [strict no-logs policy](https://nordvpn.com/features/strict-no-logs-policy/).
{% endhint %}

## Using your own device as a VPN server <a href="#using-your-own-device-as-a-vpn-server" id="using-your-own-device-as-a-vpn-server"></a>

Creating your own VPN server at home can provide you with a secure and convenient way to access your home network.

Meshnet has an integrated routing traffic feature that allows you to set up one of your devices to act as a VPN server without additional software. To learn more about the feature and its capabilities, see [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet).

### Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

Here are a few things to consider before you start setting up a VPN server for personal use:

* Choose a device that is turned on all the time and has a reliable power source to prevent crashes and downtime.
* Make sure that the device is capable of forwarding network traffic. Meshnet allows routing traffic through devices that run the following platforms:
  * Windows 10 (64-bit) and Windows 11
  * macOS Catalina (Version 10.15) and later
  * Linux

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

Routing traffic through mobile devices is not available.
{% endhint %}

### Set up a VPN server  <a href="#set-up-a-vpn-server" id="set-up-a-vpn-server"></a>

1. On the device you’ve chosen to serve as a VPN host, [install NordVPN](https://nordvpn.com/download/).
2. Log in to your account and [turn on Meshnet](/getting-started/how-to-start-using-meshnet).
3. Link devices to Meshnet by enabling Meshnet on your other devices or by [sending invitations to other NordVPN users](/features/linking-devices-in-meshnet).
4. Ensure your [traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions) and [local network permissions](/features/explaining-permissions/local-network-permissions) are enabled for each client device.\
   \
   ![](/files/G5hXNi7Vnhi9zk09MmAh)

{% hint style="warning" %}
**Caution**

To ensure the security of your home network and the devices inside it, we highly recommend enabling the local network permission only for devices that you have the utmost confidence in.
{% endhint %}

### Connect to your VPN server <a href="#connect-to-your-vpn-server" id="connect-to-your-vpn-server"></a>

Once your home VPN server is set up, you can use any device connected to your Meshnet as a VPN client. To do this:

1. On your client device, log in to your NordVPN account.
2. Start routing traffic through the linked host device you set up. For specific instructions, see the  [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also) article.

Now you can access other devices on your home network by their local IP address. This requires you to know the IP address of each device.

## Set up a VPN server in the cloud <a href="#setting-up-a-vpn-server-in-the-cloud" id="setting-up-a-vpn-server-in-the-cloud"></a>

Because you can rent a server in a country of your choice, setting up a VPN server in the cloud gives you the ability to access content that might otherwise be restricted in your region.

### Choose a cloud service provider <a href="#choose-a-cloud-service-provider" id="choose-a-cloud-service-provider"></a>

To set up a VPN server on a cloud service platform, first, choose a cloud service provider. Most cloud platforms charge a monthly subscription fee. However, some also offer a free version, like [Amazon Web Services](/how-to/traffic-routing/vpn-server-with-aws) or [Microsoft Azure](/how-to/traffic-routing/vpn-server-with-azure).

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

If you choose to rent a cloud server for your VPN, keep in mind that most cloud server providers can disclose your personal information to authorities if they are required to do so by law.
{% endhint %}

### Create a virtual machine on the cloud platform <a href="#create-a-virtual-machine-on-the-cloud-platform" id="create-a-virtual-machine-on-the-cloud-platform"></a>

For the purposes of this guide, DigitalOcean Droplets will be used to show how to configure a virtual machine (VM). The exact steps you need to follow will depend on the cloud service platform you’ve chosen.

Droplets are Linux-based VMs provided by DigitalOcean. They allow you to create and manage virtual servers for your needs.

1. [Sign up for DigitalOcean](https://cloud.digitalocean.com/login) and log in to your account.
2. Create a VM by clicking **Create** and selecting **Droplets**.
3. Select the region where you want your server to be located.
4. Choose an operating system (for example, Ubuntu).
5. Choose a plan and size for your VM.
6. Add an SSH key following the instructions provided on the page (recommended) or create a password for the VM.
7. In the **Hostname** box, enter a name for your VM and click **Create**.

### Connect to the virtual machine <a href="#connect-to-the-virtual-machine" id="connect-to-the-virtual-machine"></a>

Once your server is up and running, you can log in to it using your SSH key or password based on the authentication method you’ve selected.

1. Open **Terminal** (on Linux and macOS) or **Command prompt** (on Windows).
2. If you chose the **Password** option upon Droplet creation, follow these steps:
   1. Enter the `ssh root@<droplet_ip>` command, replacing `<droplet_ip>` with the IP address of your VM. You can find your VM’s IP address at [DigitalOcean Control Panel](https://cloud.digitalocean.com/).\
      \
      **Example**

      <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh root@46.101.233.23
      </code></pre>

   2. When asked if you’re sure you want to continue connecting, type `yes`.

   3. Enter the password you created for your droplet.<br>
3. If you chose **Add SSH keys**:
   1. Enter the `ssh -i </path/to/private/key> username@<droplet_ip>` command, specifying the path of your private key in place of `</path/to/private/key>` and substituting `<droplet_ip>` with the IP address of your Droplet.\
      \
      **Example**&#x20;

      <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh -i /Users/MeshnetUser/ssh_key.txt root@64.227.156.106
      </code></pre>

   2. When asked if you’re sure you want to continue connecting, type `yes`.

   3. Enter the passphrase for your key pair. <br>

      <div align="left"><figure><img src="/files/3a38Ufzu6Ozwau5j28dB" alt="An example of entering a private key in the terminal to connect to the virtual machine"><figcaption></figcaption></figure></div>

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

The latest builds of Windows 10 and Windows 11 include a built-in SSH client. Alternatively, you can use a third-party terminal emulator for Windows, such as [Putty](https://en.wikipedia.org/wiki/PuTTY).
{% endhint %}

### Install NordVPN on the virtual machine <a href="#install-nordvpn-on-the-virtual-machine" id="install-nordvpn-on-the-virtual-machine"></a>

Follow these steps to set up NordVPN on the virtual machine you created:

1. Download and install the NordVPN Linux client by entering the command below. <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>

2. 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:&#x20;

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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.<br>

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

2. Under **Advanced settings**, select **Get access token**.

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

3. Enter the verification code sent to your email address.

4. Under **Access token**, click **Generate new token**.<br>

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><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="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

6. Select **Copy and close**.

7. On your virtual machine, run the `nordvpn login --token <your_token>` command, replacing `<your_token>` with the copied token.\
   \
   **Example**&#x20;

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

You should now see a welcome message.

</details>

<details>

<summary>Log in using a URL</summary>

1. Run the following command:<br>

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

2. Open the provided link on any device in your browser.

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.

</details>

{% 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 %}

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

If you encounter the error message “Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock,” enter `sudo usermod -aG nordvpn $USER`. Then, reboot your instance and log back in.
{% endhint %}

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

On your VM, [enable Meshnet ](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux)by typing this command:

{% code overflow="wrap" %}

```bash
nordvpn set meshnet on
```

{% endcode %}

To view the Nord name and Meshnet IP address of your VM, enter the following command.

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

**Example**

<div align="left"><figure><img src="/files/LiDrYDbAzAusgk5I1cTj" alt="The device&#x27;s Nord name and IP address are highlighted"><figcaption></figcaption></figure></div>

You will also see all your connected Meshnet devices, which have the potential to access this server, depending on their permissions.

### Grant the traffic routing permission

To begin using the VPN server, you need to grant the traffic routing permission for each peer device that you want to have access to the server. Enable this permission from the server machine using the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow <device>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow secret.raccoon-everest.nord
```

{% endcode %}

For more information, see the [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions) page.

### Route traffic through your server

Your client devices should now be able to connect to the server. To do this, start routing traffic through the VM you set up, which you can now find among your Meshnet peer devices.

<div align="left"><figure><img src="/files/BoI9NWbZRowWSp0Taxc0" alt="The VM set up is visible among Meshnet peer devices in the NordVPN app"><figcaption></figcaption></figure></div>

For specific instructions, see the [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also) article.

[Your device's IP address](https://nordvpn.com/what-is-my-ip/) should now match the public IP address of your instance. This way, your real IP address remains secure, and the websites you visit will detect the location of your VPN server instead of your actual device.

&#x20;


# How to create a VPN server with Microsoft Azure

Learn how to create a personal VPN server using Microsoft Azure and Meshnet.

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

[Microsoft Azure](https://azure.microsoft.com/en-us) is a cloud computing platform that provides a range of options for people looking to host their services on the cloud. Azure's extensive features and benefits make it a great choice to host a VPN server.

With Microsoft Azure, you can easily create and manage various virtual machines (VMs). Its global network of data centers ensures fast and reliable access to your services from anywhere in the world. Additionally, Azure has a flexible pricing model, offering a free subscription and allowing you to pay only for the resources you use once the free trial expires.

By using [Meshnet](https://nordvpn.com/meshnet/) in tandem with Azure, you can turn a simple VM into a secure VPN server without any advanced configuration.

This guide showcases how you can make a VPN server from a VM hosted by Microsoft Azure using Meshnet’s traffic routing feature.

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

Be aware that by setting up your own VPN server, you increase your online privacy but not to the same extent as when connecting to a regular VPN server provided by NordVPN, which follows a [strict no-logs policy](https://nordvpn.com/features/strict-no-logs-policy/).
{% endhint %}

## Before you begin <a href="#create-a-virtual-machine-on-microsoft-azure" id="create-a-virtual-machine-on-microsoft-azure"></a>

To follow this guide, you need an active Microsoft Azure account. You can sign up for free on the [Azure website](https://azure.microsoft.com/en-us/free/).

## Deploy a virtual machine on Microsoft Azure <a href="#create-a-virtual-machine-on-microsoft-azure" id="create-a-virtual-machine-on-microsoft-azure"></a>

First, you need to create a VM on Azure. While this guide focuses on setting up an Ubuntu VM, Azure allows you to create Windows VMs as well.

### Method 1: Creating a VM using Azure Portal

1. Log in to your [Azure account](https://portal.azure.com/).

2. From your Azure portal, click **Virtual machines**.

3. Click **Create** and select **Azure virtual machine**.

4. In the **Instance details** section, name your VM, select its region, and choose the operating system (for example, Ubuntu 22.04 LTS).<br>

   <figure><img src="/files/1LTdyIL4Ujzo2B9uqlrK" alt="Creating the VM by entering its name, selecting the region, and the OS image."><figcaption></figcaption></figure>

5. Under **Administrator account**, select SSH public key authentication or create a password and choose the name of the administrator user of the VM.<br>

   <figure><img src="/files/U1ePwC8NiqJutS4Evn0G" alt="Selecting the SSH public key authentication type and the username for the administrator account."><figcaption></figcaption></figure>

6. Click **Review + create**.

7. Click **Create**.

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

If you chose the SSH key authentication type, you will receive a **Generate new key pair** message after clicking the **Create** button. Select the **Download private key and create resource** option to download the private key file.

![Clicking 'Download private key and create resource'.](/files/UcHoFhbghK0QEBqaVMQj)
{% endhint %}

### Method 2: Creating a VM using Azure CLI <a href="#access-the-virtual-machine" id="access-the-virtual-machine"></a>

Another method of managing Azure resources is the Azure Command-line interface (CLI). The Azure CLI allows you to create, deploy, and manage your Azure resources without using the internet browser. This method is highly beneficial for automation or server environments.

#### Install Azure CLI

To interact with Azure using CLI, you need to install the Azure CLI application on your device. Installation instructions for all compatible operating systems can be found on the [Azure CLI documentation page](https://learn.microsoft.com/en-us/cli/azure/).

* [Instructions for Windows](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli)
* [Instructions for macOS](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-macos)
* [Instructions for Linux](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt)

#### Log in to Azure

Upon installing Azure CLI, log in to your Azure account by taking these steps:

1. Open **PowerShell** (on Windows) or **Terminal** (on macOS and Linux).
2. Run the following command to start the login process:<br>

   <pre data-overflow="wrap"><code>az login
   </code></pre>

   &#x20;
3. Open the generated URL in an internet browser.
4. Log in to your Azure account.
5. Authenticate using the code provided in your CLI window.

#### Create your resource group

Azure uses resource groups to manage your VMs and their related resources. To create a resource group for your VPN server:

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

1. Open **PowerShell**.

2. Define the environmental variables for your VM by running the following commands:<br>

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">$env:RESOURCE_GROUP_NAME="&#x3C;groupName>"
   $env:LOCATION="&#x3C;region>"
   $env:VM_NAME="&#x3C;vmName>"
   $env:VM_IMAGE="&#x3C;imageName>"
   $env:ADMIN_USERNAME="&#x3C;username>"
   </code></pre>

   \
   Where:

   * `<groupName>` is a custom name for your resource group.
   * `<location>` is the region where your VM will be located.
     * You can check region names with the `az account list-locations -o table` command.
   * `<vmName>` is a custom name for your VM.
   * `<imageName>` is the name of the operating system image for your VM.
     * You can find image names for Ubuntu Server on the [Ubuntu documentation page](https://ubuntu.com/server/docs/find-ubuntu-images-on-azure).
   * `<username>` is the name of the user account for your VM.\
     \
     **Example**

     <figure><img src="/files/cKAcbIxTS0Ct3Q4rJFpl" alt="Creating environmental variables for the virtual machine in PowerShell."><figcaption></figcaption></figure>

3. Create the resource group with this command:<br>

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">az group create --name $env:RESOURCE_GROUP_NAME --location $env:LOCATION
   </code></pre>

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

The environmental variables will be reset if you close the PowerShell window.
{% endhint %}
{% endtab %}

{% tab title="macOS and Linux" %}

1. Open **Terminal**.

2. Define the environmental variables for your VM by running the following commands:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">export RESOURCE_GROUP_NAME=&#x3C;groupName>
   export LOCATION=&#x3C;region>
   export VM_NAME=&#x3C;vmName>
   export VM_IMAGE=&#x3C;imageName>
   export ADMIN_USERNAME=&#x3C;user>
   </code></pre>

   Where:

   * `<groupName>` is a custom name for your resource group.
   * `<location>` is the region where your VM will be located.
     * You can check region names with the `az account list-locations -o table` command.
   * `<vmName>` is a custom name for your VM.
   * `<imageName>` is the name of the operating system image for your VM.
     * You can find image names for Ubuntu Server on the [Ubuntu documentation page](https://ubuntu.com/server/docs/find-ubuntu-images-on-azure).
   * `<username>` is the name of the user account for your VM.\
     \
     **Example**

     <figure><img src="/files/PGpSZ5DgPZSFsP6aWqFq" alt="Creating environmental variables for the virtual machine in Terminal."><figcaption></figcaption></figure>

3. Create the resource group with this command:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
   </code></pre>

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

The environmental variables will be reset if you close the Terminal window.
{% endhint %}
{% endtab %}
{% endtabs %}

#### Deploy the VM

With the environment variables defined and the resource group created, you can deploy your VM in Azure.

{% tabs %}
{% tab title="Windows" %}
In **PowerShell**, execute the following command to create the virtual machine in Azure:

{% code overflow="wrap" %}

```powershell
az vm create `
  --resource-group $env:RESOURCE_GROUP_NAME `
  --name $env:VM_NAME `
  --image $env:VM_IMAGE `
  --admin-username $env:ADMIN_USERNAME `
  --generate-ssh-keys `
  --public-ip-sku Standard
```

{% endcode %}

This command automatically generates an SSH key pair for your VM and places it in the default SSH directory (`~/.ssh`). Once the VM is created, you will see an output of the VM's information.

<figure><img src="/files/wxVzEA6Z8LQw7VsOkmNb" alt="Information of the created virtual machine."><figcaption></figcaption></figure>
{% endtab %}

{% tab title="macOS and Linux" %}
In **Terminal**, execute the following command to create the virtual machine in Azure:

{% code overflow="wrap" %}

```bash
az vm create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $VM_NAME \
  --image $VM_IMAGE \
  --admin-username $ADMIN_USERNAME \
  --generate-ssh-keys \
  --public-ip-sku Standard
```

{% endcode %}

This command automatically generates an SSH key pair for your VM and places it in the default SSH directory (`~/.ssh`). Once the VM is created, you will see an output of the VM's information.

<figure><img src="/files/VWNTE1TOnIOOWPBdlClS" alt="Information of the created virtual machine."><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Access the virtual machine <a href="#access-the-virtual-machine" id="access-the-virtual-machine"></a>

Once your VM is deployed, you can access it over SSH. The way to access the VM depends on which authentication method you chose while creating it.

{% tabs %}
{% tab title="SSH public key authentication" %}

### Changing permissions for the private key <a href="#changing-permissions-for-the-private-key" id="changing-permissions-for-the-private-key"></a>

To use the SSH key for authentication, you need to set the private key’s permissions to read-only.

#### Windows <a href="#windows" id="windows"></a>

1. Open **PowerShell**.
2. Run the following three commands to apply the permission change, substituting `</path/to/private/key>` with the path to the downloaded private key:<br>

   <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">icacls.exe &#x3C;/path/to/private/key> /reset
   icacls.exe &#x3C;/path/to/private/key> /grant:r "$($env:username):(r)"
   icacls.exe &#x3C;/path/to/private/key> /inheritance:r
   </code></pre>

   &#x20;

   **Example**

   <figure><img src="/files/7xmLn4e8ZQGjyHjcA2lb" alt="Running the given commands in PowerShell to change permissions for the SSH key file"><figcaption></figcaption></figure>

#### macOS and Linux <a href="#macos-and-linux" id="macos-and-linux"></a>

1. Open **Terminal**.
2. Run the following command to apply the permission change, substituting `</path/to/private/key>` with the path to the downloaded private key:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">chmod 400 &#x3C;/path/to/private/key>
   </code></pre>

   &#x20;

   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">chmod 400 /Users/ventura/.ssh/UbuntuVPNServer_key.pem
   </code></pre>

### Connecting over SSH <a href="#connecting-over-ssh" id="connecting-over-ssh"></a>

1. Locate the public IP address of your VM.
   * You can find the public IP in the **Overview** section of the VM in your Azure Portal.\
     \
     ![Public IP address of the Azure VM.](/files/x4UMtdDNak07JUXTUDfh)

     &#x20;
   * If you created the VM using Azure CLI, you can run one of the following commands:\
     \
     For Windows in **PowerShell**:

     <pre class="language-powershell" data-overflow="wrap"><code class="lang-powershell">az vm show -d -g $env:RESOURCE_GROUP_NAME -n $env:VM_NAME --query publicIps -o tsv
     </code></pre>

     \
     For macOS and Linux in **Terminal**:

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">az vm show -d -g $RESOURCE_GROUP_NAME -n $VM_NAME --query publicIps -o tsv
     </code></pre>

2. Run the `ssh -i </path/to/private/key> <username>@<server>` command in PowerShell or Terminal, where:
   * `</path/to/private/key>` is the location of the downloaded SSH private key.
   * `<username>` is the name of the administrator user of the VM.
   * `<server>` is the VM’s public IP address.<br>

     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh -i C:\Users\secretmeerkat\.ssh\UbuntuVPNServer_key.pem meerkat@20.82.123.153
     </code></pre>

     &#x20;

3. Type in `yes` and press **Enter** to confirm the connection.

You should now be connected to your Azure VM.
{% endtab %}

{% tab title="SSH password authentication" %}

1. Locate the public IP address of your VM. It can be found in the **Overview** section of the VM in your Azure Portal.\
   \
   ![Public IP address of the Azure VM.](/files/x4UMtdDNak07JUXTUDfh)

   &#x20;
2. Open **Terminal** (on Linux and macOS) or **Command Prompt** (on Windows).
3. Run the `ssh <username>@<server>` command, where:
   * `<username>` is the name of the administrator user of the VM.
   * `<server>` is the VM’s public IP address.\
     \
     **Example**

     <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh meerkat@20.82.123.153
     </code></pre>

     &#x20;
4. Enter your authentication password.
5. Type in `yes` and press **Enter** to confirm the connection.

You should now be connected to your Azure VM.
{% endtab %}
{% endtabs %}

## Install NordVPN on the virtual machine <a href="#install-nordvpn-on-the-virtual-machine" id="install-nordvpn-on-the-virtual-machine"></a>

Follow these steps to install NordVPN on your virtual server:

1. Download and install the NordVPN Linux client by running the command below.

   &#x20;

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

2. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.<br>

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

2. Under **Advanced settings**, select **Get access token**.<br>

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

3. Enter the verification code sent to your email address.

4. Under **Access token**, click **Generate new token**.<br>

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><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="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

6. Select **Copy and close**.

7. On your VM, 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 3fe460cefb8dcf1478c92e45908cec9f9bdbadf7a456a6dfb35dc2c58ee39d5b
   </code></pre>

You should now see a welcome message.

</details>

<details>

<summary>Log in using a URL</summary>

1. Run the following command:<br>

   ```
   nordvpn login
   ```

2. Open the provided link on any device in your browser.

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.

</details>

{% 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 %}

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

If you encounter the error message “Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock,” enter `sudo usermod -aG nordvpn $USER`. Then, reboot your instance and log back in.
{% endhint %}

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

Upon logging in, you can [enable Meshnet on Linux](https://meshnet.nordvpn.com/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#enable-meshnet-on-linux) by typing this command:

{% code overflow="wrap" %}

```bash
nordvpn set meshnet on
```

{% endcode %}

To check your server’s Nord name and the Meshnet IP address, enter the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

**Example**

<figure><img src="/files/y0EErQNz0w11B4v5DKyY" alt="Enabling Meshnet and checking the Nord name and Meshnet IP of the VM."><figcaption></figcaption></figure>

You will also see all of your Meshnet peer devices with their [corresponding permissions](/features/explaining-permissions).

### Grant the traffic routing permission

To begin using the VPN server, you need to grant the traffic routing permission for each peer device that you want to have access to the server. Enable this permission from the server machine using the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow <device>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow secret.meerkat-andes.nord
```

{% endcode %}

For more information, see the [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions) page.

## Connect to your VPN server <a href="#connect-to-your-vpn-server" id="connect-to-your-vpn-server"></a>

With Meshnet enabled and the permissions granted, your peer devices should now be able to connect to the server. To connect, start routing traffic from a client device through the VM, which you can find in the list of your Meshnet peer devices.

<div align="left"><figure><picture><source srcset="/files/FMc9MBwayIcKsf5xHTgZ" media="(prefers-color-scheme: dark)"><img src="/files/QVJOBJFuFTEM6IO3KFw7" alt="Selecting a traffic routing host device under the &#x22;Devices&#x22; tab." width="563"></picture><figcaption></figcaption></figure></div>

For specific instructions, see the [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also) article.

[Your IP address](https://nordvpn.com/what-is-my-ip/) should now be the same as the virtual machine’s. This way, your real public IP address is protected, and the websites you visit will see the location of your VPN server instead of your actual device.

<figure><img src="/files/M41221lVRBtrThvTeelX" alt="Checking the new IP address after connecting to the VPN server."><figcaption></figcaption></figure>


# How to create a VPN server with AWS

Discover how to create and configure your private VPN server using AWS and Meshnet.

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

As the internet has become an indispensable part of our daily lives, addressing its inherent challenges is more important than ever — be it maintaining privacy, securing connections, or accessing global content without restrictions. A personal VPN server can be an effective solution to these concerns, allowing you to navigate the digital world with greater control and peace of mind.

This article focuses on how to create a VPN server using a cloud-based approach in combination with Meshnet. With Meshnet's connectivity and [traffic routing capabilities](/features/routing-traffic-in-meshnet#feature-availability), you can access your VPN server securely from any location and device, without the need for advanced configuration.

When it comes to choosing a cloud provider for setting up a virtual machine, [Amazon Web Services](https://en.wikipedia.org/wiki/Amazon_Web_Services) (AWS) stands out as a popular and reliable option. AWS provides an attractive free tier, enabling you to explore their services without any financial commitment.

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

While setting up your own VPN server enhances your online privacy, it may not provide the same level of protection as connecting to a standard VPN server offered by NordVPN. NordVPN follows a [strict no-logs policy](https://nordvpn.com/features/strict-no-logs-policy/), which is crucial for ensuring your online activities remain confidential.
{% endhint %}

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Before you begin, sign up for an [AWS account](https://aws.amazon.com/ec2/?p=ft\&c=cp\&z=3) and log in. During registration, you can choose from various support plans, including a free option.

## Create a VM instance on AWS <a href="#create-a-virtual-machine-instance-on-aws" id="create-a-virtual-machine-instance-on-aws"></a>

Complete the following steps to prepare for launching a virtual machine (VM), referred to as an *EC2 instance* in the AWS environment.

1. From the navigation bar, select the Regions dropdown menu and choose the region where you want your server to be located.\
   \
   ![Choosing a region for the VPN server.](/files/RItjAuNROQZxuMjZeJhF)<br>
2. Do any of the following:
   * On the **Console home** page, under **Build a solution**, choose **Launch a virtual machine**.<br>

     <div align="left"><figure><img src="/files/OeseXA4Ni2vVorWk9afD" alt="Selecting Launch a virtual machine in the AWS console."><figcaption></figcaption></figure></div>

   * Open the [EC2 console dashboard](https://console.aws.amazon.com/ec2/) and, under **Launch instance**, select the **Launch instance** button, and then choose the **Launch instance** option.

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

This guide primarily covers the setup of an Ubuntu-based VM, but AWS also supports Windows, macOS, and other operating system VMs for custom virtual servers.
{% endhint %}

To configure and launch a VM instance:

1. Under **Name and tags**, in the **Name** field, enter a name for your instance.

2. Under **Application and OS Images (Amazon Machine Image)**, choose an operating system for your instance, like Ubuntu, and its preferred version. Consider choosing a version marked as **Free tier eligible** to avoid additional costs.<br>

   <div align="left"><figure><img src="/files/MYL4BRPlq3zeTe9EZMHP" alt="Selecting the operating system of the virtual machine."><figcaption></figcaption></figure></div>

3. Under **Instance type**, you can select the hardware configuration for your instance. The instance type eligible for the free tier is already selected by default, so you can proceed without modifying it unless you need additional resources.

4. Under **Key pair (login)**, choose the option to create a new key pair. Make sure to save the automatically downloaded private key file in a secure location. For additional details, refer to [Amazon's documentation on creating a key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair).

5. Configure network settings for better security if needed. Default settings usually suffice for a typical setup, but customizing security groups adds extra protection. For more information, see the [Create a security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-base-security-group) procedure in Amazon's documentation.

6. You can leave the default options selected for the remaining configuration settings of your instance.

7. Under **Summary**, select **Launch instance**. It will take a few minutes for AWS to set up the instance.

Before connecting to your instance, ensure that it has passed all status checks displayed in the **Status check** column of the **Instances** pane, as shown:

<figure><img src="/files/43dMIJqoFeEDl9lLmsNv" alt="Checking if the VM has passed the status checks."><figcaption></figcaption></figure>

## Connect to your instance <a href="#connect-to-your-instance" id="connect-to-your-instance"></a>

Once your instance is running, you can access it from your local computer using [SSH](https://nordvpn.com/cybersecurity/glossary/secure-shell/).

### Setting permissions for the private key <a href="#setting-permissions-for-the-private-key" id="setting-permissions-for-the-private-key"></a>

To protect your private key, make sure that only you have read access to it by setting the appropriate permissions.

{% tabs %}
{% tab title="From Windows" %}

1. Right-click the downloaded private key.

2. Select **Properties**, choose the **Security** tab, and click **Advanced**.

3. Click **Disable inheritance** > **Convert inherited permissions into explicit permission on this object.**

4. Back in the **Advanced security settings** window, remove access for all users except your own account by selecting a permission entry and clicking **Remove**.<br>

   <div align="left"><figure><img src="/files/5EQddYXu0WcjLgVxg8VC" alt="Clicking Remove."><figcaption></figcaption></figure></div>

5. Click **Apply**, and then click **OK** to save changes.
   {% endtab %}

{% tab title="From macOS or Linux" %}

1. Open **Terminal**.
2. Enter the following command, replacing `</path/key-pair-name.pem>` with the path to the downloaded private key:<br>

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">chmod 400 &#x3C;/path/key-pair-name.pem>
   </code></pre>

   \
   **Example**

   <figure><img src="/files/turLTg0FpOvEYn1CoNEa" alt="Running the &#x27;chmod 400&#x27; command."><figcaption></figcaption></figure>

{% endtab %}
{% endtabs %}

### Accessing your instance using an SSH client <a href="#connect-to-your-instance-using-an-ssh-client" id="connect-to-your-instance-using-an-ssh-client"></a>

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

By default, password authentication and root login are disabled.
{% endhint %}

To establish an SSH connection to your VM instance:

1. Locate the public DNS address of your instance in the **Public IPv4 DNS** column of the **Instances** pane.<br>

   <figure><img src="/files/d95aM4HE4Zbt5tgBcUvh" alt="Finding the public IPv4 DNS of the VM"><figcaption></figcaption></figure>

2. Open **Command prompt** (on Windows) or **Terminal** (on Linux and macOS).

3. Enter the following command, replacing the placeholders with the appropriate values for your VM instance, where:<br>

   * `</path/key-pair-name.pem>` is the path to your private SSH key file.
   * `<instance-username>` is the username associated with your VM. \
     The default username is determined by the AMI selected when configuring the instance. For example, an Ubuntu AMI uses `ubuntu` as the username. For more information, consult the [Manage users on your Linux instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html#ami-default-user-names) article in Amazon’s documentation.
   * `<instance-public-dns-name>` is the public DNS address of your VM instance.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">ssh -i &#x3C;/path/key-pair-name.pem> &#x3C;instance-username>@&#x3C;instance-public-dns-name>
   </code></pre>

   \
   **Example**

   <figure><img src="/files/HUGdPpixtQA4y5AQ8zFj" alt="Connecting to the VM over SSH."><figcaption></figcaption></figure>

4. You will receive a response similar to the one below. Type `yes` and press **Enter** to confirm the connection.<br>

   <figure><img src="/files/FpaYWe1oNNXFOExt9EOD" alt="SSH connection confirmation message."><figcaption></figcaption></figure>

You should now be successfully connected to your instance.

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

To set up NordVPN on your instance, follow these steps:

1. Download and install the NordVPN Linux client by entering this command in the instance terminal:<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>

2. 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

Instructions for both methods are outlined below.

<details>

<summary>Log in using a token</summary>

1. On any device, log in to your [Nord Account](https://my.ndaccount.com/) dashboard and select the **Meshnet (by NordVPN)** card.<br>

   <div align="left"><figure><img src="/files/SbXZ7hpBGcEogKOKWltB" alt="&#x22;Meshnet (by NordVPN)&#x22; card highlighted."><figcaption></figcaption></figure></div>

2. Under **Advanced settings**, select **Get access token**.<br>

   <div align="left"><figure><img src="/files/Eznf4Fz6ethvZgiXa3K0" alt="Clicking the &#x27;Set up NordVPN manually&#x27; button."><figcaption></figcaption></figure></div>

3. Enter the verification code sent to your email address.

4. Under **Access token**, click **Generate new token**.<br>

   <div align="left"><figure><img src="/files/yTnGkAmJvCL7tblVpF0h" alt="Clicking &#x27;Generate new token&#x27;."><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="/files/JRvc2iH3z596eQGJ79n8" alt="Selecting the token expiry option." width="563"><figcaption></figcaption></figure></div>

6. Select **Copy and close**.

7. On your VM, enter the `nordvpn login --token` command along with the copied token:<br>

   ```bash
   nordvpn login --token <your_token>
   ```

   \
   **Example**

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

You should now see a welcome message.

</details>

<details>

<summary>Log in using a URL</summary>

1. Run the following command:<br>

   ```bash
   nordvpn login
   ```

2. Open the provided link on any device in your browser.

3. Complete the login procedure.

4. Right-click the **Continue** button and select **Copy link address**.

5. Run the following command, replacing `<URL>` with the previously copied link address:<br>

   ```bash
   nordvpn login --callback "<URL>"
   ```

   \
   **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.

</details>

{% 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 %}

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

If you encounter the error message “Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock,” enter `sudo usermod -aG nordvpn $USER`. Then, reboot your instance and log back in.
{% endhint %}

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

On your instance, [enable Meshnet](/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#enable-meshnet-on-linux) by typing 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.

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer list
```

{% endcode %}

Additionally, you will see all the devices connected to your network. Depending on the [permissions](/features/explaining-permissions) granted to each device, they will have access to this server via Meshnet.

### Grant the traffic routing permission

To begin using the VPN server, you need to grant the traffic routing permission for each peer device that you want to have access to the server. Enable this permission from the server machine using the following command:

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow <device>
```

{% endcode %}

**Example**

{% code overflow="wrap" %}

```bash
nordvpn meshnet peer routing allow secret.raccoon-everest.nord
```

{% endcode %}

For more information, see the [Traffic routing permissions](/features/explaining-permissions/traffic-routing-permissions#changing-permissions) page.

## Route traffic through your instance

To begin using your instance as a VPN server, you need to route traffic from a client device through the instance. Follow these steps:

1. On your client device, open **NordVPN** and log in to your account.
2. Start routing traffic through the linked host device you set up. For specific instructions, see [Routing traffic in Meshnet](/features/routing-traffic-in-meshnet#see-also).&#x20;

<figure><img src="/files/tv4egGgrvmNxrUuRYN2H" alt="Clicking Route all traffic."><figcaption></figcaption></figure>

[Your device's IP address](https://nordvpn.com/what-is-my-ip/) should now match the public IP address of your instance. This way, your real IP address remains secure, and the websites you visit will detect the location of your VPN server instead of your actual device.

<figure><img src="/files/3wSi2TgLesIobs3rzb7U" alt="Checking the new IP address after connecting to the VPN server."><figcaption></figcaption></figure>




---

[Next Page](/llms-full.txt/1)

