MAATRIX / Блог / Syncthing на сервере: частые ошибки и решения

Syncthing на сервере: частые ошибки и решения

Syncthing на сервере: частые ошибки и решения

MAATRIX

Syncthing надёжен, но на сервере всплывают свои грабли: узлы не находят друг друга, папка вечно «Out of Sync», плодятся файлы с пометкой sync-conflict, а GUI недоступен после установки. Ниже — частые ошибки Syncthing на VPS и их решения: по каждой указана причина и конкретные команды.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Узлы не подключаются друг к другу

Устройства добавлены, ID введён верно, а статус узла — «Disconnected». Первое, что проверить, — открыт ли порт синхронизации на сервере:

ufw status
ss -tlnp | grep 22000

Порт 22000 (TCP и UDP) должен быть открыт наружу. Если фаервол его режет:

ufw allow 22000/tcp
ufw allow 22000/udp
ufw reload

Вторая причина — узлы полагаются только на локальное обнаружение, а находятся в разных сетях. Убедитесь, что в Настройки → Соединения включены Global Discovery и Relaying. Тогда узлы найдут друг друга через публичные серверы обнаружения даже за NAT. Проверить внешнюю доступность порта можно с другого хоста:

nc -vz ВАШ_IP 22000

Если порт «filtered» — трафик режет провайдер или облачная security group, а не только ufw. Это частая скрытая причина: локально ufw всё разрешает, а внешний фильтр провайдера поверх системного молча режет входящие, и узлы упорно не соединяются напрямую. Проверяйте доступность порта именно снаружи, с другого хоста, а не только с самого сервера, иначе диагностика уводит в ложном направлении.

Третья причина, о которой забывают, — рассинхрон версий или времени. Если на сервере сбито системное время, установление зашифрованного соединения между узлами может срываться, потому что проверки завязаны на актуальные метки. Убедитесь, что время синхронизировано (timedatectl status), а версия Syncthing на узлах не слишком расходится — очень старый клиент на одном из устройств иногда не договаривается с новым протоколом.

Папка вечно «Out of Sync»

Синхронизация запущена, но прогресс замер и папка показывает «Out of Sync» с процентом меньше 100. Разверните раздел папки — Syncthing перечислит проблемные файлы с причиной. Три типовых случая.

Права доступа: пользователь, от которого работает демон (syncthing), не может писать в каталог. Исправьте владельца:

sudo chown -R syncthing:syncthing /home/syncthing/Sync

Нет места на диске — самая частая причина у «застрявшей» папки:

df -h

И конфликт режимов: если на обоих узлах папка стоит «Send & Receive», а один из них считает файл другим — синхронизация буксует. Для серверной копии-хранилища переведите папку в «Receive Only», тогда сервер принимает изменения, но не навязывает свои.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Плодятся файлы sync-conflict

В папке появляются копии вида имя.sync-conflict-20260824-.... Это не баг: два узла изменили один файл, пока не видели друг друга, и Syncthing сохранил обе версии, чтобы ничего не потерять. Решение — выбрать нужную версию и удалить конфликтную копию.

Чтобы конфликтов было меньше: не редактируйте один файл одновременно на двух устройствах и дайте узлам чаще синхронизироваться (постоянно включённый VPS как раз для этого). Найти все конфликты на сервере:

find /home/syncthing/Sync -name "*sync-conflict*"

Для баз данных и файлов, которые пишутся приложением в реальном времени (например, активный SQLite), Syncthing не подходит — их синхронизируйте в остановленном состоянии или исключите через .stignore.

GUI недоступен после установки

Открываете http://IP:8384 — не отвечает. Так и задумано: по умолчанию панель слушает только 127.0.0.1, наружу не торчит. Правильный доступ — через SSH-туннель:

ssh -L 8384:127.0.0.1:8384 root@ВАШ_IP

Затем откройте http://127.0.0.1:8384 в браузере. Если панель нужна на другом адресе, поменяйте address в секции <gui> файла конфигурации, но помните: открытый наружу GUI без пароля — прямой риск. Файл конфигурации:

nano /home/syncthing/.local/state/syncthing/config.xml

В свежих версиях путь конфига — ~/.local/state/syncthing/, в старых — ~/.config/syncthing/. После правки перезапустите сервис.

Высокое потребление CPU и диска

Syncthing грузит процессор на 100% и сервер тормозит. Обычно это первичное сканирование большой папки или пересчёт хешей. Дайте ему завершить полное сканирование — после этого нагрузка падает до фоновой.

Если высокая нагрузка постоянна, снизьте частоту сканирования папки (Настройки папки → Full Rescan Interval, увеличьте значение) и включите слежение за файловой системой (fswatcher) вместо периодического обхода — так Syncthing реагирует на изменения, а не перечитывает всё подряд. Проверить, кто ест ресурсы:

top -o %CPU

На совсем слабом тарифе большие библиотеки с сотнями тысяч файлов упрутся в CPU при хешировании — тогда стоит взять сервер на пару ядер мощнее.

Стоит различать разовую и постоянную нагрузку. Разовый всплеск при первом добавлении большой папки — это нормально: Syncthing один раз считает хеши всех файлов, и по завершении процессор освобождается. Пугаться такого всплеска не нужно, важно лишь дать ему завершиться, не перезапуская сервис на середине. А вот постоянно высокая нагрузка — уже симптом: обычно это слишком частое полное пересканирование либо отсутствие слежения за файловой системой, из-за чего Syncthing раз за разом перечитывает весь каталог вместо того, чтобы реагировать на конкретные изменения. Включённый fswatcher и разумный интервал полного пересканирования почти всегда снимают эту проблему, и постоянная нагрузка падает до едва заметной фоновой.

Сервис не стартует или падает

После перезагрузки Syncthing не поднялся. Проверьте, включён ли автозапуск и что пишет журнал:

systemctl status syncthing@syncthing.service
journalctl -u syncthing@syncthing.service -n 50 --no-pager

Частая причина падения — панель или папка на внешнем диске, который монтируется позже старта сервиса. Тогда Syncthing не находит каталог и выходит с ошибкой. Добавьте в unit-файл зависимость RequiresMountsFor= на точку монтирования и:

systemctl daemon-reload
systemctl enable --now syncthing@syncthing.service

Ещё одна ловушка — база данных индекса повредилась после жёсткого выключения. В этом случае Syncthing сам пересоберёт индекс при старте; это может занять время, но данные не теряются.

Разобравшись с портами, правами и режимами папок, вы получаете тихий и надёжный узел синхронизации. Для стабильной работы важен предсказуемый сервер с достаточным диском и открытым портом 22000 — такой VPS в MAATRIX можно оплатить картой РФ, по СБП или криптой.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Почему узлы не видят друг друга?

Чаще всего закрыт порт 22000 наружу или выключен Global Discovery. Откройте порт на фаерволе и проверьте доступность командой nc -vz IP 22000.

Откуда берутся файлы sync-conflict?

Один файл изменили на двух узлах до синхронизации. Выберите нужную версию, удалите конфликтную; чаще синхронизируйте узлы, чтобы конфликтов не было.

Как открыть GUI, если порт не отвечает?

Панель слушает только localhost. Заходите через SSH-туннель ssh -L 8384:127.0.0.1:8384, наружу порт 8384 не открывайте.

Можно ли синхронизировать активную базу данных?

Нет, файлы, которые приложение пишет в реальном времени, дают повреждения. Останавливайте приложение перед синхронизацией или исключайте файл через .stignore.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.