# Getting Started with freenas-proxmox v3.0 ## 1. What This Plugin Does Proxmox VE is a hypervisor — it runs your virtual machines. Those VMs need somewhere to store their disk images. If you have a TrueNAS storage server on your network, you might want to store those disks on TrueNAS so they live on dedicated, reliable, ZFS-managed storage instead of inside the Proxmox host itself. This plugin makes that possible. It registers a new storage type called **TrueNAS (ZFS/iSCSI)** inside Proxmox. When you add a VM disk to that storage, Proxmox talks to your TrueNAS server through its REST API, creates a ZFS volume on TrueNAS, exposes it as an iSCSI block device, and gives your VM a direct high-speed path to it — all automatically. You do not need to touch the TrueNAS UI every time you create or delete a VM disk. --- ## 2. Prerequisites Complete all of these before installing the plugin. ### 2.1 Proxmox VE Version Your Proxmox VE node (or cluster) must be running **PVE 8.x or PVE 9.x**. Check with: ```bash pveversion ``` If the output shows `pve-manager/7.x`, stay on plugin v2.x — v3.0 does not support PVE 7. ### 2.2 TrueNAS Version | TrueNAS product | Minimum version | |:----------------|:----------------| | TrueNAS SCALE | Electric Eel (24.10) or later | | TrueNAS CORE | 13.0-U6 or later | ### 2.3 iSCSI Service on TrueNAS The plugin creates per-VM iSCSI targets for you automatically. It does **not** create the iSCSI service infrastructure — you must set that up once. **On TrueNAS SCALE:** 1. Go to **Shares → iSCSI → Configure** 2. Under **Portals**, add a portal that listens on the IP address your Proxmox nodes use to reach TrueNAS (or `0.0.0.0` to listen on all interfaces). Note the portal's IP address — you will need it. 3. Under **Initiators**, add an initiator group. You can leave it open (allow all) for initial setup; lock it down to specific Proxmox node IPs later. 4. Enable the iSCSI service and confirm it is running. **On TrueNAS CORE:** 1. Go to **Sharing → Block Shares (iSCSI)** 2. Under **Portals**, add a portal (same as above) 3. Under **Initiators**, add an initiator group 4. Go to **Services** and enable **iSCSI** You do **not** need to create any targets or extents by hand — the plugin creates those automatically when you allocate VM disks. ### 2.4 TrueNAS API Key The plugin authenticates with TrueNAS using an API key (Bearer token). No username or password is used. **On TrueNAS SCALE:** Go to **System Settings → API Keys → Add**. Give it a descriptive name such as `proxmox-plugin`. Copy the key — it is shown only once. **On TrueNAS CORE:** Click the gear icon in the top-right corner → **API Keys → Add**. Copy the key. Store the key somewhere safe temporarily. You will paste it into the Proxmox UI during storage configuration. ### 2.5 Network Reachability - Every Proxmox node must be able to reach the TrueNAS host on **TCP 443** (HTTPS API) or **TCP 80** (HTTP, not recommended) - Every Proxmox node must be able to reach the iSCSI portal on **TCP 3260** No SSH keys are required. No pre-created iSCSI targets are required. ### 2.6 What You Cannot Store on This Storage TPM state disks (`tpmstate0`) cannot live on this storage type. If you plan to create VMs with Secure Boot / TPM enabled, configure a separate local-lvm or NFS storage for those disks. All other disk types (virtio, scsi, IDE, EFI) work normally. --- ## 3. Installation Run all of these commands on **each Proxmox node** in your cluster, or on your single Proxmox host. Run them as root. ### Step 1 — Import the GPG Signing Key ```bash curl -fsSL https://thegrandwazoo.github.io/freenas-proxmox/public.gpg.key \ | gpg --dearmor \ | tee /etc/apt/keyrings/truenas-proxmox.gpg > /dev/null ``` ### Step 2 — Add the Package Repository ```bash echo "deb [signed-by=/etc/apt/keyrings/truenas-proxmox.gpg] \ https://thegrandwazoo.github.io/freenas-proxmox v3 main" \ | tee /etc/apt/sources.list.d/truenas-proxmox.list ``` ### Step 3 — Install the Package ```bash apt update && apt install truenas-proxmox ``` The installer: - Copies `TrueNAS.pm` to `/usr/share/perl5/PVE/Storage/Custom/` - Copies `truenas-storage.js` to `/usr/share/pve-manager/js/` - Adds one `