My old NAS was a Mark I RaspberryPi with a 2TB WD MyBook (3.5, external power supply). It worked great - I had a few other services running on it and it didn't seem to struggle. When I came across ZFS I repurposed an old (but beefy) desktop


After considering a few options in the end I went with an oDroid XU4. For storage I ended up with two 2TB West

Usual process for writing the SD card and connecting for the first time.


# flash the SD card

# connect to box
ssh root@
# password odroid

# set some variables
export HOSTNAME=foobar
export IP_ADDRESS=
export DEFAULT_USER=tris

# change the root password

# usual initial stuff (may have to wait for unattended upgrade to finish)
apt-get update
apt-get upgrade
apt-get dist-upgrade

# upgrade the kernel (say no to the scary looking warning)
apt-get install linux-image-xu3

# add some extra packages
apt-get install vim

# sort out the networking
systemctl disable network-manager

echo "
auto eth0

iface eth0 inet static
  address $IP_ADDRESS
  dns-nameservers $ROUTER_ADDRESS
" > /etc/network/interfaces.d/wired

# set the hostname
echo $HOSTNAME > /etc/hostname
sed s/odroid/$HOSTNAME/g /etc/hosts -i

# sort out a general user
user-add -G sudo -m -s /bin/bash $DEFAULT_USER

# make it use the ondemand govenor in /media/boot/boot.ini.default
# add `governor=ondemand` to the end of the boot options

# reboot and cross fingers for no typos in the network setup

# log back in as standard user
ssh tris@
sudo -i

# disable root login over ssh in /etc/sshd/sshd_config
| PermitRootLogin no
service sshd restart

# setup the drives
apt-get install btrfs-tools autofs cryptsetup

cryptsetup benchmark
cryptsetup luksFormat -s 256 -c aes-xts-plain64 /dev/sda
cryptsetup luksFormat -s 256 -c aes-xts-plain64 /dev/sdb

mkdir /etc/auto.master.d

# /etc/auto.master.d/tank.autofs
| /- /etc/auto.tank --timeout 20

# /etc/auto.tank
| /tank -fstype=btrfs,rw,noatime :/dev/disk/by-uuid/<UUID>

service autofs restart
ls /tank

# setup samba

# setup nginx