<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатная миграция IT-инфраструктуры в облако

Как установить и настроить Syncthing на Ubuntu

Рашид Алимов
Рашид Алимов
Технический писатель
20 августа 2024 г.
675
12 минут чтения
Средний рейтинг статьи: 5

Syncthing — это открытое программное обеспечение для синхронизации файлов между устройствами по принципу peer-to-peer. Оно предназначено для безопасной и защищенной передачи данных между компьютерами и другими устройствами в реальном времени. Syncthing предоставляет значительные преимущества при использовании на сервере, включая возможность создания централизованного узла для синхронизации данных между различными устройствами. Это позволяет хранить и управлять данными в одном месте, обеспечивая удобный доступ и высокую доступность информации. Использование сервера с Syncthing позволяет также легко масштабировать инфраструктуру и управлять правами доступа к данным, что особенно важно для корпоративных пользователей.

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

Создание и подготовка сервера

Сначала нам нужно подготовить сервер для Syncthing.

Регистрация в Timeweb Cloud

Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию. 

Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:

  • ФИО,

  • адрес электронной почты,

  • Номер телефона.

Создание облачного сервера

После создания учетной записи можно приступить к аренде облачного сервера.

  1. Переходим на страницу авторизации и входим в аккаунт, используя логин или адрес электронной почты и пароль, либо через Pass, ВКонтакте, GitHub, Google.

  2. После успешной авторизации открывается панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».

  3. Выбираем операционную систему для установки на сервер. В нашем случае это будет Ubuntu версии 22.04.

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

Image5

  1. Далее выбираем необходимую конфигурацию для сервера. Для работы Syncthing производительность не имеет большого значения, поэтому выбираем сервер исходя из предпочтительного объема диска. Можно выбрать минимальный тариф и в дальнейшем расширить диск через панель управления.
  2. По желанию можно оформить дополнительные услуги, такие как резервные копии и защита от DDoS-атак (последняя доступна только в Санкт-Петербурге).

Image2

  1. Также можно заранее загрузить SSH-ключ, чтобы не входить на сервер с помощью пароля.
  2. Можно задать необходимое имя для сервера, которое будет отображаться в панели управления, а также выбрать проект.
  3. Для создания сервера необходимо нажать кнопку «Заказать». Если на вашем аккаунте недостаточно средств, появится предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP-адрес, логин и пароль для подключения.
cloud

Обновление системы и установка необходимых пакетов

Сначала обновите систему и установите требуемые пакеты:

sudo apt update
sudo apt install software-properties-common apt-transport-https wget curl -y

Установка и настройка Syncthing

Теперь приступим непосредственно к установке Syncthing на созданный сервер.

Добавление репозитория Syncthing

Добавьте ключ GPG и репозиторий Syncthing:

sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Установка Syncthing из репозитория

Обновите пакеты и установите Syncthing:

sudo apt update
sudo apt install syncthing -y

Запуск и настройка службы Syncthing

Запустите и включите службу Syncthing:

sudo systemctl enable syncthing@<username>.service
sudo systemctl start syncthing@<username>.service

Замените username на ваше имя пользователя. Проверьте статус службы:

sudo systemctl status syncthing@<username>.service

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

Далее нужно настроить работу с веб-интерфейсом Syncthing.

Настройка брандмауэра UFW

Разрешите трафик Syncthing через брандмауэр:

sudo ufw allow ssh
sudo ufw allow 22000/tcp
sudo ufw allow syncthing-gui
sudo ufw enable

Настройка Syncthing для доступа по IP-адресу

Откройте файл конфигурации Syncthing и измените настройки:

nano ~/.local/state/syncthing/config.xml

Измените строку <address>127.0.0.18384:</address> на <address>ip-вашего-сервера:8384</address>.

Сохраните файл и перезапустите службу, заменив username на имя вашего пользователя:

sudo systemctl restart syncthing@username.service

Доступ к веб-интерфейсу Syncthing

Откройте браузер и перейдите по адресу http://ip-вашего-сервера:8384.

Вы увидите главную страницу. Сначала необходимо установить пользователя и пароль для аутентификации веб-интерфейса. Перейдите в «Settings» (Настройки) и выберите вкладку «GUI» (Графический интерфейс).

Image4

Введите имя пользователя в поле «GUI Authentication User» и пароль в поле «GUI Authentication Password». Сохраните настройки.

Image1

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

Теперь вы настроили Syncthing и видите панель управления.

Добавление папок и новых пользователей

Теперь можно приступать к работе Syncthing. Рассмотрим основные настройки и действия, которые могут вам потребоваться.

Отправляющие и принимающие папки

При создании новой папки в Syncthing можно выбрать один из трех типов папок:

  • Отправляющая и принимающая (по умолчанию)
  • Только отправляющая
  • Только принимающая

Вы можете изменить тип папки в любой момент, зайдя в настройки папки и выбрав вкладку «Advanced» (Дополнительно).

Создание и добавление устройств

Чтобы начать синхронизацию файлов между устройствами, необходимо добавить удаленное устройство. На панели управления нажмите «Add Remote Device» (Добавить удаленное устройство) и введите ID устройства.

ID нужно получить на другом устройстве с установленным клиентом Syncthing. На официальном сайте есть ссылки на установку для Windows, Linux, MacOS и Android.

Image3

Те же действия необходимо проделать и на удаленном устройстве. Скопировать ID-девайса и добавить его на сервер.

Теперь вы готовы синхронизировать данные между устройствами.

Управление Syncthing через консоль

В Syncthing есть возможность настройки синхронизации без использования веб-интерфейса.
Для запуска Syncthing используйте команду:

syncthing --no-browser

Чтобы узнать идентификатор вашего устройства, выполните следующую команду:

syncthing --device-id

Для добавления второго устройства в конфигурацию выполните команду:

syncthing cli config devices add --device-id $DEVICE_ID_B

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

syncthing cli config folders $FOLDER_ID devices add --device-id $DEVICE_ID_B

Вставьте путь до желаемой директории, которой вы хотите поделиться, вместо $FOLDER_ID.

Доступ к Syncthing по домену

Вы также можете настроить обращение к веб-интерфейсу Syncthing по домену вместо IP-адреса.

Настройка обратного прокси-сервера

Так как интерфейс Syncthing слушает на ip-адрес:8384, он доступен только для подключений по IP. Чтобы получить доступ к веб-интерфейсу Syncthing с удаленного компьютера по домену, можно настроить обратный прокси-сервер с помощью Nginx. В таком случае можно будет убрать из конфигурации Syncthing ранее произведенную настройку с доступом по IP-адресу и заблокировать 8384 порт для внешних подключений.

Nginx — это популярный веб-сервер и обратный прокси-сервер. Чтобы использовать Nginx, установите его, выполнив следующую команду:

sudo apt install nginx

Далее создайте конфигурационный файл для сервера:

sudo nano /etc/nginx/conf.d/syncthing.conf

Добавьте в этот файл следующий контент, заменив syncthing.example.com на ваше предпочитаемое доменное имя. Не забудьте добавить A-запись для этого поддомена. Если у вас нет реального доменного имени, вы можете приобрести его через панель Timeweb Cloud, в разделе «Домены».

server {
  listen 80;
  server_name syncthing.example.com;
  access_log /var/log/nginx/syncthing.access.log;
  error_log /var/log/nginx/syncthing.error.log;
  location / {
    proxy_pass http://127.0.0.1:8384;  ## важно прописать тот IP-адрес, который указан в конфигурационном файле Syncthing
    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 nginx -s reload

После того, как вы направите ваше доменное имя на IP-адрес вашего сервера Ubuntu, введите ваше доменное имя в адресную строку браузера, чтобы получить доступ к веб-интерфейсу Syncthing.

Если ваш браузер не может подключиться к веб-интерфейсу 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 <you@example.com> -d <syncthing.example.com>

Где:

  • --nginx: Использовать плагин для Nginx.
  • --agree-tos: Принять условия обслуживания.
  • --redirect: Принудительно использовать HTTPS с помощью 301 редиректа.
  • --hsts: Добавить заголовок Strict-Transport-Security к каждому HTTP-ответу, заставляя браузер всегда использовать TLS для домена. Защищает от атак SSL/TLS Stripping.
  • --staple-ocsp: Включает OCSP Stapling. Действительный OCSP-ответ прикрепляется к сертификату, который сервер предлагает во время TLS.

Сертификат должен быть получен и автоматически установлен.

Обновите веб-интерфейс Syncthing, и вы увидите, что HTTP-соединение автоматически перенаправляется на защищенное HTTPS-соединение.

Автоматическое продление сертификата

Для автоматического продления сертификатов, выпущенных с помощью Certbot, можно настроить задачу cron. В Certbot уже есть встроенная команда для проверки и продления сертификатов, если они истекают в течение 30 дней. Вот как это сделать:

Убедитесь, что Certbot установлен и доступен для использования.

certbot --version

Откройте crontab для редактирования:

sudo crontab -e

Добавьте следующую строку в crontab для выполнения проверки и продления сертификатов дважды в день. Эта задача будет выполняться в 00:00 и 12:00 каждый день.

0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Объяснение параметров:

  • 0 0,12 * * *: Запускает задачу в 00:00 и 12:00 каждый день.
  • /usr/bin/certbot renew: Команда для проверки и продления сертификатов.
  • --quiet: Убирает вывод ненужной информации, оставляя только ошибки.
  • --post-hook "systemctl reload nginx": Перезагружает Nginx после успешного продления сертификата.

После добавления строки, сохраните изменения и закройте редактор.

Убедитесь, что cron работает и задача добавлена корректно:

sudo systemctl status cron

Вот и все! Теперь ваши сертификаты будут автоматически проверяться и продлеваться с помощью cron.

Версионирование в Syncthing

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

1. В браузере перейдите по адресу http://ip-вашего-сервера:8384.

2. На главной странице веб-интерфейса найдите папку, для которой вы хотите настроить версионирование.

3. Нажмите на иконку «Редактировать» (значок карандаша) рядом с именем папки.

4. В открывшемся окне настроек папки перейдите во вкладку «Версионирование» (Versioning).

4. Выберите тип версионирования:

  • Никакого версионирования (No File Versioning): Этот параметр отключает версионирование.
  • Простое версионирование (Simple File Versioning): Сохраняет предыдущие версии файлов на заданное количество дней.
  • Сложное версионирование (Staggered File Versioning): Сохраняет несколько версий файлов с различными интервалами времени.
  • Версионирование с временной меткой (Timestamp File Versioning): Добавляет временную метку к имени файла при сохранении версии.
  • Версионирование через сценарий (External File Versioning): Использует внешний сценарий для управления версиями.

5. Настройте параметры версионирования. В зависимости от выбранного типа, у вас будут различные параметры для настройки. Например, для «Простого версионирования» можно указать количество дней для хранения старых версий файлов. Заполните необходимые поля и параметры, исходя из ваших потребностей.

6. После настройки параметров версионирования нажмите кнопку «Сохранить» (Save) в нижней части окна.

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

Дополнительную информацию по версированию вы можете найти в документации Syncthing.

Разверните Syncthing на своем облачном сервере

Заключение

В статье мы описали как провести базовую настройку Syncthing, а также добавили проксирование через Nginx на домен и подключили SSL-сертификат для безопасной работы с вашими данными. Настройка версионирования файлов позволит предотвратить потерю данных. Эти возможности делают Syncthing идеальным решением как для личного использования, так и для бизнеса, обеспечивая надежную и эффективную синхронизацию данных в реальном времени. Syncthing имеет подробную документацию с тонкой настройкой под ваши нужды и для дальнейшей работы с сервисом рекомендуем с ней ознакомиться.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
20 августа 2024 г.
675
12 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев