Hosting a server for websites, ftp and random use at home? [closed]

I'm wondering what's the best option for me if I want to move all my hosted websites (from a hosting company) to a server at my own home? Basically, the needs I have are:

  • be able to host websites using PHP/ASP.NET (haven't really decided yet - both would be preferred!)
  • enable FTP so I can create accounts for my family members to access the server for file handling
  • SSH
  • SSL - for secure connections (this is something you have to buy/apply for per domain, not sure if there are any server side settings that have to be made)
  • be able to stream video
  • remote desktop
  • host home-brew applications that can run as services
  • use either MySQl/SQLite/SQL for relational database storage

What should I think of before I buy a server? What hardware will I need, what will limit my server? I basically want to learn networking better as I'm a software and web developer but haven't had the resources to acquire any serious toys until now. At the time of writing, most of my websites have 60 visits/day so I don't suspect them to be very demanding.

Is there something I haven't thought of that I should have?

What OS would you suggest I run? FreeBSD vs Windows Server vs ?


Solution 1:

Hey Zolomon, congrats on taking up this initiative! Get ready for a long, but exciting and rewarding path.

Here are my tips (short and sweet): 1. If you are doing anything where you need reliability, I'd keep yourself on a host to be safe so if you have hardware failures, etc. the host is liable for that and you don't have to worry about running to your local hardware store to replace the hard drive. 2. If you want to use the server at home, usually residential ISPs don't really give you the umph you need if it's serious, but if you are just running something small scale you should be fine. 3. If you want to save money, try hosting in the cloud. For a cheap rate (RackSpace imho), you can get a good server to mess with, have the backing of enterprise grade hardware, plus it's relatively cheaper compared to buying the hardware outright. 4. In addition to point 1, you can start at home, experiment, etc. and later on have it backed by the cloud if your server ever goes down at home for better redundancy. 5. I hate to be a fanboy, but I recommend trying this at RackSpace. You get all the fun of working with either Linux or Windows without the liability of maintaining your own hardware.

I'm in your shoes, or was. I have a linux box at home I use for gaming as well as development. I dual boot it. I do have a dyndns pointed to it and I occasionally use that to test a website I'm working on locally before pushing it to the host. I used to do shared hosting until I started hitting their server caps.

So, I switched to RackSpace (Amazon is good too, but their pricing is a little weird imho), because I can add servers, resize, delete, etc. and I only pay for what I use. I host various websites, icecast and shoutcast streams, and storage space all on a 512MB instance and pay roughly 20-25 USD per month.

So, I pay roughly 300 per year and I don't have to worry about hardware issues or data loss as even if the host unit my server is on goes down, RackSpace gives you the ability to have 3 images: A daily backup, a weekly backup, and a third at any time you wish.

Solution 2:

I dont know where you are located, but here (EUROPE) the number ONE concern would be the uplink connectivity. i.e. for a 10Mbit/10Mbit up/down 1:1 leased line we pay something like 3000 EUR p.m.

I dont know what your availability/bandwidth requirements are. Maybe you can do just fine with a ADSL.

Solution 3:

Doing something like this is great experience, especially if things are not critical. There is nothing like controlling everything. You will be surprised at how little hardware you need. You do not need super powerful servers for low volume websites. The main thing will be security. Make sure you understand how to lock down your servers. You will get more of an education in security doing this than networking. Good luck!

Solution 4:

well when you want to run ASP.NET you are "stuck" with windows really. Not that such a thing is bad or anything... it'll do all the things you need just fine.

However,

I've experienced from my own VPS and my work that Windows servers "need" to be a bit beefier then *nix servers by default.

however, since you wish to run your own apps as services I take it those app's will probably be .NET based (since you are inquiring about ASP.NET hosting as well) as such, you ARE "stuck" with windows hosting.

Again, that being said... a Windows 2008 Server Web edition should suit you just fine and do all you want, and then some.

Question for you: What level of uptime do you want / require and how heavy will the load be ?

because... if you are expecting relatively low load, and have a machine capable of doing so (and don't need High Availability and failover clustering) you can look into Hyper-V R2 / ESXi as virtualization tools and then run VM's to do all your needs. you can then run the VM's in a virtual environment with for instance a Smoothwall firewall setup, Windows server as hosting OS and if need be perhaps FreeNAS (although I don't know how freeNas behaves in a VM environment) to do all your needs "professionally" but on a cost effective and fairly cheap solution.

Bonus to running freeNas (if able):

Make iSCSI volumes and you'll have shared storage for both your Web Severs so they can access a centralized storage medium for hosting, which will make your footprint for the server itsself fairly small (about the size of the OS and that'd be all).