Picture of Ultimate Pi Home Server

Welcome reader.

First please note: This instructable can be done within a day, but a weekend is certainly recommended.

In this instructable I hope to teach you key skills involved with setting up and configuring a Linux Server. The knowledge used here can be applied to almost all PC architectures so if you don't own a Pi
(Why not dude?) or it's tied up in another project, any old or unused PC will work. In more detail the main skills taught will be:

  • Burning an ISO image to an SD for the Pi
  • Installing an OS
  • Setting up A web server
  • Setting up An SQL instance
  • Deploying a custom cloud network
  • Managing users for the cloud network
  • Setting up a SAMBA File sharing network, which will integrate into an established windows based home or office network
  • Controlling SAMBA users
  • Establishing a static IP whilst using a non-static IP internet connection
  • Using Webmin Console to install packages
  • Using Command line terminal to install packages
  • Carrying out basic commands such as rebooting (terminal)
  • Editing system files with Nano terminal based editor
  • Permanently mounting hard drives within the Linux file system table via webmin
  • Understanding the principal of the Port forwarding function on a home router
  • Setting up a web interfaced bit torrent manager
  • Being an overall IT nerd.

If you're interested then carry on reading. If not, give it a try; you may discover a new hobby.

As the above list demonstrates there's a lot to learn. I definitely feel this is a weekend project. I've followed this process several times and it takes a couple of days at least. Its good to take long breaks because your eyes may begin to become strained and you may suddenly become unenthusiastic about the whole thing.  This instructable offers functions of many different store purchasable products, such as:

The server we'll setup will cost far less than each of these services in the long run and only a fraction of the cost of the combined services. Setting up your own server is not only custom and cheap, its very rewarding. I will be a happy guy if somebody benefits from what this instructable contains or become inspired by what I have done. It took ages to plan and write this instructable. If you learn anything at all or feel this instructable is well written or well documented, please vote for me in the Weekend Projects Contest or the I could make that contest.

I would also like to point out that this is not a comprehensive tutorial on designing a server case. There are details of my case on step 3, however this guide is intended to be a comprehensive software tutorial. So if you get stuck or feel a step isn't too clear, just let me know and i'll be happy to help.

A few tips: Because this takes more than one day, don't just fall asleep and forget what you were planing on doing next. Instead have a pile f post-it notes. This way before you ZzZzzzz... you can jot down anything that needs doing during the next session. I had loads. All over the walls, floors, chairs, desks - you name it! Okay slight exaggeration, but on a serious note they do help. I did use a full stack.  Another tip would be to follow the steps on order. Don't just think "Hmm I like the sound of my own cloud network lets do that first!" The steps are in such an order that each before is most likely required for the current, if that makes sense. Just stick to the order, it'll make life easier. A final tip: don't be limited to what is taught here. Do Think of this as a base for inspiration. Adding more services such as those listed on the turnkey website is easily done using the search APT function within the Webmin Package manager.

Okay, Confused? Then let's learn...


 Caution! This instructable contains 30 steps. Proceed at your own risk. 

Remove these adsRemove these ads by Signing Up
1-40 of 235Next »

I think the turnkey image only works with 4GB SD cards as I could not get it to work at all on any other sizes. Instead, I used the card I had and installed a vanilla rasbian image, updated it, and then followed the instructions on this page to make the modifications for the turnkey install (

zachtownes7 days ago

Awesome Instructable, Made this project and Love it. I was looking for a nice solution for a home server and this turned out awesome. Only Downfall...I am currently using the RPi cable tied to the hard drive. I'm trying to find a nice case like what you have set up and I'm not seeing anything of the sort. Was yours a custom job or was it something you found?

jed.chaos10 days ago

Everything was cool up until this point. Now I can't go any further. After performing this step I just get session closed. Typing: nano /etc/hosts doesn't do anything. Please help.

Fixed, I hooked up the monitor and keyboard to the Pi again. I escaped from the blue appliances menu and entered command line mode, where I was able to login using "root" and "mypassword". From here I could enter the "nano /etc/hosts" menu and change from "core" to "mynewname". Once doing this I was able to login again via ShellInABox.

bonyango1 month ago

This is an awesome tutorial!

Can anyone one point me to a tutorial that makes cloud/NAS server + media server in one project using pi? Thanks./

SammyS11 month ago

AWSOME write up ........just one thing missing a media server, is there a way to add a media server in this, like subsonic ... if yes please share how .....

I would also like to know this

Payback031 month ago

My first instructable and I started with a great one. DrWilson provided excellent directions and a solid start on using my RPi. I look forward to adding diffrent options and playing around with OwnCloud!

diy_bloke1 month ago

After running without problems for a long time, suddenly Shellinabox doesnt recognize/accept my password anymore. Still can log in through Webmin so the password is ok.
When i make new user with a known password or even without a password, the problem still persistst. Anybody having any idea what is wrong?

Hi all, I'm having a couple of problems with the install late in the game.....

1. I can't get Transmission to work; I've got it installed on the Pi, I've got everything configured, but when I try and upload a file from my laptop to the Pi using the Transmission web GUI, nothing uploads and I eventually get an error message saying that the file couldn't be uploaded. I've got it listening on port 51413 and it's listed as Open, and I've got port forwarding checked, both in the Settings --> Network tab.

2. I've got the NoIP software installed on the Pi, but when I try to go to, nothing happens and I get an error message saying the webpage isn't available.

I'm so close/within spitting distance of having everything up and running and I don't want to quit now. If anyone's got any ideas on what I'm doing wrong/how to fix it, it'd be greatly appreciated!

More information:

1. I made sure to chmod 777 the target download folder, still didn't do anything as far as Transmission success.

2. When I tried uploading a file from my laptop to my Pi using qBittorrent, I got the following message:

09/09/2014 09:26:35 - Unable to decode torrent file: '/tmp/qBT-XM7094.torrent'

09/09/2014 09:26:35 - This file is either corrupted or this isn't a torrent.

Am I just trying to transfer plain old files when they should be a different type? I've tried moving .jpgs, .odts, etc.

Whelp, I made a 'test' file, Test.torrent, and tried uploading that, but still no go........

Some progress: I dl'd the torrent for OpenOffice to my laptop and then used both qBittorrent and Transmission to try uploading that to my Pi; a download/transfer progress bar showed up on both, but it just hung and nothing else happened/didn't actually download to my Pi. So I think I've got at least my initial problem with file type solved.

HasanA1 month ago

it took me 3 days, literally 3 hours :D to make my own server using your guide. awesome and hard work here man.

i have samba, utorrent and owncloud on my pi.

great love and respect from me, thanks alot man

snowbeen1 month ago

how do i install webmin?

rjanssen21 year ago
To fix the session closed after the prompt login, you need to change /etc/hosts.
Enter the following:
nano /etc/hosts
Then change the core in the line to your hostname.

Hey man, I'm having the same problem but how do I get to

nano /etc/hosts

as I can't log into shell in a box?


Hey Elliot, did you fix it? I'm having the same problem you are (hopefully were).

do it on the pi

DrWilson (author)  rjanssen21 year ago
Thanks for that! I'll edit that in (with credit of course!)
Glad to be of help!

Hey. I'm kinda having a problem with

/etc/init.d/transmission-daemon stop

All I get is

-bash: /etc/init.d/transmission-daemon: No such file or directory

and when I try to access

nano /etc/transmission-daemon/settings.json

It's just blank

Can someone please enlighten me :)

Ran into the same problem, Elliot. Uninstall the package by running

apt-get remove transmission

Then, run

sudo apt-get install transmission-cli transmission-common transmission-daemon

That should do the trick. If not, let me know!

Yeah it worked. Thank you so much Garrett :)

Not a problem, Elliot!

Thanks man I'll give that a try and let you know ?
glenn8911 months ago
after pressing "Finish setup" I only get a new red window in top of screen saying: "MySQL username and/or password not valid

You need to enter either an existing account or the administrator."

anyone know how to get solved this one?
I double-checked the Mysql user several times. checked the config.php file for owncloud but still have this problem..

Thanks up front,

while doing this I notice that for some reason when setting up MySQL the username had a capital c in ownCloud so I tried typing it this way and worked first time

Kk462 months ago

Dear Dr,

please explaine where webmin should run on, is it the computer I use to acces the Pi or on the Pi itself? If on the Pi how do I start it up?


Great project! Installed in a Cooler Master mini-itx case alongside my desktop mobo etc. The server rpi is mounted in the optical drive bay, the HDD is an internal 2.5" connected via SATA ~ USB adaptor cable (mounted in usual HDD bay). Power cable just runs out the back -haven't rigged a switch yet (don't really see a need to).

Replying to my own post I know, but I had a thought. Have you tried this with a model B+ using ZFS and multiple HDDs -redundancy is awesome!

l0nghy11 months ago
I get error after "finish setup" showing:
Can't write into config directory 'config'
You can usually fix this by giving the webserver use write access to the config directory in owncloud

I even change the permison to 777 but still not work. What is the problem. please help

Thanks a lot
Arizno l0nghy6 months ago

are you sure your SD card partition is not full (or near full). You should check it by running the following comand in your shell in a box:

df -l

If your available space on "rootfs" or "/dev/root" is minimal you will get an error. If that is the case you will need to pug a monitor back into pi and go to Advance Menu. You should Quit out of the configuration console menu. You will then see a separate menu asking with a long list. Select the one asking you to fill the rest of your partition. This will expand the partition. Reboot.

You might need to delete owncloud and start fresh. I would also delete the user files that owncloud created just in case.

If you have additional issues please see my reply to rjansen2

Hi Arzino

I tried quitting out of the configuration console back to the menu but I just end up going back to the terminal and I can't see the separate menu asking with a long list. Can you please tell me what I'm doing wrong?

Thanks man


sudo raspi-config

to get to the menu

Thanks man, that worked perfectly

colinkhalid6 months ago

You can solve the network config error by editing the /etc/network/interfaces file just after you copy the image to your SD card while it is still in the card reader attached to your PC. As root or administrator open the /etc/network/interfaces file and add the following the the top of the file # UNCONFIGURED INTERFACES

After this put the SD in the RPi and all should be well

information found here

This was THE ANSWER! Thank you.

So now, after I have the possibility to edit the interfaces file via the network settings menu, what should I enter to be officially headless? DHCP or static? If static, should I also set this ip on my router by the Pi's MAC address?

"Just input logical answers" LOL this incstructable tells us how to unwrap and then skip this part TROLOLOL:D

mstruble shmaic3 months ago

Did you ever find a solution to this problem?

I can't seem to find a way to open up the /etc/network/interfaces file while the SD card is plugged into my PC. Nor what the proper information to put under the DHCP / Static fields when that comes up.

Any help would be appreciated!

1-40 of 235Next »