Mount NFS on OpenMediaVault

This guide shows how to prepare a disk on an NFS server, export it with nfs-kernel-server, troubleshoot common permission problems, and mount the remote NFS share from an OpenMediaVault client using the official Remote Mount plugin.

On the NFS Server

Mount the Disk by UUID

First, identify the UUID of the disk or partition you want to mount:

sudo blkid

Example output:

root@orangepi3:~# sudo blkid
/dev/mmcblk2p1: UUID="600d3790-5661-48e4-b40f-16356b83183d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b0d8b10d-01"
/dev/sdb1: UUID="4fe6face-5253-486d-9c6c-c6658ea036ba" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="ccc2e70a-a1f9-49d6-aecf-36e13ba0a9d4"
/dev/mmcblk0p1: UUID="0463846f-1aa0-42b9-bc76-92a8d366d6ed" BLOCK_SIZE="4096" TYPE="ext4"
/dev/zram1: LABEL="log2ram" UUID="1514a966-ac2d-4275-9822-f95aee88050f" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda1: UUID="6600936a-8024-462d-a92a-96ce2b73c2c7" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="62fce7c6-3580-a242-bc44-84255f16efb6"
/dev/zram0: UUID="11e281ee-50ce-452d-8e35-bef71510b09d" TYPE="swap"

Create the mount point if it does not already exist:

sudo mkdir -p /mnt/4tb

Edit /etc/fstab:

sudo nano /etc/fstab

Add a line like this, replacing the UUID and mount path with your own values if needed:

UUID=6600936a-8024-462d-a92a-96ce2b73c2c7   /mnt/4tb   ext4   defaults,nofail   0   0

Reload systemd and mount everything defined in /etc/fstab:

sudo systemctl daemon-reload
sudo mount -a

Verify the disk is mounted:

findmnt /mnt/4tb

Set Up the NFS Server

Install the NFS server package:

sudo apt update
sudo apt install nfs-kernel-server

Set ownership and permissions for the exported directory:

sudo chown nobody:nogroup /mnt/4tb
sudo chmod 777 /mnt/4tb

Edit /etc/exports:

sudo nano /etc/exports

Add the export rule. Replace 10.10.0.10 with the IP address of your OpenMediaVault client:

/mnt/4tb 10.10.0.10(rw,sync,no_subtree_check,crossmnt,anonuid=1000,anongid=100)

Apply and verify the export:

sudo exportfs -ra
sudo exportfs -v

Troubleshooting: NFS Mount Does Not Show Data Correctly

Symptoms

The server exports the NFS share successfully, and the client mounts it without errors. However, when you open the mounted directory, file and directory names appear as ?????????, and reading the content fails with Permission denied.

Investigation

  1. Check whether the data really exists on the server. In this case, it does: directories such as data, docker, and .recycle are present.

  2. Check whether a missing crossmnt option is the problem. This can happen when a subdirectory is a separate mount point. Use findmnt to verify it:

    findmnt /mnt/4tb/data
    

    In this case, data is not a separate mount point, so missing crossmnt is not the root cause. Keeping crossmnt is still useful in case child mount points are added later.

  3. The actual root cause is directory permissions. The data directory on the server has permissions like this:

    drwxrwsr--
    

    This means other only has read permission (r--) and does not have execute permission (x). For directories, execute permission is required to enter and traverse the directory.

By default, NFS uses root_squash. This means that even if the client accesses the mount as root, that root user is mapped to nobody:nogroup on the server. As a result, the client falls into the other permission class and does not have enough permission to access the files inside the directory.

Solution

Use these permissions on the exported root directory:

sudo chown nobody:nogroup /mnt/4tb
sudo chmod 777 /mnt/4tb

Then add anonuid=1000,anongid=100 to the NFS export:

/mnt/4tb 10.10.0.10(rw,sync,no_subtree_check,crossmnt,anonuid=1000,anongid=100)

This maps squashed users to the real UID and GID that own the data on the server. In this example:

  • anonuid=1000 maps anonymous NFS access to UID 1000.
  • anongid=100 maps anonymous NFS access to GID 100, usually the users group on many Debian-based systems.
  • crossmnt allows child mount points under the exported directory to be visible through the export if you add them later.

Reload the export after changing /etc/exports:

sudo exportfs -ra
sudo exportfs -v

Mount the NFS Share on an OpenMediaVault Client

To mount an external NFS share onto an OpenMediaVault system, use the official openmediavault-remotemount plugin through the OMV web interface. This integrates the remote storage cleanly into OpenMediaVault, allowing you to manage it, assign permissions, create shared folders, and pass it to Docker containers.

Step 1: Install the Remote Mount Plugin

If OMV-Extras is not installed yet, install it first so you can access community plugins.

  1. Log in to the OpenMediaVault Web GUI.
  2. Go to System > Plugins.
  3. Search for openmediavault-remotemount.
  4. Select the checkbox next to it and click Install.
  5. After the installation finishes, click the yellow Apply banner at the top of the interface.

Step 2: Add the NFS Remote Mount

  1. Go to Storage > Remote Mounts.
  2. Click + Add.
  3. Fill in the mount configuration:
    • Mount Type: Select NFS.
    • Name: Enter a custom name, such as Remote_NAS.
    • Server: Enter the IP address of the NFS server, such as 10.10.0.1 or 192.168.1.50.
    • Share: Enter the exported path from the server, such as /mnt/4tb.
    • Options: Leave this as defaults, or add specific tuning options if your setup requires them.
  4. Click Save.
  5. Click the yellow Apply banner to finalize the changes.
  6. Select the new mount and click Mount if it does not automatically become active.

Note: With NFSv4, the share path may be shorter depending on the server’s NFSv4 pseudo-root configuration. With NFSv3, you usually use the full exported path, such as /mnt/4tb or /export/Media.

Step 3: Register the Remote Mount as an OMV Shared Folder

OMV services such as SMB, Plex, and Docker cannot use a disk or remote mount properly unless it is registered as an OMV shared folder.

  1. Go to Storage > Shared Folders.
  2. Click + Create.
  3. Set a Name for the shared folder.
  4. In the File System dropdown, select the newly mounted NFS share. It should appear using the custom name you configured in Remote Mounts.
  5. Set the Path. Usually / is enough if you want to expose the root of the remote share.
  6. Click Save.
  7. Click Apply to commit the configuration.

Your remote NFS share is now mounted, recognized by OpenMediaVault, and ready to be used like a local storage folder.

Alternative: Test the NFS Mount from the CLI

If you want to test the mount through SSH first, or if the OMV web interface reports an error, mount it manually from the terminal:

# 1. Create a temporary local mount directory
sudo mkdir -p /mnt/test_nfs

# 2. Mount the NFS share. Adjust the IP address and path for your setup.
sudo mount -t nfs 192.168.1.50:/export/Media /mnt/test_nfs

# 3. Verify that files are visible
ls -la /mnt/test_nfs

If you receive Permission denied or Protocol not supported, check the following:

  • The OpenMediaVault client IP is allowed in the server’s /etc/exports file.
  • The export was reloaded with sudo exportfs -ra.
  • The server firewall allows NFS traffic.
  • The NFS server package is installed and running.
  • The exported directory permissions allow the mapped NFS user to traverse and read the directory.

Quick Checklist

On the server:

sudo blkid
sudo nano /etc/fstab
sudo systemctl daemon-reload
sudo mount -a
sudo apt install nfs-kernel-server
sudo chown nobody:nogroup /mnt/4tb
sudo chmod 777 /mnt/4tb
sudo nano /etc/exports
sudo exportfs -ra
sudo exportfs -v

On OpenMediaVault:

  1. Install openmediavault-remotemount.
  2. Add the NFS share under Storage > Remote Mounts.
  3. Mount it.
  4. Register it under Storage > Shared Folders.
  5. Use the shared folder with OMV services or Docker containers.