Does this make sense for a home server?

Hi there

A time comes in every young man's life when he needs a home server. So I'm looking to put together my first. I'm wanting to offload some services off my PC onto the server as well as implement some new services. The server will be used to serve 6 family members sometimes concurrently but most often not. In fact with sleep, work and school the server will be idle for about 14hours a day most days. I need some guidance and mentoring if the community would be so kind.

Primary use
File storage - user folders for documents etc shared folders for videos, photos, music.
Streaming to ipads, phones and Rokus. Don’t necessarily need on the fly file transcoding.
Backup of PC's and Macs' on the network
ZFS looks to cover me for redundancy and data protection. I will need to implement a backup strategy for the server though. I'm thinking USB drives and a cloud solution. Maybe Onedrive or Dropbox. I'm going to look into other solutions like Amazon's S3 to see if that would be more convenient.

Here’s the fun part. The services that I would like the server to run. My understanding is that they most likely would benefit from running in separate jails, each with their own IP address, so that if I have to take one service offline for upgrades etc it doesn’t impact the others.

These are in order of priority
• Ubiquiti controller. Unify
• Mumble / murmur
• Minecraft
• Emby
• Steam server (team fortress and cs:go). I haven't done this before but it might be fun to have our own little lan party. I don’t even know if it's possible on FreeBSD.

Secondary use
The secondary services are more for me to play around with and learn. These are things I would like to try in the future
• Mail server, in particular Kolab
• Jitsi server
• Asterisk
• Machine learning systems
• Drupal or Wordpress site
• CRM / Ledger system (suitecrm or idempiere)

My goal is to have the server configured so that if it goes offline I am only down for a minimal amount of time. I can move the services to an alternate machine and be up and running till replacement parts or upgrades are complete.

I want to treat the system as a learning platform. I understand that I could achieve most of what I need using FreeNAS (I'm not dismissing the idea) however I would like to learn the underlying technologies as opposed to learning a 'software package'. Please don’t read the previous sentence in the negative, it's just a clumsy way of me trying to explain my objectives.

I am an absolute novice when it comes to either Linux or FreeBSD. I have installed and used both Ubuntu standard and server and have installed and played with Debian. It was while researching Debian that I found ZFS and while thinking about installing ZFS on Linux I thought why not just go for something where it is 'native'.

My hardware is a collection of bits that I have collated recently.
I have a generic 16 bay rack mounted server case. I've swapped out the fans for quiet ones. I just need to work out how to silence some of the case alarms for missing fans and open case warning.
• The motherboard is a ASRock N68-S3 UCC AM3 GeForce 7025 + nForce
• Running a AMD Athlon II X2 Dual Core 255 CPU AM3 3.1GHz (65W)
• I have 1x8GB ram (will upgrade to 16GB as soon as it starts to look like it's going to work as intended)
• 3x 1TB HDD + 1x 30GB SSD (this will be the boot disk)
• 1x M1015 IBM raid controller

So far I have installed FreeBSD, installed ezjails, created a few jails and attempted to install Mumble from ports.

Unfortunately I don’t have any friends or acquaintances who I could bounce this idea off. I tend to be the one they come to for IT help. Hence I'm reaching out here. Am I on the right track? Should I be looking at things another way? I intend on documenting the build and posting back what I have learned along the way so that it might help others in the future. So feel free to chime in and let me know what I don’t know.

Thanks in advance
 
It seems like you're on the right track, and have done a good amount of research. Couple things; for service redundancy I'd throw in some carp(4) and hastd(8) in there for HA/FA (High-Availability/Failover). This will help service continuity.

Also, I recommend using iocage as your Jail administration framework. The user experience and workflow is much simpler, has better ZFS integration, more active community, and is much more feature rich. Backups can be done with ZFS replication using iocages' "thick Jail" option.
 
Thanks Beastie7, that's exactly the type of feedback I was looking for. :) It's very much a case of I don't know what I don't know. So any pointers on how to do something quicker, faster, easier is greatly appreciated.
 
Hi there

Primary use
File storage - user folders for documents etc shared folders for videos, photos, music. Streaming to ipads, phones and Rokus. Don’t necessarily need on the fly file transcoding.

Backup of PC's and Macs' on the network
FreeBSD or FreeNAS you mentioned are ideal for such things. FreeNAS would be easier at first but any tweaks would be painful.


ZFS looks to cover me for redundancy and data protection. I will need to implement a backup strategy for the server though. I'm thinking USB drives and a cloud solution. Maybe Onedrive or Dropbox. I'm going to look into other solutions like Amazon's S3 to see if that would be more convenient.
ZFS is designed for redundancy, data protection and high availability. ZFS snapshots which are NFS, Samba aware are practically built in version control into file system (I like to refer to it as Journalling which is not standard term). ZFS Journaling is only second to HAMMER fine grained journaling via history. ZFS has a built in backup mechanism. It is called remote replication. So guess what. You need another server with identical specification running FreeBSD/ZFS to have a proper backup.

Onedrive and Dropbox are useless spay-ware. Are you sure they run on FreeBSD. Amazon Glacier is fantastic
archiving solution. Look at sysutils/duplicity and its front end sysutils/duply for a proper archiving to Amazon Glacier.

Here’s the fun part. The services that I would like the server to run. My understanding is that they most likely would benefit from running in separate jails, each with their own IP address, so that if I have to take one service offline for upgrades etc it doesn’t impact the others.

These are in order of priority
• Ubiquiti controller. Unify
• Mumble / murmur
• Minecraft
• Emby
• Steam server (team fortress and cs:go). I haven't done this before but it might be fun to have our own little lan party. I don’t even know if it's possible on FreeBSD.
I am not familiar with any of those but I am curios about Ubiquiti controller Unify? Are you sure Ubiquiti proprietary controller runs on FreeBSD. Just curios. I am aware of their Edge Light Router which can even run OpenBSD but it is not such a great solution (hardware acceleration doesn't work, lack of W^X on octeon port of OpenBSD, as well as crappy storage driver).






Secondary use
The secondary services are more for me to play around with and learn. These are things I would like to try in the future
• Mail server, in particular Kolab
• Jitsi server
• Asterisk
• Machine learning systems
• Drupal or Wordpress site
• CRM / Ledger system (suitecrm or idempiere)
Most people have no business running their own mail server. What a hack is Kolab? I work for machine learning group. scikit-learn python works fine on FreeBSD, pandas (data mining as well). R works well.
We run Wordpress site from a Jail. I have played with Drupal. Runs fine on FreeBSD inside a jail. Jails combined with iocate really rock. My favourite feature is jail snapshots which can be sent onto the remote machine. Think of Xen hot migration. KVM can't do that for example.

My goal is to have the server configured so that if it goes offline I am only down for a minimal amount of time. I can move the services to an alternate machine and be up and running till replacement parts or upgrades are complete.
I said you need identical FreeBSD server on an alternative location :)



I want to treat the system as a learning platform. I understand that I could achieve most of what I need using FreeNAS (I'm not dismissing the idea) however I would like to learn the underlying technologies as opposed to learning a 'software package'. Please don’t read the previous sentence in the negative, it's just a clumsy way of me trying to explain my objectives.
As somebody who has both vanilla FreeBSD and FreeNAS machines I am with you.

I am an absolute novice when it comes to either Linux or FreeBSD. I have installed and used both Ubuntu standard and server and have installed and played with Debian. It was while researching Debian that I found ZFS and while thinking about installing ZFS on Linux I thought why not just go for something where it is 'native'.
You will have a very steep. Most intelligent people will have no problem with the steepens of the curve but will not have time necessary to master the technology. We are talking couple of months full time (40-50 hours a week).

My hardware is a collection of bits that I have collated recently.
I have a generic 16 bay rack mounted server case. I've swapped out the fans for quiet ones. I just need to work out how to silence some of the case alarms for missing fans and open case warning.
• The motherboard is a ASRock N68-S3 UCC AM3 GeForce 7025 + nForce
• Running a AMD Athlon II X2 Dual Core 255 CPU AM3 3.1GHz (65W)
• I have 1x8GB ram (will upgrade to 16GB as soon as it starts to look like it's going to work as intended)
• 3x 1TB HDD + 1x 30GB SSD (this will be the boot disk)
• 1x M1015 IBM raid controller
Probably border line enough



So far I have installed FreeBSD, installed ezjails, created a few jails and attempted to install Mumble from ports.
I would suggest you switch to sysutils/iocage for full integration of Jail and ZFS.
 
Thanks for your feedback Oko :)

FreeNAS would be easier at first but any tweaks would be painful.
Yes, that was my thinking as well. If it was just going to be a file server. I'd probably go with FreeNAS. Given I would like to do a little more I think the initial investment in time will pay back in the long run.

Thanks, I sure will. If I can implement something like that with Amazon's storage. It may make a great alternative to external usb drives.

curios about Ubiquiti controller Unify
My router recently died so I replaced it with one of these

https://www.ubnt.com/unifi-switching-routing/usg/

The controller software is a java application which when installed on my pc I found it clashed with another Java app I use for work. From what I can find the apps use the same port and this is causing a conflict. This is part of the reason I wish to move the service to the server. Being Java my assumption is that it should run fine on FreeBSD. I have found a port of it here net-mgmt/unifi4. So fingers crossed it works as anticipated.

Thats two votes for iocage(8) so I know guess who is going to switch from Ezjails ;)

The only reason I went with Ezjails was because it was in the manual. I'm more than happy to take the advice of others who have already been down this path.
 
Hi there

My hardware is a collection of bits that I have collated recently.
I have a generic 16 bay rack mounted server case. I've swapped out the fans for quiet ones. I just need to work out how to silence some of the case alarms for missing fans and open case warning.
• The motherboard is a ASRock N68-S3 UCC AM3 GeForce 7025 + nForce
• Running a AMD Athlon II X2 Dual Core 255 CPU AM3 3.1GHz (65W)
• I have 1x8GB ram (will upgrade to 16GB as soon as it starts to look like it's going to work as intended)
• 3x 1TB HDD + 1x 30GB SSD (this will be the boot disk)
• 1x M1015 IBM raid controller

It is my understanding that you will get better mileage and reliability with Intel based systems compared to AMD.

There are numerous forums about this but I think its described simply on iXsystems' website:

"FreeNAS is based on FreeBSD. FreeBSD has a long history of working better on Intel than AMD. Things like (but not limited to) the watchdog controllers, USB controllers, and temperature monitoring all have a better chance of being well supported when they are on an Intel platform. This is not to say that AMD platforms won’t work, that there aren’t AMD platforms that work flawlessly with FreeNAS, or even that there aren’t Intel platforms that are poor choices for FreeNAS, but all things being equal, you’ll have better luck with Intel than AMD."

If this box is going to be online 24/7/365 and running what looks like a megaton of services and backup options, you really ought to consider a system with a more powerful CPU such as an intel Xeon or maybe even one of those octacore atom boards. Eight GB of RAM is going to show its limitations very early on that set up, but since you intend on upgrading later after it shows promise I imagine its ok. Also, with that much RAM and 24/7 operation, you probably should consider going with ECC RAM for reliability and data integrity.
 
better mileage and reliability with Intel
Thanks gofer_touch. That's the general consensus that I found as well. However I'll try with the equipment that I have on hand initially and if it's unsuitable or I out grow it then I will happily upgrade to a newer and more suitable CPU / MB / RAM combo. My thinking is (feel free to correct me if I'm wrong) that if I configure everything right and I need to upgrade the hardware in the future. It should be a matter of powering down, upgrading the components, reinstalling FreeBSD, then importing the pools again.

megaton of services
haha :D It's not as bad as it looks. At most there will be 6 users concurrently. These users will be mainly Mumble and Minecraft. I have sons who are obsessed with it. So pretty low resource usage. If anything I will be the only user using the other services and that is more for learning and testing than in production.

Thanks again for your thoughts. I do appreciate you taking the time to consider my setup.
 
Thanks gofer_touch. That's the general consensus that I found as well. However I'll try with the equipment that I have on hand initially and if it's unsuitable or I out grow it then I will happily upgrade to a newer and more suitable CPU / MB / RAM combo. My thinking is (feel free to correct me if I'm wrong) that if I configure everything right and I need to upgrade the hardware in the future. It should be a matter of powering down, upgrading the components, reinstalling FreeBSD, then importing the pools again.


haha :D It's not as bad as it looks. At most there will be 6 users concurrently. These users will be mainly Mumble and Minecraft. I have sons who are obsessed with it. So pretty low resource usage. If anything I will be the only user using the other services and that is more for learning and testing than in production.

Thanks again for your thoughts. I do appreciate you taking the time to consider my setup.

No problem. I think you are going to have a lot of fun putting this together. Good luck!
 
The controller software is a java application which when installed on my pc I found it clashed with another Java app I use for work. From what I can find the apps use the same port and this is causing a conflict. This is part of the reason I wish to move the service to the server. Being Java my assumption is that it should run fine on FreeBSD. I have found a port of it here freshports.org/net-mgmt/unifi4/ . So fingers crossed it works as anticipated.

I run unifi on a FreeBSD server and find it runs perfectly fine. Much happier with it than the crappy slow Windows version, especially now that the more recent versions support multiple sites so we can have all our sites managed via one unifi server (I say recent but it's probably been a year or two..)
 
Actually just at base level, the server doesn't do anything else. Don't see any obvious reason why it shouldn't run in a jail though.
 
I'm glad your thoughts are similar to mine. From what I've read it should be fine as well.

I'm getting keen to get it going now. I won't get a chance to work on the server till later in the week. I'll keep posting back here to let everyone know of my progress.
 
Hello,

I had a similar setup with my FreeBSD home router couple of years back (I ran a Killing Floor server on my hosted server in a jail).
You should check the following:
- Steam was not available with FreeBSD at the time so I was using the linux compatibility facility to be able to run linux dedicated server on BSD 9.x at the time, apart from some strange things it was working I would say 'alright' - had to restart every night update, cleanup it needed a lot of nurturing but I was able to automate it, however on some ocasions it stopped... If I had to service someone and sell rented servers I would have used linux at that time, I don't know what is the status of this at the moment.
- Way more years back when I tried (6maybe?) asterisk and it's supported hardware was not so friendly with FreeBSD also.

For Storage, CIFS, FTP, Web Services and similar stuff FreeBSD is top notch and a whole lot of software is available and gets updated regularly.
Murmur, TeamSpeak, Drupal and usually CRM systems work on FreeBSD, about the other stuff I don't know.

You may want to install a FreeBSD box, and start checking out this stuff or searching google for possibilites like "Steam on FreeBSD" "FreeBSD support asterisk cards" or stuff like that!

Good Luck, and have fun! :)
 
start checking out this stuff or searching google for possibilites

Thanks repcsi, that's exactly where I am at at the moment. I have the base install ready. Now it's going to be a matter of installing each service and giving it a go. This weekend if I can get Unifi and Mumble working it will be a bit of a milestone for me. All my reading says that it shouldn't be too difficult. After that I will tackle each service one by one and see what I can get functional.

The whole linux on FreeBSD seems a daunting challenge for me. My reservation is that I'm a novice not only on FreeBSD but Linux as well. So if something doesn't work I'm not really sure where to start trouble shooting. I guess that's all part of the fun really.

Thanks again for your thoughts. At least all the responses are in the positive and no-one has said the concept is doomed to fail from the start. :)
 
My reservation is that I'm a novice not only on FreeBSD but Linux as well. So if something doesn't work I'm not really sure where to start trouble shooting. I guess that's all part of the fun really.

Continue to start your Unix path with FreeBSD. Trust me, life will be much better.

You might also look at SmartOS which is developed by Joyent and used for their public Cloud. It is based on illumos, which is descended from OpenSolaris, and thus Solaris. With this you get Zones, DTrace, and ZFS.

SmartOS is a hypervisor only and runs completely in memory. All of the disk is used as storage. It boots from USB, CD-ROM, or PXE boot.

Joyent releases a new image every other Thursday and the platform image can be moved in place without a reboot.

Joyent ported KVM in 2011 and they have FreeBSD datasets available to install in KVM.

Joyent also picked up OpenSolaris' old lx-branded zones that allow you to run Linux on SmartOS bare metal. I know that Ubuntu works.

If that isn't enough, Joyent has also made Docker to be able to run on bare metal.

I wouldn't throw something like SmartOS at a novice user. Too many abstractions to go through all at once. It's best to start with the Basics on a simple foundation, then build up if needed. FreeBSD is just that.

The community around illumos is probably smaller also, which doesn't help when you need quick support. Their documentation is much to be desired too.
 
gpatrick It's coincidental that you raise that alternative. When I first started researching options for my server I downloaded and installed CoreOS onto the bare metal for all the similar reasons you raise above. I managed to install everything okay. But then I looked at it and thought 'what next'. I found I had a knowledge gap. When looking for solutions I found some awesome blog posts regarding implementing a HA asterisk setup on docker and CoreOS but I didn't understand enough or had the hardware to try it completely.

So my thoughts were to start looking at a more 'vanilla' setup. That search started with Napp-it http://www.napp-it.org/index_en.html on ESXi. I still didn't feel confident. So I looked into the other options discussed above (Ubuntu and Debian) before settling on FreeBSD as being a solution.

So I think I have worked backwards from your suggestion but that was only to build a better understanding before moving towards that eventually. I certainly see the benefits of the container system, but I dont have the skills yet to benefit from it.

Beastie7 I have to agree the documentation for FreeBSD has certainly been the best from from I have looked at to date. Being pretty much self taught, much of it by trial and error, I've gained an appreciation for decent documentation.

:)
 
Thanks tobik , This is one area I was intending on playing with and researching some more. My understanding of Raid cards and ZFS is that unless you are using the card in 'pass through' mode it is best to be cautious or don't use it at all. So my thoughts were to play with the hardware that I have and see what results I get.

For reference I have been using the info here http://www.servethehome.com/ibm-serveraid-m1015-part-4/ which I looked at when trialing napp-it (see above).

The little motherboard only has 4 sata ports. So unless I use a card or upgrade the motherboard. I'm not going to have anymore disks than that. My plan was to trial first without the raid card and see what sort of through put I get. Then trial it with the card. I'll most likely run with the option that gives the best performance.

Now having said that, I don't believe I need the fastest system on earth for my intended use but if I can save myself a couple of minutes on big file transfers every now and then that would be nice. I won't take performance over unnecessary risk through. So your advice is appreciated.
 
Okay, I'd thought I'd post an update for those that are interested on my server build. First of all I'd like to thank everyone above for their input. In a small way you have all helped save some time and put me on the right path.

The following is basically what has happened over the last week. I don't profess to any of it being correct or appropriate, it is just what occurred. I'm more than willing for others to point out where improvements can be made so that anyone who reads this in the future can learn from my experience.

Based on the feedback above I deleted the jails I had created and uninstalled ez-jail. I then attempted to install iocage(8). However I received the error "path not found". After a bit of googling I realised I hadn't set my default gateway after setting a fixed IP address. a quick edit of re.conf with vi and I was on my way.

I then attempted to install iocage(8) again but was advised that Pkg was to early for the system so I performed a make deinstall reinstall of ports-mgmt/pkg

I was then able to install iocage. Upon attempting to fetch iocage I was advised that I didn't have any zfs volumes on the system.

This was true as up until now I had only been running off the single SSD card that was installed. I had not yet installed or configured the HBA or drives.

I installed the HBA and discovered that it was set to the wrong mode and would require flashing to the 'IT' mode.

I followed the instructions from serverthehome (mentioned above) but ran into trouble with the motherboard not allowing me to complete flashing the card. I received the "Failed to initialise PAL. Exiting Program" error.

I tried on an old HP pc that I had sitting near by. However that wouldn't even boot the card. All it would do is give me a three beep error on POST.

One of my sons wasn't home so I utilised his machine and was able to get the machine to boot into bios. However it wouldn't launch into uefi shell until I worked out how to rename one of the files to shellx64.efi. Upon completion the card flashed fine.

I then reinstalled the card to the server, powered on and crossed my fingers. Woohoo! It worked. So now I need to identify the drives, create a volume and complete the iocage setup. In order to identify the drives I was planning on installing them one at a time and seeing what changes occurred. If there is an easier way to get a device listing please point me in the right direction.

So in summary, I haven't achieved much but completed a lot. I'm feeling confident that over the next week I should meet my goals of having unifi, murmur and minecraft in their own jails and accessed over the network. After that it will be setting the file server folders and testing of file transfer performance. Until I have proved it all works as intended I will only be running the 3 x 1TB drives (two in a mirrored volume, the remaining single as a single disk volume as back up). If all goes will I will add some drives and maintain the mirrored volume approach to facilitate upgrades and changes in disk size.

Thanks again all for your input. I'll keep you posted of how I get on.

Spoook
:)
 
  • Thanks
Reactions: Oko
Okay, this is another update for those of you playing along at home ;)

Due to commitments at work I haven't been as productive as I would like over the last two weeks. However I have been able to complete the following:
  • installed the three 1TB drives
  • spent two hours Googling and testing why the system couldn't see the new drives. Determined that I hadn't plugged the #$%i@ng cable into the HBA controller
  • configured two of the drives into a mirrored vdev called /storage
  • allocated the remaining drive as a single disk vdev called /backup
  • successfully ran iocage fetch
  • created a jail called unifi
  • installed net-mgmt/unifi4 into the jail
  • configured the jail to auto boot
  • successfully pinged the jail from my PC, not currently able to ping the pc from the jail
To do
  • I now need to configure the jail so that I can access Unifi from my local network. Then update the router.
  • Create two new jails for Mumble and Minecraft
  • Configure and test network storage

I'll keep you all posted :)
 
Hi all

I thought I would post a quick update for anyone interested.

So far I have been successful in proving the concept. I have been able to create three separate jails. Each jail running one service being, Unifi, Murmur / Mumble, and Minecraft. I don't profess to have any of the jails configured appropriately (security, stability etc) but I have proven the concept by being able to connect to each service from inside and outside of the network.

My next step will be to establish the network storage and shares along with a suitable backup procedure. Once this is proven. My approach will be to stabilise the system and make it secure as possible with my limited knowledge.

So another quick thanks for everyones input. I think I'm glad I have settled on FreeBSD as my operating system.

:)
 
Hi Spoook, it seems like you're on the right path, but I'll give some of my experiences.

I started out using FreeNAS 7 a few years ago. I found it was a great little OS and helped me learn some core concepts. When the main developer left for OpenMediaVault, I was also realizing it would be better to just have the full FreeBSD OS instead. I made the switch and never went back to FreeNAS or Linux in general. I use Linux extensively at work and college, so having BSD at home to learn with was a great experience.

I use my home server for almost exactly your use case. I'm slowly getting rid of some of my dependencies on cloud services. Murmur, Samba, Emby, Plex, Minecraft, Drupal/Wordpress/Nginx/Apache all have worked flawlessly for me on FreeBSD. I've had some issues setting up Steam, but I was able to run the Space Engineers server on my box for a bit. I've also experienced that Emby/Mono was somewhat slow and used a constant CPU (low, but still always ticking away). Plex runs better for me, but I would rather move to Emby at some point.

I love the idea of jails, but I use them somewhat conservatively. I have a "web" jail, running Nginx, uWSGI, PHP-FPM, etc., but all of those could fairly easily be set up on separate jails. I have a "db" jail for MySQL, Postgres, and Memcached, but again you could separate those too. I have a general "apps" jail for things like Subsonic, Minecraft, Murmur, and things I don't really care about. There's a separate "torrent" jail for Deluge and a separate jail for Seafile.

As far as securing your jails, they're pretty much already there. I suggest turning on pf and setting up a strong firewall. Only redirect specific ports to specific jails (80 on the outside redirects to your web jail).

Glad you chose FreeBSD and welcome to the community! The forums here are a great resource and any issue that I've ever ran into, I've been able to find a solution here. Also check out the handbook, it's a pretty easy read and goes through all details of the OS.
 
Hi mheppner That's good to hear.

I was actually wondering if I was being to 'jail prolific'. :)

Where you suggest to turn on the firewall is that on the base install or per jail?

Thanks
 
Back
Top