Syncthing или Nextcloud для VPS: что выбрать?
Сравнение архитектуры Syncthing и Nextcloud для VPS. Узнайте, почему Syncthing подходит для синхронизации между своими устройствами, а Nextcloud требует PHP и БД для работы.
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 и резервного копирования, — это наименее трудозатратный способ управления такой нагрузкой.
Установка 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, но оба механизма автоматически очищаются по мере заполнения диска. Процесс на вашем ноутбуке, который шифрует файлы, синхронизирует эти зашифрованные версии на сервер, а корректные копии со временем удаляются согласно собственному графику.
Для обоих инструментов требуется наличие полноценного резервного копирования на нижнем уровне: снимки (snapshots), создаваемые отдельной программой, записанные туда, куда клиент синхронизации не имеет доступа, и восстановленные хотя бы один раз, чтобы вы были уверены в работоспособности восстановления. Сравнение 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 обеспечивает создание версионированного зеркала. Удаление файла на ноутбуке по-прежнему будет синхронизировано, так как удаление является легитимным изменением в кластере, но старая копия файла попадет в .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. Использование двух инструментов для записи в одну и ту же директорию также приводит к появлению конфликтных файлов, которые ни один из них не ожидает увидеть.