A Go library for building fully-featured FTP servers with afero filesystem backend.
ftpserverlib is a Go library for building custom FTP servers. It solves the problem of creating reliable, feature-complete FTP services by providing a standards-compliant implementation with support for modern extensions like TLS, IPv6, and resumable transfers. It uses the afero library to abstract filesystem operations, making it adaptable to various storage backends.
Go developers who need to embed an FTP server into their applications, such as those building file management systems, data ingestion pipelines, or custom storage gateways.
Developers choose ftpserverlib because it offers a clean, well-documented API, avoids the pitfalls of older unmaintained Go FTP libraries, and includes enterprise features like TLS and structured logging out of the box.
golang ftp server library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements a wide range of FTP commands including MLST, REST, and MODE Z, ensuring compatibility with both standard and modern FTP clients as per RFC extensions.
Supports TLS encryption via AUTH TLS and PROT commands, providing secure control and data channels for file transfers without additional libraries.
Uses afero for abstract filesystem operations, allowing seamless integration with custom storage backends like cloud services or in-memory systems.
Designed with a small memory footprint and avoids global synchronization, making it reliable for concurrent connections and easier to maintain.
Requires developers to implement both MainDriver and ClientDriver interfaces from scratch, which involves writing boilerplate code for authentication, filesystem ops, and TLS configuration.
Lacks built-in user management, configuration files, or monitoring tools, forcing teams to develop these independently, increasing initial setup time.
Focused solely on FTP without native support for other protocols like SFTP, necessitating additional integration for multi-protocol applications.