• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Статья также доступна на украинском (перейти к просмотру).

Содержание:

С распространением практики хранения и синхронизации данных, размещенных в разных местах локальной или глобальной сети, появился запрос на программное обеспечение (ПО), которое составило бы конкуренцию проприетарным средствам и облачным сервисам, монополизировавшим указанный сегмент рынка ПО. Такой заменой может стать программа Syncthing – бесплатное децентрализованное программное средство с широкими возможностями и открытым кодом. Рассмотрим ее возможности и продемонстрируем на практике принципы использования в рамках частного кластера, организованного на базе узлов, построенных на различных платформах.

Характеристики программы Syncthing

Разработчиком Syncthing является некоммерческий Фонд из Швеции, который за свой счет обеспечивает создание и поддержку необходимой сетевой инфраструктуры для ее работы и развития. В частности это касается серверов глобального обнаружения, серверов сборки и другого оборудования. Масштаб проекта можно сравнить, например, с таким известным ПО, как Git. Сервис имеет даже собственный протокол для обнаружения устройств кластера, обеспечивающий установку между узлами прямого соединения типа PtP (Point-to-Point). Для локального обнаружения узлов здесь используются возможности широковещательного домена.

Укажем на наиболее значительные характерные признаки Syncthing:

  • Защита и шифрование данных. Все данные передаются только по защищенным TLS (Transport Layer Security) каналам с использованием протокола обмена ключами с прямой секретностью;

  • Синхронизация и обмен данными производятся на уровне блоков. Для этой цели был разработан протокол Block Exchange Protocol, используемый в пределах кластера на основе локальной и глобальной моделей данных;

  • Имеющийся протокол обнаружения устройств (Device Discovery Protocol v2) собственной разработки;

  • Применение серверов Discovery для глобального обнаружения устройств;

  • возможность использования собственного сервера Discovery;

  • Возможность соединения устройств кластера по IP-адресу или DNS-имени без использования функции обнаружения, что обеспечивает высокий уровень защиты;

  • децентрализованное хранение данных на площадках пользователей, что способствует повышению уровня безопасности;

  • Аутентификация устройств на основе криптографического сертификата;

  • Открытый программный код, его обсуждение и разработка;

  • Простота настроек и использования;

  • Кроссплатформенность;

  • Наличие веб-интерфейса;

  • Неограниченное количество каталогов для синхронизации.

Syncthing имеет довольно широкий спектр применения, начиная с организации хранилищ данных и заканчивая использованием в приложении для отметок Opsidian.

Установка Syncthing на узлах кластера

Как уже отмечалось, программа является кроссплатформенной, то есть может быть установлена ??на машины с различными операционными системами – MS Windows, Linux, Mac OS X, Solaris, FreeBSD. Это означает, в частности, возможность использования кластера, построенного на узлах с разными платформами и конфигурациями, к числу которых могут относиться и VPS-серверы. Для «общения» между собой их ID (присваивается при инсталляции программы) должен быть известен всем узлам – участникам кластера. Благодаря этому становится возможно динамическое обнаружение узла в автоматическом режиме без знания других параметров подключения.

Программа не имеет отдельного инсталлятора, а только портативные версии для каждой из указанных платформ, которые можно загрузить с сайта разработчика. Кроме того, существует отдельная кроссплатформенная версия Syncthing-GTK, пригодная для использования на любой из доступных платформ.

Рассмотрим процесс развертывания Syncthing для разных ОС.

ОС Ubuntu 22.04

Процес розгортання Syncthing для цієї ОС має свої особливості. Розпочнемо його. Для початку, додамо PGP ключі релізу. Для цього введемо у терміналі наступну команду:

$ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

Добавление PGP ключей 

После этого добавляем stable канал программы в список источников нашего файлового менеджера:

$ echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Добавление stable канала 

Обновим список пакетов для индексации:

 $ sudo apt update

Обновление пакетов 

Запустим процесс инсталляции:

$ sudo apt install syncthing

Установка syncthing

Итак, программа установлена. Ее версия – 1.26.1 (Setting up syncthing (1.26.1)).

Используем возможности системного даемона для настройки автоматического запуска Syncthing в качестве системного сервиса. Для этого создадим подходящий юнит в каталоге system даемона. Это можно сделать с помощью следующей команды:

$ sudo nano /etc/systemd/system/syncthing@.service

В открывшемся окне редактору вставим следующий код:

[Unit]
Description=Syncthing – Program Open Source Continuous File Synchronization for
%I
Documentation=man:syncthing(1)
After=network.target
Wants=syncthing-inotify@.service

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

Редактирование файлов в редакторе nano 

Сохраним внесенные в файл изменения и вернемся к командной строчке (ctrl+X). 

Отметим, что активация сервиса должна быть выполнена только для локального пользователя (не root) и поэтому создадим его. Для этого наберем в терминале:

$ adduser test_user

Создание нового пользователя 

Пользователь с именем test_user успешно создан. Теперь добавим его в группу sudo:

$ usermod -aG sudo test_user

Добавлениепользователя к группе sudo

Активируем сервис от его имени:

$ sudo systemctl enable syncthing@test_user.service

Запуск Syncthing от имени нового пользователя 

$ sudo systemctl start syncthing@test_user.service

Старт сервиса 

Веб-интерфейс для управления программой обычно доступен по адресу 127.0.0.1:8384, однако в случае удаленного устройства указанный адрес необходимо скорректировать. Это можно сделать, активизировались в системе под пользователем test_user и запустив соответствующий файл конфигурации:

$ nano .config/syncthing/config.xml

Просмотр файла в nano 

Можно видеть, что нужный адрес при необходимости можно ввести в двойном теге <address>.

Также обращаем внимание на местонахождение собственного идентификатора (ID) нашего устройства, которое указано для двойного тега <device> и имеет следующее значение:

id="NRRAJKG-GLULSR3-FHY3ICM-BEMV6SE-T7GD2TZ-RCJUQSK-GUTKRZY-EHUXCQL" 

Он нам пригодится в дальнейшем для передачи на другой узел.

ОС Windows

Установка Syncthing на узел с Windows вообще не вызывает сложностей. Достаточно скачать нужную версию программы со страницы сайта разработчиков и запустить ее на выполнение. В нашем случае это 32-х разрядная версия х86.

При первом запуске (во время установки) будет создан файл конфигурации и несколько ключей шифрования. В то же время в автоматическом режиме будет запущен браузер с доступом к графическому интерфейсу управления программой (GUI). Для локальной машины адрес будет выглядеть следующим образом:

http://localhost:8384 або http://127.0.0.1:8384 

Ниже показан веб-интерфейс программы, который доступен по указанному адресу после установки.

Вебинтерфейс Syncthing

Все действия, происходящие с программой, начиная с запуска, фиксируются на экране консоли управления в автоматическом режиме (см. скриншот ниже). Это может быть использовано в дальнейшем при поиске причин возникающих проблем, например отсутствие связи с определенным узлом кластера.

Екран консолі програми 

Конфигурирование синхронизированного файлового хранилища в пределах кластера

Конфигурирование хранилища с помощью веб-интерфейса обычно не вызывает сложностей и заключается в выполнении следующих шагов:

  • Создать хранилище данных на локальном устройстве;

  • Добавить устройства, с которыми будет синхронизироваться хранилище;

  • Осуществление управления хранилищем.

Реализуем указанную последовательность действий на практике, используя в качестве локального устройства узел под управлением ОС Windows с именем comp, а удаленного – устройство под управлением ОС Ubuntu, которое мы подготовили ранее.

Создание хранилища

Для создания хранилища достаточно кликнуть по кнопке “Добавить папку” в левой части венка программы. В результате появится окно настроек, в котором необходимо ввести несколько значений, основными из них является название хранилища (поле Ярлык папки), путь к месту размещения на локальном устройстве (поле Путь к папке), идентификатор хранилища (поле ID папки). Обычно идентификатор выводится в поле автоматически и поэтому лучше его не менять, чтобы не было дублирования в пределах кластера.

Создание хранилища в виде каталога

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

После ввода всех обязательных значений параметров необходимо нажать кнопку “Сохранить” в нижней части окна. В результате будет создано новое хранилище с именем photo_ssh (в нашем случае). При этом в левой части окна появится активная кнопка с его именем, при нажатии на которую можно просмотреть всю информацию, которая к нему.

Перечень хранилищ-каталогов

В первые несколько минут на кнопке хранилища будет отображаться надпись «Не Общедоступно», что говорит о том, что данные хранилища еще не обработаны и не синхронизированы.

Расширение кластера

Остальные заполняются при необходимости. Для ID мы принимаем значение, полученное нами ранее при настройке удаленного узла под управлением ОС Ubuntu. Для его имени выбираем значение Узел Ubuntu. Вместо адреса указываем значение dynamic, позволяющее программе определить адрес устройства в автоматическом режиме. Для закладки Предоставьте доступ устройства к папкам, включаем два флажка: Default Folder и photo_ssh. Это значит, что хранилища с этими названиями будут синхронизироваться с прилагаемым устройством. После этого нажимаем кнопку Сохранить и программа возвращает нас к главному окну интерфейса. Остальные заполняются при необходимости. Для ID мы принимаем значение, полученное нами ранее при настройке удаленного узла под управлением ОС Ubuntu. Для его имени выбираем значение Узел Ubuntu. Вместо адреса указываем значение dynamic, позволяющее программе определить адрес устройства в автоматическом режиме. Для закладки Предоставьте доступ устройства к папкам, включаем два флажка: Default Folder и photo_ssh. Это значит, что хранилища с этими названиями будут синхронизироваться с прилагаемым устройством. После этого нажимаем кнопку Сохранить и программа возвращает нас к главному окну интерфейса.

 

Мы видим, что в разделе под названием “Удалённые устройства” появилась информация о новом устройстве. В частности, были определены адреса и порты подключения.

Доступ до папок для доданих пристроїв відкрито

Управление хранилищем

Управление хранилищем возможно с помощью команд главного меню Действия (см. скриншот). Например, сразу же после внесения изменений в конфигурацию необходимо выбрать команду Действия > Перезапустить. Это позволит программе обновить конфигурацию и вывести обновленные данные о кластере.

Доступ к папкам для добавленных устройств 

В этом же меню можно просмотреть ID локального устройства, выбрав команду Показать ID.

ID устройства 

Для более глубоких настроек необходимо выбрать команду “Действия > Настройки”. В результате появится соответствующая форма, показанная ниже.

 

Меню "Настройки" 

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

Выводы

По результатам нашего рассмотрения, сам собой напрашивается вывод, что Syncthing действительно способна составить достойную конкуренцию проприетарным платным сервисам, заинтересованным прежде всего в привязке своих клиентов к централизованным хранилищам, созданным на их «территории». Кроме того, гибкость и простота использования являются дополнительными бонусами для пользователей Syncthing.

Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов.

Смотрите наш канал Youtube на https://www.youtube.com/freehostua.

Мы в чем-то ошиблись, или что-то пропустили?

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

Дата: 24.11.2023
Автор: Александр Ровник
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA