Want to start a FTP, SFTP, or FTPS server in Linux? It’s stupid simple to do the trick if your Linux has a graphical desktop environment!
FTP, File Transfer Protocol, is specially designed for transferring large files from a server to a client. FTPS adds a layer to the FTP protocol to make it more sure. And, SFTP is another protocol based on SSH (Secure Shell).
For Linux server without GUI, user has to struggle with Linux commands and configurations to setup a FTP/SFTP server. Which, is always painful for beginners. But, once you got a desktop environment, things will be quite easy via ‘umftpd’!
It’s a free open-source GTK4 tool that uses the lightweight, fast and scalable Python FTP server library (pyftpdlib) to provide the service. With it, user can access the server files from anywhere with a file manager or FTP client.
Tip: For smaller files, a HTTP server could be more efficient! And, you may create http server via single command in Linux for temporary use.
Step 1: Install umftpd
Usermode FTP Server, umftpd in short, is available as Flatpak package that works in most Linux system.
1. First, install the flatpak daemon. Ubuntu user can press Ctrl+Alt+T on keyboard and run the command below to get it:
sudo apt install flatpak
Fedora, Linux Mint, Pop! OS, etc have Flatpak support out-of-the-box. Other Linux can follow the official setup guide to get it:
2. After that, run the single command in a terminal window to install the app:
flatpak install https://dl.flathub.org/repo/appstream/eu.ithz.umftpd.flatpakref
Step 2: Start a FTP/SFTP/FTPS Server
After installation, launch the app either from system start menu or ‘Activities’ overview depends on your desktop environment.
The UI is quite easy to use, simply set a ‘username’ and ‘password’ for authentication in client machines. Choose a folder to serve the files, enable “Read-only” if you don’t want others to upload or edit anything. Select a protocol that you prefer, and change the port if you want.
Once you click on “Start Server“, it goes to new page indicates that server is ready and provides the address, and other information in next screen.
NOTE: The server persists as long as you keep the app screen (see the last screenshot). As it does not run as service in background, it could be only good choice for temporary use.
Step 3: Access the FTP/SFTP/FTPS Server
You can access anywhere with a client or media player with FTP support.
For Linux user, system default file manager usually support it out-of-box. For example, Ubuntu, Fedora, and other Linux with GNOME can access by clicking ‘Other Locations‘ in file manager and type ftp address in the bottom box.
Microsoft Windows 10 & 11 also support accessing FTP out-of-the-box. Simply open File Explorer, type the ftp url in address bar and hit Enter. On macOS, open Finder and select “Go > Connect to Server” to connect.
Step 4: Access the Server outside of Local Network
If your Linux machine is running behind a router in home network, you have to setup port forwarding or DMZ host to be able to access from machine outside your local network.
To do the settings, you have to first login your router by visiting its IP address (usually
192.168.1.1) in web browser. The settings page looks quite different depends on the device manufacturer. So, there won’t be a detailed guide here.
DMZ host is usually an option in advanced or additional settings, allows to set a local IP as host. With it enabled, all external access will go directly to that machine you specified.
Port forwarding only maps a certain port of local machine to external port. Only external IP plus that port will go to the machine you specified.
To stop the FTP/SFTP server, simply go back via app header bar “<" icon or just close it.