ProFTPD is an FTP server that you can install on Debian 12, and it’s known for being pretty flexible and powerful, especially if you need to manage a lot of users or want to set up complex configurations. Unlike some other FTP servers, ProFTPD uses a single configuration file, which makes it easier to manage, though some people might find it a bit daunting at first because of the number of options available. It’s designed with security in mind, but you must still be careful to configure it properly to avoid vulnerabilities. One of the things that makes ProFTPD popular is its ability to run in standalone mode or through inetd, depending on your needs. Overall, while it might require a bit more setup work, it’s a solid choice for anyone needing a reliable FTP server on Debian 12.

Installing ProFTPD on Debian 12

Step 1: Update Your Package List

First, you’ll want to make sure your package list is up-to-date. Open your terminal and run:

sudo apt update

Tip: It’s always a good idea to update your package list before installing new software to ensure you’re getting the latest version.

Step 2: Install ProFTPD

To install ProFTPD, run the following command:

sudo apt install proftpd

During the installation, you may be prompted to choose between “standalone” or “inetd” mode.

Standalone Mode: ProFTPD runs as a dedicated service. It’s recommended if you expect a lot of FTP traffic.

Inetd Mode: ProFTPD is started by inetd only when there’s an incoming FTP request. Choose this if you expect minimal traffic.

Hint: If you’re not sure, “standalone” is usually the safer option for most setups.

Step 3: Configure ProFTPD

Once installed, you’ll want to configure it to suit your needs. The main configuration file is located at:

sudo nano /etc/proftpd/proftpd.conf

In this file, you can set options like the server name, default directory, and anonymous access. Here are a few common adjustments:

  • Disable Anonymous Access (if you don’t need it):
    
      User                            ftp
      Group                           nogroup
      UserAlias                       anonymous ftp
      # Change this to "off" to disable anonymous access
      AnonRequirePassword             on
      MaxClients                      10
    
  • Enable Passive Ports (helpful for firewalls):


    Add the following lines:

    PassivePorts 49152 65534

Tip: After editing, make sure to save your changes by pressing CTRL O, then Enter, and CTRL X to exit.

Step 4: Restart ProFTPD

For your changes to take effect, you need to restart the ProFTPD service:

sudo systemctl restart proftpd

Hint: If you’re having issues, check the status with sudo systemctl status proftpd to see if there are any errors.

Step 5: Allow FTP Through the Firewall

If you have a firewall enabled (like UFW), you’ll need to allow FTP traffic. You can do this with:

sudo ufw allow 21/tcp

If you’re using passive mode, also open the passive port range:

sudo ufw allow 49152:65534/tcp

Tip: Always double-check your firewall rules to make sure you’re not accidentally blocking necessary traffic.

Step 6: Test the FTP Server

Now that ProFTPD is up and running, you should test it to ensure it works. You can use an FTP client like FileZilla, or even the command line:

ftp your-server-ip

Hint: If you can’t connect, ensure that ProFTPD is running and that your firewall settings are correct.

Step 7: Set Up User Accounts

To create a new FTP user, use the following commands:

sudo adduser ftpuser

Then follow the prompts to set up the user.

Tip: By default, the user’s home directory is where they’ll be able to upload and download files. Make sure to set the appropriate permissions.

Step 8: (Optional) Secure FTP with TLS/SSL

To secure your FTP connections, you can set up TLS/SSL. Start by installing OpenSSL:

sudo apt install openssl

Generate a self-signed certificate:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt

Then, configure ProFTPD to use these certificates by adding the following to /etc/proftpd/tls.conf:


  TLSEngine                   on
  TLSLog                      /var/log/proftpd/tls.log
  TLSProtocol                 SSLv23
  TLSRSACertificateFile       /etc/ssl/certs/proftpd.crt
  TLSRSACertificateKeyFile    /etc/ssl/private/proftpd.key
  TLSOptions                  NoCertRequest
  TLSVerifyClient             off

Tip: After making these changes, restart ProFTPD again.

Alternatively, you can use Let’s Encrypt to get a free signed SSL certificate for your server. Check out this guide on how to configure ProFTPD with Let’s Encrypt.

Conclusion

You should now have a working ProFTPD server on Debian 12! Remember, FTP is a very flexible protocol, but it also comes with security risks, so always ensure you’re configuring it securely, especially if it’s accessible over the internet.