Цель поста в том, чтобы создать инфраструктуру для произведения бекапа с локальной машины (своей рабочей) на какую-то удалённую. А дальше, например, ещё синхронизировать файлы на другую свою домашнюю машину. Но в любом случае нужно, чтобы бекапы были где-то удалённо помимо рабочей и домашней машины.
Syncthing будет подниматься с помощью Docker. А для хранения данных будет использоваться автоматически подключающийся volume со специальным плагином для DigitalOcean. В принципе, для экономии денег можно провернуть это и без отдельного волюма на DO, тогда не надо плагин ставить (пропустить пункт 2), а docker volume создать с драйвером local.
И так, начнём:
Идём на DigitalOcean и покупаем сервер (ссылка реферальная, по ней $50 начислятся). Лучше помощнее, но потянет и самый дешёвый.
- Входим на купленную машину и устанавливаем плагин для Docker:
$ docker plugin install rexray/dobs DOBS_TOKEN=$DIGITALOCEAN_ACCESS_TOKEN DOBS_REGION=fra1 LINUX_VOLUME_FILEMODE=0775
Вместо $DIGITALOCEAN_ACCESS_TOKEN нужно подставить API-ключ, который можно найти (создать) в админке DO.
B параметр DOBS_REGION нужно подставить ту зону, где у вас был создан сервер.
- Тут же на машине создаём вольюм. Если был установлен плагин (п.2):
$ docker volume create --name=data-syncthing --opt=size=10 --driver=rexray/dobs
Будет создан как docker-вольюм так и соответствующий DO-вольюм, который можно увидеть в админке DO (10Gb это $1 в месяц, размер можно скорректировать).
Если плагин не был установлен, то можно просто создать docker-вольюм:
$ docker volume create --name=data-syncthing --driver=local
- Клонируем проект slowprog/syncthing-docker-compose, например, в домашнюю директорию и поднимаем:
$ cd ~ $ git clone https://github.com/slowprog/syncthing-docker-compose.git $ cd syncthing-docker-compose $ docker-compose up -d
После этого по IP-адресу сервера и порту 8384 можно зайти в админку Syncthing (а можно свой домен направить на этот IP для красоты).
- В админке нужно произвести небольшую конфигурацию:
- Устанавливаем в настройках (Действие -> Настройки) во вкладке Общее красивое имя устройства т.к. в дальнейшем оно везде будет так и отображаться (хотя дефолтное норм).
- Тут же на вкладке Общее устанавливаем Путь для папок, где все синхронизируемые папки и будут хранится. В нашем случае надо, чтобы всё было в вольюме, он подмонтирован в /sync, значит это и прописываем.
- Дальше на вкладке Интерфейс установите имя пользователя и пароль. Это позволит скрыть админку от других. В следующий раз при открытии админки потребуется ввести эти данные. Сохраняем настройки.
- Удаляем дефолтную папку для синхронизации (Редактировать -> Удалить).
После этого удалённая машина готова принять наши файлы с рабочей машины.
Устанавливаем Syncthing на рабочую машину. В моём случае это macOS. Но можно установить на Windows и др. Этот клиент можно сконфигурировать также (п.5), но, например, без пароля.
Теперь надо, чтобы обе машины увидели друг друга. Для этого на удалённой машине посмотрите ID (Действие -> Показать ID) и в модалке Добавить удалённое устройство на рабочей машине вставьте этот ID. В этой же модалке во вкладке Предоставление доступа выделите Автопринятие. После сохранение необходимо на удалённой машине дать согласие на соединение. Таким образом можно добавить ещё устройства.
- Добавляем папки для бекапа на рабочей машине, чтобы пошарить среди всех пиров. В модалке Добавить папку укажите Путь к папке и ID папки, чтобы было удобно. Во вкладке Предоставление доступа выделите все те пиры, которые должны синхронизировать эту папку.
Собственно, после завершения синхронизации у вас будут бекапы на разных машинах. Сколько подключите устройств столько бекапов и будет. Советую посмотреть настройки, может чего увидите интересное.