This project start out more as a project of opportunity than a planned “Ten Everyday Things” project, but as I was setting up the server I realized that it fits into all of the rules. With the everyone using “Cloud” storage and since most offices have some sort of file storage, a home file server falls into the category of something people use everyday. The actual server hardware (more on that later) is based on an desktop that I built a couple of years ago and I am setting up the software, so it is not an off the shelf solution. Finally, I am writing this page to document it.
A couple of years ago, right after I graduated with my Master’s and finally had a real job, I decided I wanted a new computer. I had used Macs throughout college and at the time had a 4 year old Mac book that was barely getting me by. Naturally, I started to look at Macs and though, well I don’t really need a laptop anymore so how about a desktop, and while I am at it let go with a dual monitor set up. Well, if you have ever priced out a high end Mac desktop you know that they cost at least an arm and possibly a leg (but I hear you get a discount if you promise them your first born). A buddy of mine has just built a hackintosh, so I decided to go with that route. So I purchased a bunch of hardware, a cool case and set about loading OSX on to my custom hardware. Long story, made slightly shorter – Hackintoshs are great, except when you want to update them, then they are a real pain.
After 3 years of not updating my computer and really having the urge to get a laptop, I finally broke down last month and bought a Window’s laptop. Now I have this desktop that still has some pretty good specs, that I didn’t know what to do with. In parallel, I started looking at Network Attached Storage boxes because my new laptop couldn’t hold all of my photos (It is amazing how fast RAW images add up). Somewhere during this process it clicked…. Hey, that old desktop would make a great File Server.
Server OS
I did a some reading about what software to run on my server and came up with a two options.
- Run a Ubuntu Server and have to load all of the file server software. With this set up I would have more flexablity to run other programs and come up with other uses for the server
- Run FreeNAS, which is a FreeBSD based Server OS designed specifically for running a file server. Inside of the FreeNAS, I could set up a number of Virual Machines that I could log into to add any additional functionally in the future, like hosting this website.
Since my primary goal was to create a file server I choose to go the FreeNAS route.
Hardware
To start off, I am planning on doing this on the cheap to start out to see if it is going work for me and then add better hard drives later on. The hardware I am working with is as follows:
- Intel Core i7-3770K Processor (3.5 Ghz, Quad core Processor)
- 16 GBs of RAM
- 1 -120 GB Solid State Drive
- 2 – 7200 RPM 1 TB Hard Drives
- 1 – 5400 RPM 3 TB Hard Drive
- All connected to a high end (at the time) ATL Gigabyte motherboard
After reviewing the required specs for FreeNAS, I met all of the recommended specs except for the NAS specific hard drives. These will be my 1st upgrade if this works out in the long term.
Installing FreeNAS
There are a lot of great resources out there that cover how to install FreeNAS, so I am going to put those links here with my comments about each of them. For reference, I installed FreeNAS 9.10.
FreeNAS Documentation – This is where I would start. There documentation is pretty much the bee’s knees! They have very clear how to’s. My only comment would be that they are not very clear on how to set up the USB drive to install the software.
PC World Article – They are a little short on details, but it covers the overview.
Engagdget Article – Very through, but it refers to an older version of FreeNAS. The process is similar, but some of the requirements and screen shots are different.
Setting Up FreeNAS
Once FreeNAS is installed and running on your machine, it is time to begin setting it up. FreeNAS has an awesome browser based interface that is accessible from any computer on the same network. To access the interface, just type the IP address of the server into your address bar of your browser. All of the computer that are typically used on the network are Windows machines, I set up everything with this in mind. In addition, the Engagdget article and the FreeNAS Documentation came in handy here.
There are 3 steps to setting up the file server:
- Create user accounts – I created a user account for all of the Windows accounts that I around the house. This allow the users to login into the server with their windows accounts.
- Set up up the Volumes – I set up the volumes based on what hard drives I had. I set up a pair of 1TB drives in a mirrored configuration, that I am using to stored my archived photos. I set up a second volume using a single 3 TB drive, that I am using for back up and storage of long term things. Finally, I set up my old SSD drive as a volume that is used for future creation of Jails and Virtual Machines.
- Turn on Volume Sharing – Since all of the computers on my network are Windows machines, I set up CIFS sharing for each of the drives.
Future Additions
- Set up a Jail and Virtual Machine to Rip Movies off of DVDs so I can access them over the network
- Set up a Plex media Server so I can view various media on my Xbox and computer.
- Upgrade the hard drives to NAS hard drives to enhance reliability.