Technology blog::Life hacks::Linux::Hardware::Gaming

Creating a Ubuntu File and Plex Media Server

Building a free, open source file and media server based on Linux

By , 4th March 2015 in Projects

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 straight 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 carefully 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.

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 the configuration in a sec, but first let's 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 used to build dynamic web pages. To install PHP, enter in this command.

  1. 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 organises 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:

  1. wget
  2. sudo dpkg -i plexmediaserver_0.

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

Change the IP address to match your server IP address or hostname. 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

<Location /svn/projects>
     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 sarge contrib
deb sarge contrib

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

wget -q -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.
Further Reading

There are no comments for this post. Be the first!

Leave a Reply

Your email address will not be published.