Testing Open Media Vault (OMV) inside a Proxmox VM

Introduction

I’ve been reading good things about Open Media Vault (OMV) for a while now, and have decided it’s time to give it a try for myself. I have a new Proxmox host that isn’t currently doing a great deal so I’ve decided to spin up a new VM and install OVM there.

Until this point in time, I’ve been in the habit of directly attaching new hard disk drives directly to my Proxmox hosts (usually using SATA) and then passing them through to a Linux VM. The Linux VM then shares out the volumes over SMB, FTP, etc. This is all configured at the command line and although I have the process nailed down, I thought it might be interesting to see if using OMV could make things less arduous.

What is Open Media Vault?

Open Media Vault (OMV) is a Debian-based Linux operating system. Out of the box, it aims to implement a NAS (Network Attached Storage) system with minimal configuration. It allows you to easily share your data over the likes of SMB, CIFS, NFS, FTP, etc.

It’s well regarded for its ease of configuration and use. Even if I decide to continue with my current setup, I thought it might be useful to write this post in case it helps newbie data hoarders who are perhaps not very technically minded.

Installation

Downloading the Open Media Vault installation media

For this test, I’m going to be performing a fresh installation of OMV, from its ISO file. The ISO files for all versions of OMV can be found here. At the time of writing, the latest stable release is 5.6.13, so that’s the one we’ll use today.

We could download the OMV ISO file using our Web browser and then upload it to Proxmox over its Web interface (you would select the local storage belonging to your node, navigate to “ISO Images” and click “Upload”). I find this to be quite slow, however, so I’m going to download the OMV ISO file directly to the Proxmox host.

Firstly, we need to SSH into our Proxmox host/node. I’m using PuTTY for this. Once connected, we need to issue a “cd” command to change to the directory that holds our ISO files (/var/lib/vz/template/iso):

Changing to the Proxmox directory that holds ISO files
Changing to the Proxmox directory that holds ISO files

Then, we need to use “wget” to pull the ISO file down from the OMV Sourceforge repository. We type “wget” followed by a space and then the URL to the ISO file that we found on the Sourceforge webpage. The command in my case is “wget https://netcologne.dl.sourceforge.net/project/openmediavault/5.6.13/openmediavault_5.6.13-amd64.iso”

As you can see, the download is around 620MB in size and took a little over a minute to complete. This will of course vary based on your connection speed:

Downloading the OMV ISO using wget
Downloading the OMV ISO using wget

Creating the OMV Virtual Machine in Proxmox

According to this document, the minimum amount of RAM needed for OMV is just 1GB, and the minimum disk size is 4GB. As this is just a limited test, I’ll create a new VM with these values.

I won’t provide step-by-step instructions for creating the VM as I’ve covered that in other posts. Here is the final step, however, showing the values used:

Proxmox settings for OMV installation
Proxmox settings for OMV installation

Performing the OMV installation

Once the VM has started, you can launch the console and should find you’re presented with the initial installation screen shown below. We’ll select “Install”:

OMV boot installation screen in Proxmox console

There will then be a number of other screens asking us to choose “Language”, “Region”, “Keyboard Layout”, and so on. I won’t bother providing images as they’re all rather mundane.

After a few minutes, you’ll be asked to choose a hostname (I left it as the default “openmediavault”), and a password for the “root” account. From here on, the installation took around 5 minutes. You should find you’re presented with a progress screen like the one below while the installation is taking place:

OMV installation progress
OMV installation progress

The installer will eventually advise that the installation is complete and prompt you to allow a reboot of the VM. Once the VM has rebooted you should be able to visit “http://<hostname_that_you_chose/”, in my case that’s http://openmediavault/.

This is assuming you have DHCP and DNS running in your environment. If you don’t, you can browse to the IP address listed on the console:

OMV logon screen, showing Web console IP address
OMV logon screen, showing Web console IP address

Logging into OMV for the first time

Upon visiting the URL mentioned above, you should be presented with a logon screen like this:

Enter the default username (“admin”) and password (“openmediavault”), then click “Login”.

OMV Web logon
OMV Web logon

Changing the OMV admin password

Before we set anything else up, we should change the admin password. To do this, we need to browse to “System”, “General Settings”, “Web Administrator Password”. Enter a new password twice and then click “Save”. Make sure you choose something secure:

Changing the OMV password
Changing the OMV password

Installing updates to OMV

The next thing we should really do is check if the system has any updates available. To do this we go to “System”, “Update Management”, “Updates”, and then click “Check”.

If any are found, we can install them by clicking the “Package Information” checkbox and then clicking “Install”:

Installing updates to OMV via the Web interface
Installing updates to OMV via the Web interface

Installing Proxmox guest agent (Qemu-guest-agent)

It’s good practice to install the guest agent onto newly built VMs. It allows Proxmox to better control the power functions of the VM and makes backups/restores more reliable. As OMV is based on Debian Linux, this is a straightforward task. You can either launch the console for your new VM or SSH into it (OMV runs SSH by default on port 22, permitting root-access). Then simply issue the command “apt install qemu-guest-agent”. You should see a similar output to the image below, indicating that the guest agent has been successfully installed onto OMV:

Installing Proxmox guest agent into OMV
Installing Proxmox guest agent into OMV

Next, we need to shutdown the OMV VM whilst we enable the guest agent within the Proxmox Web interface. This is done by issuing a “shutdown -P now” command:

shutdown -P now
shutdown -P now

Once the VM has shutdown, go back into your Proxmox Web interface, select the OMV VM in the left-hand pane, go to “Options” and set “QEMU Guest Agent” to “Enabled”:

guest agent for OMV
Enable Proxmox/QEMU guest agent for OMV

Now simply start the VM again and the guest agent will be active.

Passing a physical disk from the Proxmox host to the OMV VM

For the purposes of this test, I’m going to take a physical hard disk drive that I currently have passed through to a different VM and pass it through to the new OMV VM. This will become our OMV “data” disk, used to hold data that we want to make available to NAS clients.

I won’t write about removing the existing passthrough as it won’t apply to most readers. In any event, if you’ve managed to pass through a disk in the past, you’ll likely already know how to revert that.

I will mention that the disk is already formatted and contains data, so I will later remove the partition table so that OMV sees it as a new disk. This will let me try out the formatting options within OMV.

Step 1 – Identify the ID of your OMV Proxmox Virtual Machine

We need to know the ID of our new VM so that we can tell Proxmox which VM to pass the hard disk drive through to. This is easy enough to determine, simply open the Proxmox Web interface and find the VM in the left-hand pane. As you can see in the image below, we imaginatively called our VM “omv1”, so can see that Proxmox has assigned it an ID of “111”:

Find ID of Proxmox VM
Find ID of Proxmox VM

Step 2 – Identify the disk you’d like to use

There are a few ways to do this. In my case, I happen to know the serial number of the disk I’m planning to use so that makes things easy. If you take a look at your Proxmox Web interface under “Disks”, it’ll show you all disks connected to your Proxmox host, including their serial number.

From your Proxmox terminal (SSH or physical console), issue this command: “ls -l /dev/disk/by-id/ | grep -i <Serial_number_of_disk>”

My disk has a serial number of Z1GTDS54 so my command and result look like this:

Find disk by serial number
Find disk by serial number

Using this information, we know that the full path to the disk, in this case, is “/dev/disk/by-id/ata-ST1000DM003-1SB102_Z1GTDS54”

Step 3 – Tell Proxmox to pass the disk to the VM

Now that we’re confident we have the OMV VM ID (111) and the full path to the disk we’d like to pass to it (“/dev/disk/by-id/ata-ST1000DM003-1SB102_Z1GTDS54”) we simply issue this command:

“qm set 111 -scsi2 /dev/disk/by-id/ata-ST1000DM003-1SB102_Z1GTDS54”

This tells Proxmox to pass the disk to the VM over interface “scsi2”. This is the command and response from the OS:

Pass disk to the OMV Proxmox VM
Pass disk to the OMV Proxmox VM

Step 4 – Optional (not recommended), wiping the disk

As I mentioned earlier, the hard disk I’m using currently already has a BTRFS filesystem and some data on it. For this test, I want OMV to see this as a brand new disk so that I can see how OMV handles this.

For this reason, I’m going to overwrite the first 100 Megabytes of the disk with zeros. This should remove any partition tables and the magic BTRFS string (at offset 0x10040). I don’t recommend you do this unless you understand my reasoning and are happy to lose your existing data. The command I used, for reference, is:

Zero start of data disk using dd command
Zero start of data disk using dd command

Step 5 – Stop and start the OMV VM

In order for OMV to see the newly allocated disk, we need to stop and start the VM. As we already have the guest agent installed, this is easy enough, with these two commands:

Shutdown and Start the VM
Shutdown and Start the VM

Configuring Open Media Vault

Formatting the disk / creating a new filesystem

Back in the OMV Web interface, we can see under “Storage”, “Disks” that the new disk is showing, with the correct capacity:

The passed-through data disk is showing correctly within OMV
The passed-through data disk is showing correctly within OMV

Now let’s try creating a new filesystem on the disk by going to “Storage”, “Filesystems” and then clicking “Create”. I’m going to choose “/dev/sdb” as the device, “Datahoards” as the label, and “BTRFS” as the filesystem type.

As you can see from the image below, this has created a new BTRFS filesystem consuming the whole disk. If we wanted to create separate partitions, we’d need to do this at the command line using something like “Parted”. It seems OMV doesn’t support the creation of partitions from the Web interface.

Creating OMV users, groups, and shares

For this test, I’m going to keep things simple. I’m going to pretend my NAS only holds TV shows and Movies. It’s going to have two groups of users, “TV Addicts” and “Movie Addicts”. Users must be in one or both of these two groups to access their preferred entertainment.

Creating the groups/users

To create our two test groups, we need to navigate to “Access Rights Management”, “Group”. Then we need to click “Add” and provide a group name and (optional) description. Please see below.

Creating an OMV group for accessing TV shows
Creating an OMV group for accessing TV shows
Creating an OMV group for accessing Movies
Creating an OMV group for accessing Movies

Now that the two groups exist, we can create a couple of users to add to these groups. This is done by going to “Access Rights Management”, “User” and again clicking “Add”. This time we need to provide a username, password, and optionally a comment and email address. Then we’ll click on the “Groups” tab and select the appropriate group(s):

Creating user "dave" in OMV
Creating user “dave” in OMV
Adding "dave" to the TV group
Adding “dave” to the TV group
Creating user "bob" in OMV
Creating user “bob” in OMV
Adding "bob" to both the TV and Movie groups
Adding “bob” to both the TV and Movie groups
Creating the Shared Folders

Now that we have users and groups created, we need to create the shared folders that will hold our data. We go to “Access Rights Management”, “Shared Folders” and click “Add”. We need to provide a Name, Device, Path, and optional Comment. For permissions, I chose “Administrator: read/write, Users: read/write, Others: no access” which should be self-explanatory:

Creating an OMV shared folder for TV content
Creating an OMV shared folder for TV content
Creating an OMV shared folder for Movie content
Creating an OMV shared folder for Movie content

The next step is to assign the necessary permissions to the newly created folders. We’ll click on each shared folder, in turn, then click “Privileges” and allow TV-Addicts read/write access to the TV folder and Movie-Addicts read/write access to the Movies folder:

Setting privileges on the TV folder
Setting privileges on the TV folder
Setting privileges on the Movie folder
Setting privileges on the Movie folder
Sharing the Shared Folders

There’s just one final step to complete this setup. We need to create a share at the protocol level. For this test, I’m going to create an SMB/CIFS share so that our TV Shows and Movies can be shared out to Windows clients.

Navigate to “Services”, “SMB/CIFS” then toggle “Enable” and “Save”.

Enabling SMB/CIFS within OMV
Enabling SMB/CIFS within OMV

Click “Shares” and “Add”. Select one shared folder and click “Save”. Repeat for the other shared folder:

Create SMB/CIFS share for TV shows
Create SMB/CIFS share for TV shows
Create SMB/CIFS share for Movies
Create SMB/CIFS share for Movies
Applying Changes

Now that all the configuration is in place, we can click “Save” in the yellow bar at the top to apply our changes:

Applying changes made to OMV
Applying changes made to OMV

Testing our SMB/CIFS shared folders

It’s the moment of truth, time to find out if OMV is sharing our folders out over SMB/CIFS, with the correct permissions.

You should recall that “dave” is a member of the “TV-Addicts” groups, whereas “bob” is a member of both “TV-Addicts” and “Movie-Addicts”.

To test this, from a Windows box, I’m going to map a connection to the OMV server using dave’s credentials and then attempt to access both the TV and Movies SMB/CIFS shares:

"Dave" can access the TV share but not the Movie share
“Dave” can access the TV share but not the Movie share

As you can see, the TV share is accessible with no issues, but the Movies share is inaccessible with the message “access denied”. So far, so good. Now I’ll delete the connection and re-establish it using bob’s credentials:

"Bob" can access both the TV and Movie shares
“Bob” can access both the TV and Movie shares

As expected, you can see that both the TV and Movies shares are accessible using the “bob” account.

Summary

I’ve installed Open Media Vault onto a fresh Proxmox virtual machine. I’ve then configured it to share two folders over SMB/CIFS to specific users/groups. The whole process was relatively intuitive.

I feel slightly uncomfortable that access permissions, once configured via OMV are then handled by just the underlying application daemon performing the sharing (Samba, ProFTP, etc). I would’ve preferred it if the underlying Linux ACLs were also restricted. From reading the OMV documentation I understand that this is possible, but not recommended in a home environment due to the complexity.

Were I to continue using OMV for sharing my media with Windows clients, I’d probably dive a little deeper into the underlying security. For me, I think I’ll continue using smbd and nfsd natively from a vanilla Debian machine, for now, manually handling permissions/ACLs.

It seems OMV is capable of a lot more than I currently need (RAID management, Certificate management, scheduled RSYNC tasks, etc). When it’s time for the next hardware refresh and I look to rebuild my environment I may well have another try of OMV as all in all it feels nicely put together.

Leave a Comment