0

Before i start i want to say that i DID search for this topic. None of the results seem to answer my questions about multiple purpose home server.

Hello All!

I want to build a home server for the following purposes:

  • store files/media as a backup from PCs who have access to it
  • Stream said media to specific computer connected to it or to a TV connected to the server
  • Game server for minecreaft/terraria/etc (this will not be running 100% of the time and i will want to turn it off and on in order to free up memory for other tasks when needed
  • Access files and stream from it from the internet so i can access it anywhere if need be.

I want it to have multiple account so many users in the home can have their own files on it with private permissions and each can stream media that only they can access (as well as a public stream for all users - but not guests)

I also want to be able to access it from the internet if possible. This way if i really need to i can connect to it from anywhere and pull files from it. I know this actually may be really difficult since my external IP may not be static (As many companies such as comcast, the ISP i'm unfortunately on) actually may change your external IP occasionally (but not very often). I have bought a domain name for the server from namecheap who offers a Dynamic DNS service to its clients. This way it can update its external facing IP correct.

A little background about myself: I am a Physics and Electrical Engineering Major with a minor in computer science. I do know a fair share of C,C++, and python. But i do not know PHP or other server languages. I have familiarity with windows/osx/linux, but my linux/terminal skills are not top notch.

I have tried to set up a home webserver in the past but school got in the way so i became too busy to pursue it. Also i found out that hosting websites from home is usually just a terrible idea since its not as reliable, has many security issues, etc. Now i have more time and want to make a home media and file server which also can host games so i can backup and store files easily.

How do i begin doing all this? How do i make sure the server is compatible with windows/OSX/Linux.

I was hoping to make it a linux server since i know its probably the best (although i am not a linux master).

If i can connect it to the internet (so i can access these files from anywhere) how do i secure it? How do i make it so only specific users can log in?

I have a computer in mind, here are it's specs. It's got no additional upgrades (so it has the RAM it came with - 8GB). Everything that it comes with is what it has.

I have the hardware I listed. Its a very old (read: 6 year) desktop I got a while back. I want it to be partly project but with an easy learning curve. I dont want to write my own streaming service application but I don't want it to all be "set it and forget it" as I do want to learn the basics of networking devices and connecting servers to the internet for file transfer/remote control/ etc

I don't know if virtualizing everything is the best for two reasons: 1) virtualization requires much more RAM 2) it seems kind of complex for this job I want to be able to have full control of everything remotely too, and if a virtual machine goes down how could i start it remotely? (maybe this isnt actually an issue)

I've looked into some things like Plex and OwnCloud but i want to make sure they integrate (i.e. i can upload media to the server with OwnCloud which Plex can then stream). I am totally open to alternatives, i only mention plex and OwnCloud because they came up in my research. Also i want multiple users to be able to access the server at the same time (streaming to many devices simultaneously -with same or different media, downloading/uploading files while someone else streams, etc)

1
  • What you are after sounds like a NAS (Network Attached Storage). NAS is often compatible with other OS perfectly fine (SMB/Samba is working across the board, and some NAS offers other protocol support like AFP and NFS). Check out FreeNAS and their features here and hopefully it meets what you wanted.
    – Darius
    Commented May 19, 2015 at 14:08

1 Answer 1

0

From personal experience setting up a home server is quite complicated than you think. I appreciate your intent to plan out the configuration process before taking any actions.

  • First, you need to consider your hardware. Is the desktop computer reliable for everyday use? Can maintenance be done easily on the drives and RAM? Could you find parts for the server two years from now? You can choose from refitting any old desktop sitting in the attic (cheap at the cost of reliability), buying an NAS (network-attached storage at the cost of performance), or constructing a tower yourself (pricey but most flexible).
  • Second, research a particular operating system or distribution that you'd like to use. Four out of five times you will probably end up using a Linux distro. There are so many server-oriented distros out there that I cannot even begin to name them! (But if you insist, the most popular are Ubuntu Server and CentOS.)
  • Choose your drive configuration. This is very important in the long run, as a drive could fail from a year, to five years, to fifteen years, and you do not want to waste your bandwidth on offsite backups. Hardware RAID is a must, which will allow you to create cost-efficient redundant setups more than just the usual RAID 0 and RAID 1. You should still have a backup source, but RAID will allow you to replace a failed drive out of four or five drives without any disaster. Do not rely on 24/7 external USB drives. These fail very quickly. Unplug external drives when not needed.
  • If you don't need it, don't virtualize. Virtualization solutions make a lot of sense in an enterprise/datacenter context where an entire domain controller's info can be stored completely inside a single image, and multiple domain controllers can be run on the same hardware simultaneously. Virtualization is used a lot in Windows Server domains and does not come cheap unless you're going the VirtualBox way. If you are able to, run all of your programs directly on the same OS; this will allow you to manage your services (and memory) more easily.
  • Your router can handle most of the firewall things for you; however, you will need to harden each service that you run publicly by restricting their read/write permissions. The main rule is to make sure to keep as few ports open as possible to prevent any possible security holes. You can use SSH tunnels in case you need temporary access to a service that you did not open a port for.
  • Use afraid.org for dynamic DNS if you need to. Scripts are available for working with dynamic IPs.
  • Start slowly and work your way up. Install important packages like Samba and MiniDLNA for media access first, then begin establishing your game servers and administrative services (such as SSH). You should configure the web server last, as it is usually the most annoying (security-wise) to set up fully. Don't make any software or scripts from scratch unless it doesn't exist.

Continue researching, and you will find yourself with a nice home server in a few months' time.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .