Syncthing — это открытое программное обеспечение для синхронизации файлов между устройствами по принципу peer-to-peer. Оно предназначено для безопасной и защищенной передачи данных между компьютерами и другими устройствами в реальном времени. Syncthing предоставляет значительные преимущества при использовании на сервере, включая возможность создания централизованного узла для синхронизации данных между различными устройствами. Это позволяет хранить и управлять данными в одном месте, обеспечивая удобный доступ и высокую доступность информации. Использование сервера с Syncthing позволяет также легко масштабировать инфраструктуру и управлять правами доступа к данным, что особенно важно для корпоративных пользователей.
Применение Syncthing в бизнесе может значительно упростить управление файлами и данными, особенно для компаний, которые хотят обеспечить быструю и надежную синхронизацию данных между офисами или удаленными сотрудниками. С помощью Syncthing можно настроить автоматическую синхронизацию важных документов, рабочих файлов и проектов между всеми сотрудниками компании, обеспечивая актуальность данных и предотвращая потерю информации. Личное использование Syncthing также имеет свои преимущества, например, для резервного копирования фотографий, видео и других данных между домашними устройствами, такими как ноутбуки, смартфоны и NAS. Это делает Syncthing незаменимым инструментом для тех, кто хочет сохранить контроль над своими данными и обеспечить их безопасность без зависимости от сторонних облачных сервисов.
Сначала нам нужно подготовить сервер для Syncthing.
Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию.
Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:
ФИО,
адрес электронной почты,
Номер телефона.
После создания учетной записи можно приступить к аренде облачного сервера.
Переходим на страницу авторизации и входим в аккаунт, используя логин или адрес электронной почты и пароль, либо через Pass, ВКонтакте, GitHub, Google.
После успешной авторизации открывается панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».
Выбираем операционную систему для установки на сервер. В нашем случае это будет Ubuntu версии 22.04.
Определяемся с регионом, в котором будет размещен сервер. Рекомендуется выбрать регион, находящийся ближе всего к вам.
cloud
Сначала обновите систему и установите требуемые пакеты:
sudo apt update
sudo apt install software-properties-common apt-transport-https wget curl -y
Теперь приступим непосредственно к установке 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:
sudo apt update
sudo apt install syncthing -y
Запустите и включите службу Syncthing:
sudo systemctl enable syncthing@<username>.service
sudo systemctl start syncthing@<username>.service
Замените username
на ваше имя пользователя. Проверьте статус службы:
sudo systemctl status syncthing@<username>.service
Далее нужно настроить работу с веб-интерфейсом Syncthing.
Разрешите трафик Syncthing через брандмауэр:
sudo ufw allow ssh
sudo ufw allow 22000/tcp
sudo ufw allow syncthing-gui
sudo ufw enable
Откройте файл конфигурации Syncthing и измените настройки:
nano ~/.local/state/syncthing/config.xml
Измените строку <address>127.0.0.18384:</address>
на <address>ip-вашего-сервера:8384</address>
.
Сохраните файл и перезапустите службу, заменив username
на имя вашего пользователя:
sudo systemctl restart syncthing@username.service
Откройте браузер и перейдите по адресу http://ip-вашего-сервера:8384
.
Вы увидите главную страницу. Сначала необходимо установить пользователя и пароль для аутентификации веб-интерфейса. Перейдите в «Settings» (Настройки) и выберите вкладку «GUI» (Графический интерфейс).
Введите имя пользователя в поле «GUI Authentication User» и пароль в поле «GUI Authentication Password». Сохраните настройки.
После этого вы увидите экран аутентификации. Введите имя пользователя и пароль, чтобы войти в систему.
Теперь вы настроили Syncthing и видите панель управления.
Теперь можно приступать к работе Syncthing. Рассмотрим основные настройки и действия, которые могут вам потребоваться.
При создании новой папки в Syncthing можно выбрать один из трех типов папок:
Вы можете изменить тип папки в любой момент, зайдя в настройки папки и выбрав вкладку «Advanced» (Дополнительно).
Чтобы начать синхронизацию файлов между устройствами, необходимо добавить удаленное устройство. На панели управления нажмите «Add Remote Device» (Добавить удаленное устройство) и введите ID устройства.
ID нужно получить на другом устройстве с установленным клиентом Syncthing. На официальном сайте есть ссылки на установку для Windows, Linux, MacOS и Android.
Те же действия необходимо проделать и на удаленном устройстве. Скопировать ID-девайса и добавить его на сервер.
Теперь вы готовы синхронизировать данные между устройствами.
В 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 по домену вместо 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
Чтобы зашифровать 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:
1. В браузере перейдите по адресу http://ip-вашего-сервера:8384
.
2. На главной странице веб-интерфейса найдите папку, для которой вы хотите настроить версионирование.
3. Нажмите на иконку «Редактировать» (значок карандаша) рядом с именем папки.
4. В открывшемся окне настроек папки перейдите во вкладку «Версионирование» (Versioning).
4. Выберите тип версионирования:
5. Настройте параметры версионирования. В зависимости от выбранного типа, у вас будут различные параметры для настройки. Например, для «Простого версионирования» можно указать количество дней для хранения старых версий файлов. Заполните необходимые поля и параметры, исходя из ваших потребностей.
6. После настройки параметров версионирования нажмите кнопку «Сохранить» (Save) в нижней части окна.
Теперь, когда версионирование настроено, Syncthing будет сохранять предыдущие версии файлов, что позволит вам восстанавливать их в случае случайного удаления или изменения. Эти функции особенно полезны для защиты важных данных и обеспечения дополнительной безопасности при синхронизации файлов между устройствами.
Дополнительную информацию по версированию вы можете найти в документации Syncthing.
Разверните Syncthing на своем облачном сервере
В статье мы описали как провести базовую настройку Syncthing, а также добавили проксирование через Nginx на домен и подключили SSL-сертификат для безопасной работы с вашими данными. Настройка версионирования файлов позволит предотвратить потерю данных. Эти возможности делают Syncthing идеальным решением как для личного использования, так и для бизнеса, обеспечивая надежную и эффективную синхронизацию данных в реальном времени. Syncthing имеет подробную документацию с тонкой настройкой под ваши нужды и для дальнейшей работы с сервисом рекомендуем с ней ознакомиться.