# Vultr

**This section is for installing Pritunl Cloud on Vultr Bare Metal if you are using Azure or another provider skip to the next section.**

### **Create VPC Network**

First open the *Network* section of the Vultr web console and go to the *VPC Networks* section. Click *Add VPC Network* and select a *Network Location*.

<figure><img src="/files/SeLIzUVV36wfqybD1rpY" alt="" width="563"><figcaption></figcaption></figure>

### Create Bare Metal Server

[**Pritunl Boot**](https://boot.pritunl.com/) will be used to install the operating system on the Vultr Bare Metal server using iPXE. When installing the distribution either leave the *Root Filesystem Size* blank to use the full disk or use a 50GB root filesystem and create an encrypted XFS mount at `/var/lib/pritunl-cloud` with the remaining space. Follow the [**Pritunl Boot Vultr documentation**](https://docs.pritunl.com/kb/boot/platforms/vultr) to install Oracle Linux 10 or AlmaLinux 10 as the host operating system.

### Install Pritunl Cloud

The [**Installation documentation**](/kb/cloud/getting-started/installation.md) **has more information on the commands that will be run below. Refrence this for more information. This section also explains how to upgrade the MongoDB server. First install MongoDB inside Podman using the commands below.**

```sh
sudo dnf -y install git-core podman

git clone https://github.com/pritunl/toolbox.git
cd toolbox/mongodb-container
sudo podman build --rm --no-cache --pull -t mongo .
cd

sudo mkdir /var/lib/mongo
sudo chown 277:277 /var/lib/mongo
sudo tee /etc/containers/systemd/mongodb-podman.container << EOF
[Unit]
Description=MongoDB Podman Service

[Container]
Image=localhost/mongo
ContainerName=mongodb
Environment=DB_NAME=pritunl-cloud
Environment=CACHE_SIZE=1
User=mongodb
Volume=/var/lib/mongo:/data/db:Z
PublishPort=127.0.0.1:27017:27017
PodmanArgs=--cpus=1 --memory=2g

[Service]
Restart=always

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start mongodb-podman.service

sleep 3
sudo cat /var/lib/mongo/credentials.txt
```

Then install and start Pritunl Cloud with the commands below. Pritunl Cloud will automatically read the credentials from the path above if it exists. If the MongoDB database is hosted in another way add the MongoDB URI to `/etc/pritunl-cloud.json` .

```sh
sudo tee /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/almalinux/10/
gpgcheck=1
enabled=1
gpgkey=https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc
EOF

sudo dnf -y update

sudo dnf -y remove iptables-services
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
sudo setenforce 0

sudo dnf -y install iptables net-tools ipset ipvsadm xorriso qemu-kvm qemu-img swtpm swtpm-tools
sudo dnf -y install pritunl-cloud
sudo systemctl enable --now pritunl-cloud
```

### Configure Pritunl Cloud

First get the default password by running the command below. Then use this to login to the web console running on HTTPS port 443.

```
sudo pritunl-cloud default-password
```

In the Vultr bare metal server settings open the *IPv6* settings. This information will be used in the next step.

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

Then open the *IP Blocks* tab in the Pritunl Cloud web console. Create a block for the public IPv6 addresses. Set the *Network Mode* to *IPv6* and name the block. Then copy the *Network* from the previous step into the *IPv6 Addresses* and append the `/64` CIDR. Then add the subnet and click *Create*.

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

Once the blocks have been configured open the node settings in the *Nodes* tab. Set the *Network IPv6 Mode* to *Static*. Remove the default `pritunlhost0` internal interface then set *Internal Interfaces* to the internal interface and click *Add Interface*. This should display the private IPv4 address on the dropdown selection.

For the *External IPv6 Block Attachments* select the external interface. This interface should display the public IPv4 address on the dropdown selection. Then select the IP block that was created in the previous step.

Disable *Default instance public IPv4 address* and enable *Default instance public IPv6 address*. Then enable *Jumbo frames internal* option and disable *Jumbo frames external*.

<figure><img src="/files/613o9aHctjvU1x77MHVL" alt="" width="463"><figcaption></figcaption></figure>

Open the *Datacenters* tab and verify the *Network Mode* is set to *VXLAN*. Then set *Jumbo Frames MTU* to `8850`.

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

Open the *Authorities* tab. These store SSH credentials that will be applied to instances based on matched roles. If an instance has a role that matches the authority role that SSH key will be added to the instance under the `cloud` username. The name of the authority does not change the username it will always be the `cloud` user. Select the pre-created authority and paste your public SSH key in the *SSH Key* field and click *Save*. When creating an instance or pod add the `instance` role to include this SSH key to allow for SSH access.

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

This completes the configuration for a Pritunl Cloud server on Vultr Bare Metal. The section linked below will explain creating a pod. These sections assumes instance public IPv6 addresses are not available although with this configuration each instance will receive a public IPv6 address.

To provide public IPv4 addresses for instances repeat the previous steps adding a block for each reserved IP attached to the host. Set the *Network IPv4 Mode* to static and create a block attachment for each reserved IP block. All the bloock attachments should use the public interface.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Simple Web Server Pod</strong></td><td></td><td></td><td><a href="/pages/IRjMJ8dvXq57WrLRk0wT">/pages/IRjMJ8dvXq57WrLRk0wT</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.pritunl.com/kb/cloud/platforms/vultr.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

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