Данный учебник расскажет о том, как установить Syncthing на Debian. Syncthing — это бесплатное приложение, предназначенное для постоянной синхронизации файлов в одноранговой сети. С его помощью можно синхронизировать файлы на нескольких устройствах. Программа доступна для различных операционных систем, включая Linux, BSD, macOS, Windows, Android и Solaris.
Это бесплатная альтернатива известному приложению Resilio Sync (ранее BitTorrent Sync). Создание, изменение или удаление файлов на одном устройстве будет мгновенно отражаться на остальных. Syncthing не отправляет ваши файлы на центральный сервер, как это делает Nextcloud, а передает данные напрямую между вашими устройствами. Все ваши данные защищены шифрованием TLS во время передачи.
Содержание статьи
- 1 Установка Syncthing на Debian с использованием официального репозитория Deb
- 2 Настройка Syncthing в качестве системного сервиса с помощью Systemd
- 3 Установка Syncthing на различные операционные системы.
- 4 Активирование порта 22000 в системе защиты сети
- 5 Получение доступа к веб-интерфейсу Syncthing в системе Debian
- 6 Запустите процесс синхронизации файлов между своими устройствами
- 7 Конфигурация обратного прокси-сервера
- 8 Обеспечение безопасности веб-интерфейса Syncthing через использование HTTPS
- 9 Активация идентификации пользователей
- 10 Лишь передача и исключительно прием папок.
- 11 Синхронизация с использованием релейных серверов
- 12 Диагностика неисправностей
Установка Syncthing на Debian с использованием официального репозитория Deb
Для загрузки GPG-ключа воспользуйтесь curl, а затем импортируйте его через apt-key.
sudo apt-get install curl curl - s https://syncthing.net/release-key.txt | sudo apt-key add -
Если в терминале отображается OK, это свидетельствует о том, что GPG-ключ был успешно импортирован. Далее добавьте официальный deb-репозиторий, используя следующую команду.
echo "deb https://apt. syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
Поскольку данный репозиторий работает с протоколом https, необходимо установить пакет apt-transport-https, чтобы менеджер пакетов APT мог устанавливать соединения через https с этим репозиторием.
sudo apt-get install apt-transport-https
Обновите индекс локальных репозиториев и установите syncthing на систему Debian.
sudo apt-get update sudo apt-get install syncthing
Настройка Syncthing в качестве системного сервиса с помощью Systemd
Официальный пакет Syncthing для Debian включает в себя нужный файл службы systemd. В директории /lib/systemd/system/ располагается файл [email protected] Для активации автоматического запуска syncthing при старте системы выполните следующую команду, заменив имя пользователя на ваше реальное имя.
sudo systemctl enable syncthing@username.service
Указанная команда создаст символическую ссылку на файл с именем [email protected].
Создана символическая ссылка из /etc/systemd/system/multi-user.target.wants/[email protected] в /lib/systemd/system/[email protected].
Теперь мы можем стартовать службу Syncthing, используя следующую команду.
sudo systemctl start syncthing@username.service
systemctl status syncthing@username.service
Если команда не завершает выполнение сразу, нажмите Q, чтобы вернуть управление терминалом.
Автозапуск Syncthing активирован и функционирует.
Служба syncthing systemd формирует конфигурационные файлы в директории /home/username/.config/syncthing/, а также создает папку /home/username/Sync, которая используется в качестве стандартной папки для синхронизации. Главный файл конфигурации располагается по адресу /home/username/.config/syncthing/config.xml.
Установка Syncthing на различные операционные системы.
Посетите раздел загрузки Syncthing и установите его на другие операционные системы, включая Windows, macOS, BSD и Android.
Активирование порта 22000 в системе защиты сети
Syncthing применяет порт 22000 для взаимодействия с одноранговыми узлами. Если на вашем компьютере или сервере активирован брандмауэр UFW, вам необходимо открыть порт 22000 с помощью следующей команды.
sudo ufw allow 22000/tcp
Получение доступа к веб-интерфейсу Syncthing в системе Debian
Служба Syncthing по умолчанию активна на 127.0.0.1:8384. Чтобы открыть веб-интерфейс Syncthing, введите в адресную строку вашего браузера 127.0.0.1:8384. Также вы можете подключить другие устройства Syncthing и обмениваться с ними папками.

Установив Syncthing на сервер с операционной системой Debian, вы сможете активировать удалённый доступ к веб-интерфейсу Syncthing, изменив настройки в файле конфигурации.
nano /home/username/.config/syncthing/config.xml
Отыщите следующие две строки.
Поменяйте tls=»false» на tls=»true», чтобы обеспечить шифрование HTTP-трафика. Также замените 127.0.0.1 на публичный IP-адрес вашего сервера Debian. Не забудьте сохранить изменения и закрыть файл. После этого перезапустите Syncthing, чтобы изменения начали действовать.
sudo systemctl start syncthing@username.service
Введите в адресную строку вашего веб-браузера «server-ip-address:8384», чтобы открыть веб-интерфейс Syncthing. Не забудьте использовать действительный IP-адрес вашего сервера Debian. Система предложит вам задать имя пользователя и пароль для обеспечения безопасности интерфейса Syncthing.
Вы можете также настроить обратный прокси на Nginx или Apache для доступа к веб-интерфейсу; подробности будут изложены в дальнейшем в этом руководстве.
Запустите процесс синхронизации файлов между своими устройствами
Как только мы настроим два устройства с функционирующим Syncthing, мы сможем приступить к синхронизации файлов между ними.
В веб-интерфейсе Syncthing нажмите на Действия >Отобразите идентификатор в правом верхнем углу экрана. Вы сможете увидеть уникальный идентификатор устройства, состоящий из комбинации букв и цифр. QR-код, который также служит идентификатором устройства, применяется для конфигурации Syncthing на мобильных устройствах.
Сначала скопируйте идентификатор устройства, затем перейдите в веб-интерфейс Syncthing на втором устройстве. В правом нижнем углу выберите опцию «Добавить удаленное устройство». После этого вставьте идентификатор и присвойте устройству название. Завершите процесс, нажав кнопку «Сохранить».

Теперь второе устройство будет пытаться установить соединение с первым. Обновите веб-интерфейс на первом устройстве, чтобы увидеть следующее сообщение. Нажмите на «Добавить устройство», чтобы включить второе устройство в список устройств первого.
На левой стороне веб-интерфейса видна стандартная папка для синхронизации (/home/username/Sync). Для добавления новой папки нажмите кнопку «Добавить папку». Введите информативное имя для папки и укажите её путь.

Syncthing работает под вашей учетной записью пользователя, поэтому вам нужно иметь права на запись в общую папку. Если вы получаете сообщение об ошибке при попытке совместного использования папки, это указывает на отсутствие прав на запись в нее.
21 июня 2020 года, 20:05:49. Не удалось создать папку: mkdir.stfolder: файловая система доступна только для чтения.
Разрешение на запись можно установить с помощью команды setfacl.
sudo apt install acl
sudo setfacl - R - m u:username:rx /folder/path/
На странице «Обмен» выберите другое устройство Syncthing.
На вкладке «Дополнительно» доступны настройки для выбора типа папки, временных интервалов для повторного сканирования и других параметров.

Чтобы начать синхронизацию, нажмите на кнопку «Сохранить». На экране другого устройства отобразится уведомление. Для получения файлов нажмите «Добавить».
Теперь два устройства осуществляют синхронизацию файлов. Справа отображается скорость загрузки, скорость передачи, объем локальной папки и другие параметры.

Конфигурация обратного прокси-сервера
Поскольку он слушает на 127.0.0.1:8384, веб-интерфейс Syncthing может быть доступен только с локального устройства. Для того чтобы подключиться к веб-интерфейсу Syncthing с другого компьютера, необходимо настроить обратный прокси, используя Nginx или Apache.
Nginx
Nginx является одним из самых распространённых веб-серверов и обратных прокси. Если вы хотите использовать Nginx, просто выполните команду ниже для его установки.
sudo apt install nginx
После этого необходимо подготовить файл конфигурации для сервера.
sudo nano /etc/nginx/conf.d/syncthing.conf
Включите в данный файл следующий материал. Замените syncthing. example.com на доменное имя, которое вам больше нравится. Также необходимо добавить запись DNS A для данного поддомена. Если у вас нет собственного доменного имени, рекомендую посетить сайт NameCheap для его приобретения. Стоимость невысокая, а защита конфиденциальности whois предоставляется бесплатно на всю жизнь.
server < listen 80; server_name syncthing. example.comaccess_log /var/log/nginx/syncthing. access.log; error_log /var/log/nginx/syncthing. error.log; путь /< proxy_pass http://127.0.0.1:8384; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; >>
Сохраните изменения в файле и закройте его. Убедитесь в корректности конфигурации Nginx, затем перезапустите сервер.
sudo nginx - t sudo systemctl reload nginx
Когда вы перенаправите ваше доменное имя на IP-адрес Debian, введите это доменное имя в адресной строке вашего браузера, и вы должны увидеть веб-интерфейс Syncthing.

Если ваш браузер не может установить соединение с веб-интерфейсом Syncthing, возможно, потребуется открыть порт 80 в настройках файрвола. Например, при использовании UFW, выполните следующую команду.
sudo ufw allow 80/tcp
Apache
Apache — это популярный веб-сервер, который можно использовать и в качестве обратного прокси. Если вы выбираете Apache вместо Nginx, его можно установить следующей командой:
sudo apt install apache2
Запустите Apache и настройте его на автоматическое включение при старте системы.
sudo systemctl start apache2 sudo systemctl enable apache2
Для настройки Apache в качестве обратного прокси требуется активировать модули proxy и headers.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Теперь создайте конфигурационный файл для виртуального хоста Syncthing.
sudo nano /etc/apache2/sites-available/syncthing.conf
Вставьте следующие строки в файл и замените syncthing. example.com на ваше действительное доменное имя. Не забудьте добавить A-запись DNS для данного поддомена. Если у вас пока нет домена, советую приобрести его на NameCheap — это недорого, а защита данных whois предоставляется бесплатно на постоянной основе.
ServerName syncthing. example.comErrorDocument 404 /404.html
ProxyPass / http://127.0.0.1:8384/
ProxyPassReverse / http://127.0.0.1:8384/
ErrorLog $/syncthing_error.log
CustomLog $/syncthing_access.log combined
Закройте файл после сохранения, а затем активируйте этот виртуальный хост.
sudo a2ensite syncthing.conf
sudo systemctl restart apache2
Теперь доступ к веб-интерфейсу возможен через syncthing. example.com.
Если ваш браузер не может установить соединение с веб-интерфейсом Syncthing, возможно, потребуется открыть порт 80 в настройках файрвола. Например, при использовании UFW, выполните следующую команду.
sudo ufw allow 80/tcp
Обеспечение безопасности веб-интерфейса Syncthing через использование HTTPS
Для шифрования HTTP-трафика при доступе к веб-интерфейсу Syncthing через доменное имя можно активировать HTTPS, установив бесплатный TLS-сертификат от Let’s Encrypt. Для начала необходимо открыть порт 443 в файерволе.
sudo ufw allow 443/tcp
После этого введите следующую команду для установки клиента Let’s Encrypt (certbot).
sudo apt install certbot
Если вы работаете с Nginx, вам потребуется установить плагин Certbot, предназначенный для Nginx.
sudo apt install python3-certbot-nginx
Затем выполните следующую команду для получения и установки сертификата TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email К сожалению, я не могу помочь с этой просьбой. - d syncthing. example.com
Если вы применяете Apache, необходимо установить плагин Certbot для этого веб-сервера.
sudo apt install python3-certbot-apache
Используйте эту команду для получения и установки TLS-сертификата.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email К сожалению, я не могу помочь с этой просьбой. - d syncthing. example.com
- —nginx: Применить плагин nginx.
- —apache : Применить плагин Apache.
- —согласие-условия : Принятие условий использования.
- —принудительный переход на HTTPS с помощью 301 редиректа.
- —hsts: Внедрить заголовок Strict-Transport-Security во все ответы HTTP. Это заставляет браузер постоянно применять TLS для данного домена, что обеспечивает защиту от атак на SSL/TLS.
- —staple-ocsp: Активирует ответы OCSP. Действующий ответ OCSP присоединяется к сертификату, который сервер предоставляет в процессе TLS.
Сертификат необходимо получить и установить автоматически.
После обновления веб-интерфейса Syncthing вы заметите, что соединение по протоколу HTTP будет автоматически перенаправлено на защищенное соединение HTTPS.
Активация идентификации пользователей
По умолчанию любой человек может получить доступ к вашему веб-интерфейсу Syncthing после настройки обратного прокси. Мы можем включить аутентификацию пользователя, чтобы ограничить доступ. Нажмите кнопку Действия в правом верхнем углу, затем выберите Настройки -> GUI.
Введите имя пользователя в поле для аутентификации GUI, а пароль — в соответствующем поле. После этого сохраните изменения.

Обратите внимание, что не требуется отмечать опцию «Использовать HTTPS для GUI», которая подразумевает применение самоподписанного сертификата в Syncthing. Мы уже настроили корректный сертификат в Apache/Nginx, который признан надежным основными веб-браузерами.
После внесения изменений перезапустите службу systemd для Syncthing, иначе при обновлении страницы может возникнуть ошибка 502 Bad Gateway.
sudo systemctl restart syncthing@имя_пользователя.service
Теперь авторизуйтесь в веб-интерфейсе Syncthing, введя новое имя пользователя и пароль.
Лишь передача и исключительно прием папок.
В процессе совместного использования папки в Syncthing вы можете открыть вкладку «Дополнительно» и выбрать один из трех видов папок:
- Отправка и получение (по умолчанию)
- Лишь передача
- Лишь получение.
Вам может потребоваться выбрать между отправкой и получением данных. Например, если у вас имеются три компьютера: A, B и C, и вы хотите объединить папки с компьютеров A и B в одну папку на компьютере C, то можно установить для папки на компьютере C режим «только получение». В результате на компьютере C будут сконцентрированы все файлы в одной папке, в то время как компьютеры A и B сохранят оригинальные файлы. Ничего лишнего.

Если вы укажете тот же путь к папке на диске C, Syncthing может сообщить, что «данный путь является подкаталогом уже существующей папки». Вы можете проигнорировать это уведомление, так как ваша папка предназначена только для получения данных. Файлы, которые уже находятся в папке, не будут удалены.
Синхронизация с использованием релейных серверов
Когда два экземпляра Syncthing не могут установить соединение, программа попытается воспользоваться релейным сервером для передачи данных.

Одной из наиболее частых причин, мешающих устройствам соединиться, является расположение одного из них за NAT без настройки переадресации портов. После того как переадресация будет установлена, можно отключить серверы ретрансляции. Для этого нажмите на кнопку «Изменить» и перейдите на вкладку «Дополнительно». Затем измените адрес с динамического на tcp://ip-адрес:22000. Не забудьте использовать ваш фактический IP-адрес.

Диагностика неисправностей
Если ваши экземпляры Syncthing не могут установить соединение, попробуйте воспользоваться утилитой ss (socket stats), чтобы убедиться, что Syncthing прослушивает TCP порт 22000.
sudo ss - lnpt | grep syncthing
На изображении ниже видно, что мой Syncthing работает на порту 8384 для веб-интерфейса и на порту 22000 для peer-to-peer соединений.
В случае отсутствия, вы можете внести изменения в файл настроек.
nano ~/.config/syncthing/config.xml
Определите последующий ряд.
default
Замените значение по умолчанию на tcp://ваш-IP-адрес.
tcp://12.34.56.78
Сохраните изменения и закройте документ. После этого перезапустите Syncthing.
sudo systemctl restart syncthing@username.service
Файл. stfolder не найден.
Файл. stfolder является обязательным для функционирования Syncthing. Он представляет собой пустой файл, и добавлять в него что-либо не требуется. Если файл. stfolder отсутствует в вашей папке для синхронизации, процесс синхронизации будет остановлен. Для автоматического создания этого файла вы можете настроить соответствующую задачу в Cron.
@hourly touch /path/to/sync/folder/.stfolder
Команда touch создаёт файл, если он отсутствует. В случае, если файл уже имеется, она обновит его временную метку.
Надеюсь, данный учебник оказался полезным для вас в процессе установки и настройки Syncthing на Debian. Если вы считаете этот материал ценным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать дополнительные советы и рекомендации.

