Syncthing настройка под windows

Обновлено: 02.07.2024

Если вам необходимо облако, вы можете его арендовать, например Dropbox. Но, проще и выгодней поднять свой собственный сервер под управлением Syncthing. Из достоинств своего облака можно выделить неограниченное дисковое пространство, относительная бесплатность. Так как вам не придется каждый месяц платить за облачное хранилище, а собрать сервер можно за копейки, а то и вовсе пустить под сервер свой старый компьютер. Syncthing шифрует передаваемые данные, а это значит, что все ваши данный останутся в безопасности. Так же вы сможете подключать к серверу под управлением Syncthing устройства на Android, Windows и Linux. Что в свою очередь весьма удобно. Особенно, если вам необходимо облачное хранилище например в компании, да и в домашних условиях такая роскошь отнюдь не лишена смысла. Из достоинств Syncthing можно выделить конфиденциальность, шифрование, открытый программный код, простота. Весь процесс настройки можно осуществить при помощи веб-интерфейса.

Устанавливаем облачное хранилище Syncthing

Устанавливать мы будем на сервер под управлением Debian / Ubuntu. Но, для начала нам понадобится инструмент под названием “curl”, далее необходимо скачать и добавить в нашу систему GPG ключ, делается это командами:

Теперь подключаем репозиторий:

После чего устанавливаем Syncthing:

sudo apt-get update
sudo apt-get install syncthing

Настройка облачного хранилища Syncthing

С настройкой все достаточно просто, запускаем Syncthing, это можно сделать как из терминала, так и используя иконки запуска, которые вы найдете в установленных приложениях. Иконка Start syncthing запустит syncthing, а Syncthing Web Ui запустит браузер с нужным нам ip адресом для настройки syncthing. Что бы запустить через терминал, достаточно набрать в терминале название “syncthing”

P.S. если же вы устанавливаете syncthing на сервер без графического окружения, запустить syncthing можно выполнив команды:

sudo systemctl enable syncthing @user .service
sudo systemctl start syncthing @user .service

Где “ user ” необходимо заменить на пользователя, который у вас создан в системе, либо, создать нового пользователя, который будет запускать syncthing.

Далее идем в браузер, откуда мы и будем производить настройки syncthing. В браузере вбиваем адрес:

image


У меня тут внезапно завалялся гайд по настройке syncthing. Я уверен, что многим это может пригодиться.

Про революцию в дистрибуции файлов, которую совершил torrent-протокол рассказывать излишне. Одна проблема была у классических версии технологии — статичность. Если данные в каталоге изменялись, приходилось заново создавать и передавать всем новый torrent-файл. И вдруг, внезапно появляется BitTorrentSync. Наступает всеобщее счастье, теперь можно синхронизировать целые массивы изменяющихся данных. Однако, спустя время проприетарность софта выливается в сильное урезание функциональности, привязку к своим серверам и довольно агрессивную монетизацию. Вот тут и выходит на сцену идеологически кошерный свободный преемник — Syncthing.

Syncthing, как и обычный torrent может пролезть практически через любые барьеры в виде файерволлов, NAT и тому подобное. В случае серых IP-адресов полагается на централизованные релеи и сервера-анонсеры. При этом можно спокойно поднять их самостоятельно, что дает полную независимость от инфрастуруктуры разработчиков. Все узлы в кластере равноправны. Можно задать двустороннюю и одностороннюю синхронизацию, когда изменения на удаленных копиях не затронут оригинал. Умеет версионирование. Красота, одним словом.

В моем случае решалась задача ежедневного создания резервных копий баз данных. 3 независимых отделения в разных концах города. Интернет через Yota-модем, воткнутый в Mikrotik. Канал узкий и нестабильный по ширине. Основная идея, которая была реализована — обмен по принципу torrent-протокола копиями баз по ночам, когда нагрузка на сеть минимальна, а базы никто не трогает. В результате, каждое подразделение хранит копии двух соседних. Хорошая избыточность и географическая распределенность, что уже спасло однажды, когда сервер внезапно был убит ударом молнии.

Устанавливаем. По умолчанию я имею в виду сервер на базе deb-based Linux, хотя у syncthing есть и версии для Windows и Android. Для продакшена добавим репозитории из стабильной ветки и установим:


Теперь надо разобраться с демонами. Подобный софт не должен работать от имени root. Все созданные в результате синхронизации файлы должны принадлежать локальному пользователю. Поэтому есть два варианта — автоматический запуск как системный сервис либо в качестве пользовательского сервиса. Второй вариант будет работать только тогда, когда пользователь залогинился через ssh или авторизировался в локальной системе. Нас интересует системный демон и для этого лучше всего подойдет глубоко любимый общественностью systemd. Пути могут немного отличаться в разных дистрибутивах. Данный мануал применим к Debian и Ubuntu 16.04 Server. Для начала создаем юнит:


И вносим туда следующее содержимое:

[Unit]
Description=Syncthing - 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

Теперь остается лишь активировать сервис от имени нужного пользователя и можно настраивать ноду.



/.config/syncthing/config.xml. Дальнейшие настройки предельно просты — добавляются доверенные ноды по уникальному ключу, а затем расшариваются нужные каталоги в режиме одно- или двусторонней синхронизации. При необходимости можно вручную указать ip адрес и порт ноды, без этого для установления связи будет использоваться сеть серверов-анонсеров и релеев. Более того, вы можете поднять анонсеры и релеи на своей инфраструктуре, что позволяет использовать ПО в рамках разветвленной локальной сети компании.


В любой момент можно удобно просмотреть список синхронизируемых файлов. Крайне полезный и удобный в настройке получился софт. Ресурсы потребляет достаточно экономно. прямо сейчас в режиме ожидания ест около 15 мегабайт RAM и доли процента процессорного времени. Общий объем данных в кластере в районе 500 ГБ.

Всем удачи в экспериментах. Прочной изоленты.

Update 1


Спасибо datacompboy. Нашел интересный флаг для игнорирования удаления в мастер-ноде.
ignoreDelete is an advanced folder setting that affects the handling of incoming index updates. When set, incoming updates with the delete flag set are ignored.

Некоторая проблема в том, что с точки зрения других нод, это будет рассинхроном.

Assume two devices, “Alice” and “Bob”, are sharing a folder. Bob has set ignoreDelete.

New and updated files are synchronized as usual between Alice and Bob. When Bob deletes a file, it is deleted for Alice as well. When Alice deletes a file, Bob ignores that update and does not delete the file.

In this state, Bob is fully up to date from his own point of view, as is Alice from her own point of view.

However from the point of view of Alice, who deleted a file and propagated the update, Bob is now out of date because he is yet to remove the file that was deleted.

From the point of view of Bob, who ignored the delete entry from Alice, Alice is now out of date because she is missing the file that was deleted

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

Возможности платформы Syncthing

  • Кроссплатформенность - поддерживаются почти все популярные операционные системы.
  • Мобильность - существует приложение для Android, обещается приложение для IOS.
  • Безопасность - все данные передаются в зашифрованном виде. Каждый узел идентифицируется заверенным сертификатом. Подробнее о безопасности можно прочитать здесь.
  • Управление версиями файлов - защита от случайного удаления, также поддерживается ступенчатое управление версиями.
  • Синхронизация по схеме P2P - для передачи файл разбивается на части, и если он есть на других нодах вашего кластера, то они тоже участвуют в передаче.
  • Возможность работы через NAT и фаерволы.
  • Open Source! - открытый код и стандартизированный протокол Block Exchange Protocol v1.

Основные термины в Syncthing

ID - уникальный идентификатор устройства.
Релеи - сервера, которые используются для передачи трафика между устройствами в случае невозможности установки прямого соединения.
Глобальное обнаружение - сервера, сопоставляющие ID устройств их внешним IP адресам. При отключении функции и смене внешнего IP адреса устройство будет недоступно через интернет.
Локальное обнаружение - широковещательная рассылка IPv4 и IPv6 пакетов по локальной сети, содержащих ID устройства и номер прослушиваемого порта. При отключении функции и смене IP адреса устройство будет недоступно в локальной сети.

Настройка Syncthing в Windows

Syncthing интерфейс

Приложение Syncthing не требует установки, просто распаковываем и запускаем syncthing.exe. Все ссылки для загрузки Syncthing можно посмотреть на странице программы. Само приложение консольное, графический интерфейс сделан в виде web-станицы и доступен по адресу 127.0.0.1:8384.


Чтобы добавить устройство, необходимо знать его ID. Также на добавляемом устройстве необходимо подтвердить это действие. Нажимаем «Add Remote Device» и вписываем идентификатор и название устройства. Можно указать, какими папки с ним можно поделиться.



Затем подтверждаем запрос на удаленном устройстве


Запуск с параметрами

Если планируется часто использовать программу, то имеет смысл настроить автозапуск. Можно настроить запуск в планировщике Windows. При этом, если Вы хотите запускать приложение без входа пользователя (актуально для серверов), то необходимо задать пароль для графического интерфейса и выполнять от имени непривилегированного пользователя. Это требуется для безопасности!
Можно добавить аргументы к запуску: -no-console -no-browser , что означает «не запускать консоль, не открывать в браузере».


Управление версиями файлов

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


Запуск собственного relay сервера

Как уже было сказано выше, при отсутствии прямого соединения между устройствами, оно устанавливается через relay сервер. В принципе, ничего страшного в этом нет, единственная получаемая этими серверами информация - это IP адреса клиентов и их ID, весь передаваемый трафик проходит в зашифрованном виде. Другой вопрос, что этих серверов не так уж много. И поскольку это некоммерческий проект, то скорость передачи данных никто гарантировать не может. Но ничто не мешает Вам развернуть собственный relay сервер.

Syncthing relay сервер

Скачиваем и распаковываем архив с сервером, который представляет собой консольное приложение. При первом запуске в папке с программой генерируются сертификат и секретный ключ RSA. Расположение ключа и сертификата можно изменить командой -keys, например, -keys="C:\Keys" . По умолчанию сервер запускается как общедоступный. Чтобы запускать его как приватный, необходимо использовать команду -pools="" .


relay сервер - запуск с параметрами

Для запуска релей сервера с параметрами удобно будет создать ярлык.



Команда -listen=":22069" задает прослушиваемый порт, по умолчанию используется TCP 22067. Ниже приведу список команд, с описанием на английском:

Usage of relaysrv:
-debug
Enable debug output
-ext-address string
An optional address to advertising as being available on.
Allows listening on an unprivileged port with port forwarding from e.g.
443, and be connected to on port 443.
-global-rate int
Global rate limit, in bytes/s
-keys string
Directory where cert.pem and key.pem is stored (default ".")
-listen string
Protocol listen address (default ":22067")
-message-timeout duration
Maximum amount of time we wait for relevant messages to arrive (default 1m0s)
-network-timeout duration
Timeout for network operations between the client and the relay.
If no data is received between the client and the relay in this
period of time, the connection is terminated. Furthermore, if no
data is sent between either clients being relayed within this
period of time, the session is also terminated. (default 2m0s)
-per-session-rate int
Per session rate limit, in bytes/s
-ping-interval duration
How often pings are sent (default 1m0s)
-pools string
Comma separated list of relay pool addresses to join (default "https:// relays.syncthing.net/endpoint")
-provided-by string
An optional description about who provides the relay
-status-srv string
Listen address for status service (blank to disable) (default ":22070")

Адрес relay сервера

После того, как определились с нужными командами, необходимо открыть порт для нашего relay сервера. Как открыть порт на роутере, можно прочитать в статье.
Теперь можно указывать в устройствах в качестве релея свой собственный сервер. Пишется он в следующем формате: relay://192.168.10.2:22069. Здесь можно указывать как внешний IP адрес, так и домен.
UPD: Теперь релеи необходимо указывать в поле "Адрес протокола синхронизации".


Настройки Syncthing в Android приложении аналогичны настройкам в Windows. Там их также можно производить через Web интерфейс.

syncthing

Намучившись с Bittorrent Sync, наконец стал виден свет в конце туннеля. Свободный Syncthing! Уже сейчас, он объективно лучше своего проприетарного аналога. Поговорим о нем.

*запись дополнена 5.10.2016

Ставим Syncthing в Ubuntu . Итак, поехали (добавляем репозиторий, импортируем ключ, устанавливаем):

Далее, будет первый запуск Syncthing. Дайте ему штатно запустится:

Найти секцию (с 127.0.0.1):

И заменить ее на (0.0.0.0):

Настроим автозапуск Syncthing и ее работу как системной службы.

=========== Ubuntu 14.04 (upstart) ===========

Создаем сам скрипт:

Содержимое скрипта (demouser заменить на своего юзверя):

Дальнейший запуск и остановку нужно теперь выполнять следующей командой (запускается как демон, в фоне):

=========== Ubuntu 16.04 (systemd) ===========

Серверный.. создаем сам скрипт:

Десктопный.. создаем сам скрипт (создайте папки эти в home):

Вот и все! Настройка автозапуска завершена.

=========== Windows (Task Manager) ===========

О нет! Неужели мы собрались использовать эту порочную ОС, погрязшую в ереси? А почему нет? Наверняка, в хозяйстве, где-нибудь такая да есть. Так почему бы не сделать из нее дополнительную ноду? Сделаем! Суть такова: скачайте с сайта и положите куда-нить Syncthing для Windows, это portable версия и ее можно сразу запускать, а после старта переходить в веб-интерфейс (все точно так же, как описано выше).

После создания, там же ее можно сразу и запустить из общего списка.

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

Как видите, все довольно просто, наглядно и понятно. Почти все можно настроить.

Выводы

It just works! Я специально не стал перехешировать все эти 100 гиг (который уже были на моих нодах, после старого синхронизатора) и дал ему возможность проявить себя. И он справился. Никаких нареканий. Идеально!

Привет
подскажи что значит параметр Master в настройках папки?

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

Кол тебе в глаза за темный фон и серый текст.
С телефона читать невозможно!

Ну можно еще примонтировать по samba-cifs, без разницы, Synthing же без разницы как будет примонтирована папка.

Читайте также: