The page was originally written in ~2001, when having a home network was unusual.
Now with cheap broadband, and even cheaper components made in China, having a home
network is nothing to write about.
But that won’t stop me.
The Stephens home has a small network consisting of the following items:
Cable Modem (200M down, 8M up) connected to Virgin Media cable service. 3 APs. Wired 100 Mb/s Ethernet in the house, garage and shed. Server in the shed (Dell 2950 with 4 CPUs and 16 GB memory. 6x1TB disks running RAID5 + spare) running Debian Wheezy and hosting a number of virtual machines: DNS/DHCP, Web server, file server, plex media server and asterisk PBX.
Applications accessed through http:
Wordpress website (this one!)
Piwigo (photo album)
Some password-protected directories via WebDAV
Various password-protected SVN repositories
Dynamic IP Address TranslationThe network sits on a single dynamic IP address granted by ntlworld to the firewall. This is a DHCP client to the outside world, does NAT and provides DHCP services to the rest of the network. A free dynamic IP name translation service is used to resolve this address (Zoneedit). A small client runs on the linux server and periodically checks with Zoneedit that the external IP address has not changed. This might create a delay between a change of IP address and name resolution updates. In practice, the dynamic IP address assigned by Virgin Media seems very stable.
Setting up the Linux Server
Adrian reports that setting up the linux box was a lot of fun – but not something for those who don’t want to get their hands into the guts of the packages.
2005: The server started off running Red Hat 7.3 on a 300MHz Compaq Deskpro SFF (now obsoleted). This was upgraded to Red Hat 9.
Then I moved the server to a new machine: a Dell Optiplex 170L bought for £70 from ebay, and upgraded to Fedora Core 3.
At the same time, I restructured the file system so that /backup, /home, /var/mail, /var/www/html are separate filesystems, and changed all filesystems to reiserfs. These are created in block devices provided by LVM on a single 200GB hard disk, with room for spare copies of the root partition. It is currently running Fedora Core 4. The only difficulty upgrading was with the LDAP database getting hosed.
2011: The Optiplex has been replaced for a couple of years by a dual-core 3GHz, 1GB ram nameless system. Just upgraded from Fedore Core 10 to Fedora Core 15, which was a lot of work. There’s no alternative but to rebuild from scratch and then copy config files from the old system one by one and bring them up. I have two 1TB disks that are mirrored and contain the website and backup of our internal documents/images/music. The NAS server in the garage provide an iSCSI target that is mounted and backs up the backup. The system and boot disks are raid1 mirrored on to partitions on one of the 1TB disks. A cron job periodically connects the mirror and then disconnects it, thereby giving me a bootable standby if the SSD goes down, but allowing me to spin down the hard disks. The backup and html directories are automatically dismounted after 30s inactivity and the disks are spun down after 30minutes of inactivity.
2013: The Optiplex was retired and a second hand IBM 2U server was installed in the garage, where it constantly makes a noise like a jet engine taking off. This has a 5TB software raid (the hardware RAID that comes with the server is cludgy and unreliable, and slow). A bunch of virtual machines run the various servers and provide a place to experiment. The system boots off lvm over raid5, itself no mean trick.
2014: The IBM server was retired and replaced with a Dell poweredge 2950. This is just as loud. The hardware raid is much better. CPU performance is much better.
2018: I replaced the Dell poweredge 2950 with a home-built system. This is the first time I’ve had a brand-new server. It has RAIDZ2 on 6 x 8 TB disks. Probably overkill for my needs, but at least it should last me forever (yes, I know, 640 KB is enough for anybody :0). More details here: http://www.chezstephens.org.uk/server-upgrade
The mail system
The mail system is configured to collect email from a number of IMAP accounts. IMAPS/SMTPS is used outside the home network to access the local mail service. An LDAP server provides centralized storage of email addresses for outlook and outlook express clients (although it can’t easily do email groups, which is a great annoyance). One of the annoyances of having an ntlworld dynamic IP address is that some SMTP servers refuse to accept mail from such clients (e.g. AOL). Postfix can be configured to route SMTP email for specific domains via some other SMTP server, so all my outgoing mail is sent via my ISP (ntlworld).
All other external access into the home network is now via ssh tunnels. This is much more secure than opening various ports.
As someone who’s been working with computer media all my working life (paper tape and cards at university, 8″ floppies, DK05, RL01, RM03 disk packs, 5.25″ floppies, Travan tape, Iomega disks, and more hard disks than you can shake a stick at), backup is important to me.
Probably the most important thing on this network is our digital photos. I have multiple copies spread across multiple machines. I download the cameras into the “playroom” computer. This gets backed up periodically to the linux server. I also upload the photos to my gallery system (this is the public view of the photos available at www.chezstephens.org.uk/piwigo) at the end of each month. The linux server hosting this backs itself up using rsync over ssh to my W2K machine that has cygwin + rsync & ssh installed. The W2K machine backs itself up using syncback to the linux box. The playroom computer also periodically grabs a copy of the gallery from the linux server from an SMB mount using syncback.
The hard part of all of this was to try and avoid backing up the backups of the machine doing the backing up – otherwise the backup size would grow forever and exceed the capacity of the hard disks. So each machine has a /backup/<machine-name> directory for the two other machines. And this is excluded from backups.
2014: Backup is now a fedora core 19 desktop that wakes at 3:00am every day and uses rdisk to mirror the /backup directory on the files server. The NAS server also snapshots its volumes daily, so that makes everything, in theory, go-backable.