Установка и настройка Syncthing под Ubuntu Linux

20 апреля 2016

Syncthing — бесплатное приложение с открытым исходным кодом, написанное на языке Go, и представляющее собой standalone замену Dropbox, Google Drive и подобным облачным хранилищам. Вы ставите Syncthing, скажем, на ноутбуке, мобильном телефоне и на сервере в DigitalOcean. Указываете путь до каталогов, которые хотите синхронизировать. Теперь при изменении файлов на ноутбуке аналогичные изменения магическим образом происходят и на сервере, а также в мобильном телефоне. Клиент Syncthing доступен под все мыслимые платформы, включая Windows, Linux, FreeBSD, MacOS, iOS и Android. В этой заметке мы рассмотрим пример использования Syncthing под Ubuntu Linux.

Для начала установим Syncthing на сервере. Управление приложением осуществляется через веб-инетрфейс, доступный на порту 8384. Поэтому для сервера в ~/.ssh/config можно сразу дописать что-то вроде:

LocalForward 8385 localhost:8384

Затем выполняем на сервере команды:

curl -s https://syncthing.net/release-key.txt | \
  sudo apt-key add -
echo "deb http://apt.syncthing.net/ syncthing release" | \
  sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing

Готовим каталог, где будут хранится все настройки Syncthing:

mkdir syncthing
cd syncthing
touch run.sh
chmod u+x run.sh

В run.sh пишем:

#!/bin/sh

/usr/bin/syncthing -no-browser -home=/home/eax/syncthing

Запускаем screen, в нем запускаем run.sh, делаем detach. Конечно, при желании можно написать и init.d скрипт, но я не стал так заморачиваться. Дело в том, что этом же сервере у меня крутится VPN. В случае перезапуска сервера мне все равно приходится заходить на него и запускать VPN руками, так как для его запуска требуется знать пароль от сертификата. Мне нет большой разницы, перезапускать руками условно раз в год один сервис или два.

На своей машине идем на http://localhost:8385/ и видим красивую веб-мордочку:

Веб-интерфейс Syncthing

У вас, конечно, поначалу она будет выглядеть немного не так. Ведь еще нужно добавить каталоги, которые вы хотели бы синхронизировать (это не тот каталог, который мы создавали ранее!). Ну и, конечно же, добавить устройства.

На ноутбуке у меня тоже Ubuntu, поэтому настройка там выглядит точно так же. Только вместо screen я воспользовался GUI-клиентом к Syncthing под названием syncthing-gtk. Штука эта поначалу показалось мне немного глюкавой, но со второй или третей попытки мне удалось настроить ее, как нужно. Дело в том, что по умолчанию syncthing-gtk ищет GUI API на порту 8080. Когда я изменил настройки Syncthing соответствующим образом, все заработало. Теперь при изменении файлов у меня появляются нотификации, а в трее постоянно висит иконка, свидетельствующая о том, что Syncthing работает:

Выпадающее меню syncthing-gtk

Добавление устройств и каталогов делается очевидным образом через GUI- и/или Web-интерфейс, поэтому здесь я на них подробным образом не останавливаюсь.

Также я попробовал и мобильные клиенты для Syncthing. К сожалению, они пытаются синхронизировать вот прямо реально все файлы в каталоге, а мне обычно нужно просто перекинуть книжку с компьютера в планшет. Поэтому для синхронизации с мобильными устройствами я просто поднял еще и Nginx.

Дополнение: Также вместо использования syncthing-gtk вы можете прописать Syncthing на автозапуск, просто создав файл ~/.config/upstart/syncthing.conf примерно такого содержания:

start on desktop-start
stop on desktop-end
env STNORESTART=yes
respawn
exec /home/eax/syncthing/run.sh

В заключение хочется отметить следующее:

  • Подумайте, как это круто — пять минут работы, и в нашей жизни становится одним SaaS’ом меньше;
  • Перед Syncthing пробовал использовать обычный rsync, но в случае переименования файлов и каталогов он их перезаливает полностью;
  • Заметьте, что Syncthing для запуска и работы не требуются права суперпользователя;
  • Так как Syncthing написан на Go, он распространяется в виде одного бинарника, так что для установки права суперпользователя на самом деле тоже не нужны;

А используете ли вы Syncthing и если все еще нет, то почему? :)

Метки: .

Подпишись через RSS, E-Mail, Google+, Facebook, Vk или Twitter!

Понравился пост? Поделись с другими: