Tim TrottTim TrottThe time is always right to do what is right

Creating a Ubuntu File and Media Server

By , Wednesday 4th March 2015 in Linux

In this article I'm going to show you how I setup my home file and media server using Ubuntu Server 14.04 using Samba and Plex media server.

Firstly, head on over to the Ubuntu website and download the latest version of Ubuntu Server if you haven't done so already. You can burn the ISO to CD or DVD, or you can do what I did and use UNetbootin to make a bootable USB drive.

Installation was a little problematic for me, I had to use a 4GB USB stick formatted to FAT32. Larger drives would not boot properly and any other file system causes mounting problems.

Once booted from the USB stick, I selected the Install option from the menu. This launches the installation process which is pretty strait forward. Once installed, reboot the machine, log in and run a check for updates.

sudo apt-get update
sudo apt-get install

If there were updates installed, you should reboot to ensure you are working on the latest modules.

Next I had to install OpenSSH so I can use Putty to remotely access the server. I forgot to check the option during the install, if you did as well you can install it using this command.

sudo apt-get install openssh-server

 

Install RAID

RAID is a method of using multiple hard drives to act as one. For details of different raid types, performance and data redundancy, please see my tutorial Visual Guide to RAID Levels.

Installing RAID in Ubuntu, issue these commands:

sudo apt-get update
sudo apt-get install mdadm

Now, using fdisk delete any partitions on the disks that will become part of the array. This process will wipe data, so go careful here.

Next, create the RAID array using the available hard drives

mdadm -v --create /dev/md0 --level=raid10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

When that is complete, you can format the new array

mkfs.xfs /dev/md0

And the finally mount for use

mount /dev/md0 /myraid

Check Status of the RAID array

To check the status and health of the array, use this command:

cat /proc/mdstat

This will output something like this

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid10 sdd[2] sde[3] sdb[0] sdc[1]
      3906765824 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

Additional commands of use

To stop an array

sudo mdadm --stop /dev/md0

To remove a disk from an array

sudo mdadm --remove /dev/md0 /dev/sda1

Add a disk to an array

sudo mdadm --add /dev/md0 /dev/sda1

Start an Array, to reassemble (start) an array that was previously created

mdadm --assemble --scan

 

Install Samba

One of the most common ways to network Ubuntu and Windows computers is to configure Samba as a File Server. This section covers setting up a Samba server to share files with Windows clients.

sudo apt-get update
sudo apt-get install nfs-kernel-server

Configure Samba Shares

The main Samba configuration file is located in /etc/samba/smb.conf. Edit this file and add in your shares information. Mine is shown below as an example.

[fileserver]
	guest only = yes
	guest account = root
	create mode = 777
	public = yes
	directory mode = 777
	path = /myraid/files
	writeable = yes
	force user = root
	force group = root

After making changes, use these commands to restart the services and apply changes.

sudo restart smbd
sudo restart nmbd

 

Install Apache/MySql/PHP

Apache is one of the most popular web servers on the net, with MySql and PHP being the most popular database and web development languages in the open source / Linux environments.

Installing Apache

To install Apache web server, run these commands:

sudo apt-get update
sudo apt-get install apache2

That's all you have to do. Hit the server in a web browser and you should see a default page. We'll get back to configuration in a sec, but first lets install MySql and PHP.

Install MySql

MySQL is a powerful database management system used for organizing and retrieving data. To install MySQL, use this command:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

During the installation, MySQL will ask you to set a root password. If you miss the chance to set the password while the program is installing, it is very easy to set the password later from within the MySQL shell.

Once you have installed MySQL, we should activate it with this command:

sudo mysql_install_db

Finish up by running the MySQL set up script:

sudo /usr/bin/mysql_secure_installation

The prompt will ask you for your current root password. Type it in.

Then the prompt will ask you if you want to change the root password. Go ahead and choose N and move on to the next steps. It’s easiest just to say Yes to all the options. At the end, MySQL will reload and implement the new changes.

Install PHP

PHP is the final application in the LAMP stack, it is an open source web scripting language that is widely use to build dynamic webpages. To install PHP, enter in this command.

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

After you answer yes to the prompt twice, PHP will install itself.

Check here for further details on Apache and PHP configuration.

 

Install PLEX

PLEX is a home media server which organizes your video, music, and photo collections and streams them to all of your screens. Installation is a breeze, but requires a few extra steps as it's not in the main universe.

First, visit the PLEX website and note down the link to the Linux .deb download.

In the command line, download the file to your home folder and run the installer. At the time of writing, the latest version is:

wget https://downloads.plex.tv/plex-media-server/0.9.15.3.1674-f46e7e6/plexmediaserver_0.9.15.3.1674-f46e7e6_amd64.deb
sudo dpkg -i plexmediaserver_0.9.15.3.1674-f46e7e6_amd64.deb

Once installed, you can access the web interface from the following URL

http://127.0.0.1:32400/web

Change the IP address to match your server IP address or host name. You can then configure your library collection from the settings menu.

 

Install SVN

Apache Subversion (often abbreviated SVN, after the command name svn) is a software versioning and revision control system.

To install, run the following command:

sudo apt-get install subversion

Create a folder to hold the repository files and set permissions

sudo svnadmin create /myraid/svn/projects
sudo chown -R www-data:www-data projects
sudo chmod -R g+rws projects

To access the SVN through HTTP (for applications like Tortoise) edit the configuration file to add the repository to Apache web server.

sudo pico /etc/apache2/mods-available/dav_svn.conf

Add in


     DAV svn
     SVNPath /myraid/svn/projects
     AuthType Basic
     AuthName "Name of my repository"
     AuthUserFile /etc/subversion/passwd
     Require valid-user
  

Next generate the password file specified in the AuthUserFile

sudo htpasswd -c /etc/subversion/passwd username

Restart Apache to make changes take effect

sudo /etc/init.d/apache2 restart

 

Install Webmin

Finally, install Webmin. It makes configuration from here on a lot easier, with a web interface for configuration of most modules and applications. Again, Webmin isn't in the official universe, so you'll need to add a reference to it.

sudo pico /etc/apt/sources.list

Navigate to the bottom of the file and insert the following lines.

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Save the file and return to the terminal. Next you need to download the hash key and install it.

wget -q http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -M

Now we're ready to install Webmin

sudo apt-get update
sudo apt-get install webmin

You can now log into webmin using the url below. Change the IP address to your server IP or hostname.

https://127.0.0.1:10000

My website and its content are free to use without the clutter of adverts, tracking cookies, marketing messages or anything else like that. If you enjoyed reading this article, or it helped you in some way, all I ask in return is you leave a comment below or share this page with your friends. Thank you.

About the Author

Tim Trott

Tim is a professional software engineer, designer, photographer and astronomer from the United Kingdom. You can follow him on Twitter to get the latest updates.

Leave a Reply

Your email address will not be published.