When you have many devices in your home office, there is often a need to share data between devices. Sometimes, you need to stream content on your phone and may be print documents without actually having to connect to physical printer. Setting up a home server is ideal for these cases especially if you have an old computer that is lying alone in the closet.

Note: This post is mainly intended for me as a reference whenever I need to re-setup my home server. However, the steps are mostly similar for anyone who wants to setup one.

Goals

  • Simple server that should stream content to various devices
  • File Sharing across devices
  • Some other niceties like a torrent manager.

Design Goals

  • Make the entire setup generic so that it can be extended to do perform any type of task in the future.

First things first, we need a working computer and a monitor (only for initial configuration). I have an old Core 2 Duo 4GB RAM Desktop Computer that I am going to use to setup my home server. In case you don’t have a spare computer, you should definitely try buying Raspberry PI 3.

Next, the OS choice. I chose go with Debian Jessie due to the stability and it has only the minimal components that are needed for our server.

Note: Installing, setting up partitions should be straight forward. This article on linustechtips has some good instructions on how to do that.

After we have the OS setup and running, it’s time to configure our server. First of all, we should assign a static IP for the network interface so that it’s easier to refer to from other devices in the future.

$ sudo nano /etc/network/interfaces

My interface is eth0 (standard ethernet), so I’m assigning a static IP 192.158.1.150

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
        address 192.168.1.150
        netmask 255.255.255.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

Restart network

$ sudo service networking restart

Make sure that the staic IP is assigned by looking up the address on

$ ifconfig

Now all we need to do is setup SSH for our server.

$ sudo apt-get install openSSH-server

$ sudo service ssh restart

And that’s it, we no longer need the server to be connected to the monitor as we can directly SSH into it.

$ ssh 192.168.1.150

Basic File Server

Sometimes all we need is basic file server to access our files. This can simply be started using

$ python -m SimpleHTTPServer

Serving HTTP on 0.0.0.0 port 8000 ...

Now, just use any device connected to the same network and open 192.168.1.150[YOUR_STATIC_IP]:8000 and access all the available files.

Media Streaming using Plex

Plex is awesome. It organizes all your shows and movies, gets metadata and has apps for all OSes and form factors.

The setup is pretty straight forward.

$ wget https://downloads.plex.tv/plex-media-server/1.5.6.3790-4613ce077/plexmediaserver_1.5.6.3790-4613ce077_amd64.deb

$ sudo dpkg -i plexmediaserver_1.5.6.3790-4613ce077_amd64.deb

Now go to [YOUR_STATIC_IP]:32400 to add and organize all your Media!

However, it requires a one time payment for Mobile apps. If you believe in true open source, you should checkout this project. It is still in beta though.

Setting up Torrent Client

Setting up a torrent client can be pretty useful as we can download all our torrents to the server.

I prefer deluge web-ui as it easy to setup and works as expected. There is a nice installation procedure on the official website for Debian.

After setting up deluge, we should have the web-ui running on ::8112. Note the default password is deluge!

Much more!

There are lots of other fun stuff we can do with the home server, like setting up auto backups, wireless printing, scheduled downloads and the list is endless. I will be adding more as I continue exploring. Comments and Suggestions are welcome!