Обновление парка машин в закрытом контуре — задача, с которой сталкиваются многие учреждения. При отсутствии локального зеркала каждая машина тянет пакеты из интернета: это медленно, создаёт нагрузку на канал и делает невозможным централизованное обновление при ограниченном доступе. Локальный сервер обновлений решает эту проблему: он один раз скачивает репозиторий Альт Линукс, раздаёт его по HTTP внутри локальной сети, а клиенты подключаются к нему как к обычному источнику APT.
💡 Присоединяйтесь к нашим сообществам!
Будьте в курсе новых статей, обновлений и полезных материалов:
📑 Содержание
Локальное зеркало — это не просто кэш пакетов. Это единая точка обновления для всего парка машин: вы контролируете, какие пакеты и когда попадают в сеть, экономите интернет-трафик и можете обновлять машины даже при полностью закрытом внешнем канале.
Архитектура решения
В схеме участвуют два ключевых компонента:
- Сервер обновлений — разворачивается на машине Альт Линукс Образование 11 с адресом
192.168.168.9. Скачивает зеркало ветки p11 в каталог/srv/public/mirrorи раздаёт его по HTTP через Nginx. - Клиентские машины — подключаются к локальному зеркалу через
apt-repoи получают обновления из локальной сети. В качестве примера используется машинаk312-07.
Клиенты обращаются к серверу по HTTP, а сам сервер не требует доступа в интернет после первичного скачивания зеркала.
Исходные данные
| Компонент | Адрес | Описание |
|---|---|---|
| Сервер обновлений | 192.168.168.9 | Альт Линукс Образование 11, Alterator-mirror + Nginx |
| Клиент | k312-07 | Альт Линукс Образование 11 |
| Ветка репозитория | p11 | Соответствует Альт Линукс Образование 11 |
| Каталог зеркала | /srv/public/mirror/p11/branch | Содержит x86_64, noarch, x86_64-i586 |
Сервер публикует зеркало по HTTP, клиенты подключаются к нему как к единственному источнику.

Рисунок 1. Архитектура сервера обновлений и клиентов
1. Настройка сервера обновлений
1.1. Требования к системе
Минимальные требования к серверу — не менее 100 ГБ дискового пространства (полное зеркало p11 со всеми архитектурами занимает десятки гигабайт). Проверим ресурсы командой:
free -h && df -h /
1.2. Установка Alterator-mirror
В официальном репозитории Альт Линукс присутствует Alterator-mirror. Выполняем:
apt-get install alterator-mirror
Открываем веб-интерфейс Alterator (обычно https://192.168.168.9:8080), переходим в раздел «Серверы» → «Сервер обновлений» и указываем:
Одиннадцатая платформа (p11). Выбираем архитектуру и пункты:
- Локальное зеркало репозитория.
- Опубликовать как репозиторий для автоматических обновлений.

Рисунок 2. Выбор репозитория для скачивания
И нажимаем «Применить».
Каталог хранения: /srv/public/mirror (значение по умолчанию).
Запускаем скачивание и дожидаемся завершения.

Рисунок 3. Alterator. Сервер обновлений
1.3. Проверка структуры зеркала
Убедимся, что зеркало скачано полностью:
ls -la /srv/public/mirror/p11/
ls -la /srv/public/mirror/p11/branch/
Ожидаем увидеть каталоги архитектур:
/srv/public/mirror/p11/branch/
├── files/
├── i586/
├── noarch/
├── x86_64/
└── x86_64-i586/
Внутри каждой архитектуры — подкаталоги base/, RPMS.classic/, RPMS.gostcrypto/.
1.4. Установка Nginx
Устанавливаем веб-сервер:
apt-get install nginx
Создаём конфигурационный файл для публикации зеркала:
cat > /etc/nginx/sites-available.d/repo.conf << 'EOF'
server {
listen 80;
server_name 192.168.168.9;
access_log /var/log/nginx/repo-access.log;
error_log /var/log/nginx/repo-error.log;
location /mirror {
alias /srv/public/mirror;
autoindex on;
}
}
EOF
Активируем конфигурацию и запускаем сервис:
ln -s /etc/nginx/sites-available.d/repo.conf /etc/nginx/sites-enabled.d/
systemctl enable --now nginx
1.5. Проверка установки
Убедимся, что конфигурация корректна и сервис работает:
nginx -t
systemctl status nginx
ss -tlnp | grep ':80 '
curl -I http://192.168.168.9/mirror/p11/branch/
Ответ HTTP/1.1 200 OK означает, что зеркало доступно по HTTP.
1.6. Итоговые URL для клиентов
| Назначение | URL |
|---|---|
| Основной репозиторий (x86_64) | http://192.168.168.9/mirror/p11/branch/x86_64 |
| Архитектурно-независимые пакеты | http://192.168.168.9/mirror/p11/branch/noarch |
| 32-битные пакеты для 64-битной системы | http://192.168.168.9/mirror/p11/branch/x86_64-i586 |
| Файлы для установщика | http://192.168.168.9/mirror/p11/branch/files/x86_64/ |
2. Подключение локального репозитория на клиенте
2.1. Определение текущей версии системы
Перед настройкой источников проверяем состояние клиента:
cat /etc/altlinux-release
rpm -q basesystem bash
Если система на p11 (например, ALT Workstation K 11.x) — переходим к настройке источников.
2.2. Настройка источников (для клиентов на p11)
Очищаем текущие источники и прописываем локальное зеркало:
apt-repo rm all
apt-repo add http://192.168.168.9/mirror/p11/branch
Добавляем репозиторий x86_64-i586 (нужен для 32-битных пакетов, например NVIDIA):
echo 'rpm [p11] http://192.168.168.9/mirror p11/branch/x86_64-i586 classic' >> /etc/apt/sources.list
apt-repo rm all— удаляет все текущие источники, включая стандартные;apt-repo add— добавляет локальное зеркало (x86_64 и noarch);- строка с
x86_64-i586— добавляется вручную, так какapt-repo addнекорректно разбирает URL с архитектурой в конце.
Альтернатива одним действием (перезаписывает sources.list целиком):
cat > /etc/apt/sources.list << 'EOF'
rpm [p11] http://192.168.168.9/mirror p11/branch/x86_64 classic
rpm [p11] http://192.168.168.9/mirror p11/branch/noarch classic
rpm [p11] http://192.168.168.9/mirror p11/branch/x86_64-i586 classic
EOF
Проверяем результат:
apt-repo
cat /etc/apt/sources.list
Обновляем индекс пакетов:
apt-get update
2.3. Обновление системы в пределах p11
Выполняем обновление и обновление ядра:
apt-get dist-upgrade
update-kernel
reboot
Управление веб-сервером
Перезапуск Nginx:
systemctl restart nginx
Просмотр логов доступа к зеркалу:
tail -f /var/log/nginx/repo-access.log
Заключение
Выполнив описанные шаги, мы получаем полноценный локальный сервер обновлений: Alterator-mirror отвечает за скачивание репозитория, Nginx — за его раздачу по HTTP, а клиенты подключаются к нему через apt-repo. Обновление парка машин выполняется в закрытом контуре, без нагрузки на внешний канал и с централизованным контролем версий.
Источники
🚀 Понравилась статья?
Подписывайтесь на наши соцсети, чтобы не пропустить новые полезные материалы!