Mac mini Home Server

I recently replaced my Drobo NAS with a Mac mini. The initial impetus for this came from the fact that my Drobo was running low on space. All of the drive bays were full, so I couldn’t just throw another drive into the machine. This was not an insurmountable problem; these were mostly old 3tb drives, so I could have just replaced a couple of them with newer, larger drives and had plenty of space. However, it got me thinking about what I wanted out of a NAS and whether the Drobo was really the best way to fill that need.

The Drobo/home server fills a couple of roles for me. Primarily, it’s a big pot of storage where I can throw large files that I don’t need to access frequently and take up a lot of room on the primary drives of my computers. It also stores my Plex and iTunes media libraries, making them available over the network to any device in the house.

For the most part, the Drobo has served me well over the past six years, but there are definitely some downsides to using a NAS rather than having direct access to your data from a computer. Network shares aren’t always mounted when you want them to be.[1] Certain things are much slower or less reliable when doing them over the network.[2]

For quite a while I’d assumed that when I eventually replaced my Drobo, I’d get a Synology NAS. However, I realized that many of my issues were with network attached storage in general, rather than the Drobo in particular. While a Mac mini was more expensive than a Synology, I could also reuse some external hard drives I already had on hand rather than having to buy new drives to populate the Synology, meaning a Mac mini would actually be a bit cheaper up front.

Hardware

I had been planning to initially try this out with an old mid-2011 Mac mini, but the old mini gave up the ghost just as I was getting started with this project. So I went ahead and bought one of the new 2018 minis.

For the home server role, I probably could have gotten by just fine with the base model. However, one of the great things about the Mac mini is how flexible it is. My 2011 mini has, at various times, been my main home desktop, a headless server, and a secondary desktop machine at work. I thought the base model might be too limited if I even wanted to use it as a desktop. In order to future proof this machine a bit I bought the higher-end configuration with a 6-core i5 processor and a 256GB hard drive. I did stick with the stock 8GB of RAM, but that can be upgraded in the future (albeit with some difficulty).

It’s not really very consequential in the grand scheme of things, but I do like the space gray color. I think it suits the mini rather well.

Display

The mini runs headless, without a display attached.[3] As a server, it trundles along without my intervention most of the time, but I do need to get on it occasionally. I’m using Jump Desktop[4] to provide remote access. It allows me to log in to the mini from anywhere using an application on my iMac or iPad.

However, the most common way for me to access the mini when I’m at home is using Luna Display. Luna is a hardware dongle that plugs into your Mac and lets you use an iPad as an external display. While the original use case mostly focused around using the iPad as a second display for a laptop to get more screen real estate the release of the 2018 Mac mini created a lot of interest in using Luna and the iPad as the primary display. This is how I’m using it. Unlike Jump Desktop, this only works when I’m on my home network. However, Luna is a lot faster, less laggy, and has better resolution than a remote desktop app. It really is like having a screen plugged right into the mini.

Luna Display also allows you to use the touchscreen to manipulate the macOS interface on the mini. This is a two-edged sword. While it’s convenient, it also makes clear why Apple has resisted adding a touchscreen to Mac laptops. Many of the touch targets are just way too small.[5] The Apple Pencil helps with this since it’s a lot more accurate than my big fat fingers. I’ll often grab it off the top of the iPad when I need to minimize a window (don’t want to accidentally hit the red button instead of the yellow button) or another similarly precise task. Scrolling and right-clicking are a bit troublesome as well. However, the most significant limitation is probably that with Luna display you can only enter text on the remote computer if you’re running an external keyboard. It won’t bring up the software keyboard on the iPad. My iPad Pro spends so much time I the Smart Keyboard Folio that this isn’t really an issue for me.

Software

I gave serious thought to running the mini very stripped down as far as software goes, but in the end, I decided to install my usual suite of apps. A big reason for this is, so I have the option to use Jump Desktop on my iPad to log in remotely when I’m on the road without a laptop. Having this option is a nice safety blanket that makes it easier to leave the laptop at home and go iPad only when I travel. It also means that if my iMac were to go down the mini is all set up to take over right away as my primary desktop.

Backup

One of the critical tasks for a home server is keeping everything backed up. A real advantage of the Mac mini over Drobo is that Backblaze will back up directly attached external hard drives but not network drives.[6] A disadvantage is that I no longer have the built-in redundancy in the event of a drive failure that the Drobo provides. Instead, my data gets backed up from my two main external drives to another pair of external drives every night. Combined with weekly backups to “shelf” hard drives that don’t stay connected to my machine, I’m feeling pretty good about my backup.[7]

Printing

I’ve taken this opportunity to move my printer into the spare room where the mini lives. I print seldom enough that I don’t really need to have the printer within arms’ reach all the time. It’s shared over the network so I can still print from my iMac, and using Printer Pro I can send stuff to it from my iPad as well.[8]

Concluding Thoughts

I’m very happy with my decision to ditch the Drobo and use a Mac mini as my home server. Having my data on a machine that I can log into directly rather than just a network share makes lots of things simpler and faster. It gives me options that I just didn’t have with a Drobo, particularly when it comes to remote access.

The new mini is a very slick machine. It’s been fast and responsive and has handled the fairly heavy load copying data off my Drobo and doing initial backups to cloud services. I’m really glad that Apple decided to update the mini and keep it in the lineup.

[1] Especially a problem for things like scheduled backups that happen when I’m not sitting in front of the computer
[2] iMazing backups of iOS devices seem to work much better when the destination is on a local drive than a network share, for instance.
[3] I used the USB-C to VGA adapter I bought for my iPad to temporarily connect the mini to an old display to get things up and running.
[4] I also tried out Screens, but ended up settling on Jump Desktop for my remote access needs.
[5] Jump Desktop for iOS has some affordances for this, including different mouse pointer modes and support for specific models of Bluetooth mice.
[6] I had a workaround for this (clone the Drobo to an external drive attached to the iMac), but it was kind of kludgy and meant the data on the Drobo only got backed up to the cloud once a week.
[7] Much more on my backup strategy can be found here.
[8] My printer predates AirPrint.

Shameless link to this post on my blog.

14 Likes

I bought a Mac mini to use as my home server back in 2010. It’s now running a 2012 model (to get a quad core) purchased in 2014. I’m worried about what I’ll do in the future. I’m still running Sierra plus the Server app available at that time. As Apple wants to get totally out of the server business, first by eliminating real servers, then servers in name only, and a real server OS (last in Snow Leopard Server) and now by Mojave so de-featured that I can’t use it without losing some capabilities I rely on.

http://almy.us/server.html

2 Likes

Excellent post, Chris. Thanks.

1 Like

Thanks for the sharing. Could you please elaborate on the performance of Jump Desktop? I’m currently using Screens as my VNC client; it’s generally good but not without annoying glitches. Also, does Jump Desktop support automatically adjusting screen resolutions on connection? (That is, support switching from a 16:10 resolution to a 4:3 one so that iPad’s screen estate can be fully used?)

Great post; thanks for sharing.

I too have gone the Mac mini route for my home server. I had a Drobo 5N at one point; wound up selling it. Recently I also sold my Synology. I am now using a 2014 base mini that I got at a great sale price on Black Friday instead. This is not a drag on either the Drobo or the Synology, both of which were great machines, but the mini meets my needs better.

You have outlined how the mini can be a better option than a standard NAS like Synology very well and I agree with all of your points.

At one time, for instance, I had a rather kludgy system in which the mini would mount each Synology share each night and clone it to a backup drive hanging off the mini which would then go into cloud backup. This was not a solution I was happy with as I felt there was just too much room for failure. I was not happy with Synology’s cloud backup options - one of the few weak points in Synology’s software lineup in my opinion.

I now have all of my storage hanging off the mini - and I am using Thunderbolt connected Drobos for this, one as the main data store and one as the backup device to which everything clones daily, I make a periodic archival clone (especially before OS updates).

In addition, the mini as a server can do things a Drobo or Synology NAS cannot - like have Mail.app always running and executing mail rules. I also use Arq for my cloud backup rather than BackBlaze (somewhere else on this site are my reasons for that).

I am also using both Sync and Dropbox as my cloud shared folders, and both sync to the mini as well as another copy. Plus, the mini is, as pointed out, useful in the event that I need a backup machine to work on in a emergency in which my laptops die (yes, I have both a 2018 MBPro and a 2018 MBAir; I use the air as my regular usage machine and carry it with me daily; the MBP lives mostly docked and is used for my photography work, but can be carried to a shoot when needed as well).

The only place were I am still struggling is in configuring the mini as a VPN server, which was trivially easy with the Synology, I have something messed up so that while I can make the VPN connection, I cannot forward my network traffic over the VPN correctly. Some mistake in my configuration that I will have to sort out eventually.

2 Likes

If you want to use AirPrint, there is a handy little App called Printopia. It simulates an AirPrint printer on a Mac and forwards the print job to your real printer.
I have my old printer (without any network capabilities) plugged in to an AirPort Express and installed Printopia on my Mac mini. That way, I don’t even need to use a USB port on the Mac mini :smiley:

3 Likes

That’s basically what I’m using Printer Pro for.

If you want to print something, you’ll use Readdle’s iOS App via the share sheet, right? So Printer Pro provides an alternative to AirPrint instead of simulating an AirPrint-printer? And do I understand it correctly that using Printer Pro you can print over the network without needing the Mac mini at all?
Just curious as I have only dealt with printers that were either capable of AirPrint or without any networking capabilities so far.

Just double-checked. There is no mini server configuration setting for forwarding traffic. From the server POV it should happen automatically. Presumably you can access local systems remotely?

However the remote computer must be correctly configured to route all traffic over the VPN connection, which isn’t the case by default. First put the VPN service at the top of the list so it gets priority. And then in “Advanced…” make sure “Send all traffic over VPN connection” is checked.

@tomalmy,

Yes, you need to check that box on the VPN client. The issue is how to get the vpn server on the mini to forward the traffic coming in from the client out to the proper external host.

I believe the process involves setting up the proper routine in the packet forwarding layer of the network stack (now “pf”, formerly “ipfw”.) I am not expert in creating the rules for pf; my last foray into this kind of setup was many years ago under linux using the even older iptables system.

I don’t know if this will be worth the effort to figure out.

Printer Pro substitutes for AirPrint and you print using the Readdle app. However, you do need to have the printer connected to a Mac running a menu bar app that Readdle makes.

I’m still running Sierra + Server.app to get full features. Configuring VPN didn’t involve any editing of files. Traffic forwarding just worked “out of the box”. For Mojave there is this [https://cutedgesystems.com/software/VPNEnablerForMojave/] which gives the same GUI setup.

Yes, I’ve seen that software. I may just go ahead and buy it and save myself the time involved in hand configuration. It’s a good price for the value this think.

Thanks for the clarification! Could you explain where the benefit of using Printer Pro lies for you? I always try to stick to the default options unless there is a compelling reason to use an alternative, therefore I‘m curious why you chose it over an AirPrint simulation.

Frankly, the main reason is I already owned it as part of a Readdle sale bundle.

1 Like

I’m honestly torn…at the moment I have my laptop that I treat mostly like a desktop. I like the idea of running a Mac Mini as a server though too I’d like a NAS for the storage and redundancy. Like @ChrisUpchurch it would be beneficial to have a Mac Mini to run Arq. I’m leaning between buying a Synology or building my own UnRaid system. This whole Mac mini thing though is oh so tempting! I wonder though how often I’ll need to remotely access my computer or data.

Hi @ChrisUpchurch , great post! My Synology is getting long in the tooth so I would intend to do more or less the same thing you do – Mac mini headless server with a Drobo attached. I have run some tests on the small mini I already own to figure out things I am used to on my current Synology but two things remain that are baffling me (and that were extremely easy to do on a NAS).

Here’s my use case: I’m on the road for extended periods of time so I would need to be able to log back in following a software update or power outage for instance, without any physical access to the machine, and I would like other users in the family to access that machine from other locations but get their own environment and storage rights. But:

  • If the mini server reboots for some reason (update, power outage, mistake), how can you log in to it remotely to start, say, Screens or even the regular Apple Screen Sharing? If no user is logged in it seems no helper apps are started, and so you can’t access the machine, period. That kind of defeats the purpose of a remote server…
  • How do you manage multiple user accounts when using screen sharing - so that different users can log in to that machine and get their own environment?

Would ARD solve those issues? Or am I asking for too much?
Thank you so much for your insights, and any help other MPU members may provide :slight_smile:

I’ve setup Plex server on a mid 2010 mac mini. My problem is I can’t keep the Mini and my primary iMac seeing each other continuously. All sharing is on but still on occasion, I have to restart the machines or when I try to login to one I get an error message. Can someone help?

These are good questions, and the answer is to setup local static IPs (or the equivalent) for your Mac(s) and port-forwarding at the router-level, which is what the helper apps like “Screens Connect” or “'Jump Desktop Connect” are trying to save you from having to do.

The problem is that the instructions for doing that are different for nearly every router out there. One of the great things about eero (this is not a sponsored ad!) is that the app makes it super easy to set these up, and I can access the information about my eero network at home even when I am not at home.

Finally, you need to know the IP address of your home network or you need to use one of the Dynamic DNS services out there (some of which are free). I use EasyDNS for this. I pay some small amount of $ every year for it and am a happy customer of theirs for years.

But you don’t need a Dynamic DNS service. You just need to know the IP address. Most ISPs don’t actually change your IP address all that often (although they always reserve the right to do so, and some of them make you pay a monthly fee for a static IP address).

You could write a shell script which writes your public IP address to a text file in Dropbox every hour and chances are that even if your Mac reboots and Dropbox isn’t running, your home IP probably hasn’t changed, and you can get the text file via the Dropbox app on your phone.

So there are free / cheap ways of doing this… the trade-off is time and convenience, which is almost always the case.

But sometimes that’s what we do as “power users”, isn’t it?

Starting back around Lion (IIRC) even the basic screen sharing functionality in Mac OS X / OS X / macOS will allow different people to be logged in at the same time remotely.

Apps like Screens and Jump Desktop ask you to specify the username that you want to log in as, so it should be easy enough for multiple people to access their own files, even via Screens or Jump Desktop or plain ol’ Screen Sharing.

You can also specify the ports that you specified in your router inside of the Screens or Jump Desktop apps, so they don’t need to rely on their helper apps.


I’m happy to help more with this if needed. Feel free to post replies here and I’ll check in when I’m around (which is pretty much daily).

1 Like

Agree with this advice.

I actually use a free dynamic DNS service. Because I have a hosting account with DNS service which I use for my home LAN, I have created a record there that redirects to the dynamic DNS name for my convience, but this is not necessary albeit convienient for me.

The Dynamic DNS service I use allows resetting of the IP address via http, which means a simple shell command using curl can reset the IP address as needed. I use another web site to find out my external IP address, check that against what I have recorded in a file in Dropbox, and if they differ, reset the IP address and the Dynamic DNS service.

As a result I can get my home IP address via both DNS and from a file in Dropbox.

I have the IP address script run every few hours via KeyboardMaestro so I am pretty much always up to date.

I can post the script if that will be of use to anyone.