How To Install an FTP Server On Ubuntu with VSFTPD?

FTP (File Transfer Protocol) is a standard network protocol used to transfer files from one host to another over a TCP-based network, such as Internet. An FTP server allows users to upload and download files over network, and it is an essential tool for file sharing and remote file access. In this article, we will guide you through process of installing an FTP server on Ubuntu with vsftpd, one of most popular FTP servers available.

Step 1: Install VSFTPD

The first step in installing an FTP server on Ubuntu is to install vsftpd package. You can do this by running following command in your terminal −

sudo apt-get update
sudo apt-get install vsftpd

This will download and install vsftpd package along with any necessary dependencies.

Step 2: Configure VSFTPD

After installing vsftpd, you need to configure it to suit your needs. configuration file for vsftpd is located at /etc/vsftpd.conf. To edit file, open it in your favorite text editor with root privileges, like this −

sudo nano /etc/vsftpd.conf

This will open configuration file in Nano text editor. You can make any necessary changes to file to configure FTP server as you wish. For example, you may want to set FTP server to run in standalone mode, enable anonymous FTP access, or limit number of concurrent connections.

Step 3: Start FTP Service

Once you have configured vsftpd, you need to start FTP service. You can do this by running following command in your terminal −

sudo systemctl start vsftpd

This will start vsftpd service and enable it to accept incoming connections. You can verify that service is running by checking its status with following command −

sudo systemctl status vsftpd

If everything is working correctly, you should see a message indicating that service is active and running.

Step 4: Configure Firewall Rules

By default, Ubuntu comes with a firewall called UFW (Uncomplicated Firewall) that can be used to manage network traffic. If you have UFW enabled on your system, you need to allow FTP traffic through firewall. You can do this by running following command −

sudo ufw allow ftp

This will allow incoming FTP traffic on default FTP port, which is port 21.

Step 5: Test FTP Server

Once you have completed installation and configuration of your FTP server, you can test it by connecting to it from another machine. You can use any FTP client of your choice, such as FileZilla or WinSCP, to connect to FTP server. To connect to server, you will need to know its IP address and username and password that you set up during configuration process.

Step 6: Configure SSL/TLS Encryption

FTP by default is not a secure protocol, and all data transfers are sent in plain text. To improve security of your FTP server, you can configure SSL/TLS encryption to encrypt all data transfers between server and clients. This can be done by obtaining an SSL/TLS certificate and configuring vsftpd.conf file to use it.

Step 7: Set Up User Accounts And Permissions

By default, vsftpd allows anonymous FTP access, which means anyone can connect to your FTP server without a username or password. However, this can pose a security risk, and it is recommended to disable anonymous access and set up user accounts with proper permissions instead. You can create user accounts and set their permissions by using command-line tool "adduser" and "chmod" respectively.

Step 8: Monitor FTP Server Logs

It is a good practice to monitor your FTP server logs regularly to detect any suspicious activity or unauthorized access attempts. You can view vsftpd logs at "/var/log/vsftpd.log" by using "tail" command, which shows last few lines of file in real-time.

Step 9: Use SFTP Instead of FTP

FTP is an old protocol and has some security vulnerabilities. If possible, consider using SFTP (SSH File Transfer Protocol) instead, which is a more secure and modern protocol that uses encryption and secure shell (SSH) to transfer files. SFTP uses same SSH port (22) as SSH and can be enabled on same SSH server.

Step 10: Use Passive FTP Mode

FTP uses two modes, active and passive, to transfer files between server and clients. In active mode, server initiates data connection, and client listens for incoming connections, while in passive mode, client initiates both control and data connections. Passive mode is more firewall-friendly and allows clients to connect to FTP server even if they are behind a NAT (Network Address Translation) or firewall. To enable passive mode in vsftpd, you can add following lines to vsftpd.conf file −


These lines will enable passive mode and specify range of passive ports that vsftpd will use for data transfers.

Step 11: Limit FTP User Sessions

To prevent overloading your FTP server and ensure better performance, you can limit number of concurrent FTP user sessions that are allowed to connect to your server. You can do this by adding following line to vsftpd.conf file −


This line will limit number of concurrent FTP user sessions to 50, and you can adjust this number to suit your needs.

Step 12: Use a Dedicated FTP Client

While there are many FTP clients available, some of them may not be optimized for performance or security. Consider using a dedicated FTP client, such as FileZilla, WinSCP, or Cyberduck, which is specifically designed for FTP file transfers and comes with advanced features, such as resume and transfer queue.

Step 13: Automate FTP Transfers With Cron Jobs

If you need to transfer files regularly between your FTP server and other machines, you can automate process by using cron jobs. A cron job is a Linux command that runs automatically at specified intervals, such as daily, weekly, or monthly. You can set up a cron job to run an FTP script that transfers files to or from your FTP server automatically, without requiring any manual intervention.

Step 14: Use Chroot Jail

A chroot jail is a security feature that restricts users to a specific directory and prevents them from accessing other parts of file system. By using a chroot jail, you can enhance security of your FTP server and limit damage that can be caused by a compromised user account. To set up a chroot jail for vsftpd, you can add following line to vsftpd.conf file −


This line will restrict users to their home directory and prevent them from navigating to other directories.

Step 15: Enable IPv6

IPv6 is latest version of Internet Protocol and offers several advantages over its predecessor, IPv4. By enabling IPv6 on your FTP server, you can increase its reach and ensure that it is compatible with modern networks. To enable IPv6 in vsftpd, you can add following line to vsftpd.conf file −


This line will enable vsftpd to listen on IPv6 addresses.

Step 16: Backup FTP Server Data

Like any other data storage system, an FTP server can be susceptible to data loss due to hardware failure, system crashes, or other unforeseen events. To prevent data loss, it is essential to regularly backup your FTP server data. You can use tools like Rsync or SCP to transfer files to a remote location, or use cloud-based backup services like Amazon S3 or Google Drive.

Step 17: Harden Your FTP Server

To enhance security of your FTP server, you can implement several security measures, such as −

  • Disable root login

  • Enable SSH access

  • Use a firewall to block unauthorized access

  • Implement password policies

  • Install security updates regularly

  • Use intrusion detection and prevention systems

By following these security measures, you can protect your FTP server from security threats and ensure that your data remains safe and secure.


In this article, we have shown you how to install and configure an FTP server on Ubuntu with vsftpd. With this setup, you can easily share files between computers on your network or remotely access files from anywhere in world. By following these steps, you should now have a working FTP server that you can use for your file sharing and remote file access needs.

Updated on: 12-May-2023


Kickstart Your Career

Get certified by completing the course

Get Started