Введение
В данной заметке разберем установку Syncthing в Linux, будем использовать доменное имя и выпустим для него бесплатный SSL сертификат
Если коротко, Syncthing – это Open Source, кроссплатформенное, приложение для синхронизации файлов между двумя и более клиентами, обходит NAT (вам не нужно наличие белого адреса), использует TLS шифрование и т.д.
Например с помощью нее вы можете синхронизировать свои фотографии с телефона на компьютер, какие-либо рабочие директории с одного пк на другой, я его использую для синхронизации базы Obsidian между рабочим и домашним пк, для синхронизации фотографий с телефона на домашний пк, для пароль менеджера и т.д.
Установка Syncthing
Я буду устанавливать Syncthing на Debian 11, с использованием доменного имени sync.site.ru, использовать домен не обязательно, если у вас его нет пропускаем пункт с nginx и certbot
1. Установим нужные пакеты
apt install curl apt-transport-https
2. Импортируем GPG ключ и добавим репозиторий
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" | tee /etc/apt/sources.list.d/syncthing.list
3. Обновляем список пакетов и устанавливаем Syncthing
apt update && apt install syncthing -y
4. Создаем нового пользователя
useradd -m syncthing
5. Настроим нашу службу
nano /etc/systemd/system/syncthing@.service
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
[Service]
User=%i
ExecStart=/usr/bin/syncthing -gui-address="0.0.0.0:8384" -no-restart -no-browser -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
[Install]
WantedBy=multi-user.target
6. Перечитаем настройки, включаем автоматический запуск службы и стартуем ее:
systemctl daemon-reload
systemctl enable syncthing@syncthing
systemctl start syncthing@syncthing
7. Увеличиваем лимиты, или при большом количестве файлов будем получать предупреждение в веб морде и синхронизация не будет работать:
echo 'fs.inotify.max_user_watches=204800' >> /etc/sysctl.conf
sysctl -p
8. Готово, переходим в браузер по адресу:
http://ip-сервера:8384
И тут нас встречает сообщение “GUI аутентификация: Установите имя пользователя и пароль“, переходим в Настройки=>Интерфейс и устанавливаем логин и пароль для веб морды
Готово, на этом этапе, если вы не хотите использовать доменное имя, можно заканчивать и переходить к добавлению устройств и настройке синхронизации, единственное во вкладке Интерфейс рекомендую так же включить чекбокс на “Использовать HTTPS для панели управления” и пользоваться Syncthing уже на https://ip-сервера:8384.
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT
Получаем SSL сертификат для Syncthing
Мы будем проксировать Syncthing с помощью Nginx и выпустим SSL сертификат для нашего домена используя Certbot
1. Установим nginx и certbot
apt install nginx certbot python3-certbot-nginx
2. Создаем конфиг nginx (замените sync.site.ru на свой домен):
nano /etc/nginx/sites-enabled/sync.site.ru.conf
server {
listen 80;
server_name sync.site.ru;
location / {
proxy_pass http://127.0.0.1:8384;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. Перезагружаем Nginx:
systemctl restart nginx
4. Выпускаем SSL сертификат
Если пользуемся Certbot в первый раз, то вводим почту, соглашаемся с политикой и другими вопросами, будет предложено выбрать домен для которого нужно выпустить SSL сертификат, выбираем и жмем Enter:
certbot --nginx
5. Бежим в браузер проверять если Certbot не выдал ошибок на
https://sync.site.ru
Так же рекомендую закрыть 8384 порт любым удобным для вас способом.
Вывод
В данной небольшой заметке разобрали установку Syncthing в Linux, с использованием своего домена и защищенного https соединения, настройки или примеры разбирать не буду, у них на сайте достаточно подробная документация и нормальный форум, так что велком.
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально: