Стаття також доступна російською (перейти до перегляду).
Вступ
- Характеристики програми Syncthing
- Встановлення Syncthing на вузлах кластеру
- Конфігурування синхронізованого файлового сховища у межах кластеру
- Висновки
Із розповсюдженням практики зберігання та синхронізації даних, розміщених у різних місцях локальної чи глобальної мережі, з'явився запит на програмне забезпечення (ПЗ), яке б склало конкуренцію пропрієтарним засобам та хмарним сервісам, котрі монополізували вказаний сегмент ринку ПЗ. Такою заміною може стати програма 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
Після цього додаємо stable канал програми до списку джерел нашого файлового менеджера:
$ echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
Оновимо список пакетів для індексації:
$ sudo apt update
Запустимо процес інсталяції:
$ sudo apt install 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
Збережемо внесені до файлу зміни та повернемося до командної строчки (ctrl+X).
Зазначимо, що активація сервісу повинна бути виконана лише для локального користувача (не root) і, тому, створимо його. Для цього наберемо в терміналі:
$ adduser test_user
Користувач із ім’ям test_user успішно створений. Тепер додамо його до групи sudo:
$ usermod -aG sudo test_user
Активуємо сервіс від його імені:
$ sudo systemctl enable syncthing@test_user.service
$ sudo systemctl start syncthing@test_user.service
Веб-інтерфейс для керування програмою, зазвичай, доступний за адресою 127.0.0.1:8384, однак, у випадку віддаленого пристрою вказану адресу необхідно скоригувати. Це можна зробити, активізувавшись у системі під користувачем test_user та запустивши відповідний файл конфігурації:
$ nano .config/syncthing/config.xml
Можна бачити, що потрібну адресу при необхідності можна ввести у межах подвійного тегу <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
Нижче показаний веб-інтерфейс програми, котрий став доступний за вказаною адресою після інсталяції.
Усі дії, котрі відбуваються з програмою, починаючи від запуску, фіксуються на екрані консолі управління в автоматичному режимі (див. скриншот нижче). Це може бути використано у подальшому при пошуку причин виникаючих проблем, наприклад, відсутність зв’язку із певним вузлом кластеру.
Конфігурування синхронізованого файлового сховища у межах кластеру
Конфігурування сховища за допомогою веб-інтерфейсу, зазвичай, не викликає складнощів і полягає у виконанні наступних кроків:
- Створити сховище даних на локальному пристрої;
- Додати пристрої, із котрими буде синхронізуватися сховище;
- Здійснення управління сховищем.
Реалізуємо вказану послідовність дій на практиці, використовуючи у якості локального пристрою вузол під управлінням ОС Windows із ім’ям comp, а віддаленого – пристрій під управлінням ОС Ubuntu, котрий ми підготували тут раніше.
Створення сховища
Для створення сховища достатньо клікнути по кнопці “Добавить папку” у лівій частині вінка програми. В результаті з’явиться вікно налаштувань, у якому необхідно ввести кілька значень, основними з них є назва сховища (поле Ярлык папки), шлях до місця його розміщення на локальному пристрої (поле Путь к папке), ідентифікатор сховища (поле ID папки). Зазвичай, ідентифікатор виводиться в полі автоматично і, тому, краще його не змінювати, щоб не було дублювання у межах кластеру.
У випадку, якщо в кластері вже присутні інші пристрої, тоді можна тут же обрати ті з них, для яких сховище повинно бути доступним. Для цього існує поле “Предоставить доступ устройствам". Всі інші поля форми є додатковими і, тому, змінюються лише за потреби.
Після введення всіх обов’язкових значень параметрів, необхідно натиснути кнопку “Сохранить” у нижній частині вікна. В результаті, буде створено нове сховище із ім’ям photo_ssh (у нашому випадку). При цьому у лівій частині вікна з’явиться активна кнопка із його ім’ям, при натисканні на котру можна продивитися всю інформацію, що до нього.
У перші кілька хвилин на кнопці сховища буде відображатися напис «Необщедоступно», що буде говорити про те, що дані сховища ще не оброблені та не синхронізовані.
Розширення кластеру
Тепер можна перейти до наступного кроку – додавання нових пристроїв (вузлів) до кластеру. Для цього у правій частині інтерфейсу необхідно натиснути кнопку “Добавить удалённое устройство”, після чого з’явиться відповідне вікно налаштувань, як показано нижче. Обов’язковими полями для заповнення форми є наступні: ID устройства, Имя устройства, Адрес. Інші заповнюються за потреби. Для ID ми беремо значення, отримане нами раніше при налаштуванні віддаленого вузла під керуванням ОС Ubuntu. Для його імені обираємо значення Узел Ubuntu. Замість адреси вказуємо значення dynamic, що дасть змогу програмі визначити адресу пристрою у автоматичному режимі. Для закладки Предоставить доступ устройству к папкам вмикаємо два прапорці: Default Folder та photo_ssh. Це означає, що сховища із цими назвами будуть синхронізуватися із пристроєм, що додається. Після цього натискаємо кнопку “Сохранить” і програма повертає нас до головного вікна інтерфейсу.
Ми бачимо, що у розділі під назвою “Удалённые устройства” з’явилася інформація, що до нового пристрою. Зокрема, були визначені його адреси та порти підключення.
Управління сховищем
Управління сховищем можливо за допомогою команд головного меню “Действия” (див. скриншот). Наприклад, одразу ж після внесення змін у конфігурацію необхідно обрати команду “Дейтвия > Перезапустить”. Це дасть можливість програмі оновити конфігурацію та вивести оновлені дані про кластер.
У цьому ж меню можна продивитись ID локального пристрою, обравши команду Показать ID.
Для здійснення більш глибоких налаштувань необхідно вибрати команду “Действия > Настройки”. В результаті, з’явиться відповідна форма, показана нижче.
Тут, зокрема, можна: змінити адресу графічного інтерфейсу; встановити ім’я користувача та пароль для доступу до Панелі керування; включити захищений протокол для Панелі керування; налаштувати тип механізму виявлення вузлів кластеру та визначити сервери, а також змінити багато інших опцій.
Висновки
За результатами нашого розгляду, сам собою напрошується висновок, що Syncthing дійсно здатна скласти достойну конкуренцію пропрієтарним платним сервісам, котрі зацікавлені, перш за все, у прив’язці своїх клієнтів до централізованих сховищ, створених на їх «території». Окрім того, гнучкість та простота використання є додатковими бонусами для користувачів Syncthing.
Підписуйтесь на наш телеграм-канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.
Дивіться наш канал Youtube на https://www.youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?
Напишіть про це у коментарях, ми з задоволенням відповімо та обговорюємо Ваші зауваження та пропозиції.
Дата: 24.11.2023 Автор: Олександр Ровник
|
|
Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus