Tropic Host

Syncthing: синхронизация файлов между устройствами без чужого облака на VPS

5 мин чтения
Tropic
Syncthing: синхронизация файлов между устройствами без чужого облака на VPS

Language: ru

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 делит его на блоки, сравнивает контрольные суммы и передаёт только недостающие части. Поэтому небольшая правка внутри большого файла не всегда требует отправки всего файла заново.

Сервисы обнаружения помогают устройствам найти друг друга, но не хранят файлы. Если прямое соединение невозможно, зашифрованный трафик может проходить через более медленный ретранслятор.

Что меняет VPS

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

Например, утром ноутбук загружает проект на сервер и выключается. Вечером домашний компьютер скачивает новую версию с VPS.

Syncthing хорошо подходит для документов, заметок Obsidian, исходного кода, фотографий и семейных папок. Кэши, node_modules и результаты сборки лучше исключать с помощью .stignore. Активные базы данных и образы виртуальных машин синхронизировать не следует.

VPS также создаёт копию данных за пределами дома. Однако полноценной резервной копией она становится только вместе с версионированием и отдельным архивом: случайное удаление тоже может распространиться на все устройства.

Syncthing или Nextcloud: что выбрать

Эти два инструмента часто сравнивают, хотя они решают разные задачи.

КритерийSyncthingNextcloud
МодельПапки копируются между устройствамиФайлы хранятся на центральном сервере
Нужен серверНет, VPS необязателенДа
Доступ к файлам через браузерПолноценного веб-диска нетДа
Публичные ссылкиНетДа
Совместное редактированиеНе предусмотреноМожно добавить
Оптимальный сценарийПоддержание одинаковых папок на собственных устройствахЛичное или командное облако

Выбирайте Syncthing для незаметной фоновой синхронизации. Nextcloud лучше подходит, когда нужны веб-доступ, ссылки для общего доступа, учётные записи пользователей, календарь и совместная работа.

Как установить Syncthing на VPS с Docker Compose

Ниже приведены шаги для VPS с Ubuntu 24.04. Панель управления останется привязанной к локальному адресу сервера, а подключаться к ней вы будете через SSH-туннель.

1. Установите Docker

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

2. Создайте каталог и файл Compose

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

Вставьте следующее:

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

Эта конфигурация использует официальный образ Syncthing. Режим сети host упрощает прямые соединения, а пустое значение STGUIADDRESS оставляет панель на 127.0.0.1:8384.

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

sudo docker compose up -d
sudo docker compose ps

3. Разрешите соединения для синхронизации

Сначала разрешите SSH, чтобы случайно не заблокировать себе доступ:

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

22000/TCP используется основным протоколом синхронизации, а 22000/UDP — для QUIC. Открывать порт панели 8384 не требуется. Локальный порт обнаружения 21027/UDP на публичном VPS обычно также не нужен.

4. Откройте панель через SSH

Выполните на своём компьютере следующую команду:

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

Оставьте терминал открытым и перейдите по адресу:

http://127.0.0.1:9999

Открыв панель, перейдите в Actions → Settings → GUI и задайте имя пользователя и пароль. Если позже понадобится доступ к панели через домен, поместите её за HTTPS reverse proxy и оставьте аутентификацию включённой.

5. Добавьте устройства и папку

Установите Syncthing на компьютер, затем:

  1. На компьютере и VPS выберите Actions → Show ID.
  2. Добавьте Device ID каждого узла на другом устройстве.
  3. На компьютере нажмите Add Folder, выберите каталог и поделитесь им с сервером.
  4. На VPS примите папку и укажите путь, например /var/syncthing/Files.

Оставьте режим Send & Receive на компьютерах для двусторонней синхронизации. На VPS часто удобен режим Receive Only: сервер продолжит получать и передавать изменения между узлами, но случайные локальные правки непосредственно на VPS не распространятся по всей сети.

Почему Syncthing не заменяет резервную копию

Если файл удалён или зашифрован на одном устройстве, изменение может распространиться на остальные. Поэтому откройте настройки папки на VPS и включите File Versioning.

Практичный вариант — Staggered File Versioning со сроком хранения 30–90 дней. Когда удалённый узел заменяет или удаляет файл, предыдущая версия перемещается в .stversions. Старые копии занимают место на диске, поэтому задайте ограничение срока хранения.

Надёжная схема состоит из трёх уровней:

  1. Syncthing поддерживает рабочие копии в актуальном состоянии.
  2. Версионирование помогает отменить некоторые ошибки.
  3. Отдельная запланированная резервная копия хранится независимо от Syncthing.

Может ли VPS хранить файлы, не видя их содержимое

В Syncthing есть режим недоверенного устройства. На основном компьютере задаётся пароль для папки, а на VPS выбирается Receive Encrypted. Сервер хранит зашифрованные данные и может передавать их другому доверенному устройству, использующему тот же пароль.

Содержимое, имена файлов, временные метки и структура каталогов скрыты. Информация об общей папке и примерный размер файлов остаются видимыми.

Разработчики по-прежнему считают эту функцию экспериментальной. Храните пароль и Folder ID отдельно: без них восстановление зашифрованной папки может оказаться невозможным.

Какой VPS нужен Syncthing

Потребление ресурсов зависит не только от объёма данных, но и от количества файлов, частоты их изменения и процесса первоначальной индексации. Для личного узла с документами и несколькими десятками гигабайт данных обычно достаточно стартовой конфигурации:

  • 1 vCPU;
  • 1 GB RAM;
  • SSD или NVMe-накопитель;
  • достаточно места на диске для файлов и .stversions;
  • стабильное сетевое соединение.

Большая фототека или сотни тысяч файлов потребуют больше ресурсов. Наибольшая нагрузка обычно возникает во время первого сканирования и расчёта контрольных сумм.

Для такой задачи подходит базовый Ubuntu VPS от tropic.host. Можно начать с небольшой конфигурации и увеличивать ресурсы по мере роста коллекции. При выборе объёма диска учитывайте не только текущие папки, но и будущие файлы, временные данные и историю версий.

Пять ошибок, которых стоит избегать

  • Открыть порт 8384 всему интернету. Для настройки используйте SSH-туннель. Для постоянного веб-доступа применяйте HTTPS, пароль и reverse proxy.
  • Считать копию на сервере полноценной резервной копией. Включите версионирование и создавайте отдельные архивы.
  • Синхронизировать кэши и зависимости. Исключайте ненужные каталоги с помощью .stignore.
  • Не следить за использованием диска. Каталог .stversions со временем может значительно вырасти.
  • Оставить потерянное устройство доверенным. Удалите его с остальных узлов и защитите конфигурацию Syncthing, в которой хранятся ключи устройств.

Что нужно знать о смартфонах

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

Заключение

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

Для безопасной схемы не открывайте административную панель напрямую, включите версионирование и дополните синхронизацию независимой резервной копией.

FAQ

Нужен ли VPS для Syncthing?

Нет. Устройства могут синхронизироваться напрямую. VPS выступает постоянно работающим узлом, который позволяет им обмениваться изменениями в разное время.

Можно ли открыть файлы Syncthing в браузере?

Веб-панель предназначена для настройки, а не для просмотра документов как в Google Drive. Если нужен веб-диск, лучше выбрать Nextcloud.

Является ли Syncthing решением для резервного копирования?

Нет. Удаление и повреждение файлов могут распространиться на другие устройства. Версионирование помогает, но не заменяет независимую резервную копию.

Нужно ли открывать порт 8384?

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

Может ли владелец VPS прочитать файлы?

При стандартной настройке потенциально да. Режим Receive Encrypted хранит их в зашифрованном виде, но функция всё ещё считается экспериментальной, поэтому пароль и Folder ID нужно хранить надёжно.