CCTV Articles

Low Powered FTP Server with Raspberry Pi Goodness.


There comes a time where you need to have an FTP server and do not want to spend money on a machine that will be there 24/7. Here is the solution. All you will need are the following items and some optional ones to make it awesome ;).

(1) Raspberry Pi B /B+ or 2.

(1) 2amp 12VDC Adapter [USB] for power.

(1) USB to Sata Drive, for storage

Installing the OS Image onto the SD Card

Lets start by installing the image of Raspbian onto an SD card, I will be using a 32GB Class 10 SD card. These are great as they are fast and reliable.

Lets find the letter that the computer assigned the SD card and lets open the SD formatter tool, format the correct drive and move onto opening up the Win32 Imager tool.

select the correct Image and hit “Write” this will take some time so go make a cup of coffee…..


Once we have done this we will install the SD Card onto the raspberry pi ensuring that it is well seated. Lets turn it on by connecting the USB Connection.

Go ahead and expand the system files, select the “PI” Password and your local time. I also changed my local host name as I will be using this raspberry pi for other purposes and I already have another in my home network. After this is done the raspberry pi will boot up asking for a username and password. I elected to leave it in “command line mode” I do not need it to be running a desktop style background for this and it helps with performance. If you are skilled, you can also overclock this baby and just add heat sinks and fans to cool down the raspberry pi.

Installing updates

Lets go ahead and download any updates and install them, we will do this by imputing the following code onto the terminal

#sudo apt-get update

#sudo apt-get upgrade -y

This will take some time, after this is done we will install “VSFTPD

#sudo apt-get install vsftpd -y

After this is done we need to use nano to edit a configuration file we do this by imputing the following command.

#sudo nano /etc/vsftpd.conf

We will need to edit some lines and writout the file and exit.

Here are the lines that need to be changed.


We need to uncomment a few things to enable them. Uncomment by removing [#] 


If you want to enable FTP uploading for the user in their home directory, uncomment the write_enable line by changing




You have the ability to have users locked onto their home directory


After this click on CRTL + O to write out the file and exit by clicking on CTRL X
We next need to enable FTP Root user this may be already set but its good to check you can also add pi to the list or any other users.

We will use again the awesome command nano.
#sudo nano /etc/ftpusers

Uncomment the

After this click on CRTL + O to write out the file and exit by clicking on CTRL X
You also want to change the Root Password to set the root password use the following command where root can be any other user.

#sudo passwd root

This will ask you for a new password and confirm it by imputing once again.

We will then restart the service by entering the following command.

#sudo service vsftpd restart

This will allow you to log into your system via FTP but there is more you will need to add a USB External Drive so as to not use the internal storage on your SD card.

We will do this by shutting down your raspberry pi and plugin your USB External drive onto the raspberry pi USB ports.

We will use the following command as we do not want to just unplug the raspberry pi as a method to shutting it down.

#sudo shutdown -h now

Setting up an External Drive to handle the files

We will need to ssh into the raspberry pi once more and input the following command to create some directories.

#sudo mkdir /media/shares

#sudo mkdir /media/shares/data

Then we input:

#sudo blkid

This will give you the following output, in mine it is


our drive is /dev/sda1 with a UUID=”3CD8-1613″

Once you know this information you will need to input this command

#sudo nano /etc/fstab

Add this line

#UUID="3CD8-1613/media/shares/data auto uid=pi,gid=pi,noatime 0 0

hit CTRL + O to write out the file and exit by CTRL + X

Then we mount the drive by using this command:

#sudo mount -a

after this you should be able to access the folder/files

#cd /media/shares/data

and display the file contents using

#ls -lah

If you external Drive has a format of NTFS we will need to install ntfs-3g

#sudo apt-get install ntfs-3g

then mount your drives

#sudo mount -a

Once you have done this we will move to our Recorder.

Setting up our NVR/DVR to send information to our Low Powered FTP Server

We will need to access the recorder’s IP address – in my case it is

I have the default passwords set for this demonstration.

I navigate to the “Setup” tab then select the “Network” tab and finally click on “FTP”

A new window will appear and we will be imputing the Raspberry Pi FTP servers IP address.

Host IP =

Port = 21 (default) can be changed in the raspberry pi.

User Name = root (lower case)

Password = your password

remote directory is = /media/shares/data

File Length = I set this to 20 Minutes

Image Upload Interval = 2 (Default)

Channel = All ( Or any of your choosing)

and select the periods and recording based on motion, alarms or Regular. Click on Save and you are done.

Once last thing is to set the Raspberry pi to that specific IP address, meaning Static IP Address.

Setting the Raspberry Pi Static IP Address

Setting up the RPI to Static IP is simple.

Log in as usual with SSH using Putty

We will back up some files just in case.

#sudo cp /etc/network/interfaces /etc/network/interfaces.sav

Then we will open the configuration file

#sudo nano /etc/network/interfaces

uncomment the line “iface eth0 inet dhcp”

It should be

#iface eth0 inet dhcp

then we will add
 # The loopback interface
 auto lo
 iface lo inet loopback
 auto eth0
 iface eth0 inet static
 #your static IP
 #your gateway IP
 #your network address "family"

The comments will let you know what items to change in my case I only had to change the IP address to

You are done. Reboot the RPI and you should be set.

Related Posts

Leave a Reply