توی محیطهای ایزوله (Airgap) که دسترسی به اینترنت وجود نداره، یکی از چالشهای اصلی بهروزرسانی و نصب بستههای سیستمی از طریق apt یا apt-get هست. راهحل استاندارد اینه که یک APT Mirror در داخل شبکه راهاندازی کنی و سیستمها رو به اون میرور وصل کنی. توی این مقاله دو روش عملی برای این کار رو بررسی میکنیم.
مقدمه: چرا APT Mirror در Airgap؟
بدون دسترسی به اینترنت، دستور apt update خطا میده. ایده کار سادست: یک ماشین که به اینترنت دسترسی داره (حتی به صورت موقت و محدود) بستهها رو دانلود میکنه و بعد از طریق یک وبسرور مثل Nginx داخل شبکه توزیع میکنه. به این کار Mirroring میگن. دو ابزار محبوب برای این کار apt-mirror (قدیمی و ساده) و aptly (مدرن و حرفهای) هستن.
روش اول: ابزار apt-mirror
سادهترین راه. apt-mirror با دستور زیر نصب میشه:
sudo apt install -y apt-mirrorتنظیم فایل mirror.list
فایل کانفیگ اصلی در /etc/apt/mirror.list قرار داره. ساختارش به این شکله:
############# /etc/apt/mirror.list ############
set base_path /var/spool/apt-mirror
set nthreads 20
set _tilde 0
# Ubuntu 22.04 (Jammy)
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
# Debian 12 (Bookworm)
deb http://deb.debian.org/debian bookworm main contrib
deb http://deb.debian.org/debian bookworm-updates main contrib
deb http://security.debian.org/debian-security bookworm-security main contrib
clean http://archive.ubuntu.com/ubuntu
clean http://deb.debian.org/debianاجرای همگامسازی و سرو کردن
بعد از تنظیم فایل، با دستور زیر همگامسازی شروع میشه:
sudo apt-mirrorبسته به تعداد و حجم ریپوزیتوریها و پهنای باند، ممکنه چندین ساعت طول بکشه. بعد از اتمام، محتویات در مسیر /var/spool/apt-mirror/mirror ذخیره میشن. حالا کافیه با Nginx سروش کنی:
sudo apt install -y nginx
sudo ln -s /var/spool/apt-mirror/mirror /var/www/html/apt-mirrorروش دوم: ابزار aptly
Aptly یه ابزار پیشرفتهتر و مدرنتر برای مدیریت APT Repositoryهاست. از Snapshot پشتیبانی میکنه، یعنی میتونی در لحظات مشخص یک عکسبرداری (Snapshot) بگیری و بعداً بهش برگردی. این قابلیت توی سناریوهای Airgap خیلی به کار میاد چون تغییرات ریپو رو کنترل میکنی.
نصب aptly
echo "deb http://repo.aptly.info/aptly squeeze main" | sudo tee /etc/apt/sources.list.d/aptly.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A7B81F86
sudo apt update
sudo apt install -y aptlyایجاد Mirror و بروزرسانی
# ایجاد یک میرور از اوبونتو ۲۲.۰۴
aptly mirror create -architectures=amd64 jammy-main http://archive.ubuntu.com/ubuntu jammy main
# بروزرسانی میرور (دانلود بستهها)
aptly mirror update jammy-mainSnapshot و Publish
# گرفتن snapshot از وضعیت فعلی میرور
aptly snapshot create jammy-snap-2025-12-01 from mirror jammy-main
# انتشار snapshot به عنوان یک APT Repository
aptly publish snapshot -architectures=amd64 -distribution=jammy jammy-snap-2025-12-01
# سرو کردن با وب سرور
sudo ln -s ~/.aptly/public /var/www/html/aptlyaptly یک مزیت بزرگ دیگه هم داره: میتونی چندین ریپو رو با هم Merge کنی و فقط snapshot ترکیبی رو منتشر کنی. این کمک میکنه حجم میرور نهایی کمتر و مدیریتپذیرتر باشه.
تفاوت اصلیapt-mirrorوaptly:apt-mirrorصرفاً یک همگامسازی ساده (Mirror) انجام میده، ولیaptlyمدیریت نسخه (Versioning) و عکسبرداری لحظهای (Snapshotting) رو هم فراهم میکنه.
جدول سرویسهای عمومی APT Mirror در ایران
اگر نیاز داری از یک میرور عمومی داخل ایران استفاده کنی (مثلاً به عنوان upstream در apt-mirror یا aptly)، چند ارائهدهنده خوب وجود دارن:
| ارائهدهنده | آدرس مخزن | مستندات |
|---|---|---|
| ArvanCloud | http://mirror.arvancloud.ir/ubuntu | arvancloud.ir |
| Liara | https://linux-mirror.liara.ir/repository/debian/ | liara.ir |
| AminIDC | https://mirror.aminidc.com/ | mirror.aminidc.com |
میتونی هر کدوم از این آدرسها رو به عنوان upstream توی فایل mirror.list یا در دستور aptly mirror create استفاده کنی. اینطوری علاوه بر سرعت بیشتر، ترافیک بینالمللی هم مصرف نمیکنی.
جمعبندی
برای راهاندازی APT Mirror در محیط Airgap دو راه داری: اگر به دنبال یه راهحل ساده و سریعی، apt-mirror کافیه. اما اگه نیاز به کنترل نسخه، snapshot و مدیریت حرفهایتر داری، aptly انتخاب مناسبتریه. مهم نیست کدوم ابزار رو انتخاب میکنی؛ نهایتاً بعد از همگامسازی، محتویات رو با Nginx یا Apache سرو میکنی و سیستمهای داخل شبکه رو به اون آدرس هدایت میکنی.