After the "What is this Linux thing?" it seemed about time to write an other guide. More and more people are having the need for a fileserver on their network, and while FreeNAS works great and easy to set up, the geeky-ness level is quite low. There for, let's do it all on our own. In this guide we'll install a Debian System and add SSH, Samba and proFTPd to the system, so that our server will dish out files to everyone on the LAN, and is remotely accessible for administration. Hardware A fileserver doesn't require great hardware. Actually, about any system will do. CPU : Anything 500MHz or higher is plenty for home usage. RAM: I'd recommend using 128MB or more. HD: The sky is the limit. The Debian install will take ~500MB + SWAP, but I recommend 1.5 - 2 GB for the OS. That will also leave some room for expansions. For this guide, I installed Debian in a virtual machine, by VMware. This gave me the advantage of taking screenshots. The virtual machine is networked, using DHCP. I'll also include a paragraph how to set up a static IP after the install has finished. Installing Debian Installing Debian to a system starts with downloading the correct ISO. Since I'm on a DSL line, I got the net install cd. The advantage to this is, that you don't have to download anything you don't need. Burn the ISO to a blank CD and boot from it, just like you would do with a Windows install. When the system has booted, you'll be greeted with a nice splash screen. (For all the thumbnails, click on it to open the image full size) At this prompt, just typ Code: linux26 ...and hit <enter>. This will boot a 2.6 kernel and start the install. You'll see a lot of text flashing by, this is the installer booting. Once it has booted, you'll be greeted by a dialog. The entire process of installing Debian is based upon these dialogs. They are straightforward select and enter dialogs. For this guide, I allways tried to set the selection box right, so it will be easy to follow all the steps. First we start with language selection, followed by country selection & keyboard layout. All are straightforward select and enter operations. Then, we name our server. For the ease of the guide I chose "fileserver". We also need to input the name of the network. I chose "bit-tech.net". On a LAN the network name doesn't matter that much, as long as you keep it the same on all your machines. Then we move on to the partitioning of the drive. We will manually set up the partition layout. A typical layout is: hda (Primary IDE) /boot ( ~50MB ) => Boot partition SWAP ( 2 * RAM ) => ~Windows pagefile / ( > 1,5 GB ) => The main system /tmp ( 1 GB ) => Temporary directory hdb (Secondary IDE) /home ( entire hdb ) => ~My Documents Because these are "new" drives (in the VM), none contain a partition table. So first select the first drive and hit enter. The installer will ask us if we want to create a new partition table. Of course we do. We now have a device, which has free space for us to partition. So select the "FREE SPACE" and hit enter. The installer now will ask us some questions. We are creating a new partition, with a size of "50M", which is a primary partition at the beginning of the drive. Then, we define the partition (Filesystem, mountpoint,...). First select mountpoint, hit enter and change it to "/boot". Because /boot needs to be bootable, also select that. All the rest is correct, so we are done setting up the partition. We now have a Primary partition at the beginning of the drive, ~50MB big, with an ext3 filesystem and it will be mounted at /boot. We repeat the above for the other partitions. Create following partitions: swap: 2*RAM ; Primary ; Beginning of the drive ; Filesystem "swap area" ; non-bootable / (root): >1.5GB ; Primary ; Beginning of the drive ; Filesystem "ext3" ; Mountpoint / ; non-bootable /tmp: 1 GB ; Primary ; Beginning of the drive ; Filesystem "ext3" ; Mountpoint /tmp ; non-bootable
Fileserver guide using Debian (part 2) Now we repeat it for the 2nd drive. Create a new partition table, and create a new partition; /home: Entire drive ; Primary ; Filesystem "ext3" ; Mountpoint /home ; non-bootable After this we are finished with the partitioning, and we write the new partiton tables to the disks. The installer will now start to install the base system. At the end it will ask us if we want to install the bootloader into the Master Boot Record of the drive. Because Debian will be our only OS, we answer "YES" to it. Short time after the base install is complete. Remove the CD and press continue. Your system will reboot into it's own environment. We aren't done tough, now it's time for some post install configuration. After the welcome, we start setting up the clock info. This is important for further updates. For servers, it's best to set the hardware clock to GMT, and select the correct timezone. For all the English people this isn't a problem because GMT = local time. Now we continue with setting up the users. First, we set, and verify, a root password. Since Root = Administrator, try setting up a strong password. After that, we add a new user by giving it's full name, logon (username), and password. Then we will set up APT, the Debian package manager. A package manager is a program that installs and deletes "software packages" to the system, and resolves their dependencies. Later on we'll be using APT to upgrade/update our system, and install the needed packages. Since we used the netinstall cd, there are no more packages to install from cd. Users who chose the full install might use this tough. We add in another source at this time, a fast FTP server. I chose the Britain server of Debian, but you can choose an other one here. For now, this is the only server we'll add. Now, APT will ask us what we want to do with our system. All tough File server is a choice, we'll go for a manual package selection. This is because a lot of unneeded junk will be installed otherwise. When Aptitude opens we just press "q" and quit aptitude. We will install packages later on.
Fileserver guide using Debian (part 3) Every Debian system must have a Mail Transfer Agent configured. But the standard MTA has the option to only allow local delivery. So that is what we'll do. Let it deliver system mails to the standard user (created earlier). Congratulations, you've just installed your Debian System. Just log in as "root", using the earlier set root password. You greeted with the powerfull CLI. The CLI is the real strenght of Linux. Now we'll set the static IP. Issue: Code: nano -w /etc/network/interfaces Look for the line containing "iface eth0 inet dhcp", and change it to: Code: iface eth0 inet static address <IP Adress> netmask 255.255.255.0 gateway <Gateway> dns-nameservers <IP DNS> Type "<ctrl> + x" to quit, and confirm with "y" and "<enter>". NOTE:I set mine to 192.168.123.129, because of the virtual machine Now we restart the networking Code: /etc/init.d/networking restart And check if it works by pinging something: Code: ping -c 3 google.com If you get 0% package loss, then you are good to go... Now, we will upgrade our system from "stable" to "unstable". But don't fear the word unstable. The unstable repositories are stable, just not guaranteed 100%. Something we won't have problems with on our system. But before we update & upgrade, we remove some unneeded stuff. Code: dpkg -l This command gives us a list of all installed packages. But because that list is way too long to fit on the screen, we need to 'pipe' the output of the list to less, a command line file viewer. Piping is an other strength of Linux, and is done though the " | " (vertical line) character. So to make the output viewable, issue: Code: dpkg -l | less Just browse through the packages, to get a feeling of what it takes to make a Debian system tick. You exit less by pressing "q". I selected "iptables", "ipchaines" and "ppp" as packages to be removed. If you want to use iptables, ipchaines or ppp don't do the following step! You remove these packages by issuing: Code: apt-get remove --purge iptables ipchaines ppp NOTE: the '--purge' also clears all related config files. For more info issue "man apt-get" You'll get an overview of what is going to happen. Apt will ask us to confirm our comand, just hit enter. Now we will upgrade from "stable" to "unstable". Issue: Code: nano -w /etc/apt/sources.list ... and change from to ... And exit with save. We now have added the unstable repositories to our system. Now we first need to update the repository list. We do this by issuing: Code: apt-get update After the repositories are updated, we upgrade our system by issuing: Code: apt-get dist-upgrade NOTE: In the future, we issue a "apt-get upgrade" to update our system, dist-upgrade is only issued when we switch repositories Because we update all core packages too, we will be once again greeted by some dialogs with questions. Mostly the choices are straightforward. At one time during the upgrade you'll get this (disturbing) message: Don't let this scare you! We have to remove the "stable" kernel to install the "unstable" one. glibc is one of the core packages of the C compiler. Because it is such a core system library, you'll be prompted for it's update. Go ahead with it. Also, in linux you'll won't need to reboot the system if a service is upgraded. You do need to restart it tough. So we answer "y" to that question. And more straightforward configuration... Now we install the new kernel. Code: apt-get install linux-image-2.6-686 NOTE: This will install the latest kernel from the unstable branch, optimised for 686 processors. If you use old machines, there are also 586,486 and 386 versions available. Don't you love it how apt resolves all dependencies? You'll notice that there are some other packages (like udev) that are installed with the new kernel. This is normal. After this is finished, reboot into the new kernel. Code: reboot Congratulations, you just installed & upgraded Debian on your server.
Fileserver guide using Debian (part 4) SSH After the system is rebooted, log in as root once again. We will now install a SSH server, so that we can remotely administrate our server. Code: apt-get install ssh And let Apt do it's magic... After the install is complete, we go configure the ssh server... Code: nano -w /etc/ssh/sshd_config The default config is quite secure by default, and hardly needs changes. Just look for the line containing X11Forwarding, and change "yes" to "no". We won't be installing an X server, so this is not needed at all. I'd recommend you browse through the rest of the configuration file tough, just to get a feel of it. And then, just start the SSH server by issuing: Code: /etc/init.d/ssh restart You can check wetter the server works by connecting to it from an other PC using Putty. I tested it by sshing from an other linux system. Samba Next step is installing and configuring samba, to share our files with other systems. Same procedure as allways... Code: apt-get install samba And again some configuration. First set the "WORKGROUP", and then answer the other logical questions. This gives us a base setup of our samba server. Code: nano -w /etc/samba/smb.conf This is the main samba configuration file. It is documented, and you should read it. For the impatient ones, I made a base config. Make sure that you replace <name> and <server name> with the correct values! Now that our config is set up, we just need to add users to the samba system (it uses an independant user db). That's why we need to issue an other command to set up a samba user. Issue: Code: smbpasswd glider NOTE: Passwords you input aren't shown Finally, we restart the samba server by: Code: /etc/init.d/samba restart And there you go, samba is set up. proFTPd Last thing to set up is the ftp server. Code: apt-get install proftpd We know the drill by now... We will run the ftp server as a standalone. Not because of performance, but because of userrights. As standalone, the ftp connection will run as a user. Again, configuration is done through /etc/... (which is the main configuration dir on Linux) Code: nano -w /etc/proftpd/proftpd.conf For the impatient ones, I made a base config. While it isn't really needed, restarting the ftp server will make sure the new config is used Code: /etc/init.d/proftpd restart And the ftp server is set up. Aftermath Now we have a server which dishes out files via samba or ftp to our main user. Of course we want more then that. To have an other user connect to the server, we need to make a useraccount for the user, and add him/her to the samba password backend. Don't worry, I made a short script for it (not te nicest of scripts, but it works). First, get the script: Code: wget http://glider.sin.khk.be/linux_guide/fileserver/useradd.sh Then, make it executable: Code: chmod 700 useradd.sh And then, to run it: Code: sh useradd.sh If you don't need that much security, and just want everyone to acces the shares, uncomment (remove the # at the beginning) the "public = yes" line in /etc/samba/smb.conf. That makes the samba shares public, and accessable via anonymous login. In the /etc/proftpd/proftpd.conf there is also a section about anonymous logon. It's pretty straightforward. That concludes this guide. It's just an drop out of the Linux ocean, but I hope it helped you to up a fileserver. Any questions/suggestions, just shoot!
You surely can, but sometimes motherboards require a GPU to be installed to boot. But any, and I do mean any, GPU will do.
debian server setup I downloaded amd64 netinst and started to setup my server, but the first instruction of typing linux26 did not work could we look at this?
Just hit enter and it should install using the default options. This guide is quite old now etch installs a 2.6 kernel by default the guide was using Sarge (I think?)
Actually, seeing as how this has bee bumped to the top, Glider; is it possible to have some shares totally public while other shares only being accessable by user/password combos? For instance my media centre records to a share which I would like everyone to be able to view without the need for a user, but I want my folder with my documents in it to be user/pass protected. Is this actually possible with samba?
You can run a debian fileserver on pretty much anything all the way down to a 50 quid Linksys NSLU "Network Storage Link" using a specially cut-down distros. Debian on a NSLU
Yesterday i did install debian sarge (old) on a p1 100mhz with 32mb of ram and no cdrom drive using floppy (3 (boot, root and net)) + pcmcia network card, then i upgraded to etch (current stable version). It work fine, not it is compilling X (kdrive/xVesa module) to get a decent Xserver on it. If it dont work, i will try xfree86 4 or 4.2 to see witch one still build after all these years.