| Crates.io | unftp |
| lib.rs | unftp |
| version | 0.15.2 |
| created_at | 2020-10-03 17:32:18.342929+00 |
| updated_at | 2025-12-23 20:35:06.070224+00 |
| description | When you need to FTP, but don't want to. An async, cloud orientated FTP(S) server built on libunftp |
| homepage | https://github.com/bolcom/unFTP |
| repository | https://github.com/bolcom/unFTP |
| max_upload_size | |
| id | 295829 |
| size | 1,100,470 |
When you need to FTP, but don't want to.

Website | Docs | [libunftp(https://github.com/bolcom/libunftp)
unFTP is an FTP(S) server written in Rust and built on top of libunftp and the Tokio asynchronous run-time. It is un like your normal FTP server in that it provides:
With unFTP, you can present RFC compliant FTP(S) to the outside world while freeing yourself to use modern APIs and techniques on the inside of your perimeter.
User documentation are available on our website unftp.rs
The project contains templated Dockerfiles . To get a list of available commands to create them, run:
make help
We offer 3 different options for building an unFTP docker image:
scratch: builds the binary in rust:slim and deploys in a FROM scratch image. The
unFTP binary is statically linked using musl libc.alpine (default): builds in rust:slim and deploy in alpine. This image is built
with musl instead of a full-blown libc. The unFTP binary is statically linked
using musl libc.alpine-debug: same images as alpine but using the debug build of unftp and adds tools
like lftp and CurlFtpFS while also running as root.To build the alpine docker image:
make docker-image-alpine
Alternatively you can download pre-made images from docker hub.
You can use tokio-console to analyze async tasks running in unFTP. To do this you
need to compile a build or run with the tokio_console feature enabled while also enabling the tokio_unstable cfg.
For example:
RUSTFLAGS="--cfg tokio_unstable" cargo build --features tokio_console
or:
RUSTFLAGS="--cfg tokio_unstable" cargo run --features tokio_console -- -vv --auth-type=anonymous
unFTP will listen on default port 6669 for connections from tokio-console.
The unFTP Cargo.toml file lists features that allows enabling or disabling storage and authentication back-ends.
These are the default ones: "auth_rest", "sbe_gcs", "auth_jsonfile", "sbe_opendal".
The binary called unftp_x86_64-unknown-linux-gnu that we provide via the unFTP GitHub releases also enables
auth_pam.
| Feature | Description |
|---|---|
sbe_azblob |
Enables Azure Blob Storage support via unftp-sbe-opendal. |
sbe_gcs |
Enables Google Cloud Storage support via unftp-sbe-gcs. |
sbe_iso |
Enables serving ISO 9660 images as FTP storage backends via unftp-sbe-iso. |
sbe_opendal |
Enables generic cloud storage support using unftp-sbe-opendal. |
| Feature | Description |
|---|---|
auth_jsonfile |
Enables authentication from a local JSON file via unftp-auth-jsonfile. |
auth_pam |
Enables authentication via PAM using unftp-auth-pam. |
auth_rest |
Enables HTTP-based authentication using unftp-auth-rest. |
Support is given on a best effort basis. You are welcome to engage us on the discussions page or create a Github issue.
You can also follow news and talk to us on Telegram
Make your edits in docs/
If you want to preview the docs:
You're free to use, modify and distribute this software under the terms of the Apache-2.0 license.