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?
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
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.
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
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.
- Download Armbian - see their information about the ODROID XU4/HCx
- Clone this image to your SD card, I like to use Etcher for this.
- Boot it up and find your deviceās IP address on the network.
- Follow the steps in Installing OMV6 on Armbian Bullseye to login via SSH and install OpenMediaVault.
- 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ā).
- Change your web-administrator password under āGeneral Settingsā > āWeb Administrationā.
- Run updates by clicking āCheckā then āUpgradeā in āUpdate Managementā.
- Setup your user under āUserā. We need SSH access so make sure to tick the boxes for the āsudoā and āsshā groups.
- 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
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:
- Under āOMV-Extrasā, double click on āDockerā (not āDocker CEā), click āEnableā then āSaveā.
- Over in āPluginsā, click āCheckā. Once this completes, search the plugin list for ādockerā and install the āopenmediavault-docker-guiā package..
- This will give you a handy āDockerā menu to manage your images and containers.
- 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ā.
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
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
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.
Local Access Convinence
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.
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.
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
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
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
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
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 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 š