Syncthing или Nextcloud: что выбрать для VPS
Сравнение архитектур Syncthing и Nextcloud для VPS. Узнайте, почему Syncthing лучше для синхронизации между своими устройствами, а Nextcloud подходит для обмена файлами через веб.
Syncthing против Nextcloud: ключевое различие при выборе
Выбор между Syncthing и Nextcloud сводится к одному структурному различию, из которого вытекают все остальные особенности. Syncthing работает по принципу peer-to-peer. Каждое устройство хранит полную копию папки, и ни одна из них не является эталонной. Nextcloud — это серверное решение. Файлы хранятся на одной машине, доступ к ним осуществляется через учетные записи пользователей, а клиенты загружают копии данных на свои устройства.
Именно поэтому в Syncthing нет функции создания ссылок для общего доступа или веб-интерфейса для просмотра документов. Поскольку центральной копии, которую можно было бы транслировать, не существует, браузеру просто не к чему обращаться. Nextcloud предоставляет обе эти возможности, но для их работы требуются среда выполнения PHP, сервер баз данных, веб-сервер и reverse proxy для обеспечения TLS (transport layer security).
Выбирайте Syncthing, если все используемые устройства принадлежат вам. Выбирайте Nextcloud, если вам нужен доступ к файлам через браузер или возможность предоставлять доступ другим пользователям.
Что на самом деле делает VPS в каждой из схем
VPS с запущенным Nextcloud — это основное хранилище ваших данных. Если удалить локальную копию на ноутбуке, файл останется на сервере, так как сервер всегда был первоисточником.
VPS с запущенным Syncthing выполняет иную задачу: это постоянно работающий узел (peer). Syncthing передаёт данные напрямую между двумя устройствами, которые находятся в сети одновременно. Два ноутбука, которые никогда не включены в одно и то же время, не смогут синхронизироваться, сколько бы вы ни ждали. Добавьте третий узел на VPS, который никогда не выключается, и проблема исчезнет. Ноутбук A отправляет данные в 09:00, ноутбук B забирает их в 22:00, а VPS хранит папку в промежутке между этими событиями.
Это действительно полезная роль, и она скромнее, чем «замена Dropbox». Syncthing никогда не предоставит вам ссылку для отправки клиенту. Если вам требуется именно это, остановитесь здесь и прочитайте обзор self-hosted альтернатив Dropbox.
Стоимость каждого решения на небольшом VPS
Syncthing представляет собой единственный бинарный файл на языке Go. Он ожидает соединений на сокете, хранит индекс ваших файлов в локальной базе данных, и это весь стек целиком. Начиная с версии 2.0, этот индекс использует SQLite вместо LevelDB, поэтому при обновлении с версии 1.x при первом запуске выполняется однократная миграция. На больших наборах папок эта миграция может занять много времени. Дайте ей завершиться. Ничего больше устанавливать или обновлять не требуется.
Nextcloud требует больше ресурсов. По состоянию на август 2026 года, Nextcloud 35 поддерживает PHP 8.3–8.5 с MariaDB или PostgreSQL в качестве бэкенда, работая под управлением Apache 2.4 или nginx с php-fpm. В руководстве администратора рекомендуется «минимум 512 МБ ОЗУ на процесс», а php-fpm запускает сразу несколько рабочих процессов.
На VPS с 1 ГБ ОЗУ Syncthing работает комфортно, а для Nextcloud ресурсов в обрез. Это не делает Nextcloud плохим выбором. Это означает более высокие требования к обслуживанию: вам нужно поддерживать в актуальном состоянии четыре компонента вместо одного. Использование контейнеров, описанное в руководстве по Nextcloud на VPS с Docker, TLS и резервным копированием, — самый простой способ справиться с этой нагрузкой. Добавление редактирования документов в браузере ещё сильнее повышает требования к ресурсам, что подробно разобрано в сравнении OnlyOffice и Collabora для серверов с 2–4 ГБ ОЗУ.
Установка Syncthing на VPS
В Ubuntu есть пакет syncthing, но он значительно отстает от актуальной версии. Используйте официальный репозиторий проекта.
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
syncthing --versionКоманда syncthing --version должна вывести строку, начинающуюся с syncthing v2. Если там указан v1, значит, apt по-прежнему отдает предпочтение пакету из дистрибутива. Установите приоритет для вышестоящего репозитория и повторите установку.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefЗапускайте Syncthing как системную службу от имени обычного пользователя, чтобы сервис стартовал при загрузке системы без необходимости входа в систему.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.serviceКоманда systemctl status должна вывести active (running). Файлы конфигурации и индексы сохраняются в /home/youruser/.local/state/syncthing, а сам файл конфигурации называется config.xml. В установках, созданных до версии Syncthing 1.27, они находятся в ~/.config/syncthing, поэтому проверяйте оба пути перед копированием данных между машинами.
Затем откройте порты. Syncthing использует 22000/TCP для протокола синхронизации, 22000/UDP для транспорта QUIC и 21027/UDP для локального обнаружения. Обнаружение использует широковещательные и многоадресные рассылки, которые не работают через интернет, поэтому на VPS вам нужны только первые два порта.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusКоманда ufw status должна показать оба правила. Если она выводит Status: inactive, значит, ufw не фильтрует трафик, и единственным активным барьером является сетевой брандмауэр вашего хостинг-провайдера. Проверьте также панель управления хостингом, так как на большинстве площадок это отдельный уровень контроля. Если удаленное устройство зависает на статусе Disconnected при запущенном сервисе, это обычно означает, что один из этих двух брандмауэров все еще закрыт.
Доступ к веб-интерфейсу Syncthing без публикации в сети
Веб-интерфейс (GUI) по умолчанию слушает 127.0.0.1:8384, поэтому он отвечает только на запросы с самого сервера. Это стандартное защитное поведение, так как через GUI доступен ключ API (интерфейса прикладного программирования), позволяющий изменять пути к любым папкам на сервере.
Не открывайте его для доступа извне в качестве первого шага. Документация прямо предупреждает о последствиях привязки к сетевому адресу: «указание локального IP-адреса вашего компьютера НЕ ограничит доступ только устройствами вашей локальной сети!». Вместо этого используйте SSH-проброс порта с вашего ноутбука.
ssh -L 8384:127.0.0.1:8384 youruser@your.vps.exampleОткройте http://127.0.0.1:8384 в браузере на локальной машине, пока активна SSH-сессия. Туннель закроется вместе с сессией, поэтому после завершения работы порт не останется открытым.
Если вам всё же необходим прямой доступ к GUI, сначала установите учетные данные. Поскольку на сервере нет браузера, выполните это через командную строку.
sudo systemctl stop syncthing@youruser.service
sudo -H -u youruser syncthing generate --gui-user=admin --gui-password=-
sudo systemctl start syncthing@youruser.serviceПараметр -H важен, так как без него sudo использует домашнюю директорию пользователя root, и вы отредактируете не тот файл config.xml. Использование одиночного дефиса в качестве значения пароля заставляет syncthing generate считывать пароль из стандартного потока ввода. Это предотвращает попадание пароля в историю командной оболочки, а само значение хешируется перед записью в файл. После входа в систему включите HTTPS в настройках GUI.
Почему Syncthing распространяет ваши ошибки
В FAQ Syncthing содержится ответ на вопрос о резервном копировании: «Syncthing — не лучшее решение для резервного копирования, так как любые изменения в ваших файлах (редактирование, удаление и т. д.) будут распространены на все ваши устройства».
Если вы случайно удалите папку на ноутбуке, Syncthing сработает именно так, как задумано. Она удалит эту папку везде, за считанные секунды. Синхронизация означает согласие, а согласие включает в себя и подтверждение того, что файла больше нет.
Версионирование файлов — это способ защиты, но оно отключено, пока вы его не включите. В документации указано, что по умолчанию «версионирование файлов не используется, то есть старые копии файлов не сохраняются». Для каждой папки доступны четыре стратегии. Trash Can сохраняет одну копию каждого файла, удаленного или замененного в результате изменений на другом устройстве. Simple хранит заданное количество старых версий для каждого файла. Staggered сокращает историю по мере её устаревания, сохраняя почасовые копии в течение дня, ежедневные — в течение месяца и так далее. External передает каждое решение написанной вами команде. Старые копии помещаются в директорию .stversions внутри общей папки.
Настройте Staggered на узле VPS, а на ноутбуках оставьте версионирование выключенным. Тогда постоянно работающий узел будет хранить историю, а ноутбуки останутся «легкими».
Nextcloud справляется с этим лучше, но всё равно не является полноценным резервным копированием. Удаленные файлы попадают в корзину, а правки сохраняются приложением Versions, но оба механизма автоматически очищаются по мере заполнения диска. Процесс на вашем ноутбуке, который шифрует файлы, синхронизирует эти зашифрованные версии на сервер, а корректные копии со временем удаляются согласно собственному графику.
Оба инструмента требуют наличия под ними полноценной системы резервного копирования: снимков состояния, создаваемых отдельной программой, которые записываются туда, куда клиент синхронизации не имеет доступа, и которые хотя бы раз были восстановлены, чтобы вы были уверены в работоспособности процесса восстановления. Сравнение restic и BorgBackup поможет выбрать инструмент, который стоит направить на директорию с данными.
Различия в обработке конфликтов
Оба инструмента создают файл конфликта, если обе стороны изменили один и тот же файл между сеансами синхронизации. Разница заключается в том, кто именно видит этот файл.
Syncthing переименовывает проигрывающую копию в <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. Копия с более ранним временем изменения проигрывает. Если время совпадает, проигрывает устройство с большим значением первых 63 бит идентификатора устройства (device ID). Это значение выбрано произвольно, но оно одинаково для всех узлов. Затем следует момент, к которому многие оказываются не готовы: такие файлы «после создания считаются обычными файлами, поэтому они распространяются между устройствами». Каждый узел получает копию конфликта. Очистка выполняется одним удалением, которое синхронизируется, но сначала вы увидите этот файл на всех своих машинах.
Настольный клиент Nextcloud записывает <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext>, например mydata (conflicted copy 2018-04-10 093612).txt, и по умолчанию не загружает этот файл на сервер. В руководстве клиента приводится обоснование: автор изменений лучше всех знает, как разрешить конфликт, а демонстрация конфликта другим пользователям лишь создает путаницу. Установите OWNCLOUD_UPLOAD_CONFLICT_FILES=1 в окружении клиента, если хотите добиться обратного поведения.
Таким образом, конфликт в Syncthing — это событие уровня всего кластера, тогда как конфликт в Nextcloud остается на одном конкретном рабочем столе.
Типы папок повышают безопасность Syncthing на сервере
В Syncthing предусмотрено три типа папок. Выбор подходящего типа на VPS позволяет исключить целый класс случайных ошибок.
- Send & Receive — тип по умолчанию. Изменения синхронизируются в обоих направлениях.
- Send Only игнорирует все изменения, поступающие от кластера. Используйте этот тип там, где устройство должно только публиковать данные. Если состояние папки перестает соответствовать кластеру, в графическом интерфейсе появляется красная кнопка "Override Changes", которая принудительно распространяет локальное состояние на все остальные узлы.
- Receive Only применяет изменения из кластера и никогда не отправляет локальные правки обратно. Используйте этот тип на VPS, работающем в режиме архива. При наличии локальных правок на сервере появляется красная кнопка "Revert Local Changes".
Папка типа Receive Only на VPS с включенным методом версионирования Staggered versioning создает версионируемое зеркало. Удаление файла на ноутбуке будет применено, так как удаление является легитимным изменением в кластере, но старая копия попадет в .stversions, а не исчезнет безвозвратно.
Что выбрать
В строках ниже 7 приведены причины, по которым пользователи обычно задают этот вопрос.
The data behind this chart
[
{
"label": "Keep two of my own laptops in sync",
"pick": "Syncthing",
"notes": "No accounts to manage. The VPS is the peer that is always awake."
},
{
"label": "Send a download link to a client",
"pick": "Nextcloud",
"notes": "Syncthing has no public link sharing at all."
},
{
"label": "Open a file from a borrowed browser",
"pick": "Nextcloud",
"notes": "The Syncthing GUI shows sync state, never file contents."
},
{
"label": "Sync 200 GB between machines I own",
"pick": "Syncthing",
"notes": "Peers transfer directly. The VPS copy is optional."
},
{
"label": "Phone photo upload with a store app",
"pick": "Nextcloud",
"notes": "The official Syncthing Android app ended in December 2024."
},
{
"label": "Calendar and contacts alongside files",
"pick": "Nextcloud",
"notes": "Syncthing syncs files. That is the entire feature set."
},
{
"label": "1 GB VPS with nothing else to spare",
"pick": "Syncthing",
"notes": "One Go binary against PHP plus a database plus a web server."
}
]Посмотрите на первую строку. Синхронизация двух собственных ноутбуков указывает на Syncthing — это тот случай, когда VPS оправдывает себя как узел, который никогда не выключается. Любая строка, связанная с браузером, ссылкой или другим человеком, указывает на обратное.
Если Nextcloud продолжает выигрывать, но вас беспокоят системные требования, сравнение Seafile и Nextcloud — это то, что стоит прочитать следующим, поскольку Seafile сохраняет серверную модель, но использует другой механизм синхронизации.
Совместная работа на одном VPS
Эти инструменты не исключают друг друга. Использование Syncthing для перемещения файлов между собственными устройствами, пока Nextcloud отвечает за обмен данными и календари — распространенная практика.
При совместном использовании соблюдайте одно правило: никогда не указывайте Syncthing на каталог данных Nextcloud. Nextcloud отслеживает каждый файл в своей базе данных, поэтому файлы, появившиеся на диске в обход приложения, остаются невидимыми в веб-интерфейсе, пока база данных не обновится. Из каталога установки Nextcloud:
sudo -u www-data php occ files:scan --allЭта команда выводит количество просканированных файлов и папок. Запуск её по таймеру — это временное решение, а не архитектурный подход. Выделите для каждого инструмента собственный каталог. Если вы еще не решили, что именно стоит разместить на сервере, руководство по выбору сервисов для self-hosting в 2026 году станет лучшей отправной точкой, чем выбор инструмента синхронизации.
FAQ
Может ли Syncthing заменить Dropbox?
Только в части синхронизации между вашими собственными устройствами. В Syncthing нет публичных ссылок для общего доступа и нет пользовательских аккаунтов. Веб-интерфейс не отображает содержимое файлов, так как не существует центральной копии, к которой мог бы обратиться браузер. Официальное приложение для Android было снято с поддержки после релиза в декабре 2024 года и удалено из Play Store, поэтому поддержка мобильных устройств теперь зависит от форков сообщества. Если вам нужно отправить кому-то ссылку, потребуется сервер, например, Nextcloud или аналогичное решение.
Является ли Syncthing средством резервного копирования?
Нет, и разработчики проекта прямо об этом заявляют. Удаления и изменения распространяются на все устройства, поэтому случайно удаленный файл исчезнет везде в течение нескольких секунд. Включение версионности файлов для папки, особенно режима Staggered на постоянно включенном узле, дает возможность восстановления через директорию .stversions. Это не замена снимкам состояния (snapshots), которые создаются отдельным инструментом на отдельном хранилище.
Почему я не вижу свои файлы в веб-интерфейсе Syncthing?
Потому что веб-интерфейс — это панель управления состоянием синхронизации, а не файловый менеджер. Он отображает папки, устройства, прогресс передачи и количество конфликтов, но никогда не выводит список или содержимое файлов. Это следует из архитектуры peer-to-peer: ваши файлы хранятся на ваших устройствах, а интерфейс на VPS лишь управляет процессом их перемещения.
Какие порты нужно открыть на VPS для работы Syncthing?
22000/TCP для протокола синхронизации и 22000/UDP для транспорта QUIC. Порт 21027/UDP используется для локального обнаружения через широковещательные и многоадресные рассылки, которые не работают через интернет, поэтому оставьте его закрытым на публичном сервере. Оставьте веб-интерфейс на порту 8384, привязанным к 127.0.0.1, и подключайтесь к нему через SSH-туннель. Проверяйте как сетевой файрвол провайдера, так и ufw, так как это независимые механизмы контроля.
Можно ли запускать Syncthing и Nextcloud на одном VPS?
Да, это вполне разумно для сервера с 2 ГБ оперативной памяти или более. Храните их директории отдельно. Nextcloud индексирует файлы в своей базе данных, поэтому любые изменения, внесенные Syncthing в хранилище Nextcloud, будут невидимы в веб-интерфейсе, пока не будет запущен occ files:scan. Использование двух инструментов для записи в одну и ту же директорию также приводит к появлению конфликтных файлов, которые ни один из них не ожидает увидеть.