Recently built a FreeBSD ZFS NAS file server for personal storage.

Hardware:

AMD Athlon(tm) 64 Processor 3000+
Epox nforce4 ultra mainboard with onboard gigabit lan
2GB 1.5GB Ram
1x WD 40GB PATA
4x WD 320GB SATA
2mb trident pci video card that was collecting dust :)

Results:

fileserver# zpool status
pool: tank
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad4 ONLINE 0 0 0
ad6 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0

errors: No known data errors

I've been running it for roughly a month now and so far its been very stable. The speed however is a little questionable.

fileserver# dd if=/dev/random of=/tank/rand bs=1m count=500
500+0 records in
500+0 records out
524288000 bytes transferred in 14.526202 secs (36092573 bytes/sec)

As you can see, its probably not the most scientific way of testing the file system, but I definitely expected atleast 100mb/sec. Im not sure what could be done to fix this though.

How to build your own:
under construction...

Heres how to build your own home file server. We'll be using Freebsd 7.0, samba for windows networking and ZFS for data redundancy.

Install Freebsd
download the iso/burn it
installation options

Getting it on the network and accessing it with SSH
getting ssh to work
putty

Creating the ZFS storage pool
zfs create

Setting up Samba
installing samba
configuration

Extra links:
apache/mysql/php