FTP Serving
WIP!
FTP is most often used as a way to remotely access files on servers of other types. As such, you'll likely be configuring this service on a server primarily intended for something else. (i.e.: a web server)
Installing ProFTPd
sudo apt-get install proftpd
At this point, any user with an account on the network can access the machine via ftp using their regular name & password. (Note: by default, this does not include root.)
This is the MINIMUM required to get it running & you'll want to go deeper into the available options.
Accessing FTP through NAT (pfSense here...)
ProFTPD: Firewalls, Routers, and NAT
sudo vi /etc/proftpd/proftpd.conf
Lines 51 & 56 need to be un-commented & edited
Choose an available range of ports for PassivePorts.
Set MasqueradeAddress to either the WAN address of your firewall or it's FQDN.
Then restart the service:
sudo service proftpd restart
Then create 2 port forwards, one specifically for port 21 (FTP) & one for the the range chosen in PassivePorts.
Managing the FTP server
sudo service proftpd restart