How to build a Low-Cost Linux Home Server?

Status
Not open for further replies.

IronManForever

IronMan; Ready to Roll...
Dear Everyone.

I stumbled upon this article when I was browsing the net. I actually searched for something similar and trust me; this is awsome.
Now, as I may not have fully understood wether I it is permissible to post an article-written-by-a-user-in-another-forum. I fully give him/her the credit for his/her article.

As this is a tutorial, I request you to pardon me for putting in all the text.
And please bare with me for any errors in quoting the article.

User: superczar; Forum: Techenclave

Introduction

Do I need a home server you ask?
Do any of the situations below sound familiar?
You have 2 or more computers at home with files fragmented between them and multiple copies of multiple files (music/movies/docs) spread all over the place?
You are a compulsive downloader and have accounts to multiple private trackers. Your primary beast machine runs 24X7 guzzling power and dissipating heat only to use like 0.1% of its processing capabilities while downloading
You have often felt the need to gain access to some of the files at your home while visiting friends/colleagues. Like, " Oh, I wish I could show you the pics I took in the last office party...If only I had remembered to carry them in my pen-drive"
You are at office and someone is raving about a new album and you wish you could hear it the moment you hit home
you are stuck in a traffic jam and realize you forgot to start that all important DivX to mp4 conversion for a bunch of videos
If the answers to any of the above is yes, hehe, you need a home server

So what and how is this home server going to run? What else but Linux on some very basic hardware. And best of all, there is no need for even a mouse/Keyboard/monitor

Step 1: Arrange the hardware

The first step would be to rummage through your old parts and try to get hold of :
a pair of mobo/cpu..anything over a 300mhz Celeron will do. Having said that, it does not hurt to have a 600mhz + system
compatible RAM - 256 MB or more
A HDD - The server per-se will work off even a old 8 GB drive, however, you do want storage space too..right?
a basic PSU
You will also need access to a CD drive/mouse/keyboard/monitor for the one time setup
Assemble the setup and hookup your box to your router through an ethernet cable

Step 2: Get the software and kickstart

Head to Ubuntu ( Download Ubuntu | Ubuntu) and get hold of Kubuntu
This guide talks of Kubuntu though feel free to grab ubuntu (with Gnome) or XUbuntu (with XFCE, meant for very low end setups)
In the end, it really does not matter, because once the setup is done, you will be disabling the GUI anyway.
The only difference between Ububtu/Kubuntu/Xubuntu is in their desktop environment which you will be disabling once you are through with the setup.

Tip: Download using the torrent option if you don't wand a 700MB download to fail mid-way

Once the download is done, burn the ISO on a CD and boot from the CD.


Your system will boot into a live Kubuntu KDE deskto from where you can choose the install button right from the desktop


Installing KUbuntu is very straightforward, just a couple of options to choose in the nice and intuitive GUI based install.

Tips:
- Choose a guided partition and use the entire disk (instead of resizing a partition) to avoid filesystem complexities later
- Make sure you use a good and secure password for the root account as well as the user account since your system will be fully accessible from the web and a malicious root login into the box can wreak havoc



Now just sit back and relax while KUbuntu gets installed which should take between 20 mins to 1 hour depending on your rig specs

Once installation is completed, you will get a reboot prompt
Make sure you set the 1st boot device as HDD in the BIOS (or at least remove the CD) else your syatem will boot back in the live environment


Step 3: Time to get Rolling - Installing Packages

Ok, it's finally time to install and setup all the required packages (software) that will enable this box of yours to run as a full fledged server.

Here is one basic Linux rule. You cna use a GUI based interface for nearly any application/task (the way you do in windows), but you can always use the CLI (command line interface) to do the same thing. And often, it's faster and more effective to do things in the CLI.

However, let's use the GUI for adding software to start.

It's called Adept package manager in KDE (Kubuntu) and Synaptics package manager in GNOME (Ubuntu) and would be available under Start>System> in Kubuntu and simlarly in Ubuntu

A big crib that people had against linux earlier was the fact that installing any additional software required the user to install the software and then find out and install alll dependencies too.

Package managers like Adept take care of it automatically by installing the chosen software along with all its dependencies.


A) Upgrade packages

Upgrade all available system packages by upgrading all

B) Setting up the NAS file server (File Sharing on the internal network)

Assuming you are using a big HDD for your server, one of the primary requirements for the setup is to act as the primary media/documents hub for other machines on the network.

Unlike windows NTFS that plays foul with other Operating systems, Linux's ext3 is more than happy to allow easy universal read/write access from any other operating system via a package called Samba file server.

To get started,
fire up adept package manager, search for Samba and install the Samba server package.
Once the install is done, it is time to do a one time configuration
Fire up the CLI (Konsole in Kubuntu, terminal (?) in GNOME)
Basic Tip: In Linux, any modifications outside the user home directory can be done only by the super user (root). Think of it is Vista UAC, but far more effective and powerful. Modifications to Samba will obviusly need root access. Here is how:
type sudo su then enter password when prompted (super user do to get temporary super-user privileges)
type cd /etc/samba (etc is the config directory for apps) then nano smb.conf (Nano is the CLI text editor, so this command opens the samba config file for editing)
Tip - You can always use the GUI editor- Kate...to run Kate as admin, go to start - run command - Kate and choose run as different user option set as root (You need to run Kate as admin because /etc/samba is out of your restriced normal user account. As a normal user, you have access only to directories within /home/user)
Use the following config settings..just replace the text in smb.conf with the text in the codebox...feel free toask qstns on any of the options
Code:
[code][global]
panic action = /usr/share/samba/panic-action %d
workgroup = "workgroup"
netbios name = "NASbox"
invalid users = root
security = user
wins support = no
log file = /var/log/samba.log
log level = 3 
max log size = 1000
syslog = 1
encrypt passwords = true
passdb backend = smbpasswd
socket options = TCP_NODELAY
dns proxy = no
passwd program = /usr/bin/passwd %u
passwd chat =*Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
obey pam restrictions = yes
pam password change = no
null passwords = no

#Share Definitions

[superczar]
        comment = Home Directories
        browseable = yes
        writable = yes
        security mask = 0700
        create mask = 0700

Save and restart Samba by /etc/init.d/samba restart on the CLI (/etc/init.d is te initialization (?) daemon that you can use to stop/start/restart any running process. We are doing it here for samba to reload the config settings
Setup a fileserver user name by smbpasswd -a superczar and then add a password when prompted (smpasswd is the samba password set command, -a is operator to add user, use any user name of your choice in place of techenclave...superczar is a good choice though for good luck )
NAS box is set
Test your NAS box by starting your windows machine and typing in \\machine-alias\superczar

enter user id/passwd that you set earlier and bingo...you have a 1 TeraByte NAS box at your disposal
It would be a good idea to map this address as a netowork folder so that it is accessible directly from the windows explorer shell as X:\ (or whatever you choose).You can easily do it by Tools>Map Network drive in windows explorer

C) Setting up SSH (for access from the web or your home network)

Now that you have got a basic hang of linux, things will be easier.
Use Adept to install openssh-server. Even better, use the CLI by doing a sudo su then apt-get install openssh-server (apt-get is advanced package tool)
Done
Test SSH by using putty

(Wiki says: PuTTY is a terminal emulator application which can act as a client for the SSH, Telnet, rlogin, and raw TCP computing protocols. ) and


Also get winSCP (wiki says WinSCP is a SFTP client and FTP client for Windows. Its main function is the secure file transfer between a local and a remote compute)


Remember the idea from the beginning of this tut? You have often felt the need to gain access to some of the files at your home while visiting friends/colleagues. Like, " Oh, I wish I could show you the pics I took in the last office party...If only I had remembered to carry them in my pen-drive"

SSH over winSCP is what will handle this.

Just WinSCP to your server from your friends' place and pick whatever file(s) you need


D) Setting up LAMP for Torrentflux


Possibly the most interesting and also the most complex part of this exercise.

Torrentflux will run 24X7 as your torrent client and will be controlled via a browser based interface to add/edit/run torrent as well as http transfers

I use a modded version of torrentflux called Torrentflux-b4rt
Thats what this guide will talk about.

But before setting up Torrentflux, there are several dependencies you need to take care of.

Running a full fledged seedbox requires setting up a webserver and a database on your server for which we will use Apache and MySQL respectively (aka LAMP server - Linux-Apache-MySQL-PHP)
  • Fire Adept - Install phpmyadmin, apache2 and mysql-server-5.0 along with their dependencies
  • Test apache is running by pointing your browser to localhost and ensure you see something like this
    Don't worry if you don't see the rest of the folders, you should be able to see apache2-default for now.


    E) Setting up Torrentflux-b4RT

    Head to BerliOS Developer: Project Filelist
    Grab the latest tar
    Untar by double clicking using the ARK (extractor) GUI if you like, or you can always tar -jxvf filename
    follow the instructions in the INSTALL file.. I used the manual install method quoted below, else you can also use the automatic method given in the

    INSTALL file-----------------------------------------------------------------
    Manual Installation
    -----------------------------------------------------------------

    1. Untar the package into a directory then copy the contents of
    the "html" folder into your web site directory.

    tar -jxvf torrentflux-b4rt_1.0.tar.bz2

    2. Create a database and import the sql-script.
    You may specify the type of the database you want to use in
    the file "config.db.php", but the examples here use MySQL.

    mysqladmin create torrentflux

    "mysql_torrentflux-b4rt-1.0.sql" contains the commands to
    build the table structure and the default data. Import the
    script into your torrentflux database.

    mysql torrentflux < mysql_torrentflux-b4rt-1.0.sql
    Or load the script with PHPMyAdmin (web interface)

    3. rename the file "config.db.php.dist" in the dir "inc/config/"
    to "config.db.php" and set the database-settings to use your
    torrentflux-database.
    You may specify type of database you want to use, but
    the examples here use MySQL.

    4. ensure the files + dirs in the docroot are readable by your
    webserver-user. if it is not the case one possible solution is
    to "chown" the files to your webserver-user. this may be done
    with a line like that :
    chown -R username /path/to/torrentflux-docroot
    change dir + username to fit your system so a possible line
    would be :
    chown -R www-data /var/www

    5. Remove or rename the file /path/to/torrentflux-docroot/setup.php.
    This is a security precaution to ensure a malicious user does not
    attempt to overwrite your torrentflux-b4rt installation. Your
    installation will not run with setup.php in the document root folder.

    6. IMPORTANT: The first time you access the application, you
    will be prompted for a user/password -- this is when you will
    set the SUPER ADMIN user and password by what you enter. For
    example, you pull the site up for the first time, you will
    be prompted to login and if you put in user: 'goombah' and
    password: 'iama' then your super admin user account will
    be set to goombah/iama.

    7. On your first login you should check all the admin settings
    pages and configure your installation.

    Whopppeeee!!!!!!!!!

    Nearly done!

    Now there is no point me trying to explain how to configure and use Torrentflux-b4rt. The site forums have a fairly detailed faq.
    Once the setup is done, head to *localhost/torrentflux to see something like this

    If you run into issues, feel free to ask me.


    F) Setting up CGI-Proxy

    Easy stuff now...
    Head to SourceForge.net: PHProxy
    Download, copy contents into a new folder called xyz (or whatever) under /var/www/
    Done
    Now *localhost/xyz should show you something like this


    This tiny thing will ensure you can enjoy access to all sites channelled via your home server from behind content filtered places (like your office)

    G) Gain access from the outside world

    G-i) Opening Ports

    Now that we are more or less done, and most of the required services are up & running on your server, we need to ensure that all of this can be accesses from outside your house too...right?

    TO do that, we need to open the ports that each of these services uses viz:

    port 80 for http (Apache webserver)
    port 23 for SSH
    port 443 for https (optional- we'll come to this later)
    port 10000 (for webmin- we'll come to this later)
    port 5900 (for x11VNC - later)
    I really can't describe the port forwarding process for all connection types, but there are enough guide available on the net.

    In my case (Airtel ADSL on a beetel 220bx modem connected to a Linksys WRT 54G router), here is what I did:
    Open *192.168.1.1/main.html (for access to modem settings)
    Added the ports above to be forwarded to 192.168.1.2 (WAN IP of my Linksys router)
    Opened *192.168.2.1 (for access to my router) and added the ports above to be forwarded to 192.168.2.120 (IP of my NASSeedbox )
    TIP: Configure a static IP address for your Linux box to ensure your forwarding settings don't get messed up if your linux box gets a different IP from the router DHCP in case of reboot

    G-ii) Configure a URL for yourself

    Since most of us do not have the luxury of a static IP address from our ISP, we need to use a service like dyn-dns or no-ip to map our dynamic IP to a static URL.

    These services place a small client on your machine that transmits your Internet IP address to their server at pre-determined intervals

    The service provider then maps the IP to the URL of your choice

    I use no-ip as you can install the client directly from adept
    Head to no-ip.com and register on their site
    choose a domain name like xyz.bounceme.net (or whatever)
    Install no-IP client via adept (or do a sudo apt-get install no-ip)
    configure no-IP by running sudo no-ip -C)
    Add your login ID, password and update interval (I have set it as 15) to the configuration for no-ip
    Wait a few minutes for the DNS to propagate, then ask a friend sitting ooutside your network to access your webserver by pointing to *xyz.bounceme.net (or whatever)
    VOILA!!!!!
    Nearly Done.......

    H) Installing web-admin tools (Optional)

    You can setup Webmin which is a supremely powerful web adminstration utility.

    Download from here: SourceForge.net: Downloading ...
    Straightforward installation. Setup a userID and password when prompted
    Use a complex ID/PW since webmin is all powerful with root access and will also be available from the web...not the kind of setup you'll want to leave insecure.
    Once done, point your local browser to *localhost:10000 and login with the UID/PW you set earlier
    Webmin runs on port 10000 which is why the :10000 at the end of the URL
    If you intend to use webmin from the outside world
    Be careful when fooling around with webmin though and make sure you know what you are doing before applying any changes you make via webmin



    If you intend to use webmin from behind say an office proxy that blocks ports other than http ports, you can set your router to port forward port 443 (https port) to port 10000 of the server.
    After this, a *xyz.bounceme.net will lead you to webmin while *xyz.bounceme.net will take you to your apache server (for Torrentflux/CGIproxy etc)


    H) Making the server headless

    Now that the server is all setup and done, time to cut off its head.
    But before we remove the monitor kb/mouse, why not disable the GUI? what point wasting CPU cycles on the GUI if there is no monitor?

    But before we do that, a couple of things:

    Set your user to auto-login through control center>User accounts (so that you don't need to manually login on a resume after power failure..not an easy task to login without a monitor..is it? )
    you may want to install x11VNC so that you can enable and access the GUI from another machine if the need arises. x11VNC installation guides are all over the web, just google (x11VNC is like remote desktop on Windows)
    now from the konsole, do a sudo su
    Then do a /etc/init.d/kdm stop (or gdm stop for ubuntu)
    now your monitor will fall back to the basic commandline

    Take out the monitor, keyboard and you are all set.....whew

    More Tips
    Putty through SSH to gain access to the CLI whenever needed
    If you need access to the gui, connect to the CLI via putty and do a sudo su and then a /etc/init.d/kdm start
    Here is a tip for making the above easier..use Kate (any text editor) to create a file called gui-on and add
    Code:
    #!/bin/bash
    /etc/init.d/kdm start
    to it...Save it to /usr/bin/ .... nest time you want to enable gui, just type gui-on on the command prompt
    You can similarly create gui-off
    Once KDM has started, you can use VNC to view and control your screen
    There are several other uses you can put this box to...all depends on how creative you can get

    meanwhile, here is a picture of my poor box as - is (beautification plans in the works)


  • Source

    Moderators/Administrators are entitled to delete the thread immediately on account of any compromise with Forum Rules.

    Thank You
    IronMan
 
Last edited:
OP
IronManForever

IronManForever

IronMan; Ready to Roll...
^^ Well that would be great indeed!! :) An experienced linux user like yourself can change the comfiguration only for the good. :) But this one feels a bit on the tougher side for begginers; including me. :!:
 
Last edited:

NucleusKore

TheSaint
Have you all seen this?
*www.amahi.org/
Looks very interesting

It's based on Fedora, they say Ubuntu based version is coming soon
 
Last edited:
OP
IronManForever

IronManForever

IronMan; Ready to Roll...
NucleusKore said:
Have you all seen this?
*www.amahi.org/
Looks very interesting

It's based on Fedora, they say Ubuntu based version is coming soon.
Didnt like it as much as the one posted here. :D I mean thats a bit of spoonfeeding which takes away the fun of linux. :)

MetalheadGautham said:
How do you think Intel Atom is going to fare here ? The mobo+cpu combo set looks quite low power and cheap to me.
Overkill!! I mean that would be enough. For a linux home server; you wont need that power IF you already have an old working system.

But If one has to buy something new; Atom will be a good choice; provided the motherboard is worth it. The Atom solutions (mobo+cpu) sold generally have a board with a flavour of 945 Chipset which makes the power consumtion not-so-impressive as was promised. The processor does stay by the word; but the mobo sucks. :( They may introduce a board later which would support a lot more features(x.264 decompression for example; and such things are in the line already :D ) and a lot less power consumption later for desktop-atoms as well.

If they are cheap; Id probably go for Via Combo solutions with passive colling :!: though they are hard to find. They provide enough horsepower for a server and have damn small footprint mobos along with a power consumption that'll be close to shaming the Atom. (Yes, yes; Via Unichrome and linux dont go well together but for a home server; you wont be needing a GUI anyway; and to set it all up; the VESA driver should work. :) )

Regards;
IronMan
 

mehulved

18 Till I Die............
Wow! it's so similar to what I have been thinking. Me and aditya have even started writing some material on it so we can prepare a book.
 
Didnt like it as much as the one posted here. :D I mean thats a bit of spoonfeeding which takes away the fun of linux. :)


Overkill!! I mean that would be enough. For a linux home server; you wont need that power IF you already have an old working system.

But If one has to buy something new; Atom will be a good choice; provided the motherboard is worth it. The Atom solutions (mobo+cpu) sold generally have a board with a flavour of 945 Chipset which makes the power consumtion not-so-impressive as was promised. The processor does stay by the word; but the mobo sucks. :( They may introduce a board later which would support a lot more features(x.264 decompression for example; and such things are in the line already :D ) and a lot less power consumption later for desktop-atoms as well.

If they are cheap; Id probably go for Via Combo solutions with passive colling :!: though they are hard to find. They provide enough horsepower for a server and have damn small footprint mobos along with a power consumption that'll be close to shaming the Atom. (Yes, yes; Via Unichrome and linux dont go well together but for a home server; you wont be needing a GUI anyway; and to set it all up; the VESA driver should work. :) )

Regards;
IronMan
Yeah. 945GC is seriously NOT the chipset for atom. Its quite horrible compared to the Atom.

I feel Sempron LE and Via mobo would work, but I am not sure about power consuption.

But hey, what about gPC ? Its hardware looks perfect to me...
 

abhinandh

Proud to be Linux
for a HTPC geexbox sucks!!!
try Linux MCE.

and I already have all components except a cabinet and hdd.anyways it'd be cool...we can use ssh for cli or vnc client for gui(if at all the HW runc X server:D)
 
OP
IronManForever

IronManForever

IronMan; Ready to Roll...
topgear said:
Thanks man for the tute.
For linux HTPC needs use GeeBox
*geexbox.org/
Yeah; If one has to play mp3's and stuff like that; but its too limited. For older systems that are good-for-nothing; this should be tried. :)

MetalheadGautham said:
Yeah. 945GC is seriously NOT the chipset for atom. Its quite horrible compared to the Atom.

I feel Sempron LE and Via mobo would work, but I am not sure about power consuption.

But hey, what about gPC ? Its hardware looks perfect to me...

I, well. The combo you suggested will be okay considering the cheap prices; but power consumption will be on the higher side than the Atom 945 combo.
If one is ready to trade off the easily-configurable GFX of Intel chipset with Via; Id suggest the guy to go for Some Via Processor+Via Mobo combo. Like Epia Platform. Im not sure where exactly to look for those though.
And gPC? Yes; that one looks pretty nice to me too.
 

superczar

-n00b-
hehe, that's my tut from TE

np Ironmanforever, sharing is always good

BTW I added some more stuff to that sever lately including a clean proxy, a music streamer and a photo album

While building the system, I went full DIY and screwed the mobo , PSU and HDDs on a piece of laminated board and stuck the thing between some books in my bookshelf.. since there are only two wires (power cable and ethernet) going to the system, cable clutter is also not a problem

Also, since the thing runs so cool, I hardwired the CPU fan to the +5V line which makes the system near noiseless
 
OP
IronManForever

IronManForever

IronMan; Ready to Roll...
hehe, that's my tut from TE

np Ironmanforever, sharing is always good

BTW I added some more stuff to that sever lately including a clean proxy, a music streamer and a photo album

While building the system, I went full DIY and screwed the mobo , PSU and HDDs on a piece of laminated board and stuck the thing between some books in my bookshelf.. since there are only two wires (power cable and ethernet) going to the system, cable clutter is also not a problem

Also, since the thing runs so cool, I hardwired the CPU fan to the +5V line which makes the system near noiseless

I fully acknowledge your highness for this outstanding contribution to the linux-tech community. I sincerely apologise and take the responsibility for any inconvenience caused by this humble servant to his excellency. :D :lol: :D
 

m-jeri

Caballero de Real Madrid
well... i am bumping this coz i am going to build one next month....

need a setup like this...
 
Status
Not open for further replies.
Top Bottom