uFTP - FTP Server

uftp server, open source ftp server, linux ftp server, linux ftp server for embedded, easy to configure ftp server, ftp server for initramfs

User Tools

Site Tools


uftp-server-installation

Differences

This shows you the differences between two versions of the page.


uftp-server-installation [2025/08/17 16:12] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +**uFTP - FTP server installation**
 +
 +**Option 1 install from sources (recommended)**
 +
 +Some software are required for this procedure: git, gcc and make, check your Linux distribution documentation for more information about how to get the required software.
 +
 +Eg:
 +Under **Ubuntu/Debian** you can install all required software with this command:
 +<code>
 +# sudo apt-get install git gcc make
 +</code>
 +
 +Clone the repository:
 +<code>
 +# git clone https://github.com/kingk85/uFTP.git
 +</code>
 +
 +**Compile uFTP server**
 +
 +<code>
 +# cd uFTP
 +</code>
 +
 +**Note:** To enable the large file support, the Makefile file must be edited, find in the file the text that starts with DEFINITIONS= and modify the file as the example below.
 +<code>
 +DEFINITIONS=
 +#TO ENABLE THE LARGE FILE SUPPORT UNCOMMENT THE NEXT LINE
 +#DEFINITIONS=-D_LARGEFILE64_SOURCE
 +</code>
 +
 +Remove the comment at the line:
 +#DEFINITIONS=-D_LARGEFILE64_SOURCE
 +
 +The final result would be:
 +<code>
 +DEFINITIONS=
 +#TO ENABLE THE LARGE FILE SUPPORT UNCOMMENT THE NEXT LINE
 +DEFINITIONS=-D_LARGEFILE64_SOURCE
 +</code>
 +
 +**Note:** To enable TLS/SSL find the following lines in the Makefile file.
 +<code>
 +ENABLE_OPENSSL_SUPPORT=
 +#TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES
 +#ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED
 +#LIBS=-lpthread -lssl -lcrypto
 +</code>
 +
 +Remove the comments at the lines:
 +<code>
 +#ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED
 +#LIBS=-lpthread -lssl -lcrypto
 +</code>
 +
 +The final result would be:
 +<code>
 +ENABLE_OPENSSL_SUPPORT=
 +#TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES
 +ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED
 +LIBS=-lpthread -lssl -lcrypto
 +</code>
 +
 +**Note:** To enable the PAM Authentication module for the standard /etc/passwd, /etc/shadow authentication find the following lines in the makefile.
 +<code>
 +ENABLE_PAM_SUPPORT=
 +PAM_AUTH_LIB=
 +#TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES
 +#ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED
 +#PAM_AUTH_LIB= -lpam
 +</code>
 +
 +Remove the comments at the lines:
 +<code>
 +#ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED
 +#LIBS=-lpthread -lssl -lcrypto
 +</code>
 +
 +The final result would be:
 +<code>
 +ENABLE_PAM_SUPPORT=
 +PAM_AUTH_LIB=
 +#TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES
 +ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED
 +PAM_AUTH_LIB= -lpam
 +</code>
 +
 +To disable IPV6 support, for legacy device modify the makefile by disabling the IPV6_ENABLED define
 +From
 +<code>
 +ENABLE_IPV6_SUPPORT=
 +#TO ENABLE IPV6 support uncomment next line
 +ENABLE_IPV6_SUPPORT=-D IPV6_ENABLED
 +</code>
 +
 +to this 
 +
 +<code>
 +ENABLE_IPV6_SUPPORT=
 +#TO ENABLE IPV6 support uncomment next line
 +#ENABLE_IPV6_SUPPORT=-D IPV6_ENABLED
 +</code>
 +openSSL libraries are required if uFTP is compiled with TLS support, under Ubuntu use the following command:
 +<code>
 +sudo apt-get install libssl-dev
 +</code>
 +
 +Generate a new certificate (only if TLS/SSH is enabled):
 +<code>
 +mkdir /etc/uFTP
 +
 +cd /etc/uFTP
 +
 +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
 +
 +openssl rsa -in key.pem -out newkey.pem
 +
 +mv newkey.pem key.pem
 +
 +chown root:root /etc/uFTP/key.pem
 +
 +chmod -rwx /etc/uFTP/key.pem
 +
 +</code>
 +
 +Continue with the build.
 +
 +<code>
 +# make
 +</code>
 +
 +Copy the files to the linux path, root permission are required under ubuntu use the sudo command.
 +<code>
 +# cp build/uFTP /sbin/uFTP
 +# cp uftpd.cfg /etc/uftpd.cfg
 +</code>
 +
 +Set permissions and root restriction of the configuration file.
 +<code>
 +chown root:root /sbin/uFTP
 +chown root:root /etc/uftpd.cfg
 +chmod -rwx /etc/uftpd.cfg
 +</code>
 +
 +Run uFTP, note: root permissions are required to execute the uFTP server.
 +<code>
 +# uFTP
 +</code>
 +
 +
 +**Option 2 install from binary**
 +
 +Download the latest binary file for your OS:
 +
 +<code>
 +# sudo cd /sbin
 +# for x64
 +# sudo wget https://www.uftpserver.com/downloads/binaries/latest/x64/uFTP
 +# for arm
 +# sudo wget https://www.uftpserver.com/downloads/binaries/latest/armhf/uFTP
 +</code>
 +
 +Download the latest configuration sample:
 +
 +<code>
 +# sudo cd /etc
 +# sudo wget https://www.uftpserver.com/downloads/configuration_sample/uftpd.cfg
 +</code>
 +
 +Set permissions and root restriction of the configuration file.
 +<code>
 +chown root:root /sbin/uFTP
 +chown root:root /etc/uftpd.cfg
 +chmod -rwx /etc/uftpd.cfg
 +</code>
 +
 +Run uFTP, note: root permissions are required to execute the uFTP server.
 +<code>
 +# uFTP
 +</code>
 +
 +All binary downloads and examples can be found at: https://www.uftpserver.com/downloads/
 +
 +