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

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


software:nas:configure_rsync_mirror

Это старая версия документа!


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

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

Введение

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

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

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

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

Сервер Synology NAS

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

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

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

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

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

Options +Indexes

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

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

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

<color #22b14c>В Центре пакетов в разделе Все пакеты выбираем кнопку настройки</color> <color #22b14c>Во вкладке Источники пакетов добавляем новый сточник synocommunity</color>

http://packages.synocommunity.com

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

cd /volume1/web

<color #22b14c>Создаем любой тестовый файл, к примеру test.txt и пишем в нем любой тестовый текст</color>

sudo nano /volume1/web/test.txt

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

ls -l

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

sudo rm -r /volume1/web/@eaDir

sudo rm  /volume1/web/test.txt

<color #22b14c>Проверим наш браузер</color>

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

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

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

<color #22b14c>Проверим нашу страницу в браузере</color>

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

<color #22b14c>Отредактируем файл конфигурации rsyncd.conf

Переходим в папку etc</color>

cd /etc

<color #22b14c>Откроем в редакторе файл rsyncd.conf</color>

sudo nano rsyncd.conf

<color #22b14c>Удаляем дефолтные настройки, и скопируем нижеприведенный текст</color>

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
<color #22b14c>«См. настройки с комментариями»</color>
# Глобальные параметры, отвечающие за поведение демона в целом
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

<color #22b14c>Перезагружаем Rsync</color>

sudo systemctl restart rsyncd.service

<color #22b14c>Выставляем права на нашу папку web, изменив имя пользователя на свое</color>

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

<color #22b14c>И снова перегрузим Rcync</color>

sudo systemctl restart rsyncd.service

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

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

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

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

rsync rsync://192.168.1.20:873/rsync/

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

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

<color #22b14c>Дожидаемся окончания загрузки</color> <color #22b14c>И проверяем нашу загрузку</color>

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

Создание скриптов автозапуска 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) На вкладке Настройки задачи Указываем отправлять сведения о запуски и свой адрес электронной почты, для получения отчетов и в окне Выполнить каманду вставляем следующую строку

#!/bin/bash -x
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.1722313342.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki