Mirrors

Welcome to the homepage for my mirror service.
The main server running the service is arlie.srv.c48.uk, in a FyfeWeb rack in Newcastle, who are generously colocating it for free. If you're looking for colocation, dedicated servers, or VPS servers on a high-performance UK network, they come highly recommended (and are a huge step-up from the old repo.c48.uk which was running on Contabo).
The architecture of this service was heavily inspired by FCIX's MicroMirrors.

tf is a mirror?

A mirror is a copy of some files, usually for an open-source project, that is kept up-to-date with the original copy.
Mirrors are used to distribute the files to users, and are throughout the world, so with enough mirrors there should always be a local copy near you.
They also reduce the load on the original server, and are pretty much always volunteer operations, which spreads the cost too.
The server was paid for by me and sent to FyfeWeb for hosting, who cover the bandwidth and (low) power consumption.
It's also nice because I get to contribute to projects that I use (for example, I actually use my own Arch mirror pretty much daily).

FyfeWeb Olilo

Projects mirrored

Name Directory Sync source Sync frequency Size
Arch Linux /arch/ rsync.archlinux.org[1] Half-hourly ~125GB
EndeavourOS /endeavouros/ mirror.alpix.eu Hourly ~80GB
Linux Mint (ISOs) /mint/isos/ pub.linuxmint.com Every 6 hours ~125GB
Linux Mint (Packages) /mint/pkgs/ rsync-packages.linuxmint.com Every 4 hours ~45GB
Chaotic AUR /chaotic/ builds.garudalinux.org Minutely ~85GB
Fedora EPEL /epel/ rsync.mirrorservice.org Hourly ~180GB
Alpine Linux /alpine/ mirror.quantum5.ca Hourly ~400GB
CachyOS /cachyos/ nl.mirror.cx Hourly ~200GB
LibreOffice /tdf/ rsync.documentfoundation.org Every 4 hours ~150GB

Mirror stats

Mirror traffic overview
Mirror traffic hourly
Mirror traffic fiveminutely
Mirror traffic daily
Mirror traffic monthly
Top mirror traffic days

Hardware

Arlie is a Dell Optiplex 9020M. Specs are as follows:

OS: Ubuntu 26.04 LTS (Resolute Raccoon) x86_64
Host: OptiPlex 9020M (00)
CPU: Intel(R) Core(TM) i3-4150 (4) @ 3.50 GHz
Memory: 7.16 GiB
Swap: 4.00 GiB
Disk (/): 56.88 GiB
Disk (/srv/repo): 3.58 TiB
Locale: en_GB.UTF-8
Bandwidth: 1 gbps

    

dell optiplex 9020m with stickers indicating its hostname

rsync

rsync is the tool used to sync mirrors and is usually required by projects. Most of my mirrors are also available publicly on rsync:


~> rsync repo.c48.uk::
                          ____ ___        __
  _______ ___  ___   ____/ / /( _ ) __ __/ /__
 / __/ -_) _ \/ _ \_/ __/_  _/ _  |/ // /  '_/
/_/  \__/ .__/\___(_)__/ /_/ \___(_)_,_/_/\_\
       /_/
--------------------------------------------------------
more information is available at https://c48.uk/mirrors/
--------------------------------------------------------

mintiso        	Linux Mint ISOs
mintpkg        	Linux Mint Packages
arch           	Arch Linux
endeavouros    	EndeavourOS
epel           	Fedora EPEL
alpine         	Alpine
tdf             The Document Foundation

    
Please use rsync -rltpH --delete-delay --delay-updates --safe-links as minimum rsync options. This is what is required by Arch and will prevent user issues with your mirrors. If you are testing yourself, you may want to add -vn and --progress to perform a dry run and get greater insight into what would happen on sync.


Privacy Policy

The mirror servers do not log any personal data except for standard web server logs (IP address, user agent, date/time of access, requested resource, referrer). These logs are stored in the default location on the servers (/var/log/nginx/) and are cleaned out occassionally to save space. No data is shared with any third parties.
An example log entry looks like this:


2a00:db8::1 - - [21/Dec/2025:17:51:51 +0000] "GET /example/url HTTP/2.0" 200 143 "-" "pacman/7.1.0 (Linux x86_64) libalpm/16.0.1" "-"

    
These are only really used for my own curiosity and to see how much traffic the mirrors are getting and from where.


Other infrastructure

The whole of the c48.uk domain is now running under self-hosted DNS. matthew.srv.c48.uk runs the primary server, then ns-global is also used for redundancy and speed. ns-global runs BIND, so I went with NSD for matthew for code diversity. DNS query volume coincides with traffic spikes on mirrors and new releases (especially for EndeavourOS for some reason - if there's a new EndeavourOS release, DNS queries jump by 100,000 per day for a bit).

~> dig @ns1.c48.uk c48.uk ns

; <<>> DiG 9.18.39 <<>> @ns1.c48.uk c48.uk ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21925
;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 5

;; QUESTION SECTION:
;c48.uk.                                IN      NS

;; ANSWER SECTION:
c48.uk.                 3600    IN      NS      ns1.c48.uk.
c48.uk.                 3600    IN      NS      ns-global.kjsl.com.

;; ADDITIONAL SECTION:
ns1.c48.uk.             3600    IN      AAAA    2a0f:85c1:842:13:2:1:8b42:34c0
ns1.c48.uk.             3600    IN      A       46.202.82.78

;; Query time: 12 msec
;; SERVER: 2a0f:85c1:842:13:2:1:8b42:34c0#53(ns1.c48.uk) (UDP)
;; WHEN: Sat Aug 29 12:15:56 BST 2026
;; MSG SIZE  rcvd: 174
    

The registrar I use is Netim, as they have no age requirement and are based in the EU (France). This (combined with the .uk domain) means that the service is mostly independent of infrastructure outside of Europe. ns-global has its backend in California, however due to its anycast setup and the fact that it is run by two very cool individuals I am not too concerned about it. matthew.srv.c48.uk is running on an Innova Communications vps (with fyfeweb as upstream).
FyfeWeb uses VeloxServ (πŸ‡¬πŸ‡§), NTT (πŸ‡―πŸ‡΅), and Hurricane (πŸ‡ΊπŸ‡Έ) for transit. FyfeWeb is also connected to LINX LON1/2 and LONAP. This means that the majority of traffic will stay in British-owned networks, with international traffic falling back to NTT and HE. HE in my opinion is extremely based so I don't really mind my traffic going via them. NTT is a performant Tier 1, so while they're not as based as HE, it means the mirror will have decent international performance.

The entire stack supports IPv6 all the way down (of course), and IPv6 will likely be more performant due to the addition of HE for better routing.

Any questions? dig SOA c48.uk for email and I'll try to get back to you as fast as possible.


Notes

[1]Arch Linux mirrors are split into two tiers, tier 1 and tier 2. My mirror is considered tier 1, and is therefore allowed to sync from tier 0 (rsync.archlinux.org). Tier 2 mirrors sync off of tier 1s, if you want to mirror off of me see rsync.