Настройка интеграции Syncthing в Nextcloud

 Автор : Тайкун

  • Предварительные условия
  • Шаг 1: Синхронизируйте папку конфигурации
  • Шаг 2: Синхронизируйте папку с данными
  • Шаг 3: Выберите источник синхронизации
    • Из репозитория Syncthing
    • Из репозитория Debian
  • Шаг 4: Создайте службу Syncthing Systemd
  • Шаг 5: Отредактируйте конфигурацию Syncthing
  • Шаг 6: Подтвердите доступ к графическому интерфейсу
  • Шаг 7: Настройка одноранговых узлов и общих папок
  • Шаг 8: Добавьте папку Syncthing в Nextcloud
  • Шаг 9: Наслаждайтесь интеграцией Nextcloud и Syncthing
  • Заключение

Решил написать простое пошаговое руководство, описывающее синхронизацию с Nextcloud. Эти две программы работают под разными учётными записями. Из-за этого при попытке синхронизировать данные Nextcloud вы часто будете сталкиваться с проблемами с разрешениями и ошибками чтения/записи. Ниже я объясню, как заставить Nextcloud и Syncthing работать вместе без этих проблем.

В этом руководстве я использовал Debian 12, от имени пользователя www-data.

Шаг 1: Синхронизируйте папку конфигурации

Для хранения файлов конфигурации Syncthing создайте папку и измените владельца на того же, что и у веб-сервера. Я выбираю /opt/syncthing-config 

chown www-data:www-data /opt/syncthing-config

Шаг 2: Синхронизируйте папку с данными

Выберите место для хранения файлов данных Syncthing. Это файлы, которые вы будете синхронизировать, поэтому учитывайте, сколько места для хранения вам может понадобиться. Возможно, вы предпочтёте хранить их в отдельном разделе или на отдельном диске.

Вы можете создать несколько папок в разных местах, но мне проще иметь одну папку для синхронизации, а все синхронизируемые папки будут её подкаталогами.

Независимо от выбранного вами местоположения, убедитесь, что веб-сервер является владельцем.

mkdir /srv/common/Syncthing/user1

chown www-data:www-data /srv/common/Syncthing/user1

Шаг 3: Выберите источник синхронизации

Проверьте версию в менеджере пакетов вашего дистрибутива. В Debian стабильный пакет обычно очень старый, поэтому вам нужно решить, откуда его брать: из репозиториев Debian или с веб-сайта Syncthing. На сайте Syncthing вы можете быть уверены, что это самая актуальная версия, однако установка из менеджера пакетов не требует дополнительной настройки.

Из репозитория Syncthing

Добавьте ключи release PGP:

sudo curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg  https://syncthing.net/release-key.gpg

Добавьте “стабильный” канал к вашим источникам APT:

echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Повысьте приоритет пакетов Syncthing («привязка») по сравнению с системными пакетами.

printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing

Теперь, когда источники добавлены в менеджер пакетов, продолжайте с из репозитория Debian

Из репозитория Debian

apt install syncthing

Шаг 4: Создайте службу Syncthing Systemd

Это позволит нам автоматически запускать Syncthing, а также убедиться, что он работает с правильными разрешениями.

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

cd /lib/systemd/system

Делаем копию конфигурационного файла

cp syncthing@.service syncthing@www-data

Редактируем Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.

Измените описание, домашний каталог и пользователя.

[Unit] Description=Syncthing - Nextcloud Compatible for %I

[Service] User=www-data

ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --home=/opt/syncthing-config --logflags=3 --logfile=/var/log/syncthing.log

logfile=/var/log/syncthing.log

Домашний каталог — это место, которое мы указали для файлов конфигурации Syncthing /opt/syncthing-config. Раздел ведения журнала необязателен, но может быть полезен, если что-то пойдёт не так. Всё остальное оставьте как есть.

Включите службу, чтобы она запускалась автоматически.

systemctl enable syncthing@www-data

После внесения изменений в файл службы вам нужно перезагрузить конфигурацию systemd:

sudo systemctl daemon-reload

Теперь запустите службу и проверьте, нет ли ошибок.

systemctl start syncthing@www-data

systemctl status syncthing@www-data

` *  Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. - Syncthing - Nextcloud Compatible for www/data Loaded: loaded ( /lib/systemd/system/Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-07-07 11:52:58 UTC; 4s ago Docs: man:Syncthing(1) Main PID: 15925 (Syncthing) Tasks: 12 (limit: 9830) Memory: 48.4M

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

Остановите службу синхронизации.

systemctl stop syncthing@www-data>

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

Шаг 5: Отредактируйте конфигурацию Syncthing

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

/opt/syncthing-config/config.xml

IP-адрес графического интерфейса — 127.0.0.1:8384, что означает, что он будет доступен только с localhost. Чтобы сделать графический интерфейс доступным с любого IP-адреса, измените адрес графического интерфейса на 0.0.0.0:8384, что сделает его доступным с любого хоста.

<gui enabled="true" tls="false" debugging="false">

<address>0.0.0.0:8384</address>

<apikey>xxxxxxxxxx</apikey>

<theme>default</theme>

</gui>

Запустите службу снова и еще раз убедитесь в отсутствии ошибок.

systemctl start syncthing@www-data 

systemctl status syncthing@www-data

Шаг 6: Подтвердите доступ к графическому интерфейсу

Теперь графический интерфейс Syncthing должен быть доступен через веб-браузер по IP-адресу или имени хоста сервера Nextcloud и порту Syncthing. Для нас это http://cloud:8384

Здесь вы увидите графический интерфейс Syncthing, который должен выглядеть так, как показано на изображении ниже.

Синхронизация - графический интерфейс пользователя

Шаг 7: Настройка одноранговых узлов и общих папок

Подключите дополнительные клиенты и настройте папки Syncthing так, как обычно. Поскольку Syncthing теперь работает от имени www-data, убедитесь, что папка хранится в каталоге, принадлежащем www-data. Мы выбрали /srv/syncthing на шаге 2.

Чтобы устранить ошибку папки по умолчанию, удалите её и создайте новую папку в выбранном каталоге.

Syncthing - удалить папку по умолчанию Syncthing - воссоздать папку по умолчанию

Я подключил нового клиента к cloud, которого называю clouduser.

В clouduser я создал новую папку, а внутри неё — файл с названием hello-world.txt

# hello-world.txt If this text is visible from within Nextcloud, then Syncthing has been properly integrated!

Затем я поделился этой папкой с cloud. Вы можете увидеть clouduser графический интерфейс справа, а cloud графический интерфейс — слева.

Синхронизация - общий доступ между облаком и clouduser

При добавлении новых синхронизированных папок в cloud убедитесь, что родительский каталог принадлежит www-data, например, папке /srv/syncthing, которую мы создали ранее.

Syncthing - добавить общую папку

Ниже вы можете видеть, что cloud получил hello-world.txt файл от clouduser.

Syncthing - синхронизирован новый файл

 

 

Шаг 8: Добавьте папку Syncthing в Nextcloud

Шаг 1: Подключите и смонтируйте второй HDD

  1. Подключите HDD: Убедитесь, что ваш второй HDD физически подключен к серверу.
  2. Определите устройство: Используйте команду lsblk или fdisk -l, чтобы найти название вашего второго HDD (например, /dev/sdb1).
  3. Создайте точку монтирования:sudo mkdir /mnt/second_hdd
  4. Отредактируйте файл /etc/fstab для автоматического монтирования:
    Откройте файл в текстовом редакторе:sudo nano /etc/fstabДобавьте строку в конце файла, чтобы автоматически монтировать HDD при загрузке. Например:/dev/sdb1 /mnt/second_hdd ext4 defaults 0 0Замените /dev/sdb1 на ваше устройство и ext4 на файловую систему вашего HDD, если она другая.
  5. Смонтируйте HDD:sudo mount -a

Шаг 2: Настройка Nextcloud

  1. Создайте папку для Nextcloud:
    Перейдите в смонтированный HDD и создайте папку, которую вы хотите использовать в Nextcloud:sudo mkdir /mnt/second_hdd/nextcloud_data
  2. Настройте права доступа:
    Убедитесь, что веб-сервер (обычно это www-data для Apache или Nginx) имеет доступ к этой папке:
  3. chown -R www-data:www-data /srv/common/Syncthing
  4. chmod -R 755 /srv/common/Syncthing/User1
  5. Добавьте папку в Nextcloud:
    • Войдите в интерфейс Nextcloud как администратор.
    • Перейдите в Настройки (Settings) -> Администрирование (Administration) -> Хранилище (Storage).
    • Нажмите на Добавить хранилище (Add storage).
    • Выберите тип хранилища (обычно это "Локальное" или "Local").
    • Введите путь к папке на втором HDD (например, /mnt/second_hdd/nextcloud_data).
    • Убедитесь, что выбран правильный пользователь для доступа к этой папке (обычно это www-data).
  6. Сохраните изменения.

Шаг 3: Проверьте добавление папки

После добавления папки в Nextcloud, вы должны увидеть её в файловом интерфейсе. Попробуйте загрузить несколько файлов, чтобы убедиться, что всё работает корректно.

   1. В Nextcloud нажмите на значок "Программы". Далее слева меню Центр приложений заходим Ваши приложения и с права почти в самом низу включите External storage support.

        2. Затем снова нажмите на значок «Профиля» в верхнем правом углу и выберите "Параметры сервера",  слева в меню "Параметры сервера" выбераем "Внешнее хранилище" .

 Здесь вы можете настроить место хранения данных Syncthing. Путь можно указать как относительный или абсолютный.

nextcloudBX.jpg

Шаг 9: Наслаждайтесь интеграцией Nextcloud и Syncthing

Последний шаг — найти синхронизированный каталог и просмотреть файл. В приложении Nextcloud Files выберите только что созданную папку Syncthing.

Nextcloud - Папка Синхронизации

Внутри вы найдёте папку с документами, которую мы синхронизировали, а также файл hello-world.txt

Nextcloud - Просмотр синхронизированного файла

С этого момента любые изменения в этом файле будут синхронизироваться в обоих направлениях.

Заключение

В итоге мы создали полностью синхронизированную и размещённую на нашем сервере альтернативу Google Диску. Любые внесённые изменения будут синхронизироваться на всех подключённых устройствах. Это столь необходимое решение помогает нам сделать ещё один шаг к полному контролю над нашими данными.

Материал использован:  https://itcamefromtheinternet.com/blog/how-to-setup-nextcloud-syncthing/

Comments powered by CComment