Настройка зеркала репозитория ALT Linux на Synology

С момента, как зоопарк устройств и VM на AltLinux перевалил уже за 5 штук, стала всё острее чувствоваться проблема, что я скачиваю по 5 раз одно и тоже на каждой машине. А с погружением в тему сборки пакетов, когда hasher каждый раз настраивает изолированную среду, выкачивая пакеты ещё чаще. Пришло осознание, что пора развернуть локальное зеркало на своём Synology NAS.

Итак из статьи мы узнаём, что с помощью rsync можно сделать себе зеркало:

rsync -va --stats --delete-after rsync.altlinux.org::ALTLinux/Sisyphus/ /srv/public/mirror/Sisyphus/
Ручное зеркалированние

Почему rsync, а не ftp например? Всё просто - rsync умеет, как Яндекс.Диск или Dropbox синхронизировать, только то, что изменилось во внешнем источнике.

Какой у нас план?
1. Создадим новую папку, на NAS, которая и будет использоваться для зеркалированния, а так же быть доступной по FTP
2. Настроим периодическую задачу c rsync синхронизацией
3. Настроим FTP сервер
4. И добавим новый репозиторий на локальных машинах для обновления и для hasher

1. Создание новой папки

Заходим в Панель управления, создаём папку общего доступа без любых дополнений по защите, чтобы не распухал объём со временем

Открываем приложение - Панель управления
Создаём папку общего доступа

Итоговый результат:

Кстати именно 352Гб весит весь Сизиф! На сегодня 08.12.2024

2. Настроим периодическую задачу Rsync

Я пойду путём, когда мы можем просто подправить задачу или например добавить к Sisyphus ещё и P11 в последствии

Текстовый редактор

Открываем текстовый редактор в Synology

Окно Текстовый редактор
rsync -va --stats --delete-after mirror.datacenter.by::ALTLinux/Sisyphus/ /volume1/altmirror/Sisyphus/
Добавляем Sisyphus к себе

И добавляем строку, для синхронизации. Важные пояснения
- mirror.datacenter.by - сервер с которого будем скачивать, после тестов моих, данный сервер оказался быстрее остальных. Все зеркала можно посмотреть здесь
- ::ALTLinux/Sisyphus/ - мы будем копировать Sisyphus ветку
- /volume1/altmirror/Sisyphus/ - путь до созданной папки и то что мы хотим Sisyphus держать в папке Sisyphus, на случай если ещё потом рядом захочется Р11 иметь.

Сохранение текстового документа

Сохраняем. Я сохранил в каталог home, можете сохранить в любой, главное запомнить куда.

2.1. Периодическая задача

Скрипт готов, теперь нужно чтобы он запускался раз в сутки ночью, когда новые пакеты уже попали в Сизиф и их можно оттуда забирать.

Для этого снова открываем Панель управления и самом конце списка выбираем Планировщик задач создаём Запланированную задачу - Скрипт, заданный пользователем.

Запланированная задача - Скрипт, заданный пользователем

Далее идёт настройка по вкладкам
Вкладка: Общие - нужно назвать задачу, чтобы было понятно Вам. Пользователь или root или например если вы админ, можно и текущий. Я оставил свой. Снимаем галочку Включено - первая выкачка может занять много времени, зависит от скорости интернета, нужно будет выкачать 350Гб, что может занять более суток в некоторых случаях.

Вкладка: Расписание
Я ничего не менял и оставил ежедневно в полночь. Но можно перенести например на 3-4 утра, когда, точно в сети нет активности.

Вкладка: Настройки задач
Добавляем строку, на выполнение, я покажу, как пример свою. Вам же нужно указать путь до файла который, мы создали на прошлом шаге.

bash /volume1/homes/Toxblh/alt-repo.sh
Содержимое для Скрипт, заданный пользователем. Поменять Toxblh на своего!

После того, как создали, впервые запускаем скрипт, он впервые выкачает все данные с внешнего сервера. Для этого нужно кликнуть по задаче, чтобы она выделилась и нажать кнопку запустить сверху.

В Synology не будет видно прогресса, но мы можем посмотреть завершилась ли задача. Для этого выбираем нашу задачу. Нажимаем Действие - Посмотреть результат.

Действие - Посмотреть результат
Задача выполняется

Когда появится время остановки - значит всё завершилось

Задача выполнена

После первого завершения, не забудьте включить задачу, установив галочку и примените изменения

Установить галочку и применить

На этом настройка периодической задачи завершена.

3. Настройка FTP сервера

Теперь нужно настроить возможность анонимного доступа к данной папке по сети. Для этого открываем Панель управления - Файловые службы - Вкладка FTP и включаем службу FTP

Панель управления - Файловые службы - Вкладка FTP

Доходим до конца страницы, раздел общие, кнопка - Дополнительные настройки
В открывшемся окне, ставим галочку в разделе Настройки безопасности напротив опции Включить анонимную учётную запись FTP

Включить анонимную учётную запись FTP

Мы включили доступ по FTP, осталось выдать разрешение анонимной учётной записи, на чтение нашего каталога зеркала. Для этого переходим снова в раздел
Панель Управления - Папка общего доступа выбираем нашу папку и нажимаем Редактировать на панели сверху


Переходим на вкладку Разрешения в выпадающем меню, переключитесь на Внутренний пользователь системы

Разрешения - Внутренний пользователь системы

Находим в списке Annonymous FTP/Presto/WebDAV пользователя и выдаём разрешение, установив галочку в колонке Только для чтения. Нажимаем кнопку Сохранить.

Annonymous FTP - Только для чтения

Всё готово - папка стала доступна по адресу вашего NAS в сети.
У меня это ftp://192.168.1.42

Проверка работы ftp в Nautilus

4. Добавление нового репозитория в системе

На этом настройка NAS завершена, осталось настроить пакетный менеджер. Я покажу два пути, они равнозначные.

4.1 Путь первый Synaptic

Для этого откроем Synaptic

Программа управления пакетами Synaptic

Вводим пароль, администратора

Запрос пароля администратора

Внутри программы, открываем Параметры - Репозитории

Параметры - Репозитории

В открывшемся окне, создаём 3 дополнительных репозитория по образу и подобию тех, что у нас уже включены в системе.
В моём случае NAS это ftp://192.168.1.42/altmirror где altmirror это папка ftp которую я создал. В "Дистрибутив" указываем, полностью аналогично репозиториям Альта
Sisyphus/noarch
Sisyphus/x86_64
Sisyphus/x86_64-i586

Раздел - classic

Добавление репозиториев

Поставщика, тоже не забывайте указать, для проверки подлинности пакетов - alt

Поставщик - alt

Нажимаем кнопку "ОК"

Если нас уже всё скачал - можете проверить доступность репозиториев, нажав в Synaptic кнопку Получить сведения

Получить сведения

Если всё прошло успешно и без ошибок. Значит можно ещё раз открыть Параметры - Репозитории и выключить сервера Alt - сняв галочки напротив их репозиториев, тем самым полностью переключившись на свой репозитории. Однако так, вы потеряете возможность обновиться вне дома, без доступа к NAS. В моём случае это стационарный ПК, так что проблем нет.

Оставил только репозиторий на NAS

После изменений проверяем ещё раз нажав Получить сведения. Если всё без ошибок - поздравляю. Вы начали использовать сверх быстрое зеркало доступное во внутренней сети. На этом всё.

4.2 Путь второй, настройка в файлах, а так же hasher

Данный путь мало чем отличается от первого, только теперь мы будем редактировать файлы напрямую, а не использовать GUI в виде Synaptic.

Итак для того, чтобы добавить в обычный APT новые репозитории, нужно отредактировать файл /etc/apt/sources.list добавив в него дополнительные строки

rpm [alt] ftp://192.168.1.42/altmirror/ Sisyphus/x86_64 classic
rpm [alt] ftp://192.168.1.42/altmirror/ Sisyphus/x86_64-i586 classic
rpm [alt] ftp://192.168.1.42/altmirror/ Sisyphus/noarch classic
Замените путь до своего NAS и папки
Итоговый вид файла

Для того, чтобы отключить репозитории Альта по умолчанию, нужно закомментировать строки в файле /etc/apt/sources.list.d/alt.list

Выключаем стандартные сервера

На этом настройка репозиториев для Альт завершена

4.3 Бонус - настройка репозиториев для hasher

Аналогична настройке из прошлого пункта, но в данном случае нужно изменить файл /etc/eterbuild/apt/sources.list.sisyphus который появится в системе, после установки hasher

hasher конфигурация

Заключение

Мы смогли полностью переключиться на свой личный репозиторий и даже при проблемах с интернетом, можно будет установить дополнительный софт на свои машины. Так же любые обновления системы проходят очень быстро без ожидания закачки по внешней сети, так как у нас автоматически всё стягивается в NAS.

Можно изменить то, какие именно дистрибутивы мы будем клонировать, не ограничиваясь Альт. Аналогичным образом можно настроить задачи в соседние папки например репозитория Fedora, Ubuntu, РедОС, Росы или Астры и схожим образом добавить FTP NAS, как источник.

Показанный принцип можно применить и к любому другому решению, а не только Synology. Требуется только достаточно места на диске, установленный rsync и периодическая задача, которую можно решить с помощью cron например. И настройки ftp сервера с анонимным доступом на чтение.

Репозиторий можно организовать даже на вашем ПК, если достаточно свободного места и указать репозиторий, как путь до файла file:/home/me/repo-clone/