You can add additional repositories in /etc/pacman.conf
It is explained in the comments of that conf file how to do this:
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
Example:
[linuxkernels]
Server = http://nhameh.ovh/$repo/$arch
SigLevel = Optional TrustAll
As you said /etc/pacman.d/mirrorlist
contains a list of the servers, packages are being downloaded from. You can change that list and put your own server there.
Versions:
There are some timing differences. Some mirrors sync every 10 minutes, others just once per day, etc.
So could be that you have to wait for the latest update for some hours until you get the latest version…
Foreign / non-official packages:
Normally the mirrors sync from the official main repository, which means they only host those packages distributed from there.
Is it allowed to host non-official packages? → No clue. Technically it would be possible since the db files are not signed, but I don’t think any mirror in the official list is doing that. And even if they would, packages itself would need to be signed and trusted by you to be able to be installed (unless you manually configure it to ignore signatures as in the example above - SigLevel - …).