Tropic Host

Syncthing: що це таке і як налаштувати синхронізацію файлів на VPS?

5 хв. читання
Tropic
Syncthing: що це таке і як налаштувати синхронізацію файлів на VPS?

Syncthing: синхронізація файлів між пристроями без чужої хмари

Вранці ви редагуєте документ на ноутбуці та закриваєте його. Увечері вмикаєте домашній комп'ютер — і найновіша версія вже там. Файл не проходив через Google Drive або Dropbox: його отримав ваш вузол Syncthing.

Syncthing безперервно синхронізує вибрані папки між довіреними пристроями, а ви зберігаєте контроль над розташуванням даних. Центральний сервер не є обов'язковим.

Однак передавати зміни складно, якщо два комп'ютери рідко бувають онлайн одночасно. Постійно увімкнений VPS вирішує цю проблему: отримує файли з одного пристрою, а потім передає їх іншому.

Важливо розуміти призначення Syncthing. Це не мережевий диск і не файловий менеджер у браузері, а інструмент, який автоматично розмножує вибрані вами папки.

Syncthing у п'ятьох кроках

Мінімальне налаштування виглядає так:

  1. Встановіть Syncthing на потрібні комп'ютери.
  2. Запустіть ще один екземпляр Syncthing на VPS.
  3. Відкрийте панель сервера через SSH-тунель.
  4. Обміняйтеся ідентифікаторами пристроїв і підтвердьте з'єднання.
  5. Додайте спільну папку, виберіть режим синхронізації та ввімкніть версіювання файлів.

Що таке Syncthing і як він працює?

Syncthing — безкоштовне програмне забезпечення з відкритим кодом для постійної синхронізації файлів. Воно працює у Windows, macOS, Linux та інших настільних і серверних операційних системах.

Кожна інсталяція отримує унікальний Device ID — криптографічний ідентифікатор. Перед обміном даними потрібно додати пристрої один одного та явно надати доступ до конкретної папки. Єдиного облікового запису Syncthing, який зберігає ваші пристрої та файли, не існує.

Коли файл змінюється, Syncthing ділить його на блоки, порівнює контрольні суми й передає лише відсутні частини. Тому невелика зміна великого файлу не завжди потребує повторного надсилання всього файлу.

Сервіси discovery допомагають пристроям знаходити один одного, але не зберігають файли. Якщо пряме з'єднання неможливе, зашифрований трафік може проходити через повільніший relay.

Що змінює VPS?

VPS стає вузлом, який завжди доступний:

  • комп'ютери можуть бути вимкнені або перебувати в різних мережах;
  • зміни чекають на сервері, доки інший пристрій не вийде онлайн;
  • пристрої підключаються через інтернет, а не потребують відкриття портів удома;
  • панеллю можна керувати централізовано.

Натомість VPS потрібно оновлювати, захищати й резервувати. Він не є автоматичною повноцінною резервною копією: видалення або пошкодження може синхронізуватися з усіма вузлами.

Коли Syncthing підходить?

Syncthing корисний для:

  • синхронізації папки документів між ноутбуком і домашнім комп'ютером;
  • розповсюдження фотографій, відео або файлів проєкту між пристроями;
  • підтримання постійно доступної копії на VPS;
  • уникнення залежності від одного хмарного провайдера для приватних даних.

Він не замінює Google Drive у всіх випадках. У Syncthing немає вебредактора документів, групових коментарів або простого публічного поширення. Якщо потрібен «онлайн-диск» із функціями спільної роботи, краще підійде Nextcloud.

Вимоги Syncthing до сервера

Syncthing досить легкий. Для кількох пристроїв і папок із документами практична стартова конфігурація:

  • 1 vCPU;
  • 1 GB RAM;
  • 10 GB SSD плюс місце для синхронізованих даних;
  • Ubuntu 24.04 LTS;
  • публічна IP-адреса.

CPU і RAM переважно потрібні для сканування файлів, контрольних сум і шифрування. Місткість диска залежить від розміру папок і історії версій. Якщо VPS є проміжним вузлом, врахуйте весь обсяг даних і запас для зростання.

Встановлення Syncthing на VPS за допомогою Docker Compose

Наведений приклад використовує Ubuntu 24.04. Syncthing розміщується в /opt/syncthing, а панель керування відкривається лише через SSH-тунель.

1. Встановіть Docker

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

2. Створіть каталог даних

sudo mkdir -p /opt/syncthing/data
sudo chown -R 1000:1000 /opt/syncthing/data
cd /opt/syncthing
sudo nano compose.yaml

3. Створіть конфігурацію Compose

services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: syncthing-vps
    environment:
      - PUID=1000
      - PGID=1000
      - STGUIADDRESS=
    volumes:
      - ./data:/var/syncthing
    network_mode: host
    restart: unless-stopped

Запустіть контейнер:

sudo docker compose up -d
sudo docker compose ps

network_mode: host спрощує підключення синхронізації, оскільки Syncthing може безпосередньо слухати потрібні порти. Панель керування слухатиме на 0.0.0.0:8384, але не слід відкривати цей порт у firewall.

4. Відкрийте порти синхронізації

Якщо UFW увімкнено, дозвольте SSH і порти Syncthing:

sudo ufw allow OpenSSH
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw enable

Порт 22000/TCP використовується для передавання даних, а 22000/UDP підтримує QUIC. Discovery і relay допомагають пристроям знаходити один одного, але не замінюють пряме з'єднання, коли воно можливе.

5. Безпечно відкрийте панель керування

На своєму комп'ютері створіть SSH-тунель:

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

Потім відкрийте:

http://127.0.0.1:9999

У панелі одразу встановіть ім'я користувача та пароль адміністратора. Залишайте панель на localhost і використовуйте тунель замість відкриття порту 8384 в інтернет.

Додавання пристроїв і папок

Кожен пристрій Syncthing показує свій Device ID. Додайте ID VPS на ноутбуці та навпаки, а потім підтвердьте запрошення. Обмін даними можливий лише після згоди обох сторін.

Під час додавання папки:

  1. виберіть локальний шлях;
  2. задайте стабільний Folder ID;
  3. поділіться папкою з потрібними пристроями;
  4. виберіть тип: Send & Receive, Send Only або Receive Only;
  5. увімкніть file versioning, якщо потрібно захиститися від перезапису чи випадкового видалення.

Folder ID має залишатися стабільним під час переміщення даних або зміни локального шляху. Не поширюйте папку з усією операційною системою, secret, SSH-ключами або запущеною базою даних.

Версії файлів і одностороння синхронізація

File Versioning зберігає старі версії, коли файл змінюють або видаляють. Це корисний захист від помилкових змін, але не заміна backup: версії також займають місце й можуть бути видалені разом із VPS.

Режим Send Only підходить для вихідного вузла, а Receive Only — для копії. У разі конфлікту не видаляйте файл .sync-conflict, доки не перевірите його вміст.

Що не варто синхронізувати через Syncthing

Не синхронізуйте бездумно:

  • каталоги cache і dependency;
  • запущені бази даних, якщо застосунок їх не підтримує;
  • node_modules, build і великі log;
  • secret, приватні ключі та token, які не потрібно поширювати;
  • тимчасові каталоги.

Використовуйте .stignore, щоб виключати непотрібні елементи. Синхронізація не перетворює активні дані на узгоджену резервну копію.

Безпека Syncthing

Device ID і з'єднання Syncthing захищені шифруванням, але панелі все одно потрібен надійний пароль. Залишайте її на localhost, обмежуйте SSH ключами та регулярно оновлюйте контейнер.

Не надавайте прав до папок більше, ніж потрібно. Перевіряйте підключені пристрої, видаляйте невикористовувані вузли й переглядайте історію змін. Якщо використовуєте VPS як власний relay, пам'ятайте, що він може бачити метадані та зберігати синхронізовані дані.

Оновлення та резервні копії

Перед оновленням збережіть дані та Compose-файл. Перевірте новий image у відповідному середовищі, а потім оновіть контейнер. Після запуску перевірте панель, стан пристроїв і папки. Якщо використовується file versioning, стежте за використанням диска каталогом .stversions.

Резервна копія має бути незалежною від синхронізації. Копіюйте дані на інший сервер, диск або object storage, зберігайте кілька версій і періодично перевіряйте відновлення.

Що потрібно знати про смартфони?

Розробку офіційного застосунку для Android припинили наприкінці 2024 року, але доступні клієнти спільноти. Офіційного клієнта для iOS немає; обмеження фонової роботи ускладнюють постійну синхронізацію. Перш ніж підключати основну фототеку, протестуйте вибраний мобільний застосунок на невеликій папці.

Висновок

Syncthing підходить тим, хто хоче зберігати однакові папки на кількох пристроях без залежності від обов'язкового хмарного провайдера. VPS робить систему зручнішою: комп'ютерам не потрібно бути онлайн одночасно, а доступна копія постійно знаходиться за межами дому.

Для безпечної конфігурації не відкривайте панель безпосередньо, увімкніть file versioning і доповніть синхронізацію незалежною резервною копією.

Поширені запитання

Чи потрібен мені VPS для Syncthing?

Ні. Пристрої можуть синхронізуватися безпосередньо. VPS працює як постійно увімкнений вузол, що дає змогу обмінюватися змінами в різний час.

Чи можна відкрити файли Syncthing у браузері?

Вебпанель призначена для налаштування, а не для перегляду документів як у Google Drive. Якщо потрібен вебдиск, краще вибрати Nextcloud.

Чи є Syncthing рішенням для резервного копіювання?

Ні. Видалення або пошкодження може поширитися на інші пристрої. File versioning допомагає, але не замінює незалежну резервну копію.

Чи потрібно відкривати порт 8384?

Ні. Залиште панель на 127.0.0.1:8384 і підключайтеся через SSH-тунель. Для синхронізації відкрийте порти 22000/TCP і 22000/UDP.

Чи може власник VPS прочитати файли?

У стандартній конфігурації потенційно так. Receive Encrypted зберігає файли в зашифрованому вигляді, але ця функція все ще вважається експериментальною; пароль і Folder ID потрібно зберігати безпечно.