Syncthing чи Nextcloud для синхронізації файлів на VPS
Syncthing працює peer-to-peer без копії на сервері, а Nextcloud зберігає файли на VPS і підтримує облікові записи та посилання. Що обрати і чому це не backup.
Syncthing і Nextcloud: ключова відмінність
Syncthing і Nextcloud відрізняються однією структурною особливістю, від якої залежить усе інше. Syncthing працює за схемою peer-to-peer. Кожен пристрій зберігає всю папку, і жодна копія не є головною. Nextcloud працює як сервер. Один комп’ютер зберігає файли, перед ними розміщені облікові записи користувачів, а клієнти завантажують копії.
Саме тому в Syncthing немає посилань для спільного доступу та вебперегляду документів. Немає центральної копії, яку можна було б надати, тому браузеру немає до чого звертатися. Nextcloud підтримує обидві можливості. Для цього йому потрібні PHP runtime, database server, web server і reverse proxy для TLS (transport layer security).
Вибирайте Syncthing, якщо всі залучені пристрої належать вам. Вибирайте Nextcloud, якщо файли має відкривати браузер або інша людина.
Що насправді робить VPS у кожній схемі
VPS із Nextcloud зберігає ваші дані. Якщо видалити локальну копію на ноутбуці, файл усе одно залишиться на сервері, оскільки саме сервер від початку був основним сховищем.
VPS із Syncthing виконує іншу роль: це постійно доступний вузол. Syncthing передає дані безпосередньо між двома пристроями, які одночасно підключені до мережі. Тому два ноутбуки, які ніколи не ввімкнені одночасно, не зможуть синхронізуватися, скільки б ви не чекали. Додайте третій вузол на VPS, який ніколи не вимикається, і проблема зникає. Ноутбук A передає дані о 09:00, ноутбук B отримує їх о 22:00, а VPS зберігає папку в цей проміжок.
Це справді корисна роль і скромніше твердження, ніж «заміна Dropbox». Syncthing ніколи не створить для вас посилання, яке можна надіслати клієнту. Якщо вам потрібно саме це, зупиніться тут і прочитайте огляд self-hosted альтернатив Dropbox.
Скільки кожне рішення потребує на невеликому VPS
Syncthing — це один бінарний файл Go. Він прослуховує сокет, зберігає індекс файлів у локальній базі даних — і на цьому весь стек. Починаючи з версії 2.0, для індексу використовується SQLite замість LevelDB, тому оновлення інсталяції 1.x під час першого запуску виконує одноразову міграцію. Для великого набору папок ця міграція може тривати довго. Дочекайтеся її завершення. Більше нічого встановлювати або виправляти не потрібно.
Nextcloud потребує більшої кількості компонентів. Станом на August 2026, Nextcloud 35 підтримує PHP 8.3–8.5 із MariaDB або PostgreSQL як базою даних, а запити обробляються Apache 2.4 або nginx разом із php-fpm. В адміністративному посібнику рекомендовано «щонайменше 512MB RAM на процес», а php-fpm одночасно запускає кілька робочих процесів.
На VPS із 1 GB RAM Syncthing працює без проблем, а для Nextcloud ресурсів мало. Це не означає, що Nextcloud є неправильним вибором. Це означає більші вимоги до обслуговування: потрібно підтримувати в актуальному стані чотири компоненти замість одного. Варіант із контейнером у посібнику з Nextcloud на VPS, що охоплює Docker, TLS і резервні копії є найпростішим способом керувати цим стеком. Додавання редагування документів у браузері ще більше підвищує мінімальні вимоги. Саме це розглядає порівняння OnlyOffice і Collabora для сервера з 2–4 GB RAM.
Встановлення Syncthing на VPS
Ubuntu постачає пакет syncthing, але він значно відстає від upstream-версії. Використовуйте власний репозиторій проєкту.
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 --versionsyncthing --version має вивести рядок, що починається з syncthing v2. Наявність там v1 означає, що apt досі віддає перевагу пакету з дистрибутива. Встановіть вищий пріоритет для upstream-репозиторію та повторіть інсталяцію.
printf "Package: *\nPin: origin apt.syncthing.net\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/syncthing.prefЗапускайте його як системну службу від імені звичайного облікового запису, щоб вона стартувала під час завантаження системи, навіть якщо ніхто не ввійшов у систему.
sudo systemctl enable --now syncthing@youruser.service
systemctl status syncthing@youruser.servicesystemctl status має вивести active (running). Файли конфігурації та індексу зберігаються в /home/youruser/.local/state/syncthing, а файл конфігурації — у config.xml. Інсталяції, створені до Syncthing 1.27, зберігають їх натомість у ~/.config/syncthing, тому перед копіюванням даних між машинами перевірте обидва шляхи.
Потім відкрийте порти. Syncthing використовує 22000/TCP для протоколу синхронізації, 22000/UDP для транспорту QUIC і 21027/UDP для локального виявлення. Виявлення використовує broadcast і multicast, які не проходять через інтернет, тому на VPS потрібні лише перші два порти.
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw statusufw status має показати обидва правила. Якщо виведено Status: inactive, ufw нічого не фільтрує, і єдиним активним засобом контролю залишається мережевий firewall вашого провайдера. Перевірте також його панель керування, оскільки на більшості хостів це окремий рівень контролю. Якщо віддалений пристрій застряг у стані Disconnected, хоча служба працює, зазвичай це означає, що один із цих двох firewall досі блокує з’єднання.
Отримання доступу до Syncthing GUI без публікації в мережі
Веб-інтерфейс GUI (графічний інтерфейс користувача) за замовчуванням прослуховує 127.0.0.1:8384, тому відповідає лише на запити із самого сервера. Це безпечне значення за замовчуванням, оскільки GUI містить API (програмний інтерфейс застосунку) ключ, за допомогою якого можна змінити шляхи до всіх папок на сервері.
Не відкривайте його для всього світу як перший крок. У документації прямо зазначено, що дає прив’язування до мережевої адреси: «зазначення LAN-адреси вашого комп’ютера НЕ обмежить доступ лише пристроями у вашій локальній мережі!» Натомість перенаправте порт через 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, проте обидва механізми автоматично очищають старі дані в міру заповнення диска. Якщо процес на ноутбуці шифрує файли, Syncthing синхронізує зашифровані версії, а незашифровані копії з часом видаляються за власним розкладом.
Для будь-якого з цих інструментів потрібна окрема система резервного копіювання: знімки, створені іншою програмою та записані в місце, недоступне для клієнта синхронізації. Відновлення потрібно виконати щонайменше один раз, щоб переконатися, що воно працює. У статті Порівняння restic і BorgBackup описано, який інструмент можна спрямувати на каталог із даними.
Як відрізняється обробка конфліктів
Обидва інструменти створюють файл конфлікту, коли обидві сторони змінюють той самий файл між синхронізаціями. Відмінність полягає в тому, хто його бачить.
Syncthing перейменовує копію, яка програла, на <filename>.sync-conflict-<date>-<time>-<modifiedBy>.<ext>. Програє копія з давнішим часом зміни. Якщо час збігається, програє пристрій із більшим значенням у перших 63 бітах його ідентифікатора пристрою. Це довільне правило, але на кожному peer результат буде однаковим. Далі виникає важливий нюанс: такі файли «після створення вважаються звичайними файлами, тому вони поширюються між пристроями». Копію конфлікту отримує кожен peer. Для її очищення достатньо одного видалення, яке синхронізується з іншими пристроями, але спочатку цей файл з’явиться на всіх ваших машинах.
Клієнт Nextcloud для desktop записує <name> (conflicted copy YYYY-MM-DD HHMMSS).<ext>, наприклад mydata (conflicted copy 2018-04-10 093612).txt, і за замовчуванням не завантажує цей файл. У посібнику клієнта наведено таке обґрунтування: автор зміни найкраще може вирішити конфлікт, а показ конфлікту іншим користувачам лише створює плутанину. Якщо потрібна протилежна поведінка, установіть OWNCLOUD_UPLOAD_CONFLICT_FILES=1 у середовищі клієнта.
Отже, конфлікт Syncthing є подією для всього кластера, тоді як конфлікт Nextcloud залишається на одному desktop.
Типи папок роблять 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 — для спільного доступу та календарів, є поширеним підходом.
Якщо ви використовуєте їх разом, дотримуйтеся одного правила: ніколи не вказуйте каталог даних Nextcloud для Syncthing. Nextcloud відстежує кожен файл у своїй базі даних, тому файли, які з’явилися на диску ззовні, залишатимуться невидимими у вебінтерфейсі, доки база даних не синхронізується. Перейдіть до каталогу інсталяції Nextcloud:
sudo -u www-data php occ files:scan --allКоманда виведе кількість просканованих файлів і каталогів. Запуск цієї команди за розкладом — це обхідне рішення, а не правильна архітектура. Виділіть для кожного інструмента окремий каталог. Якщо ви ще вирішуєте, що взагалі має працювати на цьому сервері, кращим початком буде посібник про те, що варто self-host у 2026 році, а не вибір інструмента синхронізації.
FAQ
Чи може Syncthing замінити Dropbox?
Лише в частині синхронізації ваших власних пристроїв. У Syncthing немає публічних посилань для спільного доступу та облікових записів користувачів. Вебінтерфейс не показує вміст файлів, оскільки немає центральної копії, яку міг би запитати браузер. Офіційний застосунок для Android припинили підтримувати після випуску December 2024, і його більше немає в Play Store. Тому підтримка телефонів тепер залежить від форка спільноти. Якщо потрібно надіслати комусь посилання, потрібен сервер, тобто Nextcloud або подібне рішення.
Чи є Syncthing резервною копією?
Ні, і проєкт прямо про це повідомляє. Видалення та зміни поширюються на всі пристрої, тому випадково видалений файл зникає всюди протягом кількох секунд. Увімкнення версіювання файлів для кожної папки, особливо Staggered на постійно доступному вузлі, створює вікно для відновлення через каталог .stversions. Це не заміна знімкам, які окремий інструмент створює на окремому сховищі.
Чому я не бачу своїх файлів у вебінтерфейсі Syncthing?
Тому що GUI — це панель керування станом синхронізації, а не файловий браузер. Він показує папки, пристрої, перебіг передавання та кількість конфліктів, але не виводить і не відкриває вміст файлів. Це випливає з однорангової архітектури: файли зберігаються на ваших пристроях, а GUI на VPS лише керує процесом їх передавання.
Які порти Syncthing потрібно відкрити на VPS?
22000/TCP для протоколу синхронізації та 22000/UDP для транспорту QUIC. Порт 21027/UDP використовується для локального виявлення через broadcast і multicast. Цей трафік не проходить через інтернет, тому на публічному сервері цей порт слід залишити закритим. Залиште GUI на 8384 прив’язаним до 127.0.0.1 і підключайтеся до нього через SSH-тунель. Також перевірте мережевий firewall провайдера та ufw, оскільки це окремі засоби керування доступом.
Чи можна запускати Syncthing і Nextcloud на одному VPS?
Так. Це прийнятно на сервері з 2 GB оперативної пам’яті або більше. Зберігайте їхні каталоги окремо. Nextcloud індексує файли у своїй базі даних, тому все, що Syncthing записує у сховище Nextcloud, залишатиметься невидимим у вебінтерфейсі, доки не запуститься occ files:scan. Якщо два інструменти записують дані в один каталог, також виникають конфліктні файли, яких не очікує жоден із них.