Simple Home File Server (Based On Ubuntu)

Version 1.0
Author: Xam
Last edited 01/20/2008

This tutorial explains how to turn an old PC with additional hard disks into a simple home file server. The file server is intended for home use. The home file server is accessible by Windows and Linux computers in the home network.

The existing tutorials do not describe how to add additional disks or have a complex authorization or access procedure. Freenas ( does have too many features for home users and more important it does not support the NTFS format. 

This Home File Server can work with hard disks formatted in NTFS. So when you need or want to move the hard disk into a new computer, they are accessible by Windows and most Linux operating systems.

The server is built with Ubuntu Server 7.10 & Samba. Do not use Ubuntu Server 5.04 LTS because this version does not support the latest SATA Controllers (in an Pentium II or III you likely want to use a PCI SATA RAID controller to attach SATA hard disks).

I want to say first that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you!

1 Requirements

To install such a system you will need the following:

The hard disks for data storage in the file server must be formatted in the NTFS format. You can use the Gparted live CD to do this job, download the iso from:

I assume that you already know how to install a hard drive. I also assume that you knew how to make it a master or slave, you’ve checked to make sure that it shows up in bios, and that it was intalled properly. 


2 Preliminary Note

In this tutorial I use the hostname with the IP address and the gateway These settings might differ for you, so you have to replace them where appropriate.


3 The Base System

Insert your Ubuntu install CD into your system and boot from it. Select Install to the hard disk:

The installation starts, and first you have to choose your language:


Then select your location:


Choose a keyboard layout (you will be asked to press a few keys, and the installer will try to detect your keyboard layout based on the keys you pressed):

The installer checks the installation CD, your hardware, and configures the network with DHCP if there is a DHCP server in the network:

Share this page:

36 Comment(s)

Add comment


From: at: 2008-01-30 22:52:37

This is fine if you already have a NTFS-formatted disk to use, but if you are going to go to the trouble of using GParted to format a disk, use the FAT32 format so that all your computers can easily read and write to it (Windows, Linux, and Mac).

From: at: 2008-01-24 23:28:19

Cool howto but for a more powerful home file server with a very intuitive web UI try the BSD based FreeNAS. You only need one drive since the OS can be stored on CD or CF and run in memory without installing onto a hard drive so the entire hard drive can be used for user files.

From: at: 2008-01-25 13:17:20

"Do not use Ubuntu Server 5.04 LTS because this version does not ..."
You mean 6.06 LTS? 

From: Anonymous at: 2008-12-16 01:35:34

But you can't configure settings such as static ip's and have them be persistent in this case.

From: Anonymous at: 2010-03-16 18:30:28

Also, from a cursory glance, it doesn't support NTFS out of the gate.

From: at: 2008-01-25 16:25:19

I would like to see a similar how-to but with a way to encrypt the samba traffic over somelike like ssh. 

From: at: 2008-05-01 10:47:18

I've been trying to set up my file server with varying degrees of success but this has been my most successful so far!

 I recently installed Ubuntu 8.04 LTS (Hardy Heron) Server and was dropped into the command line.

 By following this, for the first time my server was seen by the Windowx XP box AND the Linux laptop! Previously connections like this were sporatic (like Windows could see it, then it can't, or it can see the folder but cannot get into it..)

 My next step, now, is to look at setting permissions and speeding up the access time.

 Great HowTo!



From: Stas at: 2009-03-16 14:23:59

Thank you!

From: Chris at: 2009-12-02 04:33:30

 Anybody else getting stuck when installing the kernel?  It happens to me every time at 83%.

From: Gusanto at: 2009-10-02 22:39:09

It's very good tutorial, though I don't see a topic about printer sharing covered in the tutorial. So my question is by following the tutorial, sharing a printer in the network will become possible?


From: Anonymous at: 2012-09-23 09:46:14

could I use a raid array instead of a single drive?

From: at: 2008-01-25 03:53:52

I already have a file server that I use Debian on for about 2 years. This tutorial added the Beep thing and I think its really useful. Nicely done.

From: Dmobb Jr. at: 2010-11-03 15:37:41

Is there a way to do this without a static ip for people whos isp wont give them a static ip? Possibly port forwarding?

From: Anonymous at: 2011-01-20 15:03:58

Just skip network configuration step.  By doing this you will use the IP assigned by your modem / router which could assign different IPs to your Server, then you would need to check the server's IP each time you wish to SSH to it.  To see the servers ip just run the following command:


 then your IP should be either your wifi card IP if you are connected via wifi or your ethernet card IP if you are connected via cable.

 Remember, to ssh to your server you need to know the server IP.  If it is not static you can only connect via ssh if you are connected in the same network.  To make sure your server has a "static" IP given by your router ("static" because your router gives IP in the form of 192.168.*.* or 10.0.*.*, etc and they are assigned by order of connection so they can change from time to time for one particular device) you need to configure your router. You could do:


Configure your router to begin assigning IP starting a certain IP, ie if your router began assigning IPs starting from you could change that value to and then you could have 10 IPs which can be manually assigned to other computers.  Although, by doing this you need to be sure not to assign the same IP to more than one computer or else one of the computers sharing IP will not have connection.


Another way to do it (although it may be seen as bad practice) is to change the lease time in your router which max value is 2880 minutes (2 days).  This means that if you connect to your router and then you turn off your computer, the IP will still be assigned to your computer for a period of 2 days, so if your server shutdowns and later on you turn it on, it will still have the same IP as last time only if it was shutdown less than two days.

To connect to your router enter in your internet browser  the router IP (ie,, etc depends on the router) and login with router's admin user and password (if you son't know just google "configure <router model>" where <router model> could be Linksis DWxxx or something).

I suggest method a) and method b) to be extra sure your IP won't change.  For more information google manual IP configuration using routers or something like that.

Remember, Saint Google knows everything.

From: at: 2008-01-25 05:58:56

Can you confirm the command to create the BEEP function?  You have instructed to create this file:

vi /et/rc.load

It would not let me create that.  I assumed you meant /etc/ and not /et/  and tried again, but i hear nothing after a reboot.  Otherwise, everything went smoothly.  Thanks!

From: at: 2008-07-25 08:29:06

I had the same problem and did some research. On my system (Hardy), the file is "/etc/rc.local". I just added the beep command above the exit 0 line and it works now.

Thanks for the tutorial, it was great. 

From: at: 2008-01-29 08:30:36

"Because we must run all the steps from this tutorial as root user, we must enable the root account now."

 That's not true and not recommended. New Linux users should run superuser commands as sudo, and if a root shell is really needed, you can use sudo -s

From: Grengae at: 2011-04-20 09:28:29

I would agree; and propose that anyone who needs to read a tutorial should not be logging in with the root account.

From: Pioget at: 2011-06-10 09:56:11

I agree, i also think that people who have to take lessons to learn to drive should not be allowed near a car and further that people who have to go to medical school to learn how to perform sugery have no business carrying out operations. what kind of world do we live in where people need to learn how to do things before they do them, Jerks

From: thorpie at: 2011-09-05 10:20:54

Yes i totally agree how arrogant to think you should use the root account to administer your server not knowing everything there is to know about everything Linux .Imagine... the nerve.

 I'm new to Linux and I've noticed a certain arrogance displayed by quite a few knowledgeable Linux geeks.

 Seems if you have to take a tutorial your a total nub ...more power to the majority of smart Linux users that give of their considerable knowledge without the attitude.

 Now back to the tutorial 

From: at: 2008-03-26 21:26:20

i asked in the forum because i could not get it to work.

Olli replied with this.


guest ok = yes


force group = no group 


force group = nogroup 

and it worked after that

From: at: 2008-07-08 18:16:01

Yes it is very confusing

for simple samba domain controller and file server up in few minutes

From: Anonymous at: 2009-09-27 00:43:25

for the 9.4 version there seems to be a problem with the 

 directory mask

create mask

force user

force group

 after I deleted these files it worked for me.

Thx for the instruction 

From: Anonymous at: 2009-01-03 04:48:01

All the steps worked as advertised except two. I had trouble mounting a second disk and I had trouble with the 'beep' trick.

 I had an existing drive with linux on it already that I was simply going to use as a second drive to retain the half-terra byte worth of data. I found out that i had to use 'sdb1' instead of 'sdb' to mount it.

The beep trick is not in /et/rc.load. It's in /etc/rc.local


Well done sir. I appreciate the tutorial here.

From: Guest by google at: 2010-03-16 10:38:35

some how I am unable to use sudo passvd root command nor the

/etc/network/interfaces command lines.

is there any good reason for this ?

I'm inexperienced with linux and trying to understand it.

From: Anonymous at: 2009-02-03 21:21:46

How do I edit this to have specific users. I don't want it public. I want 3 specific users only to have access to the file server.

From: Beep Fixed at: 2009-02-22 07:59:25

vi /et/rc.load

Simply add this line:

beep -l 900 -r 3 -f 500

this should be

sudo nano /etc/rc.local

beep -l 900 -r 3 -f 500 //add this line before the exit 0

From: snkiz at: 2009-07-04 13:44:25

beep is not installed by default in Jaunty server edition.

[code]sudo apt-get install beep[/code]

From: Nick at: 2009-09-18 15:09:53

Couple of changes with newer versions of Ubuntu Server

 If mounting an ntfs drive use the ntfs-3g type.  Call "apt-get install ntfs-3g".

edit the /etc/rc.local file for the beep

From: Anonymous at: 2010-03-17 06:32:09

the correct spelling is 'passwd' not 'passvd'


From: Guest by google at: 2010-03-16 10:43:31

When I type sudo passvd root

I get the following message sudo: passvd command not found


and when I try to use the /etc/network/interfaces command

it says Acces denied.


How? Why?


sorry I'm inexperienced with linux.

*using ubuntu 7.10 samba file serve*

From: Anonymous at: 2010-04-16 04:49:44



Check for the incorrect command. It should be "passwd" not passvd

From: kim at: 2010-10-09 21:54:19

Hello Friends.
In one way or another it will not work.
This possibility of linking up with major Putty just do not.
change ip. I can not fence, which command do you use it.
Sincerely yours, Kim Jessen.

From: John at: 2010-12-24 06:51:42

I have spent the better part of the last two days attempting to set up this server using an old HP pavillion 6630 desktop machine and have encountered numerous issues getting here. I did, however, finally get to this point and am now completely out of tricks. I am running the set-up and get to the partition manager stage. All it shows are two sets of three question marks in place of the prompts about re-writing the entire disk, and the only two user options are to continue or go back. no matter which one i press it comes out into a solid blue screen that is completely unresponsive. At first i assumed it was either the hard drive or a connection issue, however when i try to boot into windows 98, it works just fine. This seemed like the best tutorial on the subject, and I was wondering if you had any insights?

From: CK at: 2011-02-15 20:52:55

Make sure there is already a user 'family' on the system, the tutorial omits this step, but it is essential on a 'virgin' install.

For instance:

sudo adduser --shell /bin/bash family

From: notSafe AtAll at: 2015-03-18 05:14:17

Unless you are using 12.04 or 14.04 for these instructions... this is not at all safe- since these older versions have known unpatched security problems and are no longer being updated.