- Предварительные условия
- Шаг 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
Редактируем
Измените описание, домашний каталог и пользователя.
[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
` *
Если вы видите ошибки, связанные с папкой по умолчанию, вы можете спокойно игнорировать их на данный момент.
Остановите службу синхронизации.
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.
Чтобы устранить ошибку папки по умолчанию, удалите её и создайте новую папку в выбранном каталоге.
Я подключил нового клиента к 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 графический интерфейс — слева.
При добавлении новых синхронизированных папок в cloud убедитесь, что родительский каталог принадлежит www-data, например, папке /srv/syncthing, которую мы создали ранее.
Ниже вы можете видеть, что cloud получил hello-world.txt файл от clouduser.
Шаг 8: Добавьте папку Syncthing в Nextcloud
Шаг 1: Подключите и смонтируйте второй HDD
- Подключите HDD: Убедитесь, что ваш второй HDD физически подключен к серверу.
- Определите устройство: Используйте команду lsblk или fdisk -l, чтобы найти название вашего второго HDD (например, /dev/sdb1).
- Создайте точку монтирования:sudo mkdir /mnt/second_hdd
- Отредактируйте файл /etc/fstab для автоматического монтирования:
Откройте файл в текстовом редакторе:sudo nano /etc/fstabДобавьте строку в конце файла, чтобы автоматически монтировать HDD при загрузке. Например:/dev/sdb1 /mnt/second_hdd ext4 defaults 0 0Замените /dev/sdb1 на ваше устройство и ext4 на файловую систему вашего HDD, если она другая. - Смонтируйте HDD:sudo mount -a
Шаг 2: Настройка Nextcloud
- Создайте папку для Nextcloud:
Перейдите в смонтированный HDD и создайте папку, которую вы хотите использовать в Nextcloud:sudo mkdir /mnt/second_hdd/nextcloud_data - Настройте права доступа:
Убедитесь, что веб-сервер (обычно это www-data для Apache или Nginx) имеет доступ к этой папке: - chown -R www-data:www-data /srv/common/Syncthing
- chmod -R 755 /srv/common/Syncthing/User1
- Добавьте папку в Nextcloud:
- Войдите в интерфейс Nextcloud как администратор.
- Перейдите в Настройки (Settings) -> Администрирование (Administration) -> Хранилище (Storage).
- Нажмите на Добавить хранилище (Add storage).
- Выберите тип хранилища (обычно это "Локальное" или "Local").
- Введите путь к папке на втором HDD (например, /mnt/second_hdd/nextcloud_data).
- Убедитесь, что выбран правильный пользователь для доступа к этой папке (обычно это www-data).
- Сохраните изменения.
Шаг 3: Проверьте добавление папки
После добавления папки в Nextcloud, вы должны увидеть её в файловом интерфейсе. Попробуйте загрузить несколько файлов, чтобы убедиться, что всё работает корректно.
1. В Nextcloud нажмите на значок "Программы". Далее слева меню Центр приложений заходим Ваши приложения и с права почти в самом низу включите External storage support.
2. Затем снова нажмите на значок «Профиля» в верхнем правом углу и выберите "Параметры сервера", слева в меню "Параметры сервера" выбераем "Внешнее хранилище" .
Здесь вы можете настроить место хранения данных Syncthing. Путь можно указать как относительный или абсолютный.
Шаг 9: Наслаждайтесь интеграцией Nextcloud и Syncthing
Последний шаг — найти синхронизированный каталог и просмотреть файл. В приложении Nextcloud Files выберите только что созданную папку Syncthing.
Внутри вы найдёте папку с документами, которую мы синхронизировали, а также файл hello-world.txt
С этого момента любые изменения в этом файле будут синхронизироваться в обоих направлениях.
Заключение
В итоге мы создали полностью синхронизированную и размещённую на нашем сервере альтернативу Google Диску. Любые внесённые изменения будут синхронизироваться на всех подключённых устройствах. Это столь необходимое решение помогает нам сделать ещё один шаг к полному контролю над нашими данными.
Материал использован: https://itcamefromtheinternet.com/blog/how-to-setup-nextcloud-syncthing/
Comments powered by CComment