Skip to content

Deploying a VM

Running a VM on the ARROW device lets you stand up a disposable, ready-made attack box right on the target network, without shipping more hardware. ARROW Manager deploys these from a built-in library of pre-built templates, and this guide walks the whole process from encrypted storage through a booting VM.

The Virtual Machines page is laid out in three parts: a status strip across the top (VM count, storage state, and a Scan USB action), a “Your Machines” list of what you have already deployed, and a “Deploy a VM” app library where you pick a template and launch it.

ARROW Manager Virtual Machines page with the app library and encryption setup prompt ARROW Manager Virtual Machines page with the app library and encryption setup prompt

The Virtual Machines page, showing the app library and the encryption setup prompt

ARROW Manager Virtual Machines page with the app library and encryption setup prompt ARROW Manager Virtual Machines page with the app library and encryption setup prompt

You need four things in place before a VM will deploy:

  • You are logged into ARROW Manager
  • Host connection credentials are configured (under Settings, in Virtual Machines)
  • Encrypted storage is set up and mounted
  • At least one template is installed from the app library

VMs on the ARROW device always live on LUKS-encrypted storage. This is deliberate: your VMs may hold engagement data and target access, and if the device is lost or seized, that data has to be unreadable. That is why deployment is blocked until encryption is active.

If encryption is not set up yet, the Virtual Machines page shows an “Encryption Setup Required for Deployment” prompt and the storage indicator in the status strip reads “Not set up”. To set it up, click Setup Encryption, enter a strong key or passphrase, and confirm. The device creates a LUKS-encrypted partition, mounts it, and configures a dedicated “encrypted” storage location for your VMs.

Remember Your Key

The device does not save your encryption key. You have to re-enter it after every reboot to unlock your VM storage, and if you lose it there is no recovery: your only path forward is to wipe the encrypted storage and start over. Store the key somewhere safe.

A reboot leaves the storage locked, so you will see an Encrypted Storage Not Mounted alert. This is normal, not a failure. Click Enter Encryption Key, type your key, and click Unlock Storage to remount it and get your VMs back.

Step 2: Choose a Template from the App Library

Section titled “Step 2: Choose a Template from the App Library”

The “Deploy a VM” section is a one-click app library. Each card shows a template, such as kali-arrow (Kali Linux with ARROW’s custom tools and configuration), along with its tags and version. If a template has not been downloaded yet, install it from its card and wait for the download to finish. Templates are kept separate from the encrypted partition, so you can install and update them whenever you like, even before encryption is set up.

Click Deploy on a template card to open the deployment dialog. It has four sections to fill in before the VM can be created.

Set the passwords the VM will be built with:

FieldRequiredDescription
Root PasswordYesRoot account password (minimum 8 characters)
Confirm Root PasswordYesMust match the root password
ARROW User PasswordYesPassword for the arrow user account (minimum 8 characters)
Confirm ARROW User PasswordYesMust match the arrow user password
SSH Public KeyNoOptional SSH public key for key-based authentication (ssh-rsa, ssh-ed25519, etc.)

This is what makes the VM reachable from anywhere, the same way the device itself is. ARROW Manager provisions a NetBird setup key for the VM automatically and ties it to your device request, so there is no key to paste in. The VM joins your organization’s VPN network on first boot and becomes remotely accessible.

FieldRequiredDescription
NetBird Device NameAutoAutomatically generated from your device hostname in the format pvm-[host-suffix] (for example, pvm-001). This becomes the VM’s system hostname; you can edit it before deploying.
Enable ARROW ControlNoToggle to provision an ARROW Control license for the VM (enabled by default, Linux only). When enabled, an Install Beta Version toggle lets you provision the pre-release beta build instead of the stable channel.

Configure how the VM connects to the local network:

FieldRequiredDescription
MAC AddressAutoAuto-generated from the host adapter. Can be manually changed if needed.
Use Static IPNoToggle between DHCP (default) and static IP configuration

When Use Static IP is enabled, additional fields appear:

FieldRequiredDescription
IP AddressYesStatic IP address for the VM
Subnet MaskYesSupports CIDR notation (/24) or decimal (255.255.255.0)
GatewayYesNetwork gateway address
Primary DNSYesPrimary DNS server
Secondary DNSNoOptional fallback DNS server

If you leave Use Static IP disabled, the VM will use DHCP to obtain its network configuration automatically.

Decide how much of the device’s hardware the VM gets. The defaults are calculated from your device’s actual specs and leave headroom for the host to keep running, so they are a safe starting point; adjust them if the VM needs more or you are running several at once.

FieldDefaultDescription
Disk Size (GB)Template minimumSize of the VM disk. Cannot be smaller than the template’s disk size. Maximum 2000 GB.
CPU CoresHost cores - 1Number of CPU cores allocated to the VM
Memory (GB)Host memory - 2 GBAmount of RAM allocated to the VM

With all four sections filled in, click Create VM. ARROW Manager validates your settings, allocates a VM ID on Proxmox, clones the template with your resource settings, applies the cloud-init configuration (passwords, network, and VPN), and starts the VM.

You can watch the progress as it happens. When it finishes, the VM shows up in your VM list and begins booting.

A quick pass before you hit Deploy:

RequirementStatus
Logged into ARROW Manager
Proxmox credentials configured
Encrypted storage set up and mounted
Template installed
Root and arrow user passwords chosen
Network configuration decided (DHCP or static)
Resource allocation reviewed

“Encrypted storage is not mounted.” Set up or unlock encrypted storage before deploying, as covered in Step 1.

The Deploy button is greyed out. It stays disabled until the basics are in place, so check for one of these: encrypted storage is not set up or not mounted, a template is still downloading, or host connection credentials have not been configured.

The VM has no network. On static IP, confirm the IP, gateway, and DNS are correct for the network you are on. On DHCP, make sure the network actually has a DHCP server. Either way, check that the MAC address does not collide with another device.

You forgot the encryption key after a reboot. There is no way to recover it. Your only option is to wipe the encrypted storage and set it up again, which deletes every deployed VM. Use the Wipe action in the status strip to reset, then see below.

When an engagement wraps up, wiping the encrypted storage is how you make sure nothing you did on the device can be recovered. It permanently destroys every deployed VM and its data. You would also wipe if you have lost the encryption key and cannot unlock the storage, or if you simply want the disk space back.

Wiping stops all running VMs, deletes them from Proxmox, removes the “encrypted” storage from the Proxmox configuration, unmounts the filesystem, closes the LUKS device, wipes the LUKS header so the data cannot be recovered, and deletes the partition from disk.

To wipe:

  1. Go to the Virtual Machines page in ARROW Manager
  2. In the status strip, click the Wipe action (it only appears when encrypted storage exists)
  3. Read the warning dialog carefully
  4. If any VMs are running, you will see an extra warning that they will be stopped for you
  5. Click Wipe Encrypted Storage to confirm

Afterward you can set up encryption from scratch again by following Step 1.