This is a high level overview of what I did to build my server at home.
Hardware for the Server
For my server I recycled an older desktop, which works well since most unix operating systems uses less resources than Microsoft Windows.
Hardware Specifications for My Server:
| Model: |
IBM NetVista 8307-51U |
| Processor: | Intel Pentium 4 1.8 GHz 512K L2 cache |
| Memory: | 512 MB |
| Hard Disk: | 40GB HD 7200 rpm |
| CD-ROM: | 48X CD-ROM |
| Ethernet: | 10/100 |
| Video: | Integrated Intel 845G |
Building the Server
I decided to build a LAMP (Linux, Apache, MySQL, PHP) platform for my server. For the Linux operating system, I chose Ubuntu because it was very easy to install, provided a lot of documentation online, as well as it had great community support.
Setting up the Network/Router
For the server I manually gave it a static local IP address 192.168.1.100. In my router I enabled port forwarding for ports 80 (for HTTP) and ports 22 (for SSH) to forward to 192.168.1.100.
Registering a Domain Name
To register for a domain name I use GoDaddy because they are currently the cheapest provider that I can find, and domain managing was through their web based interface which makes things really easy.
Setting up Dynamic DNS
My ISP provider provides me with a dynamic IP address, therefore I had to search for a DNS service that provided dynamic DNS support. I registered at ZoneEdit because it provides the service free for up to 5 domains. After successfully registering, ZoneEdit provided me with two name servers which I had to update my domain name to use through GoDaddy.
Setting up Dynamic DNS client
I use ddclient to update my dynamic DNS entries for ZoneEdit. The client is ran as a service which get executed every 5 minutes. When it awakes, it connects to my router and extracts the WAN IP address. If the address has changed then it’ll update my entry in ZoneEdit.
After I finish configuring everything I’m able to connect to my server using the domain name I registered at GoDaddy vincentkong.com. I can now then setup the rest of the services that I want to be available on my server. e.g. Apache, FTP, SSH, SMTP, etc.