Introduction
Pure-FTPd is a free (BSD), secure, and highly configurable FTP server for UNIX-based systems. However, you can also install it on a Windows VPS by following the steps outlined in this guide.
Step 1: Install Windows Subsystem for Linux (WSL)
Pure-FTPd is designed for Linux, so to use it on a Windows VPS, you will need to install the Windows Subsystem for Linux (WSL) to run a Linux distribution.
- Open PowerShell as Administrator and run the following command:
wsl --install
- Restart your system after the installation completes.
- Install a Linux distribution from the Microsoft Store (such as Ubuntu).
- After installation, launch the Linux distribution and complete the setup process (create a user and set a password).
Step 2: Update Package Lists
Once WSL is installed and set up, open your Linux terminal and update your package lists:
sudo apt update
This will ensure you are working with the latest software repositories.
Step 3: Install Pure-FTPd
Now that your package lists are updated, you can install Pure-FTPd using the following command:
sudo apt install pure-ftpd
This will download and install the Pure-FTPd server on your Windows VPS via WSL.
Step 4: Configure Pure-FTPd
After the installation, you can configure Pure-FTPd to suit your needs. The configuration file is located at:
/etc/pure-ftpd/pure-ftpd.conf
To edit the configuration file, use the following command:
sudo nano /etc/pure-ftpd/pure-ftpd.conf
Some common settings to modify include:
- Set the
ChrootEveryone
option toyes
to restrict users to their home directories. - Enable
AnonymousOnly
for anonymous FTP access, or set it tono
if you want only authenticated users. - Adjust the
MaxClientsNumber
andMaxClientsPerIP
options for controlling connections.
Once you’ve made your changes, save the file and exit the editor (press CTRL + X
, then Y
to confirm, and press Enter
to save).
Step 5: Start and Enable Pure-FTPd
To start the Pure-FTPd server, use the following command:
sudo systemctl start pure-ftpd
If you want the Pure-FTPd server to start automatically on boot, use the following command:
sudo systemctl enable pure-ftpd
To check the status of the Pure-FTPd service, use:
sudo systemctl status pure-ftpd
Step 6: Test the FTP Server
After starting Pure-FTPd, you can test the FTP server by connecting to it from an FTP client or using the ftp
command:
ftp localhost
Enter the username and password if required, or try anonymous login if you enabled it during configuration.
Step 7: Firewall Configuration
If you have a firewall enabled on your Windows VPS, ensure that FTP ports (by default, port 21 for control and a range for data connections) are open. To open these ports in the firewall, run:
sudo ufw allow 21
You may also need to open additional ports for passive FTP, depending on your configuration. Check your firewall settings and adjust as necessary.
Step 8: Manage FTP Users
You can manage FTP users by creating system users or using Pure-FTPd’s virtual users.
Creating a System User
To create a system user with FTP access, use the following command:
sudo useradd -m username
To set a password for the new user:
sudo passwd username
Using Virtual Users
If you prefer not to create system users, you can use virtual users by setting up a Pure-FTPd virtual user database. This can be done by following the documentation for Pure-FTPd’s virtual users setup.
Step 9: Secure the FTP Server
For security, it’s recommended to use FTPS (FTP Secure), which adds SSL/TLS encryption. To enable FTPS, you need to generate SSL certificates and modify the Pure-FTPd configuration.
- Generate a self-signed SSL certificate (or use a certificate from a certificate authority):
sudo pure-pw mkdb
- Edit the configuration file to enable SSL/TLS:
sudo nano /etc/pure-ftpd/pure-ftpd.conf
Uncomment and set the following lines:
TLS 1
SSL 1
PureDB /etc/pure-ftpd/pureftpd.pdb
Conclusion
You’ve successfully installed Pure-FTPd on your Windows VPS using WSL. You can now securely transfer files to and from your server. For more detailed documentation on configuration options, visit the Pure-FTPd website.