Инструменты пользователя

Инструменты сайта

  • Показать исходный текст
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • software:nas:configure_rsync_mirror

    Настройка Rsync зеркал репозиториев на DSM 7.2

    300 Программы, которые можно установить с помощью Центра приложений или любого другого пакетного менеджера, хранятся в репозиториях. Репозитории представляют из себя обычное хранилище пакетов и специальных файлов, доступное через интернет. Поэтому у каждого репозитория есть свой адрес. Например, официальные основные репозитории Ubuntu находятся по адресу http://archive.ubuntu.com/ubuntu.

    Введение

    Необходимость в локальных зеркалах репозиториев возникает когда пользователям локальной сети закрывают доступ к определенным ресурсам в сети интернет. Сервер с локальными зеркалами, ранее синхронизировавшийся с официальными репозиториями, будет предоставлять доступ к имеющимся пакетам пользователям домашней (рабочей) локальной сети. В качестве сервера будет использоваться устройство Synology DS720+, с установленными 2 HDD Seagate IronWolf Pro 2 SSD M.2 накопитель Samsung 970 EVO Plus в качестве SSD-кэш на томе, чтобы повысить производительность произвольного доступа.
    В основе своей зеркало будет создано с помощью штатных программ, под управлением ОС Synology DSM, и лишь правка файла конфигурации программы rsync (rsyncd.conf) будет редактироваться через эмулятор терминала внешней программы **Putty**. (С планировщиком пока пробовать не будем, так как сложно отслеживать изменения в файлах).
    Так же, для удобства работы, при установке и в дальнейшем, при обслуживании сервера, мной будут установлены, привычный для меня, текстовой редактор GNU nano — небольшой и удобный, который входит в стандартную сборку Debian, и утилита sudo для операционных систем семейства Linux, позволяющая пользователю запускать программы с привилегиями другой учётной записи, как правило, суперпользователя.
    Далее все это продолжится написание скриптов для планировщика, чтобы сервер сам в определенные дни синхронизировался с официальными репозитариями пакетов и закончиться подключением к нашему репозитарию пользовательских компьютеров внутренней локальной сети.

    Подготовка к работе

    Рабочая станция

    • Устанавливаем Putty - клиентскую программу для работы с сетевым протоколом SSH, SFTP и генерации цифровых SSH-ключей, которая является свободным приложением с открытым исходным кодом и распространяется под Open Source лицензией MIT.
    • Устанавливаем редактор Notepad++ - бесплатный текстовой редактор исходного кода. Работая в среде MS Windows, его использование регулируется GNU General Public License.

    Сервер Synology NAS

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

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

    В панели управления в разделе Файловые службы во вкладке FTP включить службу SFTP Открываем центр пакетов Устанавка Synology Web Station
    Находим пакет и жмем установить
    Установка PHP 8.2
    Находим пакет и жмем установить
    Установка Apache HTTP Server 2.4
    Находим пакет и жмем установить
    Все программы установяться в автоматическом режиме, после чего в основном меню запускаем пакет Synology Web Station Настроим PHP 8.2 для запуска PHP сценариев в раздели Настройка языка сценариев на вкладке PHP Редактируем пользовательский профиль на вкладке расширеня и выбирем все Настроим в разделе веб-служба путем редактирования службы по умолчанию. Выбираем Внутренний сервер HTTP: Apache HTTP Server 2.4? PHP: PHP 8.2 и отмечаем Включение личного веб-сайта.

    Примечание Nginx включенный по умолчанию в Synology NAS достаточно быстрый HTTP-сервер и мы могли бы обойтись только им, да и модуль PHP для простого зеркала репозитариев можно не устанавливать. Для этого в настройках только установить галочку Включение личного веб-сайта.

    В браузере вводим IP адрес нашего сервера и убеждаемся, что все работает. В File Station папки web удаляем дефолтные файлы Создаем папку ubuntu В Notepad++ на локальной машине создадим файл .htaccess — это локальный конфигурационный файл веб-сервера Apache, который позволяет управлять настройками сайта, с содержанием одной единственной строки

    Options +Indexes

    и сохраняем как, указываем имя:.htaccess и тип файла:«все файлы». Перетаскиваем файл .htaccess в окно программы File Station В браузере вводим IP адрес нашего сервера и убеждаемся, что индексация папок работает.

    Примечание Без файла .htaccess Synology запрещает доступ к странице без файла index.html, index.php и т.д. и необходимо редактировать конфигурационный файл пакета Apache HTTP Server 2.4, что требует определенных навыков в работе с Synology. Файл .htaccess можно создать средствами пакета Synology Office, который установит нам кучу не нужных для зеркала пакетов, а после все не нужное удалить.

    Установка редактора nano

    В Центре пакетов в разделе Все пакеты выбираем кнопку настройки Во вкладке Источники пакетов добавляем новый сточник synocommunity

    http://packages.synocommunity.com

    В Центре пакетов в разделе Сообщество выбираем пакет SynoCli File Tools и устанавливаем В панели управления в разделе Терминал и SMTP во вкладке Терминал включить службу SSH Запускаем на локальном ПК программу Putty и подключаемся к нашему Synology NAS переходим в папку web

    cd /volume1/web

    Создаем любой тестовый файл, к примеру test.txt и пишем в нем любой тестовый текст

    sudo nano /volume1/web/test.txt

    Сохраняем текст CTRL+O, подстверждаем ENTER и выходим из редактора CTRL+X Проверяем что все успешно создалось и редактор работает

    ls -l

    Так-же проверим изменения в нашем браузере Удалим все лишнее: временную папку @eaDir и наш тестовый файл test.txt

    sudo rm -r /volume1/web/@eaDir

    sudo rm  /volume1/web/test.txt

    Проверим наш браузер

    Создание тестового зеркала репозитория

    Запустим синхронизацию с официальным репозиторие пакета программы Putty (47Mb) через Rsync

    rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ /volume1/web/putty/

    Проверим нашу страницу в браузере

    Разрешим подключение к нашему зеркалу по Rsync

    Отредактируем файл конфигурации rsyncd.conf Переходим в папку etc

    cd /etc

    Откроем в редакторе файл rsyncd.conf

    sudo nano rsyncd.conf

    Удаляем дефолтные настройки, и скопируем нижеприведенный текст

    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

    Перезагружаем Rsync

    sudo systemctl restart rsyncd.service

    Выставляем права на нашу папку web, изменив имя пользователя на свое

    sudo chown -R VladPolskiy:root /volume1/web
    sudo chmod -R 755 /volume1/web

    И снова перегрузим Rcync

    sudo systemctl restart rsyncd.service

    Настраиваем Роутер

    Выполняем на роуторе переадресацию портов 873 и 22 на наш Nas Synology

    Тестируем рабрту Rsync

    С любого пользовательского ПК через терминал пробуем загрузить list репозитория, доступного через Rsync (заменив IP адрес на адрес вашего ПК)

    rsync rsync://192.168.1.20:873/rsync/

    Мы должны увидеть наши папки putty и ubuntu доступные на нашем сервере Попробуем через терминал загрузить репозиторий через Rsync

    rsync -avr --progress rsync://192.168.1.20:873/rsync/  /home/alisa/test/

    Дожидаемся окончания загрузки И проверяем нашу загрузку

    cd ~/test
    ls -l

    Загрузка зеркала репозитория ubuntu

    Официальный сайт репозитория Ubuntu расположен по адресу http://archive.ubuntu.com/, но мы должны учесть, архив репозитариев только focal,jammy и noble имеет размер больше 1,5Tb.

    rsync -avr --progress rsync://archive.ubuntu.com/ubuntu/ /volume1/web/ubuntu/

    Проверим наполнение нашей папки в браузере В папках /dist/название релиза распологаются файлы ключей Release.gpg

    Подключение репозитория на клиетских ПК

    Просмотреть все репозитории:

    sudo nano /etc/apt/sources.list

    Они также могут находиться в одном из файлов в папке /etc/apt/sources.list.d/ Сделаем архивную копию нашего оригинального файла 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

    Получим обновленные списки пакетов:

    sudo apt-get update

    обновить список пакетов. sudo apt update обновим пакеты

    sudo apt-get dist-upgrade

    Удалим подключенные репозитории на машине с 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.

    Получим обновленные списки пакетов:

    sudo apt-get update

    обновить список пакетов. sudo apt update обновим пакеты

    sudo apt-get dist-upgrade

    Создание скриптов автозапуска Rsync

    В File Station домашней папки home создадим папку scripts Создадим в папке 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

    В Notepad++ на локальной машине создадим файл скрипта gnu, сохраним его c разрешением .sh в папке /home/scripts со следующим кодом bash

    #!/bin/bash -x
    rsync -avr rsync://mirror.truenetwork.ru/gnu/bash/ /volume1/web/gnu/bash/

    В панели управления в разделе Планировщик задач создадим Запланированную задачу в виде Скрипта, заданного пользователем Во вкладке общие понятное для нас Имя задачи (примером rsync_bash), пользователь root Во вкладке расписание Выполнить в сегодняшнее число, время запуска через 5 минут от текущего времени (не забываем сверить наше время и времы и часовой пояс на Synology NAS) На вкладке Настройки задачи Указываем отправлять сведения о запуски и свой адрес электронной почты, для получения отчетов и в окне Выполнить каманду вставляем следующую строку

    bash /volume1/homes/VladPolskiy/scripts/gnu.sh

    Подтверждаем вводом пароля Администратора В указанное нами время выполнения задачи проверяем момент заполнения папки gnu/bash данными

    Примечание! Создание скрипта 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/

    Мною выбрана в задачах синхронизация 5 числа каждого месяца в 03:00, т.к. репозиторий имеет большой объем и ubunta - это не единственное зеркало на этом сервере.

    Ссылки и Дополнения

    Только авторизованные участники могут оставлять комментарии.
    software/nas/configure_rsync_mirror.txt · Последнее изменение: 2024/08/02 22:58 — vladpolskiy