šŸ•“
This post was published in 2018
This post isnā€™t being actively updated and may be out of date.

When I first started out on my budget home server journey back in 2016, the most logical choice was the Raspberry Pi 2 micro-computer. This has served me well, but my needs for a server have changed and the Pi just wasnā€™t keeping up. I want a quicker server but with the small size and low power consumption that made the Pi great!

Whatā€™s wrong with a Raspberry Pi as a NAS?

The speed I was getting on my Pi was disapointing.

As I breifly mentioned at the end of my first post, the Raspberry Pi isnā€™t a very quick as a NAS server.

There are several factors at play here, most notably the fact that the Pi 2 only has USB 2.0 ports and 100mbps ethernet which both cap the max transfer speeds. In addition, the ethernet and USB ports share bandwidth to the CPU so heavy use of these interfaces results in further speed reductions. All this in combination with a pretty limited CPU, results in poor performance as a NAS!

The ODROID HC2

A view of the ODRIOD unit from the side.

The ODROID Home Cloud 2 is a single board computer which houses your hard drive and sports some powerful chips on itā€™s tiny circuit board. Seriously, this thing is tiny - smaller than a Raspberry Pi! Itā€™s got an octocore ARM processor, 2GB RAM, a built in SATA port and gigabit ethernet. The Home Cloud doesnā€™t even have any form of video output, itā€™s simply not needed!

Because it houses the hard drive, the Home Cloud makes a very tidy home server setup and only takes up a single power socket. The only downside with the hardware is that the single USB port only supports USB 2.0, but this is a small complaint given I only use this port for taking backups of the internal hard drive.

A view of the ODRIOD unit from the top.

The unit is cheap, coming in at about $65 USD for the base unit, power adapter and top case - just bring your own hard drive and SD card.

If you have a 2.5ā€ drive, theres also the ODROID Home Cloud 1 which has the same specs but installed in a different case. I happen to own a 3.5ā€ hard drive, but I absolutely love the idea of an even smaller NAS. The Home Cloudā€™s are also stackable - let me know if you have any ideas of a usecase for this!

Setting up the system

Lets get the basics of a home server configured before getting any applications going.

OpenMediaVault

The OpenMediaVault admin home page.

Just like a Raspberry Pi, the Home Cloud runs itā€™s operating system off the SD card. There are a variety of operating system images to choose from. I chose the open-source NAS operating system called OpenMediaVault for mine!

OpenMediaVault has an easy to use web interface for configuring your system, comes with all the file servers you need, and has a good plugin system to make installing apps really easy. OpenMediaVault handles much of the manual configuration I had to do on my Pi NAS which meant I could get a working system going sooner!

I went through the following steps to get OpenMediaVault up and running:

2023 update: Prior to 2021, OpenMediaVault published pre-install images for single board computers - unfortunately now youā€™ll need to install OMV on an Armbian image yourself. The steps below have been updated but unfortunately I no longer have my HC2 so I havenā€™t been able to test these steps.

  1. Download Armbian - see their information about the ODROID XU4/HCx
  2. Clone this image to your SD card, I like to use Etcher for this.
  3. Boot it up and find your deviceā€™s IP address on the network.
  4. Follow the steps in Installing OMV6 on Armbian Bullseye to login via SSH and install OpenMediaVault.
  5. Type in the IP address of the NAS into your browser and login with the default credentials from the installation guide (under ā€œFirst time useā€).
  6. Change your web-administrator password under ā€œGeneral Settingsā€ > ā€œWeb Administrationā€.
  7. Run updates by clicking ā€œCheckā€ then ā€œUpgradeā€ in ā€œUpdate Managementā€.
  8. Setup your user under ā€œUserā€. We need SSH access so make sure to tick the boxes for the ā€œsudoā€ and ā€œsshā€ groups.
  9. Login to SSH as your new user and expand your SD card, I personally found the steps outlined in ā€œResizing the partition online using fdiskā€ of this guide did the trick.

Docker

The Docker logo.

OpenMediaVault has plenty of plugins which we can use, but for anything else we can use Docker. Docker containerises all your apps which avoids all the setup and depedendeny management mess of installing new software. You can learn more about Docker in my original NAS post).

To get Docker setup:

  1. Under ā€œOMV-Extrasā€, double click on ā€œDockerā€ (not ā€œDocker CEā€), click ā€œEnableā€ then ā€œSaveā€.
  2. Over in ā€œPluginsā€, click ā€œCheckā€. Once this completes, search the plugin list for ā€œdockerā€ and install the ā€œopenmediavault-docker-guiā€ package..
  3. This will give you a handy ā€œDockerā€ menu to manage your images and containers.
  4. Optionally, if you want Docker Compose to use files to manage your Docker containers, install Docker Compose using pip.

File Access

OpenMediaVault makes it easy to access your files over the network!

Setting up shared folders

Firstly, lets configure the hard dirve to spin down automatically under the ā€œPhysical Disksā€ menu, personally I use the ā€œIntermediate power usage with standbyā€ setting.

Next, configure your partition to mount automatically. Select your drive under ā€œFile Systemsā€ and click ā€œMountā€.

The Shared Folders section in OpenMediaVault.

Now lets configure some shared folders! Pop over to the ā€œSharedā€ folders menu and click ā€œAddā€. Give your file shares a name, set the device and path then click ā€œSaveā€. You need to set your user privileges for each folder by clicking ā€œPrivilegesā€ and giving each user either read/write, read only or no access.

Configuring file servers

A file sharing icon.

Lastly, you just need to configure each of your file servers. These are all configured in a pretty similar way - just configure some shares in the ā€œSharesā€ and flip the ā€œEnableā€ switch under the ā€œSettingsā€ tab.

OpenMediaVault supports the three common file servers for NASā€™s so you get to choose which ones you want to setup!

Apple Filing (AFP)

While no longer the default file sharing server for macOS, AFP is the traditional Mac file server and can only be used by macOS. I personally use a Mac and found AFP to work the fastest for me.

SMB/CIFS

SMB/CIFS is the most widely supported file server with built in support on Windows and macOS in addition to packages like Samba which enable support on Linux systems. Iā€™d highly recommend setting up SMB/CIFS sharing on your NAS even if you donā€™t intend to use it as your primary file server.

NFS

NFS stands for Network File System. Itā€™s pretty old school and is pretty common for Linux systems. Itā€™s different from the modern alternatives in that it doesnā€™t have any authentication by default and expects a userā€™s IDā€™s to match across the server and client systems. NFS works great but as it requires a few more considerations Iā€™d only configure it if you really know what youā€™re doing.

Remote Access

A cloud icon.

Another key part of my NAS server infastructure is to enable remote access from anywhere in the world. I went a bit far with my remote access requirements, so I like to be able to access my NAS from anywhere in the world no matter what internet connection Iā€™m using at home.

Iā€™ve posted about how I do this in the past, check out how I got access to my home services from anywhere without port forwarding.

Local Access Convinence

192.168.1.?

This was another overkill requirement of mine, but when I access my NAS locally I donā€™t want to have to remember itā€™s IP address or the port numbers of the services it runs.

This is something else Iā€™ve posted about in the past so check out how I get easy access to my home server on a local network.

USB File Backup

One of the downsides to having only one SATA port is that you lose out on the multi-drive data redundancy provided by most commerical NAS setups. While data redundancy is nice to ensure continuity in the event of a drive failure, Iā€™m only using my NAS at home so I can manage without immediate access to my data in the event of a drive failure.

However, I donā€™t want to lose all my files completely so I have a second hard drive which is kept offline most of the time as a cold backup. I sync this at regular intervals so in the event of a drive failure Iā€™ll just buy a new drive and restore from this backup.

The USB Backup section in OpenMediaVault.

I use the OpenMediaVault ā€œUSB Backupā€ plugin to automatically sync to my backup drive whenever itā€™s connected. This is based on rsync but has an easy web-interface to configure the backup mode, shared folder and backup device.

Configuring applications

Now that all the basics are setup, itā€™s time to configure some applications on the system!

Plex

The Plex icon.

Plex is a server for your personal media collection. It collects brilliant metadata about your content and allows it to be played pretty much anywhere with the web, desktop, TV and mobile apps.

For remote access to Plex I just use Plexā€™s Relay feature, but to get around the bandwith limitations you could also run it through my custom remote access solution.

The OpenMediaVault plugin for Plex is very simple, all I need to do is select a physical disk for it to store the Plex data files on.

Metadata storage

The OpenMediaVault plugin for Plex lets you configure the drive to store the metadata on but it wonā€™t let you use the boot volume.

I figured that it made sense to store all the Plex metadata and such on the SD card as it didnā€™t need to spin up and SD cards are better suited to random reads like database and metadata accesses.

I went through a lot of effort trying to partition my SD card in order to store my metadata here, only to find that the benefit was negligible (and in fact, with the SD card I was using, significantly worse!). So, a word of wisdom, just donā€™t bother and store the Plex database on the hard drive!

Deluge

The Deluge icon.

Deluge is a torrent client with a web-interface. This allows you to download torrents directly on your NAS. I used the OpenMediaVault plugin for this and it works great!

Time Machine Backup

The Time Machine icon.

Time Machine is a feature built into macOS which backs up your computer every hour with file snapshots. Generally youā€™ll need an Apple Time Capsule to do this over the network, but OpenMediaVaultā€™s Apple Filing server lets you enable Time Machine support for a network share! All you need to do is configure a share and tick ā€œTime Machine supportā€.

This is completely optional, but I also configured a quota for this volume. This is a pretty awesome feature of OpenMediaVault where I can configure the Time Machine volume with an artificial capacity in order to prevent backups from filling up my entire drive. Set the quota option in the share (I used about 500GB for mine) and Time Machine will start clearing out old backups when it hits this point.

Cloud Storage Backup

The Google Drive icon.

I store a lot of my commonly accessed files in my Google Drive account. I have so many files there that I canā€™t sync them all with my computer so I use the Google Drive File Stream app to access everything else via the internet as needed. However, if my internet goes out at home or my Drive account is somehow compromised then I still want to have a copy of these files.

I use the rclone tool to do a one-way backup of my cloud storage to my NAS. I run this using Docker and the tloxipeuhca/rpi-rclone image.

I use OpenMediaVaultā€™s built in ā€œScheduled Jobsā€ mechanisim to run this job once a week. To ensure Iā€™m alerted if this backup ever stops working, Iā€™ve configured healthchecks.io to notify me if my cloud backup doesnā€™t run once a week.

The scheduled job uses a command like to run the backup and log the successful run: docker start --attach [docker container name] && curl [healthcheck link]

How does it compare to the Pi?

Now for the moment of truth, how much better is my latest generation of NAS in comparison to the Raspberry Pi? Well I did some not-so-scientific tests. The first of which is another run of Blackmagic Disk Speed Test, followed by a real-world transfer of a 3.85GB file.

The Disk Speed test and file copy results compared between the Raspberry Pi and ODROID servers.

The results show that the ODROID unit is significantly faster than the Pi! I canā€™t believe it took over 40 minutes to copy a 3.85GB file to the Pi and back - the ODROID managed this task in under 2 minutes!

All the best for your projects! Iā€™d love to hear how your projects go in the comments šŸ˜€