SFTPGo - highly configurable event-driven file transfer
For one of our customer projects, I was looking for an SFTP server. Although my Google search was unsuccessful, ChatGPT offered an interesting suggestion I had never heard of: SFTPGo.
Why SFTPGo and not the standard SFTP implementation of OpenSSH? To access our servers, we use Hashicorp Boundary and Vault to generate OTP tokens for the SSH login. But for the SFTP server, I need to configure a static password.
I tried a lot of different configuration settings for OpenSSH and PAM, but was not able to support both of these requirements. Thus, I was looking for an SFTP alternative not bound to OpenSSH. And here comes SFTPGo into play.
What is SFTPGo?
As you may be able to guess from its name, it is an SFTP server implementation written in Go. It does not use the SFTP subsystem of OpenSSH under the hood but provides its own implementation of the SFTP protocol.
SFTPGo comes with a simple WebUI to configure the server, the different users, and where the files are stored. The files can be stored in a local directory on the server, but also an S3 bucket or Azure Blob Storage are supported options. Besides that SFTPGo also supports Prometheus for telemetry monitoring as well as the OpenID Connect standard for login into the SFTPGo Web Client and Web Admin user interfaces.
How to install SFTPGO?
SFTPGo can be installed via various Linux package managers, or you can use the pre-built Docker images. If you are running Windows, either use winget or Chocolatey to install the SFTPGo package.
For testing purposes, I recommend going the Docker way:
docker run -p 8080:8080 -p 2022:2022 "drakkan/sftpgo:latest"
How to configure SFTPGo?
Once started, open the WebUI by visiting the URL: http://localhost:8080/web/admin
SFTPGo will ask you to create the first admin if you access SFTPGo for the first time. Afterwards, you can log in and configure your instance.
We've been using SFTPGo in production for a few months now, and everything runs fine. Give it a try if you need an highly configurable SFTP server for your projects.