How to setup a Raspberry Pi FTP Server – Webserver Installation

25. January 2017
1550 Views
4 Comments

For uploading files on a Raspberry Pi you should install a FTP server. Such a server is very useful if you use your Pi as a web server or even if you want to have a network storage, which can also be accessed outside of your network if an DNS server is installed.

However this tutorial is not only for web server but can also be used for easy file transfer between Raspberry Pi and your PC.

 

Components

You will be able to access the whole sd card (US / UK). If you want to use the Pi as a network mass storage you should have enough empty space. Alternatively you can also use an external hdd (US / UK). All B/B+ models (including the Raspberry Pi Model 2B / 3) have a 100 Mbit ethernet port, which allows fast data transfer rates.

 

Installation

First of all you need to install the server package. You can use SSH or opening the terminal.

sudo apt-get install proftpd

While installing it will ask how ProFTP should be started. We choose “standalone” (see image).

standalone

Basically, here it would be already done, but with this configuration each user has access to his own home directory (for example /home/pi). Therefore we create a new virtual user with access to a specified path. For this purpose we first change once the directory.

cd /etc/proftpd/

Here, the virtual user will be created. In the following example I create the usertutorials with home directory /var/www/. You can specify whatever directory you want (also the absolute root directory or a directory on a mounted external hdd).

sudo ftpasswd --passwd  --name tutorials --gid 33 --uid 33 --home /var/www/ --shell /bin/false

Now just enter the password and confirm. If the user’s password should be changed at a later date, simply switch back to this directory ( /etc/proftpd/ ) and run the same command again.

To further unlock the virtual users, we have to edit the configuration file:

sudo nano /etc/proftpd/proftpd.conf

Following code has to be inserted at the end of that file:

DefaultRoot ~
AuthOrder mod_auth_file.c  mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
RequireValidShell off

By pressing CTRL + O and CTRL + X and we save and exit the editor.

 

Test

Last but not least, we restart the server and try it out.

sudo /etc/init.d/proftpd restart

No you can test it: Open your Browser and type in ftp://raspberrypi/ (If you have changed the host name of your Pi you have to take that. If it still doesn’t work insert the local IP address of your Raspberry Pi). For uploading files I strongly recommend the tool FileZilla.

ftp-rpi

 

Maybe you still can’t log in because rights are missing. The following commands will help to fix this problem.

chmod g+s /var/www
chmod 775 /var/www

(If another directory has been assigned to the user, it must be adapted accordingly)

4 Responses

  1. Maybe I am missing something! Rasbpian (like most Linux distributions) has a ftp server. I can connect (using FileZilla) ad access the storage, and have been for 3 years.

    Why install a new package? What does it do that I can’t do now?

    Reply
    • Unfortunately not all operating systems have a ftp server preinstalled (like Raspbian Jessie or NOOBS). If you already have it installed – great! So this tutorial is for those who haven’t installed a ftp server.

      Reply
  2. Nice tutorial but on any Linux install with ssh installed (Sudo apt-get install ssh on Debian & installed by default on Raspbian) you have sftp access using YOUR_RaspberryPi_IP:22 and you pi username and password and as a bonus it’s encrypted. FileZilla & Bitvise connect to that without issue.

    Reply
  3. Very good tutorial, it’s finally a simple, well explained example which works.

    Reply

Leave a Comment

Your email address will not be published.

Subscribe to Raspberry Pi Tutorials and don't miss any new Tutorial!