======Настройка Rsync зеркал репозиториев на DSM 7.2====== {{:software:nas:rsync_mirror_dsm_1.png? |300}} Программы, которые можно установить с помощью Центра приложений или любого другого пакетного менеджера, хранятся в репозиториях. Репозитории представляют из себя обычное хранилище пакетов и специальных файлов, доступное через интернет. Поэтому у каждого репозитория есть свой адрес. Например, официальные основные репозитории Ubuntu находятся по адресу [[http://archive.ubuntu.com/ubuntu/|http://archive.ubuntu.com/ubuntu]]. =====Введение===== Необходимость в локальных зеркалах репозиториев возникает когда пользователям локальной сети закрывают доступ к определенным ресурсам в сети интернет. Сервер с локальными зеркалами, ранее синхронизировавшийся с официальными репозиториями, будет предоставлять доступ к имеющимся пакетам пользователям домашней (рабочей) локальной сети. {{:software:linux_server:repo_info.png? |}} В качестве сервера будет использоваться устройство [[software:nas:synology_diskstation_ds218#synology_ds720|Synology DS720+]], с установленными 2 HDD [[hardware:hdd_8tb_seagate_ironwolf_pro_st8000ne001|Seagate IronWolf Pro]] 2 SSD [[hardware:m2_ssd_samsung_970_evo_plus|M.2 накопитель Samsung 970 EVO Plus]] в качестве SSD-кэш на томе, чтобы повысить производительность произвольного доступа.\\ В основе своей зеркало будет создано с помощью штатных программ, под управлением ОС Synology DSM, и лишь правка файла конфигурации программы rsync (**rsyncd.conf**) будет редактироваться через эмулятор терминала внешней программы [[software:nas:putty|**Putty**]]. (С планировщиком пока пробовать не будем, так как сложно отслеживать изменения в файлах). \\ Так же, для удобства работы, при установке и в дальнейшем, при обслуживании сервера, мной будут установлены, привычный для меня, текстовой редактор **GNU nano** — небольшой и удобный, который входит в стандартную сборку Debian, и утилита **sudo** для операционных систем семейства Linux, позволяющая пользователю запускать программы с привилегиями другой учётной записи, как правило, суперпользователя.\\ Далее все это продолжится написание скриптов для планировщика, чтобы сервер сам в определенные дни синхронизировался с официальными репозитариями пакетов и закончиться подключением к нашему репозитарию пользовательских компьютеров внутренней локальной сети. =====Подготовка к работе===== ====Рабочая станция==== * Устанавливаем [[https://putty.org.ru/|Putty]] - клиентскую программу для работы с сетевым протоколом SSH, SFTP и генерации цифровых SSH-ключей, которая является свободным приложением с открытым исходным кодом и распространяется под [[https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_MIT|Open Source лицензией MIT]]. * Устанавливаем редактор [[https://notepad-plus-plus.org/|Notepad++]] - бесплатный текстовой редактор исходного кода. Работая в среде MS Windows, его использование регулируется [[https://ru.wikipedia.org/wiki/GNU_General_Public_License|GNU General Public License]]. ====Сервер Synology NAS==== Настройка главной папки пользователя В панели управления в разделе Пользователь и группа во вкладке Дополнительно Включим службу главной папки пользователя {{:software:nas:rsync_mirror_dsm_11.png?|}} В панели управления в разделе Файловые службы во вкладке rsync включить службу rsync {{:software:nas:rsync_mirror_dsm_12.png?|}} **Примечание** Порт шифрования оставляем по дефолту, учетные записи не включаем, т.к. предпологается, что зеркало будет общедоступным для загрузки пакетов всем желающим. В панели управления в разделе Файловые службы во вкладке FTP включить службу SFTP {{:software:nas:rsync_mirror_dsm_13.png?|}} Открываем центр пакетов {{:software:nas:rsync_mirror_dsm_2.png?|}} Устанавка Synology Web Station\\ Находим пакет и жмем установить {{:software:nas:rsync_mirror_dsm_4.png?|}} Установка PHP 8.2\\ Находим пакет и жмем установить {{:software:nas:rsync_mirror_dsm_3.png?|}} Установка Apache HTTP Server 2.4\\ Находим пакет и жмем установить {{:software:nas:rsync_mirror_dsm_5.png?|}} Все программы установяться в автоматическом режиме, после чего в основном меню запускаем пакет Synology Web Station {{:software:nas:rsync_mirror_dsm_6.png?|}} Настроим PHP 8.2 для запуска PHP сценариев в раздели Настройка языка сценариев на вкладке PHP {{:software:nas:rsync_mirror_dsm_8.png?|}} Редактируем пользовательский профиль на вкладке расширеня и выбирем все {{:software:nas:rsync_mirror_dsm_9.png?|}} Настроим в разделе веб-служба путем редактирования службы по умолчанию. Выбираем Внутренний сервер HTTP: Apache HTTP Server 2.4? PHP: PHP 8.2 и отмечаем Включение личного веб-сайта. {{:software:nas:rsync_mirror_dsm_14.png?|}} **Примечание** [[https://nginx.org/ru/|Nginx]] включенный по умолчанию в Synology NAS достаточно быстрый HTTP-сервер и мы могли бы обойтись только им, да и модуль PHP для простого зеркала репозитариев можно не устанавливать. Для этого в настройках только установить галочку Включение личного веб-сайта. {{:software:nas:rsync_mirror_dsm_10.png?|}} В браузере вводим IP адрес нашего сервера и убеждаемся, что все работает. {{:software:nas:rsync_mirror_dsm_15.png?|}} В File Station папки web удаляем дефолтные файлы {{:software:nas:rsync_mirror_dsm_16.png?|}} Создаем папку ubuntu {{:software:nas:rsync_mirror_dsm_17.png?|}} В Notepad++ на локальной машине создадим файл **.htaccess** — это локальный конфигурационный файл веб-сервера Apache, который позволяет управлять настройками сайта, с содержанием одной единственной строки Options +Indexes {{:software:nas:rsync_mirror_dsm_18.png?|}} и сохраняем как, указываем имя:.htaccess и тип файла:"все файлы". {{:software:nas:rsync_mirror_dsm_19.png?|}} Перетаскиваем файл .htaccess в окно программы File Station {{:software:nas:rsync_mirror_dsm_20.png?|}} В браузере вводим IP адрес нашего сервера и убеждаемся, что индексация папок работает. {{:software:nas:rsync_mirror_dsm_21.png?|}} **Примечание** Без файла .htaccess Synology запрещает доступ к странице без файла index.html, index.php и т.д. и необходимо редактировать конфигурационный файл пакета Apache HTTP Server 2.4, что требует определенных навыков в работе с Synology. Файл .htaccess можно создать средствами пакета Synology Office, который установит нам кучу не нужных для зеркала пакетов, а после все не нужное удалить. {{:software:nas:rsync_mirror_dsm_22.png?|}} ====Установка редактора nano==== В Центре пакетов в разделе Все пакеты выбираем кнопку настройки {{:software:nas:rsync_mirror_dsm_27.png?|}} Во вкладке Источники пакетов добавляем новый сточник synocommunity http://packages.synocommunity.com {{:software:nas:rsync_mirror_dsm_28.png?|}} В Центре пакетов в разделе Сообщество выбираем пакет SynoCli File Tools и устанавливаем {{:software:nas:rsync_mirror_dsm_29.png?|}} В панели управления в разделе Терминал и SMTP во вкладке Терминал включить службу SSH {{:software:nas:rsync_mirror_dsm_23.png?|}} Запускаем на локальном ПК программу Putty и подключаемся к нашему Synology NAS {{:software:nas:rsync_mirror_dsm_24.png?|}} переходим в папку web cd /volume1/web {{:software:nas:rsync_mirror_dsm_25.png?|}} Создаем любой тестовый файл, к примеру test.txt и пишем в нем любой тестовый текст sudo nano /volume1/web/test.txt Сохраняем текст CTRL+O, подстверждаем ENTER и выходим из редактора CTRL+X {{:software:nas:rsync_mirror_dsm_30.png?|}} Проверяем что все успешно создалось и редактор работает ls -l {{:software:nas:rsync_mirror_dsm_31.png?|}} Так-же проверим изменения в нашем браузере {{:software:nas:rsync_mirror_dsm_32.png?|}} Удалим все лишнее: временную папку @eaDir и наш тестовый файл test.txt sudo rm -r /volume1/web/@eaDir {{:software:nas:rsync_mirror_dsm_34.png?|}} sudo rm /volume1/web/test.txt {{:software:nas:rsync_mirror_dsm_35.png?|}} Проверим наш браузер {{:software:nas:rsync_mirror_dsm_36.png?|}} ====Создание тестового зеркала репозитория==== Запустим синхронизацию с официальным репозиторие пакета программы Putty (47Mb) через Rsync rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ /volume1/web/putty/ {{:software:nas:rsync_mirror_dsm_37.png?|}} Проверим нашу страницу в браузере {{:software:nas:rsync_mirror_dsm_38.png?|}} ====Разрешим подключение к нашему зеркалу по Rsync==== Отредактируем файл конфигурации rsyncd.conf Переходим в папку etc cd /etc {{:software:nas:rsync_mirror_dsm_41.png?|}} Откроем в редакторе файл rsyncd.conf sudo nano rsyncd.conf {{:software:nas:rsync_mirror_dsm_39.png?|}} Удаляем дефолтные настройки, и скопируем нижеприведенный текст uid = nobody gid = nobody use chroot = yes max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [rsync] path = /volume1/web comment = Shared folder list = no
«См. настройки с комментариями» # Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid #Этот параметр позволяет указать «сообщение день" (MOTD) для отображения клиентам при каждом подключении. #motd file = /etc/rsyncd.motd #log file = /var/log/rsyncd.log lock file = /var/run/rsync.lock # Пользователь, от имени которого ведется работа с файлами # анонимный rsync-доступ # uid = nobody # gid = nobody uid = nobody gid = nobody # Удаленная система может записывать файлы на этот сервер read only = no use chroot = yes reverse lookup = no refuse options = acls # Наименование папки [rsync] # Путь к директории для копирования файлов path = /volume1/web #============================================================ # К этому модулю можно обращаться только с компьютера Иванова #hosts allow = 192.168.110.2 #hosts deny = * #============================================================ # Комментарий при загрузке comment = media files #============================================================ #Этот параметр определяет, включен ли этот модуль в список #когда клиент запрашивает список доступных модулей. list = false #============================================================ #Если "только для чтения" - правда (true), то любой #попытки загрузки не увенчаются успехом. read only = true #максимальное количество подключений max connections = 5 comment = ftp export area
{{:software:nas:rsync_mirror_dsm_42.png?|}} Перезагружаем Rsync sudo systemctl restart rsyncd.service {{:software:nas:rsync_mirror_dsm_43.png?|}} Выставляем права на нашу папку web, изменив имя пользователя на свое sudo chown -R VladPolskiy:root /volume1/web sudo chmod -R 755 /volume1/web {{:software:nas:rsync_mirror_dsm_45.png?|}} И снова перегрузим Rcync sudo systemctl restart rsyncd.service ====Настраиваем Роутер==== Выполняем на роуторе переадресацию портов 873 и 22 на наш Nas Synology {{:software:nas:rsync_mirror_dsm_44.png?|}} ====Тестируем рабрту Rsync==== С любого пользовательского ПК через терминал пробуем загрузить list репозитория, доступного через Rsync (заменив IP адрес на адрес вашего ПК) rsync rsync://192.168.1.20:873/rsync/ Мы должны увидеть наши папки putty и ubuntu доступные на нашем сервере {{:software:nas:rsync_mirror_dsm_46.png?|}} Попробуем через терминал загрузить репозиторий через Rsync rsync -avr --progress rsync://192.168.1.20:873/rsync/ /home/alisa/test/ {{:software:nas:rsync_mirror_dsm_47.png?|}} Дожидаемся окончания загрузки {{:software:nas:rsync_mirror_dsm_48.png?|}} И проверяем нашу загрузку cd ~/test ls -l {{:software:nas:rsync_mirror_dsm_49.png?|}} ====Загрузка зеркала репозитория ubuntu==== Официальный сайт репозитория Ubuntu расположен по адресу http://archive.ubuntu.com/, но мы должны учесть, архив репозитариев только focal,jammy и noble имеет размер больше 1,5Tb. rsync -avr --progress rsync://archive.ubuntu.com/ubuntu/ /volume1/web/ubuntu/ {{:software:nas:rsync_mirror_dsm_50.png?|}} Проверим наполнение нашей папки в браузере {{:software:nas:rsync_mirror_dsm_51.png?|}} В папках /dist/название релиза распологаются файлы ключей Release.gpg {{:software:nas:rsync_mirror_dsm_52.png?|}} ====Подключение репозитория на клиетских ПК==== Просмотреть все репозитории: sudo nano /etc/apt/sources.list Они также могут находиться в одном из файлов в папке **/etc/apt/sources.list.d/** {{:software:nas:rsync_mirror_dsm_53.png?|}} Сделаем архивную копию нашего оригинального файла sources.list sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
См. запись оригинального файла sources.list #deb cdrom:[Ubuntu 22.04 LTS _Jammy Jellyfish_ - Release amd64 (20220419)]/ jammy main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://ru.archive.ubuntu.com/ubuntu/ jammy main restricted # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates main restricted # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://ru.archive.ubuntu.com/ubuntu/ jammy universe # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy universe deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates universe # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://ru.archive.ubuntu.com/ubuntu/ jammy multiverse deb http://ru.archive.ubuntu.com/ubuntu/ jammy multiverse # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy multiverse deb http://ru.archive.ubuntu.com/ubuntu/ jammy-updates multiverse # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://ru.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse # deb-src http://ru.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted # deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted deb http://security.ubuntu.com/ubuntu jammy-security universe # deb-src http://security.ubuntu.com/ubuntu jammy-security universe deb http://security.ubuntu.com/ubuntu jammy-security multiverse # deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching "deb cdrom" # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual.
Удалим подключенные репозитории, замени их на наше зеркало и сохраним файл: deb http://192.168.1.20/ubuntu/ jammy main restricted deb http://192.168.1.20/ubuntu/ jammy-updates main restricted deb http://192.168.1.20/ubuntu/ jammy universe deb http://192.168.1.20/ubuntu/ jammy-updates universe {{:software:nas:rsync_mirror_dsm_54.png?|}} Получим обновленные списки пакетов: sudo apt-get update обновить список пакетов. sudo apt update {{:software:nas:rsync_mirror_dsm_56.png?|}} обновим пакеты sudo apt-get dist-upgrade {{:software:nas:rsync_mirror_dsm_57.png?|}} Удалим подключенные репозитории на машине с Ubuntu 24.04, заменим их на наше зеркало и сохраним файл: deb http://192.168.1.20/ubuntu/ noble main restricted deb http://192.168.1.20/ubuntu/ noble-updates main restricted deb http://192.168.1.20/ubuntu/ noble universe deb http://192.168.1.20/ubuntu/ noble-updates universe
См. запись полного файла sources.list для Ubuntu 24.04 LTS noble Jellyfish #deb cdrom:[Ubuntu 24.04 LTS _noble Jellyfish_ - Release amd64 (20220419)]/ noble main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://192.168.1.20/ubuntu/ noble main restricted # deb-src http://192.168.1.20/ubuntu/ noble main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://192.168.1.20/ubuntu/ noble-updates main restricted # deb-src http://192.168.1.20/ubuntu/ noble-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://192.168.1.20/ubuntu/ noble universe # deb-src http://192.168.1.20/ubuntu/ noble universe deb http://192.168.1.20/ubuntu/ noble-updates universe # deb-src http://192.168.1.20/ubuntu/ noble-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://192.168.1.20/ubuntu/ noble multiverse deb http://192.168.1.20/ubuntu/ noble multiverse # deb-src http://192.168.1.20/ubuntu/ noble multiverse deb http://192.168.1.20/ubuntu/ noble-updates multiverse # deb-src http://192.168.1.20/ubuntu/ noble-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://192.168.1.20/ubuntu/ noble-backports main restricted universe multiverse # deb-src http://192.168.1.20/ubuntu/ noble-backports main restricted universe multiverse deb http://192.168.1.20/ubuntu noble-security main restricted # deb-src http://192.168.1.20/ubuntu noble-security main restricted deb http://192.168.1.20/ubuntu noble-security universe # deb-src http://192.168.1.20/ubuntu noble-security universe deb http://192.168.1.20/ubuntu noble-security multiverse # deb-src http://192.168.1.20/ubuntu noble-security multiverse # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching "deb cdrom" # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual.
{{:software:nas:rsync_mirror_dsm_84.png?|}} Получим обновленные списки пакетов: sudo apt-get update обновить список пакетов. sudo apt update {{:software:nas:rsync_mirror_dsm_80.png?|}} обновим пакеты sudo apt-get dist-upgrade {{:software:nas:rsync_mirror_dsm_83.png?|}} ====Создание скриптов автозапуска Rsync==== В File Station домашней папки home создадим папку scripts {{:software:nas:rsync_mirror_dsm_58.png?|}} Создадим в папке web папку gnu, а в ней папку bash sudo mkdir /volume1/web/gnu sudo mkdir /volume1/web/gnu/bash Изменим рекурсивно права на папки sudo chown -R VladPolskiy:root /volume1/web/gnu sudo chmod -R 755 /volume1/web/gnu {{:software:nas:rsync_mirror_dsm_60.png?|}} В Notepad++ на локальной машине создадим файл скрипта gnu, сохраним его c разрешением .sh в папке /home/scripts со следующим кодом bash #!/bin/bash -x rsync -avr rsync://mirror.truenetwork.ru/gnu/bash/ /volume1/web/gnu/bash/ {{:software:nas:rsync_mirror_dsm_59.png?|}} В панели управления в разделе Планировщик задач создадим Запланированную задачу в виде Скрипта, заданного пользователем {{:software:nas:rsync_mirror_dsm_62.png?|}} Во вкладке общие понятное для нас Имя задачи (примером rsync_bash), пользователь root {{:software:nas:rsync_mirror_dsm_63.png?|}} Во вкладке расписание Выполнить в сегодняшнее число, время запуска через 5 минут от текущего времени (не забываем сверить наше время и времы и часовой пояс на Synology NAS) {{:software:nas:rsync_mirror_dsm_64.png?|}} На вкладке Настройки задачи Указываем отправлять сведения о запуски и свой адрес электронной почты, для получения отчетов и в окне Выполнить каманду вставляем следующую строку bash /volume1/homes/VladPolskiy/scripts/gnu.sh {{:software:nas:rsync_mirror_dsm_65.png?|}} Подтверждаем вводом пароля Администратора {{:software:nas:rsync_mirror_dsm_66.png?|}} В указанное нами время выполнения задачи проверяем момент заполнения папки gnu/bash данными {{:software:nas:rsync_mirror_dsm_67.png?|}} **Примечание!** Создание скрипта gnu.sh и синхронизация папки /gnu/bash приведина для визуального примера и понимания как работает Планировщик Synology NAS из-за небольшого размера папки пакета bash. Убедившись, что все работает как нужно, папку gnu, скрипт gnu.sh и задачу планировщика можно удалить. В Notepad++ на локальной машине создадим файл скрипта mirror_ubuntu.sh (скрипт синхронизации репозитория пакетов ubuntu) со следующим кодом bash #!/bin/bash -x rsync -avr --progress rsync://archive.ubuntu.com/ubuntu/ /volume1/web/ubuntu/ {{:software:nas:rsync_mirror_dsm_68.png?|}} Мною выбрана в задачах синхронизация 5 числа каждого месяца в 03:00, т.к. репозиторий имеет большой объем и ubunta - это не единственное зеркало на этом сервере. {{:software:nas:rsync_mirror_dsm_69.png?|}} =====Ссылки и Дополнения===== * {{ :software:nas:mirror_ubuntu.sh |Скрипт синхронизации репозитория Ubuntu}} * {{ :software:nas:npp.8.6.9.installer.x64.exe |Notepad++ Windows}} * {{ :software:nas:putty.exe |Putty Windows}} * [[https://synocommunity.com/package/synocli-file|Страница пакетов synocommunity]]