19 Open-source Free FTP Servers
An FTP server, also known as a File Transfer Protocol server, is a software application that allows for the transfer of files over a network. It provides a way for users to upload, download, and manage files on a remote server.
Advantages of open-source FTP servers include:
- Customizability: Open-source FTP servers allow users to customize and modify the code according to their specific needs. This flexibility enables users to add or modify features, enhance security, and optimize performance.
- Transparency: Open-source FTP servers provide transparency as the source code is freely available for review. This allows users to understand how the server functions and verify its security and reliability.
- Community Support: Open-source FTP servers often have active communities of developers and users who contribute to their development and provide support. This community support can help address issues, provide guidance, and offer additional resources.
- Cost-effective: Open-source FTP servers are typically free to use, eliminating the need for expensive licensing fees. This makes them a cost-effective solution for individuals and organizations with budget constraints.
- Security: Open-source FTP servers benefit from the collective knowledge and expertise of the community, making them potentially more secure. Vulnerabilities can be identified and addressed promptly, and security enhancements can be shared and implemented quickly.
- Flexibility: Open-source FTP servers offer flexibility in terms of platform compatibility and integration. They can be deployed on various operating systems and easily integrated with other tools and systems.
It is important to note that while open-source FTP servers provide these advantages, proper configuration and maintenance are still necessary to ensure optimal performance and security.
In this list, we collected the best open-source FTP-servers apps and libraries.
1- LightFTP
LightFTP is an open-source (BSD-2-Clause License) lightweight FTP server.
2- Golang FTP Server
This FTP server is a gateway between old-school FTP devices and modern cloud based file systems, using the afero's Fs interface and acting as a reference implementation of the ftpserverlib.
At the current stage, supported backend are:
- Local disk
- S3 through afero-s3
- Dropbox (see doc) through afero-dropbox
- Google Drive (see doc) through afero-gdrive
- SFTP through afero's sftpfs
- Email through go-mail thanks to @x-way
3- Portable FTP server
This FTP server is written as .NET Standard 2.0 library and has an abstract file system which allows e.g. Google Drive as backend.
4- FluentFTP
FluentFTP is a high-performance FTP and FTPS client library for .NET, offering a wide range of features including SSL/TLS connections, file uploads/downloads, directory listing parsing, file hashing/checksums, and more.
It is written in C# with no external dependencies, has an extensive test suite, and is released under the MIT License for use in both proprietary and open source applications.
Features
- Full support for FTP, FXP, FTPS, FTPS with TLS 1.3, FTPS with client certificates and FTPS Proxies
- Full support for over 30 FTP server types with integration tests for all major servers
- File management:
- File and directory listing for all major server types (Unix, Windows/IIS, Azure, Pure-FTPd, ProFTPD, Vax, VMS, OpenVMS, Tandem, HP NonStop Guardian, IBM z/OS and OS/400, Windows CE, Serv-U, etc)
- Fully recursive directory listing and directory deletion (manual recursion and server-side recursion)
- Easily upload and download a file from the server with progress tracking
- Easily upload and download a directory from the server with easy synchronization modes
- Easily transfer a file or folder directly from one server to another using the FXP protocol
- Conditionally transfer files using rule based whitelisting and blacklisting
- Automatically verify the hash of a file & retry transfer if hash mismatches
- Configurable error handling (ignore/abort/throw) for multi-file transfers
- Easily read and write file data from the server using standard streams
- Create, append, read, write, rename, move and delete files and folders
- Recursively deletes folders and all its contents
- Get file/folder info (exists, size, security flags, modified date/time)
- Get and set file permissions (owner, group, other)
- Absolute or relative paths (relative to the "working directory")
- Compare a local file against a remote file using the hash/checksum (MD5, CRC32, SHA-1, SHA-256, SHA-512)
- Dereference of symbolic links to calculate the linked file/folder
- Throttling of uploads and downloads with configurable speed limit
- FTP protocol:
- Automatic FTP/FTPS connection negotiation and detection of working connection settings
- Automatic detection of the FTP server software and its capabilities
- Automatic reconnection of FTP connections for broken or degraded sockets
- Extensive support for FTP commands, including some server-specific commands
- Easily send server-specific FTP commands using the
Execute()
method - Explicit and Implicit SSL connections are supported for the control and data connections using .NET's
SslStream
- Passive and active data connections (PASV, EPSV, PORT and EPRT)
- Supports Unix CHMOD, PRET, ProFTPD's SITE MKDIR and RMDIR commands, Serv-U's RMDA command
- Supports Realm and directory navigation for IBM z/OS and OS/400
- Supports all types of FTP Proxies (HTTP 1.1, SOCKS4, SOCKS4a, SOCKS5, User@Host, BlueCoat)
- FTP command logging using
TraceListeners
(passwords omitted) to trace or log output to a file - SFTP is not supported as it is FTP over SSH, a completely different protocol (use SSH.NET for that)
- Asynchronous support:
- Synchronous and asynchronous methods using
async
/await
for all operations - Asynchronous support for the
IAsyncEnumerable
pattern forGetListing
methods (seeGetListingAsyncEnumerable
) - All asynchronous methods can be cancelled midway by passing a
CancellationToken
- All asynchronous methods honor the
ReadTimeout
and automatically cancel themselves if timed out - Asynchronous support for progress tracking of file transfers during data upload/download
- Implements its own internal locking in an effort to keep transactions synchronized
- Synchronous and asynchronous methods using
- Extensible:
- Easily add custom logging/tracing functionality using industry-standard
ILogger
interface - Easily add support for custom non-standard FTP servers (see the Custom Servers page)
- Easily add support for more file or directory filtering rules (simply extend
FtpRule
) - Easily add support for more proxy types (simply extend
FtpClientProxy
) - Easily add unsupported directory listing parsers (see the
CustomParser
example) - Easily add your own Powershell commands by extending the scripts in
FluentFTP.ps1
- Easily add custom logging/tracing functionality using industry-standard
Python FTP
5- SFTPGo (Recommended)
SFTPGo is a versatile file transfer server that supports various storage backends, virtual folders, custom commands and hooks, multiple authentication methods, LDAP/Active Directory integration, quota support, bandwidth throttling, rate limiting, IP filters, shell-like pattern filters, idle connection termination, blocklist management, Geo-IP filtering, Git repositories, SCP, rsync, FTP/S, WebDAV.
It also supports ACME protocol for TLS certificates, two-way TLS authentication, Prometheus metrics, HAProxy PROXY protocol, easy migration from Linux system user accounts, portable mode, SFTP subsystem mode, performance analysis, flexible configuration format, accurate log files, plugin system, and Infrastructure as Code (IaC) support with Terraform provider.
6- No Nonsense FTP/TFTP Server
uftpd is a UNIX daemon with sane built-in defaults. It just works.
Features
- FTP and/or TFTP
- No complex configuration file
- Runs from standard UNIX inetd, or standalone
- Uses
ftp
user's$HOME
, from/etc/passwd
, or custom path - Uses
ftp/tcp
andtftp/udp
from/etc/services
, or custom ports - Privilege separation, drops root privileges having bound to ports
- Possible to use symlinks outside of the FTP home directory
- Possible to have group writable FTP home directory
7- MinimalFTP Server (Java)
A lightweight, simple FTP server. Pure Java, no libraries.
Features
Although it's named "minimal", it supports a bunch of features:
- 100% Java, no libraries
- Lightweight
- Supports 57 FTP commands
- TLS/SSL support
- Custom File System support
- Custom User Authentication support
- Custom Commands support
- Support to obsolete commands (some FTP clients might still use them)
8- ftpd
An open-source FTP server based on github.com/goftp/server.
9- SimpleFTPServer
A simple FTP server for Arduino, ArduinoSAMD WiFiNINA, esp8266, esp32, stm32 and Raspberry Pi Pico Wio.
10- Portable FTP server Java
This is an open-source cross-platform (Java) portable FTP server for Windows, Linux & Mac. Use with command line or GUI.
11- Open TFTP Server
This is a free MultiThreaded TFTP Server Open Source Freeware Windows/Unix for PXEBOOT, firmware load, support tsize, blksize, timeout Server Port Ranges, Block Number Rollover for Large Files. Runs as Service/daemon. Single Port version also available.
Features
- Supports nearly Every Industry Standard Feature
- Total Size (tsize), Block Size, Interval Time, Block Number RollOver
- Supports process owner, other than root
- Extensive Logging, Historical Logging
- Can specify Server Interfaces and Ports
- Client Port Ranges
- Thread Pool
- Unix Daemon or Windows Service
- Very Small Foot Print
12- FileZilla (Client/ Server)
FileZilla® is a versatile FTP, SFTP, and FTPS client that supports multiple platforms like Windows, Mac OS X, and Linux. It offers dynamic tools for easy file transfer between your local machine and web server.
For instance, you can compare and sync files between your local directory and the server. It also allows you to browse and transfer files between multiple servers simultaneously, and edit server files on the go. FileZilla is available in 47 languages worldwide!
Features
- FTP client and server
- Supports FTP, FTPS and SFTP
- Built-in file management
- Advanced file settings
- Reduces timeout errors
- Multi-language support
13- bftpd
bftpd is an FTP server for Unix systems, which is designed to be portable and fast. It supports inetd and standalone mode, most RFC FTP commands and is very easy to configure.
14- Pure Java FTP server
This is a free and open-source portable Pure Java FTP server. It can run as root/admin!
Its features include full multi-threading, multi-platform support, high speed, GUI and CMD modes, IP filtering, read/write support, interface selection, speed limits, anonymous mode, TCP port selection, folder selection, logging, and login limitations.
15- CrossFTP Server
CrossFTP Server is a secure-enabled FTP Server for multiple platforms. It offers a high-performance, easy configurable, and most of all a secure FTP server. It is very easy to start a new FTP service for the novice users, and for advanced users as well.
16- FtpServer Library .Net
An FTP server program for .NET Core, and its customizable .NET Standard core library.
17- UniFTP
UniFTP is an FTP server lib & software written in C#. It's based on Sharp FTP Server, but have been rewritted and enhanced.
18- ZeptoServer
ZeptoServer is a Minimalistic light-weight server that offers a range of features and flexibility.
One of the key features of ZeptoServer is its built-in FTP implementation, which allows for efficient and secure file transfer. However, it doesn't stop there. With its modular design, ZeptoServer can be easily extended to support any text protocol you may need. This means that whether you require a server for HTTP, SMTP, or any other text-based protocol, ZeptoServer can handle it with ease.
Another advantage of ZeptoServer is its versatility in terms of hosting options. While it can be hosted as a standalone server, it also provides the option to be hosted in-proc. By utilizing the ServerHost
class from the ZeptoServer
project, you can seamlessly integrate ZeptoServer directly into your existing application.
19- SmallHTTP Server
SmallHTTP Server is a small, open-source, and free HTTP server that offers a range of functionalities including mail, DNS, FTP, and proxy servers.
It supports CGI scripts, Server Side Includes, virtual hosts, and directories. It also provides detailed statistics, web and local administration, IPv6 and SSL/TLS support, GZip compression, and an HTTP TLS VPN server.