What is FTP and What is FTP Server?
FTP (File Transfer Protocol) is as its name suggests a file transferring protocol between two computers, a local computer, and a remote server. FTP servers is a web server that runs on web-servers and uses FTP protocol at the server side to manage file transfers, connections, & users. Some of them come with a modular architecture, security-focused features, and several options designed for the enterprise.
The FTP server allows users to store their files on the server, through FTP, and access it later. The basic features of usable FTP servers are to manage the file transfers, the connections, the rate limits, the user's accounts, user groups, & user permissions. Some of the projects on this list do, even more, some of them are built with modular architecture allowing developers to extend their functionalities throw custom developed modules and plugins.
To connect to the FTP server, you require a client (FTP client), that provide the client-ready interface to connect through FTP and similar protocols. We have covered the best FTP clients in this article for Windows users, Linux (Ubuntu, Debian, macOS). Here is our list of: 10 Recommended Free, Open source FTP Clients for Windows, Linux, and macOS.
1- Vsftpd: Linux/ Unix FTP server
Vsftpd is on the top of our list as it's preferred by Linux server Admins all over the world, It provides out-of-box security, and set of features and configurations to configure FTP and FTP virtual users on the server.
Vsftpd is used by RedHat, OpenSuse, Debian, FreeBSD, Gnome, KDE. A user has sent Vsftpd admins a graph demonstrating Vsftpd performance as it served 2.6TB, with a concurrent user count often over 1,500 on one single machine for 24 hours.
- Open source (GPL licensed)
- Compatible with many Linux server distros
- Supported by a large community of users
- Virtual IP configuration
- Users: Create, manage, delete, virtual users
- Per-user configuration
- Bandwidth throttling
- Per-source-IP configuration
- Per-source-IP limits setting
- Supports IPv6
- SSL: support
2- The Apache FTP-Server (Windows, Unix, & Linux)
The Apache FTP server is an open source cross-platform FTP server, it's built on Java technologies which make it run smoothly, on Windows servers so Linux servers. It provides more options for developers and systems admins as it can run as a standalone server, or can be embedded into a Java server application. Apache FTP server provides support for developers who are planning to integrate it with their Spring-based apps. For Standalone option, The Apache FTP can be installed and run as a Windows service, as well as Linux service or Unix/Linux daemon.
- Can be integrated into Java applications
- Multi-threaded by design
- Virtual directory support
- User management
- Queue management
- Resumable file upload and download
- Handles ASCII and binary data transfer
- IPs management
- Supports IPs ban
- Events notification
- Faster transfer (upload/ download) with Mode Z support
- Implicit/explicit SSL/TLS support
- Customizable FTP messages
- Support changing file date-time stamp with MDTM built-in support
- Supports events logging
3- ProFTP (Linux)
ProFTPd is an FTP server for Unix/ Linux based systems. It's easy to install, use and highly configurable even for newbies. It provides multiple virtual FTP servers support with per-directory based configuration via ".ftpaccess" file which is very similar to Apache's ".htaccess".
- Open source (GPL)
- Modular design: many modules are already written for Database, LDAP servers, TLS/SSL encryption, RADIUS.
- Supports multiple virtual FTP servers
- Per-directory configuration with ".ftpaccess" similar to Apache's ".htaccess"
- Anonymous FTP support
- Configure single or multiple virtual FTP servers or anonymous FTP services
- Supports hidden files and directory based on Linux-file system permissions
- IPv6 support
- Expired account options
- Runs as a configurable non-privileged user in stand-alone mode
4- CrossFTP (Windows, Unix, & Linux)
CrossFTP is a cross-platform FTP server, that works with Windows servers and Unix/ Linux systems. It's easy to install, manage, and update using Java as the main requirement. CrossFTP has a simple GUI (Graphical User Interface), it provides an easily configurable setting manager for users, basic configuration, connections, IPs control, File/ Directory, & FTP messages. The CrossFTP graphical app also has overview tabs for logging, and statistics for server usage.
- Multi-platform, Pure Java application
- Highly configurable
- Command-line and GUI for all sort of users
- Open source (Apache License v2.0)
- Provides tutorials for advanced users and beginners
- Rich manual and knowledge base for Frequently asked questions (FAQs)
- Easy to install, manage, maintain, & update
- UTF-8 directory encoding
- User virtual directory
- Write/ Read permission for users
- Idle-time support
- Upload/ download limits option support
- Anonymous login support
- IPs management: filtering, banning, block.
- Store data in database or LDAP
- Customizable FTP messages
- Implicit/explicit SSL/TLS support
- Bonjour discovery protocol support
- MDTM support: query files by data-time stamp
- "MODE Z" support for faster upload/ download
- Handles ASCII, & binary data transfers
5- uFTP (Linux, Unix)
uFTP is an open source, lightweight, portable FTP server written in C for the best performance. It's primarily written for Unix/ Linux (POSIX) -based servers. uFTP is super easy to use and supports an almost all required FTP commands to run a full-featured FTP server.
It's released under MIT license, but the user should be aware that it includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit, so we would recommend reviewing OpenSSL license.
- Open source (MIT license)
- Written with C language.
- Portable binary option
- Single configuration file (uftpd.cfg)
- Compatible with all main FTP clients
- Well documented https://www.uftpserver.com/wiki/opensource-ftp-server
- Support FTP commands
- Smooth performance
- Easy to install
- Easy to configure
- Easy to use
6- glFTPd (Linux, Unix)
glFTPd is an open source free FTP server for Unix/ Linux operating systems. The first public release of this freeware dates back to the beginning of 1998, glFTPd stands for GreyLine FTP (the name of the original creator). It runs smoothly with Unix systems like FreeBSD, OpenBSD, and many server-ready Linux distros like Ubuntu server, However, If for more Linux support we would recommend Vsftpd.
glFTP supports many FTP/ site commands and runs within a chroot environment which makes it relatively safe.
- Runs in chroot mode
- Virtual user management
- Bandwidth throttling global or per-user
- Encryption: through TLS/SSL
- Upload/ Download ratio control
- User management: create, update, remove
- Usage monitoring and calculation
- IPv6 support
- Users can have an IP mask
- Stats line for download(DL) and upload (UL) usage
- cookies support
- Support for ECDHE key exchange to make PFS work for ECC certs
- Allow IPv6 masks to be added to users
- Show disk space, usage, free-space, used space
- Hide real username and group name at file listings
- Supports "dirlog" caching
- Support for the XCWD/XMKD/XRMD/XPWD/XCUP FTP commands
- Support for SSCN command as an alternate way of doing SSL FXL.
7- ColoradoFTP(Windows, Linux)
ColoradoFTP is an open source Java FTP server, It's a cross-platform server that runs on Windows and Linux servers with ease. It's regularly updated with bug fixes, new features, and improvements. It runs smoothly on the latest JavaVM. ColoradoFTP is compatible with RFC 959 and RFC 3659 (File Transfer Protocol and Extensions).
ColoradoFTP server offers several demo with user accounts with different permissions, showing configuration example, anonymous login, and the use of their custom plugins. You may check the demos here.
- Java-based runs on Windows, macOSX, Linux, & Unix systems
- Working as an embedded project and in-memory
- Command-line based
- XML-based configuration
- Unlimited accounts
- Easy user management
- User groups
- Permissions manager
- Plugins support
- Multiple-download and installation options
8- Waarp (Windows, Linux,& Unix servers)
Waarp is an open source Web server that serves several protocols (HTTP, FTP, FTPS, SSH, SFTP) and several proprietary protocols. Waarp os meant for developers for companies and enterprise to implement it with their projects, or extend it for their uses. Waarp is a full-featured server, but with WaarpFTP it provides a powerful developer-friendly server to build custom FTP servers on top of it. Waarp's team released WaarpGatewayFTP a powerful FTP server that is built on top of WaarpFTP as a functional production-ready example.
- Open source released under LGPL.
- Supports multiple-protocols
- Clear API for developers
- Simple configuration
- FTP/ FTPS/ SFTP support
- Data can be Files/ Folders, LDAP, or instance data from the database
- Multiple Authentication options (storage: file-based, database, LDAP)
- Pre/ Post-Command actions
- Logger support
- computes remote files
- computes MD5 on remote files
- compute SHA-1 on a remote file
- allows remote server shutdown
- [WaarpGatewayFtp]: The ability to change dynamically the authentication through an extended SITE command
- [WaarpGatewayFtp]: The ability to specify an explicit command to be executed before (RETR) or after (STOR like operations)
- An administrator interface in HTTPS
- The ability to specify commands for each User
- The ability to save logs of transfers in a database (optional)
- The ability to use limitation on CPU or number of connections
9- FileZilla FTP Server (Windows FTP Server)
FileZilla is an open source free FTP Client and Server that works for multiple platforms as FTP client, and for Windows as FTP server. FileZilla has been around for years and it competes with many commercial paid software.
FileZilla Server is FTP server app for Windows, It does not come for other platforms, but Windows 7, 8, 8.1 and 10 are supported, each both 32 and 64 bit. FileZilla Server and Client are released under GPL v2.0.
- Works only for Windows.
- Supports 32, and 64 bit.
- Easy to install and use for end users
- Used for personal usage at home servers and small companies
- Multi-protocol support
- Simple installation powered by simple UI
- Settings manager
- Custom port
- Users manager
- Speed limits
- Passive mode support with easy-to-use manager
- FTP over TLS/SSL support
- IP filter and manager
- Connection limits per user
- Shared folder manager
- Supports file transfer compression
- Folder/ Directory permissions setting option
- Threads limit control
- Timeout setting for connections, No transfer, & login
- Supports remote folder sharing on another machine at the network
- Anonymous user login support.
10- DrFTPD (Windows, Linux, Unix Servers)
DrFTP is a distributed FTP server built with Java, which makes it run on Windows Servers, as well as Linux/ Unix-based servers. It uses the "slaves" concept to provide better control and improve the security & performance of file transfers. It can be used to create an FTP Grid or Multi-FTP based websites, through a distributed FTP daemons.
DrFTP has a modular plugin-ready architecture, and it still in active development. It requires Java, and ANT for compiling and installation. We would recommend it for advanced users.
- Uses Slave concept to control the file transfer
- Works smoothly popular FTP clients
- Runs without root/administrator privileges.
- Supports Passive (PASV) mode
- In-memory file list with cached checksums.
- Archiving (plugin)
- Monitoring (plugin)
- Slave selection based on user bandwidth.
- Stripes files across slaves.
- User account expiration and trial options
Notable FTP server projects:
- 11- MinimalFTP (Cross-platform): Open source Cross-platform Java-based minimal FTP server.
- 12- acFTP (Windows): FTP server for Win-32, supports APPE, & REST.
- 13- goFTP: FTP server framework written in Go language for developers
- 14- PythonFTP Server / Client: Open source Python-based FTP server and Python FTP client
- 15- Java FTP Server: FTP server implementation in Java
We would recommend choosing the best option that fits with your requirements and complies with your server/ operating system of choice. We have listed several Java-based FTP servers, some of them are aiming for developers, others are general purposes FTP servers. You may need to consider auditing and logging if you want to run a privacy-aware FTP server.