Membuat Mirror Repositori DNF

Rowan Puttergill, Tim Dokumentasi Fedora Versi F42 and newer Last review: 2026-05-10
Mirror repositori DNF lokal memungkinkan Anda menyajikan pembaruan paket Fedora dari infrastruktur Anda sendiri. Ini berguna bagi organisasi yang mengelola banyak sistem Fedora, lingkungan jaringan yang terbatas atau berbiaya berdasarkan pemakaian, atau untuk menguji pembaruan pada sistem staging sebelum menerapkannya ke production.

Prasyarat

Ruang disk

Gunakan dnf repoinfo untuk memeriksa ukuran tiap repositori yang ingin Anda mirror:

$ dnf repoinfo fedora updates

Field Repodata Info: Size pada output menunjukkan total ukuran paket untuk tiap repositori. Jalankan perintah yang sama untuk repositori tambahan apa pun yang ingin Anda mirror, lalu gunakan dnf repolist untuk melihat ID repositori yang tersedia.

Ukuran repositori bertambah sepanjang siklus hidup rilis karena pembaruan terus terakumulasi. Repositori updates khususnya akan terus membesar sejak hari rilis hingga end-of-life. Sediakan ruang tambahan di luar estimasi awal. Repositori dapat bertambah hingga 30% atau lebih selama siklus hidup suatu rilis, jadi rencanakan dengan mempertimbangkan hal itu.

Menginstal dnf5-plugins

Perintah dnf reposync berasal dari paket dnf5-plugins:

$ sudo dnf install dnf5-plugins

HTTP server

Web server diperlukan untuk menyajikan konten mirror ke sistem lain. Panduan ini menggunakan Apache httpd, tetapi nginx juga dapat digunakan.

$ sudo dnf install httpd
$ sudo systemctl enable --now httpd

Menyinkronkan repositori

Gunakan dnf reposync untuk mengunduh isi repositori ke direktori lokal. Contoh berikut menyinkronkan repositori fedora dan updates:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror

Untuk membatasi sinkronisasi ke arsitektur tertentu dan menghindari pengunduhan paket yang tidak Anda perlukan:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --arch=x86_64 --arch=noarch

Untuk menghapus paket dari mirror lokal yang sudah tidak ada lagi di repositori remote:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --delete

Konten yang telah disinkronkan sekarang dapat diakses di http://localhost/mirror/, atau pada hostname maupun alamat IP server Anda.

Sinkronisasi pertama akan mengunduh seluruh repositori dan dapat memakan waktu lama tergantung koneksi Anda. Sinkronisasi berikutnya hanya mengunduh paket baru atau yang berubah.

Mengonfigurasi sistem klien

Pada setiap sistem yang harus menggunakan mirror lokal, buat berkas .repo di /etc/yum.repos.d/. Sebagai contoh, /etc/yum.repos.d/local-mirror.repo:

[local-fedora]
name=Local Fedora mirror
baseurl=http://mirror-server/mirror/fedora/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch

[local-updates]
name=Local Fedora updates mirror
baseurl=http://mirror-server/mirror/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch

Ganti mirror-server dengan hostname atau alamat IP server mirror Anda.

Untuk memastikan klien hanya menggunakan mirror lokal, nonaktifkan repositori Fedora bawaan dengan menetapkan enabled=0 di /etc/yum.repos.d/fedora.repo dan /etc/yum.repos.d/fedora-updates.repo.

Verifikasi GPG

dnf reposync mengunduh metadata repositori dan paket beserta signature-nya. Klien menggunakan Fedora GPG key yang sudah ada di /etc/pki/rpm-gpg/ untuk memverifikasi paket, sehingga tidak diperlukan konfigurasi key tambahan.

Menjaga mirror tetap mutakhir

Siapkan service dan timer systemd untuk menyinkronkan mirror secara otomatis.

Buat berkas service di /etc/systemd/system/dnf-mirror.service:

[Unit]
Description=Sync DNF repository mirror

[Service]
Type=oneshot
ExecStart=dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --delete

Buat timer di /etc/systemd/system/dnf-mirror.timer:

[Unit]
Description=Daily DNF repository mirror sync

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Aktifkan dan jalankan timer:

$ sudo systemctl enable --now dnf-mirror.timer

Verifikasi bahwa timer aktif:

$ systemctl status dnf-mirror.timer