Как сделать автозапуск Syncthing

Это продолжение темы про Syncthing. В предыдущей статье я рассказал как установить официальные репозитарии Syncthing чтобы обновления устанавливались по мере их выхода и содержали Syncthing в актуальном состоянии. В этой статье я коротенько расскажу как сделать, чтобы Syncthing запускался автоматически. Это точно работает на Ubuntu 14.04 LTS, я проверял :)

syncthing-screenshotО вариантах автозапуска Syncthing

Есть несколько вариантов организации автозапуска Syncthing, это запуск вместе с графической оболочкой при запуске сеанса пользователем (подходит для не обременённого пользователя), запуск как сервис системы (фактически сервер для всех) и запуск под именем одного из пользователей, например хозяина компьютера (без варианта использования для других пользователей). И ясное дело, что я использую последний вариант.

Как настроить автозапуск

Требуется создать в системном каталоге файл (/etc/init/syncthing.conf) и перезапустить всю систему.

Делаем последовательно:

Открыть терминал комбинацией [CTRL+ALT+T]

Для Ubuntu 16.04

замените в командах ниже username на своё имя

systemctl enable syncthing@username.service
systemctl start syncthing@username.service

всё как бы.

Для Ubuntu раннее, чем 16.04

Запустить команду редактора от имени root:

sudo nano /etc/init/syncthing.conf

Вставить содержание файла /etc/init/syncthing.conf:

description "Syncthing P2P sync service"
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
env STNORESTART=yes
env HOME=/home/%username%
setuid "%username%"
setgid "%username%"
exec /usr/bin/syncthing
respawn

Замените %username% на требуемое (например ваше) имя пользователя.

И сохранить файл /etc/init/syncthing.conf нажав в редакторе [CTRL+O] и для выхода [CTRL+X]

Продолжение для всех

В терминале пишем для перезагрузки:

sudo reboot

После перезапуска системы, запускаем браузер по адресу http://localhost:8384 и смотрим как оно работает.

Примечание

узнать на каком порту работает Syncthing можно посмотрев в файле /home/morikoff/.config/syncthing/config.xml строку (в нашем случае это 8384):

<gui enabled="true" tls="false">
    <address>127.0.0.1:8384</address>

это говорит, что веб-интерфейс администрирования сервера откликается только локально, но изменив адрес на

0.0.0.0:8384

вы получаете доступ по сети с других айпи-адресов. Войдите в этот веб-интерфейс и установите имя и пароль админа (я думаю это полезно).

Далее в конфиге есть указание общаться с серверами с любых адресов на порту 22000. Этот порт должен в вашей сети быть открыть в NAT, или если он блокируется.

<options>
    <listenAddress>0.0.0.0:22000</listenAddress>

В домашнем каталоге вашего пользователя как %username% появится каталог ~/Sync, который предназначен для создания в нём структуры каталогов синхронизаций. Но это ещё не всё. В следующей статье я расскажу о практическом применении Syncthing.

 

 

  • Илья Э

    Спасибо за готовые рецепты. Мне как новичку тяжело самому разобраться. Про Syncthing очень мало информации на русском языке, только статья на хабре и у тебя. Пожалуйста расскажи про discosrv.

    • Спасибо за поддержку. Но про discosrv напишу только если реально начну использовать, просто пока не вижу смысл трекер-серер ставить в моих реалиях, так как мои ноды находят друг друга и за NAT, просто порты пробросить…

      • Илья Э

        То есть discosrv нужен в случаях, когда невозможно обойти NAT?

        • у вас же указаны в серверах глобального обнаружения эти udp4://announce.syncthing.net:22026, udp6://announce-v6.syncthing.net:22026.

          а discosrv по сути тоже самое и нужен как раз для их замены если у вас паранойя, делаете им сервер глобального обнаружения, но свой.

          • Илья Э

            Хотел решить проблему связи рабочего и домашнего компьютеров. Но, как теперь разобрался, в офисе заблокирован протокол UDP. Теперь тупик… Думаю эту проблему не решить.

          • Ох, ну UDP как бы и не нужен если через интернет…
            Откройте порты TCP протокола 22000 и 22026 в NAT и дома и в офисе, этого достаточно будет. 22000 важнее, через него всё и работает. Всё работает простым способом.

          • Илья Э

            В офисе я не сисадмин, поэтому открыть порты не могу :(

          • Ну а дома хоть открыть? Вы за своим NAT вероятно никому не видны

          • Илья Э

            Дома все работает.

          • Илья Э

            Подожду и поставлю Syncthing когда Бета версия v0.12.0-beta2 перейдет в стабильный релиз, обещают, что: “Syncthing now has the ability to connect two devices via a relay when there exists no direct path between them (firewalls on both ends). There is a default set of relays that is used out of the box, although private relays can be used and relaying can of course be disabled. Relayed connections are encrypted in the usual manner, end to end, so the relay has no more insight into the connection than any other random eavesdropper on the Internet.”

          • типа так

          • я дал проход только по 22026 порту и они увидили друг друга

  • Илья Э

    После обновления с ubuntu 14.04 на 15.10 способ описанный в Вашей статье перестал работать :(. В справке https://docs.syncthing.net/users/autostart.html предлагают переделать запуск используя “systemd”. В частности я настроил при помощи команд:
    systemctl enable syncthing@myuser.service
    systemctl start syncthing@myuser.service

    • Спасибо за подсказку. Буду на 16.04 переходить, буду думать, что там.

      • Илья Э

        3 вариант ‘myuser’ заменил на своего пользователя. Но служба запускается не от пользователя, а от системы…

    • интересно, вы вот как сделали. кого назначили myuser?
      1. root – просто рута
      2. syncuser – создали специального для этого, а себя в группу добавили к нему
      3. username – установили себя этим юзером

    • Сделал так же в Ubunru 16.04 = полёт нормальный! Спасибо )))

  • Виктор

    Доброго дня.
    ROSA FRESH R8, Sycnthing 0.12.
    В конфигах источника и приемника директории Synv, Default.
    При запуске синхронизирует весь домашний!
    Что не так?
    Прошу Вашей помощи.

    • Если ваша директория Default это домашний каталог, то он и будет синхронизироваться. Исправьте пути к этим папкам через веб-интерфейс syncthing, который возможно у вас работает по адресу http://localhost:8384/