A dedicated server machine is what I definitely needed for my home IT infrastructure which has grown with years. Two desktops, a laptop and a home theatre system: they all needed to be connected to each other and to Internet. For long, it was my desktop box playing a role of the server in the home LAN, and it caused a lot of annoyances, of course.
The last year, an opportunity to bring myself to do it right is appeared, thanks to two things: First, I got new Core-i7 box as my developer workstation, so my old good Pentium-4 came out of work. Second, a large roll door closet has been built in the hallway where I reserved a room for the server stuff.
The server room is 70×50×45 cm space in the top section of the closet, accessible with a ladder: good against kids, pets and unscheduled accidents of all sorts. The room contains the server machine, LAN/WiFi router and the power supply, as well as some empty space for accessories, backup disks, instruments and other stuff.
The server machine is Pentium-IV/3.00GHz CPU with 2GB of RAM, built upon ASUS P4S motherboard. The machine is rebuilt from a common 2005-year desktop PC by repackaging it into a smaller case and removing the videocard and DVD-ROM. Two brand new 1.5TB SATA drives were installed to provide enough disk space.
The box runs Ubuntu 10.04 LTS Server with 2.6.32-21 kernel.
Power and ventilation
The hardware in the closet produces a considerable amount of heat, so ventilation system was necessary. Hot air is pulled out of the closet space through a vent grille with a fan fitted into the drop ceiling and connected to the house ventilation grid. Inward fresh air is delivered through the clearances above and below the roller door and through the perforation at the back of the shelf. Initially, it was planned to mount another fan for forced air supply from outside of the closet but the idea had been postponed for the sake of noiselessness. For better air circulation, the internal shelves were made shorter to provide an empty space along the back wall.
The air vent carries a common 12V computer case cooler fan that is powered directly from the motherboard and is controlled by BIOS, therefore. The more warm is registered by the motherboard thermistors, the faster is the speed of the ceiling fan, that provides a good balance between cooling and noise.
The sensors display constant temperature of 35°C for the server motherboard and 50°C for the CPU (with the roll door closed), that’s ok, I think.
There is D-Link DIR-300 router that serves both as an Ethernet cable switch for stationary devices and as a WiFi hotspot for mobile stuff across the house, like the laptops and the phones. A special hole was drilled in the closet wall to put the WiFi antenna outside for better coverage.
Twisted pair Ethernet cables were laid inside the walls during house repairs last summer. The cables are ended with the wall outlets in convenient places (with some spare endpoints).
The server connects to Internet via an EV-DO broadband modem with external antenna on the house roof. The client devices use the server machine as an Internet gateway. To provide the gateway functions, the iptables firewall with NAT, caching DNS proxy (pdnsd) and transparent Squid web-proxy are configured on the server.
File server / NAS
The most part of the server disk space is shared over the network. As there are Linux and Windows clients, the server provides both Samba protocol and NFS to access the shares. Also, there is rsyncd daemon running to provide incremental remote backup service for the client systems.
The server runs MediaTomb UPnP MediaServer software to host our movie and music collections. It primarily serves a home theatre setup in the living room, centered around a UPnP-compliant Blue-ray player.
I am a full-time software developer, working from home most of the time. Almost all my projects are hosted on remote repositories, but there are some internal and experimental things living on local Subversion server. Also I found that running a local Trac does a great help for scheduling and task management.
And, there is Tomcat I need for testing of the web-apps.
Control and monitoring
To access the server from the local network, plain old Telnet works great. To monitor the server status, there is Munin software that displays nice real-time diagrams of server load, temperature, memory and disk usage, network traffic and other useful information via the web-interface.
- It’s a real pain if the headless machine goes unbootable due to misconfiguration or by another reason. I got this recently when attempted connection of an external HDD brought to major maintenance: I had to get the box from the closet, open the case and mount a videocard and a CDROM just to comment a single line in fstab.
- Free disk space is vanishing with menacing speed (mostly because of Full-HD movie rips) and the old motherboard has only two SATA slots. Perhaps, I would need to think about a SATA hub and RAID at the nearest future.
- I’m worrying how my cooling solution would work at summer season.