Servers are a misunderstood breed of the computer world. Most people think of a server as a large powerful computer sitting in the basement of a corporate office. The truth is that a server is a much less specialized computing device than most people realize. It’s simply a computer that provides one or more services to other computers on the network. And truthfully, even in many corporate environments today the servers have been virtualized, or deployed as [blade servers](http://en.wikipedia.org/wiki/Blade_server) which take up very little physical space and help to cut down on power and cooling costs — but that’s a topic for another day.
This section is all about the things you want to make sure you’ve thought about before you get started with your server project. While the process of setting up and deploying your own server is not particularly difficult, there are a few things that are made easier by giving some thought to them in advance.
### What does the server need to do?
If you’re wanting to set up a server in your home you probably have some idea of what you’d like that server to do for you. Some common use cases include
* File sharing
* Printer sharing
* Streaming media
Some less common cases include
* Email hosting
* Website hosting
* Source control
Some strange edge cases include
* Continuous integration services
* Windows domain controller
* Media transcoding
In my case, the server is going to be fairly busy providing file and streaming media hosting for the whole house as well as some development tasks like source-control. I happened to have a rather large and powerful machine at my disposal for this project so it seemed silly not to use it. The machine is a 3-year old Dell desktop with lots of horsepower and 8GB of memory — overkill for the most part.
### How will it be controlled and administered
Depending how much space you have and what resources you have at your disposal you have some options for how the server gets controlled and administered. Most of the time you can plug in a keyboard, mouse and monitor and have the same basic setup that you’d have with any desktop machine. But if you don’t have the space the server can also be controlled remotely. The simplest way to do that remote control is using [SSH](http://www.openssh.com/).
That said, doing the initial setup with a keyboard and monitor makes life a lot easier. There are ways to do unattended network installs, but that’s beyond the scope of what I’ll be getting into with this article. Even if you just borrow the keyboard and monitor from another machine, it’ll get you past the installation to the point where you can do the rest of your tasks remotely.
### Server (and network) device names
The last thing to consider before you get going with the server setup is the server’s name. While you can always get at your machine by using its IP address, it is much nicer to be able to refer to the machine by a name. You may not always want to do this, but the more machines you have on your network, the more devices you want to access remotely, the more beneficial this type of setup becomes. To facilitate this, we’ll talk later about configuring a [DNS](http://www.youtube.com/watch?v=2ZUxoi7YNgs&feature=youtu.be) server to handle name resolution. This will allow all the computers on your network to use the friendly names for the server, and any other devices on the network.
Personally, I like to have a theme for the machines on my network. I chose some time ago to give some love to [dwarf planets](http://en.wikipedia.org/wiki/Dwarf_planets). Everyone knows the full-size planets, and many of their moons, but the dwarf planets always seem to get ignored — plus as more of them continue to be discovered there are more options for future network devices.
The table below contains some suggestions for possible domain/host combinations for your network.
|droid||Star Wars planets or characters|
|geo||cities, countries or geographic features|