You set up Apache on a web server you control, configure virtual host settings in the Apache config files, then put your files to be hosted in something like /var/www/ and point Apache to it. Then set up Rsync by running the rsync daemon and setting an /etc/rsyncd.conf file that configures where the files are located and who can access them.
For example, let’s say you wanted to set up a mirror for the Ubuntu Package Archive. You could do that step by step with the following resources:
1. https://www.digitalocean.com/community/tutorials/how-to-inst...
2. https://www.digitalocean.com/community/tutorials/how-to-set-...
3. https://help.ubuntu.com/community/Rsyncmirror
Maybe I’ll write up a short guide and throw it up somewhere. It’s really pretty straightforward. FTP is unfortunately trickier than HTTP and Rsync, but vsftpd removes a lot of the warts.