Syncthing синхронизирует файлы напрямую между устройствами: ноутбуком, домашним сервером, телефоном и внешним диском. Центрального облака нет, данные передаются по зашифрованным соединениям, а каждая сторона хранит полноценную копию каталога. Это удобно для рабочих документов, фотоархива и конфигураций, но требует понимания нескольких вещей: как выдавать доступ, что делать с конфликтами и почему синхронизация не заменяет резервное копирование. Ниже — рабочая настройка на Linux и разбор ситуаций, которые чаще всего ломают обмен файлами.

Как работает Syncthing

Каждое устройство получает идентификатор — длинную строку, которая одновременно служит адресом и ключом доверия. При подключении два узла проверяют сертификаты и договариваются о шифровании. Изменения передаются блоками: программа не копирует файл целиком, если изменилась его часть, а сначала сверяет хеши. Поэтому повторная синхронизация большого архива после переименования каталога проходит быстро.

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

Установка и автозапуск

В Debian и Ubuntu есть готовый пакет. Версия 2.x использует базу SQLite, поэтому после обновления с ветки 1.x первый запуск может занять время: старый индекс мигрирует в новый формат. Не прерывайте этот процесс и заранее освободите место на диске.

sudo apt install syncthing
systemctl --user enable --now syncthing
loginctl enable-linger $USER
systemctl --user status syncthing

Пользовательская служба запускается от вашего имени и получает доступ только к вашим файлам. Это правильнее, чем запуск от root: скомпрометированный процесс не сможет переписать системные каталоги. Команда enable-linger нужна на сервере, чтобы служба работала после выхода из сеанса. В некоторых пакетах доступен системный шаблон syncthing@user.service; не включайте одновременно оба варианта.

systemctl --user restart syncthing
journalctl --user -u syncthing -n 20 --no-pager

Первичная настройка и устройства

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

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

Сеть и брандмауэр

Для прямого обмена используется порт 22000 по TCP и UDP, а для локального обнаружения — 21027 UDP. Откройте их только в доверенной зоне, заменив home на зону своего интерфейса. Проверить, что служба действительно слушает порты, можно через ss.

ss -tulpn | grep -E '22000|21027'
sudo firewall-cmd --permanent --zone=home --add-port=22000/tcp
sudo firewall-cmd --permanent --zone=home --add-port=22000/udp
sudo firewall-cmd --permanent --zone=home --add-port=21027/udp
sudo firewall-cmd --reload

Если устройства находятся в разных сетях и прямой канал не устанавливается, проверьте статус подключения в интерфейсе: там видно, используется ли ретранслятор. Для постоянной пары «сервер — ноутбук» полезно прописать статический адрес tcp://192.0.2.10:22000 в расширенных настройках устройства. Это убирает зависимость от обнаружения, но требует стабильного адреса или локального DNS.

Игнорирование файлов и версии

Не всё нужно переносить: временные файлы, кэши и служебные каталоги лучше исключить. Правила хранятся в файле .stignore в корне общей папки. Синтаксис похож на gitignore, но с собственными особенностями; изменения применяются после пересканирования.

cat > ~/Sync/.stignore <<'EOF'
*.tmp
*.part
~$*
.cache/
EOF
find ~/Sync -name '*sync-conflict*' -printf '%TY-%Tm-%Td %p\n'

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

Конфликты и права

Конфликт возникает, когда обе стороны изменили один файл до обмена. Проигравшая версия сохраняется рядом с именем вида document.sync-conflict-20260101-120000-ABCDEF.txt. Не удаляйте такие файлы автоматически: сначала сравните содержимое и решите, какая версия нужна. Массовое появление конфликтов обычно означает, что два узла долго были offline или на одном из них сбиты часы.

Syncthing работает с правами пользователя и не повышает их. Если каталог принадлежит другому владельцу, запись не пройдёт. Символические ссылки не синхронизируются, а имена, различающиеся только регистром, могут конфликтовать при обмене с Windows. Проверяйте права через namei -l и не запускайте службу от root ради обхода ошибки.

Диагностика

Сначала смотрите журнал службы, затем проверяйте здоровье API и состояние папок. Локальный эндпоинт здоровья не требует ключа и удобен для мониторинга.

curl -s 127.0.0.1:8384/rest/noauth/health
journalctl --user -u syncthing -n 50 --no-pager
syncthing --version
df -h ~/Sync; df -i ~/Sync

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

Чек-лист

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

Итог

Syncthing даёт предсказуемую синхронизацию без облака и без ежемесячной подписки. Настройка сводится к установке службы, добавлению устройств, открытию портов и защите интерфейса. Главное — помнить о границах: это инструмент обмена, а не архив и не резервная копия. Если удалить файл на одном узле, он исчезнет и на остальных, поэтому версии и отдельный бэкап должны быть частью схемы с самого начала.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте