суббота, 9 мая 2015 г.

Установка Syncthing на домашний сервер

Syncthing — Программа для синхронизации файлов и резервного копирования по протоколу обмена блоками между устройствами.

Устанавливать syncthing буду на сервер под управлением Debian GNU/Linux Jessie.

  • Для пущей безопасности создаем отдельного пользователя/группу syncthing
adduser --system --group --home /home/syncthing syncthing
  • Создаем скрытый каталог для установки приложения syncthing
mkdir /home/syncthing/.bin
  • Идем на сайт https://syncthing.net/, скачиваем свежую версию syncthing и распаковываем ее в каталог /home/syncthing/.bin
  • На всякий случай зададим права на /home/syncthing
chown -R syncthing:syncthing /home/syncthing
chmod u=rwX,g=rX,o= /home/syncthing
  • Создаем в /etc/systemd/system файл syncthing@.service, содержащий код:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=https://github.com/syncthing/syncthing/wiki
After=network.target

[Service]
User=%i
Environment=STNORESTART=yes
ExecStart=/home/syncthing/.bin/syncthing -no-browser -logflags=0
Restart=on-failure
SuccessExitStatus=2 3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=multi-user.target

  • Создаем в /etc/systemd/user файл syncthing.service, содержащий код:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=https://github.com/syncthing/syncthing/wiki
After=network.target

[Service]
Environment=STNORESTART=yes
ExecStart=/home/syncthing/.bin/syncthing -no-browser -logflags=0
Restart=on-failure
SuccessExitStatus=2 3 4
RestartForceExitStatus=3 4

[Install]
WantedBy=default.target

  • Включаем службу syncthing:
systemctl enable syncthing@syncthing.service
  • Запускаем службу:

systemctl start syncthing@syncthing.service

  • Проверяем /home/syncthing/.config/syncthing/config.xml на следующие опции:
<startBrowser>false</startBrowser> 
т.е. при запуске службы syncthing не запускался браузер.

<address>:8000</address>
порт для подключения к вебинтерфейсу syncthing (я для удобства сделал его равным 8000)
  • Чтоб подключиться к вебинтерфейсу synching набираем в браузере адрес http://ip-адрес-сервера:8000/

Miredo, network-manager & systemd


Miredo - клиент для подключения к протоколу teredo, предназначенному для передачи ipv6 пакетов через ipv4 сеть. Простыми словами, miredo дает возможность получить доступ в ipv6 сети, даже если провайдер этого не позволяет.

Столкнулся с трудностью запуска miredo. Экран загрузки ругался на: Invalid hostname "teredo.remlab.net", miredo запускался, но ipv6 туннель не создавал. Ручной запуск службы позволял работать до первой проблемы с сетью, да и сам режим ручного вмешательства для меня не был вариантом.

Для решения данной проблемы нужно сделать:

  • Выключить службу miredo.service
systemctl disable miredo.service
  • Скопировать файл службы miredo.service из /lib/systemd/sysyem в /etc/systemd/system
  • Отредактировать /etc/systemd/system/miredo.service так, чтобы он запускался только после появления интернета, т. е.: After=network-online.target вместо After=network.target
  • Включить службу miredo.service:
systemctl enable miredo.service
  • Чтобы событие network-online.target работало, необходимо активировать службу NetworkManager-wait-online.service
systemctl enable NetworkManager-wait-online.service
  • Запустить службы:
systemctl start NetworkManager-wait-online.service
systemctl start miredo.service
  • Проверяем работоспособность:
ping6 ipv6.google.com