Find a file
Every package and image on every mirror node, with its size, a download link per node and ✅ when its checksum was verified.
* any characters · ? one character · plain text = anywhere in the path
mirrors.oiv.ae is a public package mirror hosted in the UAE, serving the GCC region over HTTPS for package managers and over rsync for downstream mirrors, plain or over TLS. Updates come from a server in the region instead of Europe or the US, so downloads start sooner and finish faster.
Below is the synchronisation status of every mirrored repository, reported by the mirror node itself. Times are shown in your local time zone. The page refreshes every minute.
In a terminal? curl -s https://mirrors.oiv.ae/status.txt prints the same status as plain text,
and curl -s 'https://mirrors.oiv.ae/status.txt?project=debian' prints the steps to paste into your configuration.
No repository matches the filter.
What the states mean
- In sync
- Last successful sync is within the repository's freshness limit.
- Syncing
- A sync with the upstream is running right now; the published files switch over atomically at its end.
- Warning
- Still fresh, but the most recent attempt did not complete (it is retried on the next run).
- Out of date
- No successful sync within the freshness limit. Package managers verify signatures, but you may get older packages.
- Pending
- Newly added; the first full download has not finished yet.
Nodes and projects
The mirror service runs on 2 nodes. The table shows which project is mirrored on which node
(✓). A node is offline while it is not attached to the service yet or does not answer. Your
browser checks the other nodes by reading their public /status.json.
| Project | auh1mir1 offline not attached yet | dxb2mir1 online this node |
|---|---|---|
| debianDebian archive and security updates | ✓ offline | ✓ |
| opensuseopenSUSE Leap / Tumbleweed repositories | ✓ offline | ✓ |
| opnsenseOPNsense firewall packages and installer images | ✓ offline | ✓ |
| proxmoxProxmox VE packages and ISOs | ✓ offline | ✓ |
Bandwidth by time of day
The mirror shares its internet link with other users. Serving clients always has priority; the speed of the link is shared out by time of day. This node (dxb2mir1) is in: –
auh1mir1 (times in Asia/Dubai)
| Period | When | Serving clients (upload) | Mirror syncs from upstream (download) |
|---|---|---|---|
| Business hoursserving only | Mon–Fri 08:30–17:00 | up to 100 Mbit/s all together | no syncs run |
| Shoulderbetween business hours and the night | all other times (weekends: the whole day outside the night) | up to 200 Mbit/s all together | up to 300 Mbit/s |
| Nightno limits | every day 22:00–06:00 | no limit | no limit; also the time for speed tests of upstream mirrors |
dxb2mir1 (times in Asia/Dubai)
| Period | When | Serving clients (upload) | Mirror syncs from upstream (download) |
|---|---|---|---|
| Business hoursserving only | Mon–Fri 08:30–17:00 | up to 100 Mbit/s all together | no syncs run |
| Shoulderbetween business hours and the night | all other times (weekends: the whole day outside the night) | up to 200 Mbit/s all together | up to 300 Mbit/s |
| Nightno limits | every day 22:00–06:00 | no limit | no limit; also the time for speed tests of upstream mirrors |
Downloads from this mirror are never refused because of the time of day; the limits only share the link. Downstream mirrors are asked to sync outside business hours, best at night.
Use the mirror
Every project has its own host name and keeps the upstream folder layout and architecture names. To switch a system to the mirror, change only the host name in its repository address; the path stays exactly as it is upstream. HTTPS and plain HTTP both work.
| Project | Mirror address | rsync (downstream mirrors) |
|---|---|---|
| debianDebian archive and security updates | https://debian.mirrors.oiv.ae/ |
rsync://debian.mirrors.oiv.ae/debian/plain (rsync, port 873) or TLS (rsync-ssl, port 874) |
| opensuseopenSUSE Leap / Tumbleweed repositories | https://opensuse.mirrors.oiv.ae/ |
rsync://opensuse.mirrors.oiv.ae/opensuse/plain (rsync, port 873) or TLS (rsync-ssl, port 874) |
| opnsenseOPNsense firewall packages and installer images | https://opnsense.mirrors.oiv.ae/ |
rsync://opnsense.mirrors.oiv.ae/opnsense/plain (rsync, port 873) or TLS (rsync-ssl, port 874) |
| proxmoxProxmox VE packages and ISOs | https://proxmox.mirrors.oiv.ae/ |
rsync://proxmox.mirrors.oiv.ae/proxmox/plain (rsync, port 873) or TLS (rsync-ssl, port 874) |
Only the repositories listed above are mirrored; other paths return “not found”. In scripts and configuration management, keep the host name in one variable and the upstream path unchanged. Trust the original keys, not the mirror: every project below links, in bold, to the project's own page with its key and fingerprint, and shows how to check the signed files you download from here yourself. This node checks every file the same way: the verified files and their checksums.
openSUSE (zypper)
Add the mirror with a higher priority (a lower number) than the defaults; zypper then downloads
from here and keeps the original repositories as a fallback. $releasever keeps the
repository on your Leap version after an upgrade; keep the single quotes.
sudo zypper ar -f -p 90 'https://opensuse.mirrors.oiv.ae/distribution/leap/$releasever/repo/oss/' oiv-leap-oss
sudo zypper ar -f -p 90 'https://opensuse.mirrors.oiv.ae/distribution/leap/$releasever/repo/non-oss/' oiv-leap-non-oss
sudo zypper ref
On Leap 16, updates and security fixes are published into repo/oss and
repo/non-oss; there is no separate update repository.
Check and undo
The oiv- repositories should be listed with priority 90. To undo, remove them.
zypper lr -uP
sudo zypper rr oiv-leap-oss oiv-leap-non-oss
Verify the signature yourself
zypper checks the repository metadata with the openSUSE Project Signing Key, which is already on your
system (package openSUSE-build-key). Do not take the key from this mirror: the original is at
download.opensuse.org/…/repomd.xml.key;
its fingerprint and validity are published by openSUSE on
openSUSE: Signing Keys.
curl -fsSO https://download.opensuse.org/distribution/leap/16.1/repo/oss/repodata/repomd.xml.key
gpg --show-keys --with-fingerprint repomd.xml.key # compare with openSUSE: Signing Keys
gpg --import repomd.xml.key
curl -fsSO https://opensuse.mirrors.oiv.ae/distribution/leap/16.1/repo/oss/repodata/repomd.xml
curl -fsSO https://opensuse.mirrors.oiv.ae/distribution/leap/16.1/repo/oss/repodata/repomd.xml.asc
gpg --verify repomd.xml.asc repomd.xml # Good signature from "openSUSE Project Signing Key"
OPNsense (firmware and packages)
- Sign in to the OPNsense web interface.
- Go to System ▸ Firmware ▸ Settings.
- In Mirror, choose (custom) and enter the mirror address, without a path
(OPNsense adds the ABI and release itself):
https://opnsense.mirrors.oiv.ae - Select Save, then go to Status and select Check for updates.
To undo, set Mirror back to (default) and save.
Verify downloaded images yourself
OPNsense signs its images and checksum files with an RSA key per release series. Take the public key from the
original site, not from this mirror:
pkg.opnsense.org/releases/26.1/OPNsense-26.1.pub
(the key of the newest series is also printed in
pkg.opnsense.org/releases/mirror/README).
OPNsense describes the check in its
installation guide; it publishes no key fingerprint, so compare
the key with the copies on opnsense.org, the OPNsense forum and the project's GitHub.
curl -fsSO https://pkg.opnsense.org/releases/26.1/OPNsense-26.1.pub
curl -fsSO https://opnsense.mirrors.oiv.ae/releases/26.1/OPNsense-26.1.6-checksums-amd64.sha256
curl -fsSO https://opnsense.mirrors.oiv.ae/releases/26.1/OPNsense-26.1.6-checksums-amd64.sha256.sig
openssl base64 -d -in OPNsense-26.1.6-checksums-amd64.sha256.sig -out checksums.sig
openssl dgst -sha256 -verify OPNsense-26.1.pub -signature checksums.sig OPNsense-26.1.6-checksums-amd64.sha256 # Verified OK
openssl sha256 OPNsense-26.1.6-dvd-amd64.iso.bz2 # compare with the line in the checksum file
Debian
Debian packages: the
archive and the security archive are
being copied; the how-to for apt appears here as soon as the first sync has finished. Until then keep
deb.debian.org and security.debian.org. The installation images are available now (below).
Debian security updates from this mirror
- Debian 13 (trixie). Open
/etc/apt/sources.list.d/debian.sources(a Proxmox VE host has the same file). In the entry withsecurity.debian.org(suitetrixie-security) change only the host in theURIs:line; keep your ownComponents::Types: deb URIs: https://debian.mirrors.oiv.ae/debian-security Suites: trixie-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg - Debian 12 (bookworm). Open
/etc/apt/sources.listand change the host in the line withsecurity.debian.org:deb https://debian.mirrors.oiv.ae/debian-security bookworm-security main contrib non-free-firmware - Run
sudo apt update. In the output the security lines come fromdebian.mirrors.oiv.ae.
Undo: write https://security.debian.org/debian-security back and run sudo apt update.
Debian packages from this mirror
- Debian 13 (trixie). Open
/etc/apt/sources.list.d/debian.sources. In the entry withdeb.debian.orgchange only the host in theURIs:line; keep your ownSuites:andComponents::Types: deb URIs: https://debian.mirrors.oiv.ae/debian Suites: trixie trixie-updates Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg - Debian 12 (bookworm). Open
/etc/apt/sources.listand change the host in the lines withdeb.debian.org(or of another Debian mirror named there):deb https://debian.mirrors.oiv.ae/debian bookworm main contrib non-free-firmware deb https://debian.mirrors.oiv.ae/debian bookworm-updates main contrib non-free-firmware - Run
sudo apt update.
Undo: write https://deb.debian.org/debian back and run sudo apt update.
apt checks the archives with the Debian archive keys from the package debian-archive-keyring. The originals
and their fingerprints are on Debian's own page
ftp-master.debian.org/keys.html
(the Debian 13 archive key and the Debian 13 security key).
Installation images, same layout as cdimage.debian.org (current release; see the list above for the image sets):
https://debian.mirrors.oiv.ae/debian-cd/
Verify the images yourself
Debian signs the checksum files (SHA512SUMS.sign, SHA256SUMS.sign) with the Debian CD signing key.
Get the key from Debian, not from this mirror, and compare its fingerprint with the one Debian publishes on
debian.org/CD/verify
(key server of the Debian project: keyring.debian.org).
curl -fsS 'https://keyring.debian.org/pks/lookup?op=get&search=debian-cd@lists.debian.org' | gpg --import
gpg --fingerprint debian-cd@lists.debian.org # compare with debian.org/CD/verify
curl -fsSO https://debian.mirrors.oiv.ae/debian-cd/current/amd64/iso-dvd/SHA512SUMS
curl -fsSO https://debian.mirrors.oiv.ae/debian-cd/current/amd64/iso-dvd/SHA512SUMS.sign
gpg --verify SHA512SUMS.sign SHA512SUMS # Good signature from "Debian CD signing key"
sha512sum -c --ignore-missing SHA512SUMS # after downloading the image
Proxmox VE
Proxmox VE 9 without a paid subscription (the case for this mirror: it carries the
pve-no-subscription and pve-test repositories, not the enterprise one).
Two changes, then apt update:
- Switch the enterprise repository off. A new installation enables it, and without a subscription key
it only produces errors. In
/etc/apt/sources.list.d/pve-enterprise.sourcesadd the lineEnabled: no(ifceph.sourcesuses the enterprise repository, do the same there). In the web interface: Node → Updates → Repositories, select the entry, Disable. - Point the no-subscription repository to this mirror, in
/etc/apt/sources.list.d/proxmox.sources: replace the host name only.
Types: deb
URIs: https://proxmox.mirrors.oiv.ae/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
If the host still has the older one-line file /etc/apt/sources.list.d/pve-no-subscription.list, take it out of
sources.list.d (keep a copy elsewhere) once proxmox.sources is in place, or disable the entry in the web
interface: the same repository twice makes apt print warnings. The Debian base of the host stays as it is
(see Debian below), and so do the Ceph repositories. Proxmox describes the no-subscription repository as meant for testing
and non-production use. The “No valid subscription” notice of the web interface is Proxmox's own and stays.
To undo, put back download.proxmox.com.
Verify the signature yourself
apt checks the repository with the Proxmox release key from your host (proxmox-archive-keyring). The original
keyring is on Proxmox's own server, not on this mirror:
proxmox-archive-keyring-trixie.gpg;
its checksum is published by Proxmox on
Proxmox's Package Repositories page.
It holds the Proxmox Trixie Release Key and the Proxmox Bookworm Release Key.
apt install gpgv # once: the check needs gpgv
curl -fsSO https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg
sha256sum proxmox-archive-keyring-trixie.gpg # compare with Proxmox's page
curl -fsSO https://proxmox.mirrors.oiv.ae/debian/pve/dists/trixie/InRelease
gpgv --keyring ./proxmox-archive-keyring-trixie.gpg InRelease # Good signature from "Proxmox Trixie Release Key"
Installation images, same layout as download.proxmox.com:
https://proxmox.mirrors.oiv.ae/iso/
Release signing keys:
https://proxmox.mirrors.oiv.ae/debian/
(e.g. proxmox-release-bookworm.gpg; a Proxmox VE 9 host already has its keyring from the package proxmox-archive-keyring); verify them against
Proxmox's Package Repositories page.
Run a downstream mirror with rsync (plain or TLS)
Downstream mirrors are welcome. Copy a project to your own server, for a campus, office or ISP network. Use the project's host name; the rsync module is the project name.
rsync -avH --delete --delay-updates \
rsync://opensuse.mirrors.oiv.ae/opensuse/ /srv/mirror/opensuse/
-Hkeeps hard links, which the openSUSE tree uses heavily.--deleteremoves files that were removed upstream.--delay-updatesputs updated files in place at the end, so clients never see a half-synced repository.
Over TLS (port 874): the same modules, and your mirror can check that it talks to
this server. rsync-ssl comes with rsync and verifies our certificate against the system CA
store and the host name in the URL:
rsync-ssl -avH --delete --delay-updates \
rsync://opensuse.mirrors.oiv.ae/opensuse/ /srv/mirror/opensuse/
Use the host name, never an IP address. Leave RSYNC_SSL_CA_CERT unset and never set
RSYNC_SSL_CA_CERT= (empty), RSYNC_SSL_SKIP_HOSTNAME_CHECK=1 or
RSYNC_SSL_ALLOW_INSECURE_*: each one turns the check off. If TLS fails, do not fall
back to plain rsync without noticing.
Schedule it with a systemd timer. Sync at most every 4 hours, never in our business hours (Mon–Fri 08:30–17:00 Asia/Dubai), preferably at night (22:00–06:00), and add a random delay. Check your disk space against the size of the tree first, and tell us your mirror's address so we can plan capacity.
# /etc/systemd/system/mirror-downstream.timer
[Timer]
OnCalendar=*-*-* 22,02:17:00 Asia/Dubai
RandomizedDelaySec=15m
Persistent=true
[Install]
WantedBy=timers.target
Acceptable use
The mirror is free and open to everyone. A few rules keep it fast for all users.
- Use it for package installs, updates and downstream mirrors.
- Downstream mirrors: sync no more often than the schedule above and use one connection per project.
- Automated jobs: add a random delay so many machines don't start at the same minute.
- Abuse or excessive load may be rate-limited or blocked.
Get involved
Which projects come next is decided with the people who use them. To suggest one, send the project name, its upstream rsync source, its approximate size, who uses it and whether you can help maintain it to mirror-admin@oiv.ae. Offers of bandwidth, storage or a hosting node in a GCC country are welcome too.