Download PDF version of this article PDF

Rationalizing a Home Terabyte Server

Self-indulgent, or a view of the future?

Mache Creeger, Emergent Technology Associates

With 1 TB of RAID 5 storage, most of my friends believe I have really gone off the deep end with my home server. They may be right, but as in most things in life, I have gotten to this point through a rational set of individual upgrades all perfectly reasonable at the time. Rather than being overly indulgent to my inner geek, am I an early adopter of what will be the inevitable standard for home IT infrastructure? Here is my story; you be the judge.

A Simple Router

Eight years ago, my employer at the time graciously funded cable-modem broadband Internet service at my home so I could work from there. The base service supported only one PC. Because my wife and son each had a PC, I needed a way to share Internet access—a router to share Internet service and a home LAN to distribute network traffic.

Using PC parts, I assembled a router out of an old 486 computer with two Ethernet cards. I loaded Red Hat Linux 5.1 and configured ipchains for NAT (Network Address Translation). Everything was linked up to a 10BaseT hub. What resulted was a forerunner of the retail appliance-based router/switches available today from companies such as Linksys and D-Link.

Serious Internal Infrastructure

Feature creep inevitably occurred. Since the server ran a general-purpose operating system continuously, it seemed reasonable to add more infrastructure functions. I configured Samba to make server storage accessible to the PCs on the LAN and increased disk capacity. On a roll, I then added MAC-based static allocation of DHCP addresses for the LAN PCs, along with a caching DNS and an NTP (Network Time Protocol) server.

It became more and more evident that I needed better security, so I incrementally enhanced the script for my ipchains (and later iptables) to provide the functions of a serious firewall. Starting with a base-level script that I found on the Internet, I continually tinkered, squeezing out more and more functionality. The script’s size ballooned to 23 pages.

Making the Server Internet Accessible

Next I focused on making the server accessible from the outside Internet. The WAN IP address was allocated dynamically from the ISP via DHCP, and it changed frequently. When traveling, I needed a way to access LAN resources at home from my laptop over the Internet. I wanted a fully accessible Web server, an FTP upload and download server, and the ability to use Symantec’s pcAnywhere to directly control LAN-attached PCs (mostly to fix the regular disasters that occurred on my wife’s and son’s machines).

By placing a small DDNS (dynamic DNS) client on the server, I had a DNS name guaranteed always to resolve to the current server IP address. I installed the Apache Web server, the vsftpd (very secure FTPD) FTP server, and modified the iptables firewall script to port forward pcAnywhere traffic to its corresponding LAN-based PC.

Offloading to a Router Appliance

At this point, I had a miniature version of what a small to medium-size company would use for its IT infrastructure without the requisite full-time staff. Keeping the server configured and updated properly became more and more of a challenge. Software and hardware upgrades inevitably brought misconfigurations and other random problems. System crashes brought my wife and son into my office to glare at me as I feverishly worked to bring the server and our Internet access back online.

After the requisite number of kicks in the head from my family, my next effort was to offload some of the server’s mission-critical functions onto a retail router/switch appliance. I purchased a Linksys wireless router and replaced its firmware with a third-party version expanding overall functionality. Now I had much of the router and iptables firewall functionality residing on a small, low-power device that was easier to maintain. FTP, Web, and Samba services remained on the server.

X10 Control of Child Distractions

All my good efforts to provide my wife and especially my son a rich computational environment were now being recognized. Given that my son had his own computer and a broadband Internet connection, he was very quickly becoming addicted to video games and random Internet browsing.

In her own sweet way, my wife explained to me that I needed to correct this problem quickly. More technology was needed to correct the problem of too much technology for my son. Using X10 lighting and appliance control modules, I set up password-protected and Web-enabled controls that cut video to the TVs and power to my son’s computer on command and/or on a predefined schedule. Domestic harmony was soon back in balance.

Implementing MythTV

My family then asked to be able to record and play back TV shows using Tivo. I did not want to pay for a Tivo unit and subscription and felt it was duplicated in what I had built in my home server. At that point I had two 200 GB drives of storage formatted in a striped disk array (RAID 0) and many files shared between all the machines on the LAN. I had upgraded the hardware multiple times and currently had an AMD Athlon XP 2200+ running with 757 MB of memory.

I added more disks to the server, bringing the total number of 200 GB drives to six for a total of 1 TB of formatted RAID 5 storage. I added a used Nvidia FX 5500 graphics card and a new Hauppauge WinTV-PVR-500 video capture card. Then I installed MythTV.

Surprisingly, installing MythTV was relatively easy. Precompiled packages were available on public repositories, and Web-based step-by-step instructions were readily available. It took me one weekend from start to finish. With MythTV’s free EPG (electronic programming guide) from Zap2it.com, my wife and son have a user-friendly Web interface in which to record TV and play back video on either a computer or a specific TV channel. With recording done at approximately 2 GB per hour, 1 TB seems to be an adequate amount of storage for home use, with approximately one-half of the available space in use at the time of this writing. The interface has a rich set of recording semantics, so my wife and son can capture as many of their favorite shows as they want. With two tuners, the PVR-500 rarely experiences conflicts in recording selections.

So, Am I Crazy?

Am I being self-indulgent, or is this a view of the world to come? Clearly, during my odyssey I discovered a need for sharing broadband Internet access through a router. This has been validated by the router/switch appliance marketplace. What else have I discovered?

What projects will I attempt next?

So, is there a reason for a home server? I believe there is. Stripping away the mountains I climbed because I could from the mountains I climbed to provide value to my family, I have recognized that home IT services are not a replication of commercial ones. Services such as Internet broadband sharing, X10 power and video control, and MythTV are all viable utilities for my family. So the answer to my previous question is that my server is both self-indulgent and a view of what may occur in the future. But make no mistake, if it weren’t self-indulgent, it would not have been anywhere near as fun.

MACHE CREEGER ([email protected]) is a 30-year technology industry veteran based in Silicon Valley. He is the principal of Emergent Technology Associates, marketing and business development consultants to technology companies worldwide.


Originally published in Queue vol. 4, no. 7
Comment on this article in the ACM Digital Library

More related articles:

Nicole Forsgren, Eirini Kalliamvakou, Abi Noda, Michaela Greiler, Brian Houck, Margaret-Anne Storey - DevEx in Action
DevEx (developer experience) is garnering increased attention at many software organizations as leaders seek to optimize software delivery amid the backdrop of fiscal tightening and transformational technologies such as AI. Intuitively, there is acceptance among technical leaders that good developer experience enables more effective software delivery and developer happiness. Yet, at many organizations, proposed initiatives and investments to improve DevEx struggle to get buy-in as business stakeholders question the value proposition of improvements.

João Varajão, António Trigo, Miguel Almeida - Low-code Development Productivity
This article aims to provide new insights on the subject by presenting the results of laboratory experiments carried out with code-based, low-code, and extreme low-code technologies to study differences in productivity. Low-code technologies have clearly shown higher levels of productivity, providing strong arguments for low-code to dominate the software development mainstream in the short/medium term. The article reports the procedure and protocols, results, limitations, and opportunities for future research.

Ivar Jacobson, Alistair Cockburn - Use Cases are Essential
While the software industry is a fast-paced and exciting world in which new tools, technologies, and techniques are constantly being developed to serve business and society, it is also forgetful. In its haste for fast-forward motion, it is subject to the whims of fashion and can forget or ignore proven solutions to some of the eternal problems that it faces. Use cases, first introduced in 1986 and popularized later, are one of those proven solutions.

Jorge A. Navas, Ashish Gehani - OCCAM-v2: Combining Static and Dynamic Analysis for Effective and Efficient Whole-program Specialization
OCCAM-v2 leverages scalable pointer analysis, value analysis, and dynamic analysis to create an effective and efficient tool for specializing LLVM bitcode. The extent of the code-size reduction achieved depends on the specific deployment configuration. Each application that is to be specialized is accompanied by a manifest that specifies concrete arguments that are known a priori, as well as a count of residual arguments that will be provided at runtime. The best case for partial evaluation occurs when the arguments are completely concretely specified. OCCAM-v2 uses a pointer analysis to devirtualize calls, allowing it to eliminate the entire body of functions that are not reachable by any direct calls.

© ACM, Inc. All Rights Reserved.