# File Server

# Introduction

So, you can use nearly any OS to host a file server. However, some are purpose built for the task, some do it as a side job and some are just a bare bones server designed to host anything.

I'm going to start with [Open Media Vault](https://www.openmediavault.org/) because it's really simple, basic, free and completely focused on making it easy to host files. In spite of this, it doesn't actually prevent you from hosting whatever else you want on it too.

Pros:

Easy to use  
Focused  
Few limitations  
Built on Debian  
Free

Cons:

Not really meant for anything other than file sharing

Summary:

It's a web UI built on Debian with a set of pre-installed tools and plugin expansion focused on letting you host files. Notably, there's also a plugin for running Docker containers. Thanks to the Debian base and the ability to SSH in, you can actually host anything you want on it, so long as you know how to install/run it from command line. If you want to get up and running with a file server at minimal cost (free) and minimal effort, without any real restrictions on what it can do, this is a good option. The community support is decent but there aren't many staff working on it, so responses may be slow.

Now, I'm going to list [Ubuntu Server](https://ubuntu.com/download/server), to give a baseline comparison.

Pros:

Optimized Server OS that can run anything.  
Community Support  
Free

Cons:

Aside from some pre-installed apps that make remote management easier, it does absolutely nothing to hold your hand.

Summary:

If you want to roll a server from scratch, this is pretty much the de-facto starting point. You can use other distros but this one has the best community support and only the very minimum of apps needed to get started. If you have a decent amount of Linux experience and don't care about hand holding, this is actually a good option. The vast majority of guides are either made for it or compatible with it. As with most of my recommendations, it is based on Debian.

[Proxmox](https://www.proxmox.com/en/) can host a file server VM or can act as one directly but it's going to come with a lot of restrictions and will generally make you work a lot harder in most scenarios. Built on Debian LTS.

Pros:

Easy to spin up VMs  
Easily share resources across PCs  
Good for setting up clusters  
Free\*

Cons:

File sharing is more difficult and limited  
Not great for individual servers

Summary:

It can host a file server VM but it's not ideal for running a file server. It's really made for running in a cluster and I wouldn't really recommend it for any other situation. However, it can function individually.

The free version restricts you a little but the most annoying restriction is that you get treated like a peasant by being denied access to the "premium" repos. Repos are the servers you download apps and app updates from.

[TrueNAS](https://www.truenas.com/)/[FreeNAS](https://www.truenas.com/freenas/) is actually a NAS OS but very different from OMV. Built on FreeBSD.

Pros:

Easy to setup file sharing  
Scalable  
Mostly Free

Cons:

No mergerfs or snapraid support  
Limited support for USB drives

If you've got the desire to have scalable storage, this is probably the best free option. People running Proxmox tend to set it up in a VM. The software might be free but you're going to spend extra on the hardware because you're going to need something that supports hardware raid. There's not much in the way of software raid for this OS. Don't even bother trying to use it for something other than file sharing.

[unRAID](https://unraid.net/) is a paid solution with software raid features.

Pros:

Easy to use  
Scalable

Cons:

Expensive  
Limited use outside of file sharing

Summary:

There are plenty of people that like it but I find it too expensive and too limiting in what it can do. If you really want to pay to have your hand held for one of the most basic server tasks in the existence of servers, this isn't a bad option.

[HexOS](https://hexos.com/) is an overpriced alternative to unRAID built on TrueNAS. I do not recommend. If you want to pay to have your hand held, go with unRAID.

# OMV Setup

\### Make proper instructions later

# OMV Install Notes

Further reading:

List of (mostly outdated) video guides - https://forum.openmediavault.org/index.php?thread/23005-installation-and-setup-videos-beginning-intermediate-and-advanced/&amp;postID=175857#post175857  
Written guides - https://forum.openmediavault.org/index.php?thread/27073-new-user-guide-getting-started-with-openmediavault-6-5-4/  
Intel Video compatibility - https://en.wikipedia.org/wiki/Intel\_Quick\_Sync\_Video#Hardware\_decoding\_and\_encoding  
Samba share stuff - https://superuser.com/questions/115337/windows-7-connecting-to-samba-shares  
The "ls" command - https://www.freecodecamp.org/news/the-linux-ls-command-how-to-list-files-in-a-directory-with-options/  
https://briantward.github.io/convert-windows-to-kvm/  
https://docs.openstack.org/image-guide/convert-images.html  
https://dannyda.com/2020/06/25/how-to-use-qemu-img-command-to-convert-between-vmdk-raw-qcow2-vdi-vhd-vhdx-formats-disk-images-qemu-img-create-snapshot-resize-etc/  
USB Limit for VirtualBox - https://forums.virtualbox.org/viewtopic.php?f=1&amp;t=93436  
https://jellyfin.org/docs/general/administration/installing/  
https://www.reddit.com/r/PleX/comments/mpwc8r/linuxserverplex\_limited\_to\_indirect\_connection/

Requirements:

Windows - https://www.microsoft.com/en-us/windows/windows-11-specifications  
Manjaro - https://manjaro.org/download/  
OMV - https://en.wikipedia.org/wiki/OpenMediaVault  
Snapraid - https://www.snapraid.it/faq#howmanypar  
Ventoy - https://www.ventoy.net/en/faq.html

What I'm using:

Intel NUC11TNKi3  
Western Digital 1TB WD Green SN350 NVMe Internal SSD  
G.Skill RipJaws Series 32GB (2 x 16GB) 260-Pin SO-DIMM PC4-25600 DDR4 3200  
Corsair Flash Survivor Stealth 64GB USB 3.0 Flash Drive

Optional Hardware:

Mediasonic PROBOX 8 Bay 3.5-inch Hard Drive Enclosure - Only if you need eSata  
Syba 8 Bay Tool Less Tray Hot Swappabe 2.5" 3.5" SATA Non Raid External USB 3.0 Enclosure - Preferred for USB 3.0  
Seagate IronWolf Pro 18TB NAS Internal Hard Drive HDD

OS Setup:

You can use whatever OS but I picked Manjaro, so that's what I'm going to focus on.

Download Ventoy and install it to your USB drive.

https://www.ventoy.net/en/download.html

Copy your OS ISOs to the USB drive.

Manjaro - https://manjaro.org/download/

OMV - https://www.openmediavault.org/?page\_id=77

Install OMV direct to HDD or install to a VM

Installing direct to HDD requires nothing special, you can just follow this guide from the beginning. The relevant parts are from 2:57 to 4:57 for initial install. https://www.youtube.com/watch?v=z5CqnmuqyHk

Skip to Setup OMV.

Installing to a VM requires setting up Virtualbox.

Found a video for this but didn't follow it. https://www.youtube.com/watch?v=kSMCpeQOGg4

First, install the Host OS. In my case, that's Manjaro but any OS works. I'm going to assume you know how to install an OS on your own.

For Manjaro, I recommend installing the following optional tools.

SSH - Helpful, in the event the Desktop stops working.

I can't find the instructions I used but you just need to enter the following commands in "Konsole" to enable it.

"sudo pacman -S openssh"  
"sudo systemctl enable --now sshd"

NoMachine - Useful for remote admin of the Host OS. https://techviewleo.com/install-and-use-nomachine-rdp-on-arch-manjaro/

Commands used:  
"sudo pacman -Syu"  
"sudo pacman -S git"  
"sudo pacman -S --needed git base-devel"  
"git clone https://aur.archlinux.org/nomachine.git"  
"cd ~/Downloads"  
"cd nomachine"  
"makepkg -s"  
"ls -lh"  
"sudo pacman -U nomachine-\*-x86\_64.pkg.tar.zst"  
"pacman -Ql nomachine"

Barrier - KVM software based on Synergy. Honestly, Synergy works better but isn't great for other reasons.

Can't find the original install directions I followed but this is what I did.  
Click Add/Remove Software  
Click the three horizontal bars on the top right of the screen.  
Click Preferences.  
Enter password.  
Click "Third Party" tab  
Click "Enable AUR support"  
Click Search icon  
Type "Barrier" and install it

It has a setting to start with the OS but it never works. I have to use NoMachine to remote connect and launch it.

VNC Viewer - Only needed it for a short time but just in case. Either scroll a lot or ctrl+f "Manjaro" https://linuxhint.com/install-realvnc-vnc-viewer-linux/

Commands used:  
"sudo pacman -Sy"  
"sudo pacman -S git fakeroot binutils"  
"cd ~/Downloads"  
"git clone https://aur.archlinux.org/realvnc-vnc-viewer.git"  
"cd realvnc-vnc-viewer"  
"sudo pacman -U realvnc-vnc-viewer-\*-x86\_64.pkg.tar.zst"

Other commands I used:  
"su" - elevate prompt so you don't need sudo  
"pwd" - show current directory  
"sudo fdisk -l" - ?  
"mhwd -li" - show ??  
"pamac install gvfs-smb" - install samba  
"rsync -avr /path/to/dir1 /path/to/destination" - how to copy with rsync

To install Virtualbox - https://wiki.manjaro.org/index.php/VirtualBox

Installing the expansionpack with AUR didn't work, just download it directly using the links below that section and install it from Virtualbox itself. Use Tools -&gt; Expansion Pack Manager to install it.

Note: Techno Dad Life recommends VHDs instead of VDIs for the virtual drives.

Once you have Virtualbox and the expansionpack installed, setup the VM. The automagic install failed, so I had to manually install it. For the VM itself, I setup a 20 GB VDI, 2 CPUs, 16 GB (16384) of RAM for the initial setup. I went with half of my available RAM because I'll likely need at least 12 GB just based on software requirements. See https://www.snapraid.it/faq#mem and the SnapRAID HDD chart below for details. After installing OVM, I shutdown the VM and made the following changes under settings. You can follow this video from 2:57 to 4:57 for initial install. https://www.youtube.com/watch?v=z5CqnmuqyHk

First, I add a second VDI for app data.  
Storage -&gt; Controller: SATA -&gt; HHD+ Icon (Adds hard disk.) -&gt; 200 GB

Then, I switch to bridge mode, so the VM can have its own IP#. This requires a second Ethernet port on your device. Use the "ip a" command to help identify which Ethernet port you want. The last part is the name of my actual adapter on my dock, yours will probably be different.  
Network -&gt; Attached to: "Bridged Adapter" -&gt; "enp47s0u1u4u3"

Finally, I attached the external drives.  
USB -&gt; Check "USB 3.0 (xHCI) Controller" -&gt; USB Connector+ Icon for each drive (Adds new USB filter with all fields set to the values of the selected USB device attached to the host PC.)

Hard drive info based on SnapRAID.

Max HDDs:

8x 16 TB = 128 TB  
4x 8 TB = 32 TB

160 TB Total

10 GB RAM Minimum

Current HDDs:

3x 16 TB = 48 TB  
3x 12 TB = 36 TB  
4x 8 TB = 32 TB

116 TB Total

8 GB RAM Minimum

11 Drives Total

2 Parity Required

Parity

1x 16 TB  
1x 12 TB

28 TB Parity

Data

2x 16 TB = 32 TB  
2x 12 TB = 24 TB  
4x 8 TB = 32 TB

96 TB Data

Rules:

1 GB RAM per 16 TB Data

Parity : Data

1 : 1-4  
2 : 5-14  
3 : 15-21  
4 : 22-28

Setup OMV

Once you have the VM fully setup, it's time to setup OMV. We'll be once again following this video. https://www.youtube.com/watch?v=z5CqnmuqyHk

You can resume following the video where we left off at 4:47 until about 7:40, where he tells you how to change your password. I suggest going ahead and changing your password then, so you don't forget.

You'll need this link soon. https://wiki.omv-extras.org/

Resume the video until 11:18. At this point, you'll have omv-extras installed and return to the plugins page, install the mergerfs, snapraid and filebrowser (filebrowser is optional but recommended; you can follow this video to set it up https://www.youtube.com/watch?v=\_gBnhZiWuNw) plugins and resume the video until about 15:26.

At this point, you can either wipe the drives the way he says or, if you already have drives formatted for Linux, you can skip this part. Resume until 16:45.

If you wiped the drives, keep following the video until 17:08. If you already have a file system, click Mount instead of Create and resume at 16:58 until 17:08. Remember to repeat the steps for each data drive. The 200 GB VDI will need a file system and it will need mounting but there's no point in enabling SMART monitoring for it. Once you have all of your drives mounted, go to Storage -&gt; mergerfs to setup your drive pool.

I only setup one big pool for my library but you can make as many as you want. Remember to save blank drives to use as parity in SnapRAID later, if you plan to use it. To setup a pool, just click the + icon, enter a name, add your drives and pick your policy. I found "Least used space" to be the least frustrating policy but feel free to read more about the policies at the following site. https://github.com/trapexit/mergerfs You'll also want to read this page. https://github.com/trapexit/mergerfs-tools

Once you have your drive pools setup, it's time to resume the video. Remember to setup shares for your appdata mount and each drive pool. While you can try to setup a detailed user policy, be warned that it can cause a mess of your permissions. I ended up making my entire library read only thanks to that. I'll explain how to fix that problem later on though. Continue the video until the end.

If you want to setup user home directories, you can check "Enabled" and, optionally, "Enable recycle bin" under Services -&gt; SMB/CIFS -&gt; Settings. However, you have to first enable User home directory and give it a destination under Users -&gt; Settings. I was doing exactly this and installing Plex when my library became read only. I feel like the Plex install had more to do with it but I can't be sure this had no impact. It's an old version of OMV but this video basically explains user home folders. https://www.youtube.com/watch?v=oEbba-eaIDU

If you want to solve permission problems with the shares themselves, this video will help. https://www.youtube.com/watch?v=G1KuoC1b6GY

However, if your files themselves have all been restricted to root access like mine were, you'll want to use one of the following.

Using WeTTy or SSH:

https://linux.die.net/man/1/chown  
https://linux.die.net/man/1/chmod

Install webmin GUI:

https://www.webmin.com/udeb.html

You have to login as "root" to make webmin work. I haven't figured out how to actually use it, yet.

You can setup SnapRAID whenever you want. I haven't set it up because I'm currently shuffling files around and don't have the extra space, yet. However, you can probably follow this video starting at 4:18 to do it. https://www.youtube.com/watch?v=FYkdPyCt5FU

To setup Plex in Yacht, you can reference this video but it will not be enough on its own. https://www.youtube.com/watch?v=oLnwyZx-HqQ

The main problem I ran into with Plex is it doesn't like storing its appdata on a mergerfs pool. That's why I setup the 200 GB VDI for appdata.

So, I confirmed that it was Plex that write protected my whole library. This page has a guide on how to setup Plex in a docker and it specifically mentions that it will write protect folders, unless you tell it not to. https://github.com/plexinc/pms-docker

I'm also learning how to use Intel Quick Sync in a VM with the following guide. https://github.com/intel/gvt-linux/wiki/GVTg\_Setup\_Guide

To get the Plex Claim Token, visit this site. https://www.plex.tv/claim/

I ended up using the premade docker container to get Plex running because no amount of editing could get the stack version to stop giving syntax errors. I had to wait a minute for Plex to show up after setting it up correctly with a claim token. https://hub.docker.com/r/linuxserver/plex

To fix the problem with not being able to create an NFS share, add the following in front of each disk in the mergerfs mount.

,x-systemd.requires=

So, you get something like: ,x-systemd.requires=/srv/dev-disk-by-uuid-1a9b42c6-b9c2-4b5a-ae75-a227643e51b7

To Remount mergerfs pool:

Servics -&gt; SMB/CIFS -&gt; Shares  
Delete share, Apply changes  
Storage -&gt; Shared Folders  
Delete share, Apply changes  
Storage -&gt; mergerfs  
Delete pool, Apply changes (Takes a while)  
Recreate pool (Should show as mounted under Storage -&gt; File Systems)  
Recreate share  
Recreate SMB share

/srv/dev-disk-by-uuid-1a9b42c6-b9c2-4b5a-ae75-a227643e51b7  
/srv/dev-disk-by-uuid-e0e83b37-2074-4b89-b861-1aa952bfdc0f  
/srv/dev-disk-by-uuid-afa38c07-7b53-4a6f-a70a-004ddb78e3ed  
/srv/dev-disk-by-uuid-6604d48b-dd2e-4c6a-867b-a5fe12e0feae  
/srv/dev-disk-by-uuid-87c8acab-a768-438e-a36a-6ae6ae17dfef  
/srv/dev-disk-by-uuid-75c522d4-0f07-48fc-83c4-3a339bac5867

  
Enabled  
Media  
Guests allowed  
Browseable  
Hide dot files

Mergerfs and Remote Mount: https://forum.openmediavault.org/index.php?thread/47442-mergefs-and-remote-mount/

KVM: https://www.reddit.com/r/OpenMediaVault/comments/10ndmdl/omv\_6\_kvm\_plugin\_performance/

Problems:

https://forum.openmediavault.org/index.php?thread/53452-super-long-error-code-when-creating-nfs-share/&amp;postID=396861#post396861

  
Converting Windows bare metal install to KVM.

Download Disk2VHD (https://learn.microsoft.com/en-us/sysinternals/downloads/disk2vhd) to convert the OS drive into a VHDX image.

Download qemu-img for Windows (https://cloudbase.it/qemu-img-windows/) to convert it to qcow2 format. Use the command "qemu-img.exe convert -O qcow2 &lt;image.vhdx&gt; &lt;image.qcow2&gt;"

Setup VM using Windows VM image

https://forum.openmediavault.org/index.php?thread/39510-how-to-use-the-openmediavault-kvm-plugin/#post277368