
When you hear the term server, you’ll think of one of two things:
- A high-performance computer capable of serving thousands of end clients and providing key services such as file storage, web services and media.
- A waiter.
What if I told you that a server can be neither of these things? A server is, quite simply, a computer that serves content or services to end clients. You don’t need to go out and buy a top of the line enterprise level server for your home to store a few files on the network, you can actually get yourself a nice little home server for cheap, or even sometimes free!.
This guide will cover the basics of home server creation and maintenance and gradully become more complex. The outline of this guide is:
- Selecting your Server Hardware
- Selecting your Operating System
- Installing the OS
- Setting up User Accounts
- Enabling Storage and Services
- Virtualisation and Self-Hosting (Advanced)
- Server Security (Advanced)
- Troubleshooting
Feel free to follow along with this guide in any way you want. Please note that this guide uses a virtual machine installation of OMV, and so there may be some minor configuration differences. The process should still be similar to that of running it on real hardware.
1. Selecting your Server Hardware
Now, as I mentioned at the beginning of this guide, you don’t need to go out and purchase expensive and power-hungry equipment to run basic home server services. That being said, you do need to be aware of what you want to host so that you can purchase the correct hardware that will have enough power to do what you want the server to do.
In this case, we will be looking at this from the perspective of someone like me or you or me – someone with a smaller budget or some older hardware lying around that you want to repurpose into a basic home server. To help give an overview of the system specs you should be aiming for, I have created two tables, comparing different specs for different use cases.
| Use Case | Homelab (Basic) | High Performance |
| CPU | Intel i5/i7/Xeon 4 – 8 Cores | Intel Xeon, Ryzen Threadripper |
| Memory | 8GB – 16GB | 32GB – 128GB (or higher) |
| GPU | None – Integrated | RTX GPU’s |
| Storage | 1TB – 2TB | 8TB – 60TB |
| Networking | 1 Gigabit | 2.5/5/10 Gigabit |
| Services | File storage, AdGuard, Dashboard, Media server, Light game server, Web server | Extensive virtualisation, Local AI server, Large web hosting, Media encoding, Mass file storage |
We will only consider the first category, as this is who the guide is targeted towards. Now you might be saying to yourself, “Thanks, but where can I get this hardware?” – I hear you. Now, you don’t need to go out and buy a case, CPU, motherboard, RAM, and a power supply like you usually would when building a traditional PC. As we are turning a computer into a server, you can just buy a pre-built computer and make a few modifications to it.
In this case, I can personally recommend finding a used PC from a reputable manufacturer such as Dell, Lenovo, or HP. This is because the systems are already built, and so will be cheaper and easier to find and because they’re are loads of options to choose from when deciding on what one to turn into your new server.
All brands mentioned above all sell good computers in a wide variety of form factors. The model to go for depends on what you want to do with it, future expandability and where you are going to place it. For example, you can purchase a standard-size PC tower. This is a good option if you want to be able to open the PC up and add more hardware or storage devices, and have a place to put the PC so it doesn’t take up too much space or become an eyesore.
On the other hand, if you don’t want or need a larger computer or wish to have the device in your room or office, an Ultra-small Form Factor (USSF) PC may be a better choice for you. These devices are commonly referred to as ‘litre PC’s’ because their footprint occupies less than 1 litre of fluid displacement. They are also less power-hungry, generate less heat and make less noise. The only downside is that they are not great for expandability as they have a limited number of internal connectors due to their size.

Where to get these devices depends on what you feel comfortable with and how much you want to spend. Every piece of IT equipment I have ever bought has been second-hand and purchased off Facebook Marketplace or eBay. Only my network switches and router were purchased brand new. Buying used is a great way to save a lot of money and also reduce e-waste by repurposing old ‘obsolete’ equipment into something usable – it’s win-win.
To give you an idea, I purchased my Lenovo M93P Tiny from Facebook Marketplace for £65. It came with a CPU, 8GB of RAM, a 128GB SSD and the original Lenovo power supply. If you are aiming to also grab a USSF PC, aim for the used market in the £50 to £75 price range and be sure that it includes the original power brick as these can be expensive if purchased separately.
2. Selecting your Operating System
Once you have your hardware, you’ll need to choose the operating system to use. Again, this comes down to personal preference, use cases and even system requirements. The three most popular and common home server operating systems are:
- TrueNAS
- Proxmox
- Ubuntu Server
TrueNAS is simply a server-purpose OS built on top of Linux. It’s a popular choice for everything from home servers to enterprise level gear and has great file format support and allows for extensive customisation.
Proxmox is a hypervisor in itself – that is, it isn’t a home server OS but is itself an operating system that allows for multiple virtual instances of servers to be run on the same hardware. In terms of ease of use and beginner friendliness, I’d say it’s for advanced users and use cases only where you specifically need to virtualise everything.
The third most popular is simply Linux Ubuntu Server. This is a base operating system that can be installed with or without a GUI. This offers great customisability but at the cost that you have to do everything yourself. You’ll have to install and configure each service rather than having it ready to go as soon as it is installed. For this reason, unless you need granular control over everything and are happy with getting into command line, there is another option.
Open Media Vault (OMV) is an open Network Attached Storage (NAS) OS based on Debian Linux. It’s very beginner-friendly and also decently powerful if you are an advanced user needing more services. The beauty of OMV is that it comes pre-configured with file sharing services, a nice snappy web interface, user account control and plugins that you can install from their repository.
Open Media Vault is also very lightweight, meaning it can run on a variety of different hardware. I have run it previously on a Raspberry Pi 2B, and whilst it wasn’t the smoothest experience, it did indeed work for basic file sharing. Others have run it on everything from newer model 4 and 5 Raspberry Pi’s and USSF PCs. For reference, the recommended system requirements of OMV are:
| CPU | ARM64, Intel/AMD Dual/Quad Core |
| Memory | 4GB – 8GB |
| Networking | 1 00Mb – 1 Gigabit or W-Fi |
| Storage | 8GB for the OS Partition Any |
For this guide, I’ll be focusing on OMV as it is what I am familiar with and because this tutorial is aimed at beginner users. You can download it here from:
https://www.openmediavault.org
Let’s get started!
3. Installing the OS
To begin the installation process, you will need:
- A USB drive of at least 4GB
- A USB drive for the OS to be installed on of around 6 – 16GB.
- A PC
- An Ethernet cable and connection to the internet.
The first step is to install the ISO file onto the installation media, that is, the USB. To do this, download the ISO file from OMV’s website and use a tool like Balena Etcher to burn the ISO to the USB. This process makes it bootable. If you do not do this step, the system might not recognise the USB as a bootable drive containing a whole operating system.

Balena Etcher can be downloaded from: https://etcher.balena.io
Once this step has been completed, your USB drive should be automatically ejected, indicating that it is flashed and ready to be used on the system.
Next, connect your server to a network using an Ethernet cable and attach a basic keyboard. A mouse is not necessary. Insert the USB drive that will be the drive where the operating system lives. You will also need to connect a display for the initial setup. Finally, connect the power cable to the back. Note that in some USSF PC’s, they will automatically turn on when power is connected. As soon as the server boots, press either F2, Del or F12 to boot into the BIOS. You should be able to select the boot device as the USB drive containing the installer.
Once in, you should see a familiar screen if you have ever installed a Unix based oeprating system before. Use the keyboard and arrow keys to navigate the menus and enter input fields. This guide will give you the basic settings and explanations needed for most home use cases.
Install Guide

Select ‘Install’ from the main menu. This should take you through to a screen where you can select your location, preferred language and keyboard layout. I chose ‘United Kingdom’ and ‘British English’ for all.


After the basic language selection is done, the installer will install other system components and packages from the image. This shouldn’t take too long.

Next, the system will begin configuring the network. This process may be different for your system depening on if a network is already connected, if your server has different or multiple network interfaces or if you are using wireless networking. In any case, if the installer asks you to select an interface, you should choose the interface connected via Ethernet. Ethernet gives the strongest and usually most reliable connection – something that is vital when transferring files.
In Unix, network adapters follow a naming convention.
eno/enp – Ethernet. Usually shows up as something like enp0s1.
wl – Wireless.
Once you select your Ethernet interface, the system will perform the usual process of identifying the network and obtaining both an IPv4 and IPv6 address using Dynamic Host Configuration Protocol (DHCP). This will assign a unique IPv4 address on your local network (LAN).

The installer will then ask you to choose a hostname for a device. A hostname is simply a unique identifier for the device on the network. Choose something that you’ll recognise and like. For instane, I name my servers after flowers to give them a more ‘human’ feel rather than compelx machines that have no feelings 🙂

You’ll be asked for a domain name. For most home users, leave this set to ‘local’ as we will want this device to be on the same domain as all other devices otherwise, there could be problems connecting to the server.
Note: Use ‘tab’ to select menu items if the arrow keys do not work.
Here’s where things get important, so grab a pen and paper, note app or a password manager. Here, we are going to configure the root password. In Unix, there are two types of user accounts on a system. There is your normal account, where anyone with a login can use and access various programs and applications on the system. Then there is the super user. The super user, or ‘sudo’ as it is commonly referred to, is a user account that has access to the entire system. Therefore, it is absolutely critical that this password is noted down for later use and not given to anyone. If anyone has access to your server and knows the sudo password, they can do anything they want. You have been warned.
Choose a long and complex password for sudo.

Once the sudo password is set, the installation will progress, and additional components will be installed. Once this stage finishes, it’s time to choose where the OS and files will be stored.
It is really important that you install the system on the correct partition. By default, OMV will take up the whole drive for itself. It is also highly recommended to keep the OS and data separate. In the event that your OS corrupts, your data is still safe, as it is on a separate drive. It is also recommended to keep OMV on a separate USB drive, as it makes backing up and restoring the system from a backup much easier. For this reason, I would recommend you install the system on a small USB drive in the back of the system so it does not get accidentally pulled out.
Once the location of the OS has been confirmed, the installer will write the files to the disk.

This process can take a while, depending on the power of your server and the speed of the drives you are using as the installer and the destination drive. Whilst this is happening in the background, think of all the cool stuff you’ll be able to do in just a few moments. And also think about how much money you will save by not using cloud storage.
Once the system has finished installing, you’ll be asked to select the best Debian server based on your location. This is where the system will pull the latest versions and files of the OS. For most people, select the first option on the menu.


You will then be prompted to enter an optional HTTP proxy. For most home users, you will not have a HTTP proxy and so simply leave it blank, and press enter.

The system will then connect to the mirror archive and download the latest Debian packages and install them to the system. I know it’s a lot, but trust me, we’re almost there.

See? told you!. Now, there is a correct process to this (as far as I’m aware). Press ENTER on the ‘Continue’ option and when the screen goes black, remove the USB.
Booting and System Configuration

Now, time for the first boot. On the boot screen, you will be greated by GRUB. This is basically a Unix boot loader that gives you the option to boot into different operating systems, you’ll likely see this screen if you have ever tried to dual-boot Windows and Linux on the same system. Select ‘Debian GNU Linux’.

And here we are! Well done! you have successfully installed Open Media Vault onto your very own server. The screen above is what is referred to as the Command Line Interface (CLI). This is only visible when connecting to the server using a monitor and VGA or using some sort of network console connection. You should only ever need to access the system using the CLI in rare cases.
See that random combination of numbers separated by dots? That’s the servers IP address for that specific interface. This means your server is now online and accessible from your local network. Head over to a computer or laptop and type the address in your browser.

And here we have it! your server is now accessible from the web (on your local network). This means that in order to access the server, you need to be on the same network. This can be overcome if you put the server on your domain or configure a VPN but that’s complex and can be a security concern if not done properly.
Log in to the server using the default admin account. The default credentials are:

Once entered correctly, you will be taken to the dashboard.

This is the basic layout of the OMV web portal. Here, you can log in and make changes to the server, such as changing system settings, configuring network interfaces, managing disks and shared folders, configuring services and managing user accounts. There’s a lot to learn, however this guide will focus on simply getting you up and running.
4. Setting up User Accounts
The first thing you should do is create your own user account. This is done for security reasons. You don’t want to be logging in as the administrator just to access your files so you should create your own account. To do this, click on the ‘Users’ option in the side bar.

Click the ‘+’ icon to add a new user. This will take you to a form where you can add a username, password, email, SSH key and assign yourself to user groups. Enter any credentials that you like and click ‘Save’. Feel free to add accounts for other users too such as flatmates, friends and guests but make sure you are careful with who you let on your server.
Oh, and by the way, get used to seeing this.

Even if you click ‘Save’, the system still needs permission before it commits these changes to the system. Even something as small as changing the name of a user requires this, so get used to seeing it.
Whilst you are configuring users, now is a good time to change the default admin password. Click the person icon in the top right and select ‘Change Password’. Make it secure.

5. Enabling Storage and Services
Next, we need to manage our storage. It’s a NAS or file server right? so we need to provide a way to store files for the user. Storage in OMV can be a little confusing and so I’ll provide a guide on how it works and what each component does.
- Disks – Where you can manage the physical drives connected to the system. Add, format and view information about connected drives.
- S.M.A.R.T – View S.M.A.R.T data about the connected drives. Tells you thinks like power on hours, total bytes written and drive lifespan.
- File Systems – How the files are stored on the physical drives. This is how each drive is represented in the system. EXT4 is the most popular choice.
- Shared Folders – How the physical drives appear on the network. Note that a single physical drive can be split into multiple shared folders.
Let’s add a new file system to our drive.
Open the ‘Storage’ tab and click ‘File Systems’. Once on this screen, click on ‘Create and mount a file system’. I use EXT4 as it is the default and a robust file system however, some report that BTRFS is a good choice as well. For this guide, I’ll be using EXT4.

Select the drive you want to create the file system on and click ‘Save’. This will open up a window, and you’ll see the file system being created and indexed on the drive.

Next, we need to create a shared folder – this is how the folder appears on the network and where files will be stored. On my server, I have a shared folder for personal documents, media, Mac TimeMachine backups and Docker Apps. Create as many shared folders as you want.
Go back to the main storage menu and click ‘Shared Folders’. Like the previous UI options, click the ‘+’ icon to create a new shared folder.

Call the shared folder whatever you’d like. On the next line down, select the file system where you want the shared folder to be stored. This also determines which physical drive the data will be on. You can also adjust permissions on this screen so make sure you set this correctly. Finally, you can give the folder a tag to make it easier to identify. Click ‘Save’.
The final step in creating our shared folder for our data is to give our user account access to it. This can be done by clicking the folder and key icon in the top bar in the menu we are currently in.


Select your user account and click on ‘Read/Write’ – this allows you full access to read and write to the shared folder. If you have other users, such as guests, and you want them to be able to view the contents of the file, but not delete or write to the folder, select ‘Read-only’.
So just to recap, we have created a file system, on this file system, we have created a shared folder. Next, we have to utilise a service to actually broadcast the folder onto the network so we can access it. Servers typically use specific data transmission protocols to transmit data across the network. The most common one is called Server Message Block (SMB). It’s great and works on all modern operating systems and even mobile devices.
Apple have their own file sharing service called AFP, and Windows also have their own called NFS but for compatibility sake, just use SMB. It’s fast, secure (providing you aren’t using SMB 1.0!) and is decently reliable.
Head over to the ‘Services’ tab in the side-bar.

Select ‘SMB/CIFS’.

Select ‘Settings’.

For the basic settings of SMB, you don’t need to worry too much about anything other than clicking the checkbox to ‘Enable’ the service, enabling the recycling bin to store deleted files but the one thing that you absolutely must do is use a version of SMB greater than SMB 1.
Note: SMB1 has serious security flaws – all data is sent unencrypted and can be seen in plaintext by anyone on the same network. Do not use it!.
Click ‘Save’ at the bottom of the SMB settings menu.
Next, exit this screen and go to ‘Shares’.

Select the name of the shared folder in the top drop-down menu. Set the ‘Public’ option to ‘No’. Again, you don’ need to worry too much about the individual settings as long as you make sure to enable transport encryption. Click ‘Save’ and apply the changes.
After a while, the folder will now be shared on the network. You can connect to it by opening Finder/File Explorer and looking in the ‘Network’ tab or connecting to the folder directly by using it’s IP address. On Mac, the process is as follows.
Open Finder and either search the Network tab for your server.

Double-click it. MacOS will then ask you for a username and password to allow access to the share. Enter the credentials for the user account we created earlier.

After clicking ‘Connect’ you will be connected to the server and be able to see all shared folders.

And that’s it! You now have your very own basic file server or NAS where you can transfer data. The process is a bit different than simly right-clicking and selecting ‘Create Folder’ but in the end, it’s worth it.
Just as a little explanation, the hierarchy of folders in OMV is as follows.
Drive > File System > Shared Folder > SMB > Shares
Another critical step whilst on the topic of storage is making sure you install the ‘folder2ram’ plugin. This is specifically designed for use cases where your OS drive is a USB. As the system needs to constantly read and write to the OS, this causes wear on the USB. The ‘folder2ram’ plugin prevents wear of the drive by loading the OS into RAM which reduces the number of read and write operations on the drive.
6. Virtualisation and Self-Hosting (Advanced)
Now, a word of caution before we proceed – this section of the guide is for advanced users only. This is because installing the tools to allow virtualisation involves complex configuration for the system, the network and can cause issues. It’s always a good idea to make regular backups of your data and the OS. Proceed once you have made a reliable backup.
Virtualisation is a technology that allows a single piece of hardware, such as a computer or server, to run multiple instances of software. This means that you can run multiple virtual applications using one server. This is achieved by installing a hypervisor on the system.
A hypervisor is a piece of software that sits on top of the operating system and provisions host system resources such as CPU, memory, network and storage to the virtual instances of software running on top of the host system. Each separate service gets its own set of resources.
In our case, we will be using Docker. Docker is an app that allows users to create containers. In these containers, applications can be configured to run virtually on the host system. OMV directly supports Docker, although you have to jump through a few hoops to get there.
Installing OMV Extras
In order to even have the option to install Docker on our server, we first need to install the official OMV extras package. This package gives OMV more functionality. To install it, open this link and copy the command:
https://wiki.omv-extras.org/doku.php?id=start
alternatively, copy this following command.
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
With the command now copied, we need to remotely connect to the server using SSH. This sounds scary, but is incredibly easy to do. On your PC or Laptop, open up Command Prompt (Windows) or Terminal (Mac, Unix). Next, type:
ssh root@<server_ip>
In my case, it would look like:
ssh root@192.168.64.3
You will be notified that you are attempting to connect to an unknown server and to add the server’s fingerprint (hash) to the Unix ‘known_hosts’ file – type ‘yes’ and continue. You’ll then be asked to enter the root password for the root user account – rememer when I said keep this safe?

Here I am in a terminal session on my Mac connected to the server and logged in as root. Once your screen looks like this, you can progress to the next step.
Paste the command and hit enter.

As soon as you hit ENTER, the script will begin contacting the server repositories for OMV and downloading the new packages. This process doesn’t take too long. Once you see that the console output has stopped, the process has finished.
Whilst we’re here and waiting for the install to finish, let’s talk about SSH. Secure Shell (SSH) is a method to remotely access your system via the network. It’s incredibly useful for connecting to servers far away or when the web GUI is not available. SSH has saved me so many times when the web GUI for my server hasn’t been available and so make sure to allow SSH but make sure to secure SSH with either a strong password, a specific user dedicated for SSH or best case, use SSH public private keys.

Restart or refresh the web GUI and you should now see another option on the side bar.

Installing the Compose plugin and configuring storage
‘omv-extras’ can now be accessed and used to install apps. But before we do that, we need to install a few plugins to allow us to create Docker containers. Head over to the Plugins menu.

Search for ‘compose’. This plugin installs Docker Compose. A plugin that allows the system to create, manage and run Docker containers on top of OMV and the Docker engine. Click install. Again, a command like window will open and you can watch the process of the system contacting different servers to download the files for the plugin.
Once this process has finished, we need to do a bit more system configuration to support the Docker installation. This is mainly concerned with storage.
Like anything else on our system, we need a place for our apps and our app data to be stored. This means creating three new shared folders on a drive so that Docker apps have a place to store their data.
Note: it is highly recommended to not store Docker on the same physical drive as the OS or other Data. Please use a separate drive such as an internal SSD for Docker.
The three folders we need to create are:
- A folder for the Docker engine itself
- A folder for Compose files – these are the application config files.
- A folder for Docker container data – these are the files that each individual app uses.
It’s crucial that these are set up correctly, as data in Docker containers is not persistent. This means that when you close a Docker app, it does not exist anymore. Each time you start a container, it is rebuilt from scratch, and the data is loaded from these folders to rebuild the app.
Head over to ‘Storage’ and create the following shared folders.

Next, we need to into Services > Compose > Settings and assign the different locations of Docker files to their corresponding shared folders.

It should look like this when done.
One of the most important things is where Docker itself is installed. By default, it installs itself in /var/lib/docker, which is on the OS drive. This is a problem as Docker and OMV system files should be kept secret. It can also cause problems as the Docker system files can grow iin size, taking up space on the OS drive which can cause slow downs.

Instead, go to ‘Shared Folders’ and copy the relative path which includes the identifier of the disk and shared folder. With this, there is no way for the Docker files to get mixed with OMV’s system files.


Once this is done, make sure to click ‘Save’ and apply the changes. Once the changes are applied, click ‘Enable Docker repo’ in the bottom of that screen. You will also need to click ‘Reinstall Docker’ as we have changed the default installation location.

Once this is done, your server is ready to start hosting Docker apps and services. This can turn your OMV server from a basic NAS to a web server, game server, media server, VPN server and allow you to do so much more with your hardware.
7. Server Security
Security is something that must be taken into account when creating a server. Of course, having your data stored on a network device that also connects to the internet does come with some element of risk but, with the proper knowlege and configuration, creating your own server is as safe as storing it on the cloud – or maybe even safer.
Chosing a strong password
Your password is, of course, the first line of defence when it comes to preventing unauthorised access to your server. Like any other online service, you should use a long, complex password that is hard to guess or even randomly generated if someone attempts a dictionary attack. A general recommendation is to use a randomly generated password consisting of both uppercase and lowercase letters, numbers, and special characters. You can then use a password manager to save this and simply copy and paste it into the web GUI when logging in.
Of course, this is harder to remember. If you need a strong password but don’t want to have to copy and paste 32 characters every time you log in, chose a memorable, yet strong password. Note that this should be done for all user accounts on the system, not just your own account.
Protect the root user account with the strongest password possible.
Network Security
Network security is the most important when it comes to a server. You need to make sure that your server does not have any outward-facing ports or services which could serve as a point of entry for a malicious user. The good news is, 99% of us already have something that does this already. Your ISP provided Router will have a firewall configured on it which allows for all outbout traffic but only allows traffic back in to the network if the traffic was already established.
This means that when you go to a website and click a link, your router knows that you have an active session. it then adjusts the firewall to allow data back in. If however, your server randomly gets a connection request from an IP address which has not previously been contacted, it will simply drop the connection.
Network security can simply be done by:
- Enabling router firewall.
- Not sharing public or private IP addresses
- Not configuring port forwarding
- Keeping your server on a password protected and private network
- Using TLS and cryptographic certificates to encrypt data transmissions.
Enabling SSH
As previously mentioned, SSH is an incredibly useful protocol that can allow you direct access to your server remotely from another device on the same network. That being said, it needs to be used with caution.
By default, SSH runs on Port 22 and attackers will often perform a ‘ping sweep’ to scan all open or listening ports on a network using tools like nmap. You can change the default port SSH uses but this will only slow down novice attackers.

Make sure you enable password authentication and if need be, public key authentication. Without this, anyone can connect to your server if they are on the same network and know the hostname or IP address.
Never permit root login over SSH! This is practically giving an attacker the keys to your system on a silver platter. If you need to access an elevated command over SSH, you can do this from any user account by either adding yourself or an admin account to the ‘sudoers’ file or by using the ‘su’ command.
Closing unused Ports
Servers operate services using ports. This means that each service can be located on.
<IP_address>:<port>
For a server, this would look like:
192.168.64.3:22 - SSH
192.168.64.3:53 - DNS
192.168.64.3:80 - Web
192.168.64.3:443 - HTTPS
192.168.64.3:445 - SMB
Any open port, if not secured, can serve as a way into your system. Therefore, it is a good idea to close and stop any unused services from being open.
Using TLS
Ever go to a website and see that little padlock icon? That means the site is using Transport Layer Security (TLS). It means that all data sent between you and the server is encrypted and that the data is being scrambled into an unreadable format unless you know the encryption key. This means that an eavesdropper listening in and monitoring the communications cannot see the data being transmitted on the network.
This is done by registering your server with a Certificate Authority (CA). This is an organisation that can basically vouch for you and verify that you are who you claim to be and issues you with a unique cryptographic certificate to prove this. This cryptographic certificate is then used to establish secure connections with other servers and clients.
The good news is, you yourself can become your own Certificate Authority. This is done by generating a Self-signed Certificate. Sure, it isn’t as trustworthy as as real certificate, but does the job for encrypting local communications between you and your server.
Go to System > Certificates > SSL
Click the ‘+’ icon and fill out the fields to generate your own SSL certificate.


Using Encryption
Another great option to protect really secure data is to use encryption. In this guide, we configured SMB to use transport encryption, which encrypts data packets as they fly over the network. What about data at rest? the valuable data that sits on your storage drives?
Well, we can use encryption for that too. The catch is that using it is a bit janky. I like using a free program called VeraCrypt. This allows you to create VeraCrypt encrypted volumes that appear as normal files. When you open them in VeraCrypt and supply the correct password, they turn into removable and encrypted volumes. This works good for encrypting small amounts of sensitive data.
The catch is it was not designed for network storage. Only have one user connected to the VeraCrypt volume at a time and make sure to unmount the volume before disconnecting from the server.
Download VeraCrypt here: https://veracrypt.jp/en/Home.html
8. Troubleshooting
I’m pretty experienced when it comes to Open Media Vault and Linux as a whole and so I will do my best to think of every situation I dealt with when setting up my server that you may run into.
Unable to access Web GUI
Being unable to access the web GUI can be caused by a few reasons.
- The server is still booting and whilst it may have an IP address and be pingable, it has not started the web server yet.
- You are trying to access the server on Port 80 instead of 443 if you have TLS enabled and ‘Force Secure Connections’ enabled.
To fix this, wait a few minutes and try accessing the web GUI again. If this still does not work, try changing the port to 443. If this really still does not work, you can try SSH’ing into the server and accessing the repair utility ‘omv-firstaid’ as root.
Sometimes what may happen, particularly if you are hosting other apps, is that the web port used by OMV gets taken by another service running on the server. This means that when you try to access your server using it’s IP address and port, you’ll get taken to another service. Check your port mappings for each service.
Can’t login even if password is correct
This one is a rare case but is still very important as I have had this happen to my twice. What can sometimes happen is Docker is left in the default installation directory which is in /var/lib/docker – this is on the system drive. If you are using an 8GB USB, this will quickly take up all the room on the USB drive and when you try to log in, the system cannot load the UI because the drive is so full.
So how do we fix this?
Well, if you use this guide to install and configure OMV, you don’t have to worry about this as we changed the default installation location of docker to a non-system drive. If however you did not follow this step and now cannot log in, there is only one way to fix this.
SSH into the server. SSH in as a normal user as you should have root SSH access disabled for security reasons.
ssh <your_username>@<server_ip>
Now logged in, you’ll notice you cannot really do anything because your standard user account does not have permission to execute elevated commands. To switch to the root user.
su
This will ask for the root user password. Once entered, you have full access to the system – be careful. Next, to see where abouts all your storage has gone, run.
df -h
This searches all drives, directories and files recursively and shows how much space each directory takes up. Look for your system drive which will be called something like
/dev/sda1/
You can also use values like drive size to determine the device. For example, if you know the drive for your OS is 16GB, it will show up as being around 16GB in the system. You then need to change directories into the drive or location of the Docker files.
Note: Make a backup before deleting anything! You also may need to change directories into the system drive where docker is installed. This will depend on the drive label that Linux has assigned the drive.
cd /var/lib/docker - change into default docker location.
df -h - view file information in the current dir.
ls -a - list all files, even hidden onces.
And finally, once you have found the large files taking up space in this directory and you are absolutely sure these files are causing the log-in issues, delete them using
rm <file_name>
Once all files have been deleted from the directory, it’s a good idea to exit back to the home directory and run this command one more time to make sure drive usage is at a reasonable level.
df -h
Try log in to the system and it should work. If it doesn’t, work restart the system.
If this still doesn’t work, luckily for you, someone has written a really good guide on installing OMV 😉 here.
Failed to bind to port
This error happens when you are trying to host multiple services on the same IP address as your server and two services attempt to use the same port. I had this issue when installing AdGuard Home which is a DNS sinkhole service used to block DNS requests heading towards web servers containing ads. Both OMV and AdGuard need to use DNS which runs on port 53.
To get around this, you can either:
- Change the IP address of each of your services by creating a virtual network or a ‘macvlan’ as it is called in Linux.
- Change the port mappings for each service.
Each service has an internal and external port. This is done so that when traffic is received on a port, the server knows what type of traffic it is and knows where to route it to. For example, web traffic can be received on port 80 but can be mapped to any free internal port you like.
ports:
- 81:80 - mapping http.
- 505:53 - mapping dns.
Long boot times
When booting, Linux searched for all devices (drives) it knows about. During boot, it will spend some time detecting all drives and confirming that they are readable. Only one this is done will the system continue the boot process and load all components and start the web GUI. If you, like me, are using USB to SATA drive adapters, it can take a while for the drives to be detected.
If the drives are not detected, there is a sort of ‘default timeout’ before the system gives up and continues the boot process anyways. Don’t panic, give it time and do not shut the system down.
Also, make sure you set the default action in GRUB to boot into your server. You may be waiting 20 minutes to load into OMV just to plug a display in and realise GRUB was waiting for you to chose an OS all this time.
Slow file transfer speeds
This issue can be caused by a multitude of things. Let’s focus on the network side of things first. Ensure that you are using wired Ethernet that is rated for your speeds, most likely Gigabit. Ensure that you aren’t connected to Wi-Fi. Make sure that you are also using SMB 2 as this has been reported to be slightly faster than SMB 3.
If everything looks fine on the server side, let’s focus on the drive where you are transferring files from. If you are using a PC or Laptop, try connecting to Ethernet. Ethernet to Ethernet at Gigabit speeds should get you 1000Mbps or a theoretical max file transfer speed of 125MB/s.
If your PC or Laptop is connected to Wi-Fi, it means that your connection has to go from your wireless device all the way to your router and then though Ethernet to your server. This adds considerable overhead and can bring speeds down to 30MB/s. In short, use Ethernet where possible and if you really need to use Wi-Fi, get good wireless networking equipment like fast routers and AP’s.
Conclusion
Well, there we have it! If you followed this guide, you should now have your own home server that is ready for file sharing. If you followed the guide and performed the advanced steps, you now have a home server ready for virtualisation.
I’ll be making some guides soon on installing specific Docker apps with downloadable and pre-configured YAML config files. We will cover basic services like Jellyfin, Immich, Crafty, Glances, Dashy and more.
Finally, take care of it, keep it secure and make regular backups. Have fun.
Thanks for reading.
