Pull to refresh

Установка CrashPlan в Docker-контейнер на NAS Synology

Reading time 7 min
Views 15K


Те, кто любит устройства от Synology и отличный сервис резервного копирования CrashPlan уже много лет кувыркаются, пытаясь настроить его надежную и бесперебойную работу на хранилище. С приходом Docker на Synology появился свет в конце тоннеля.

Прелюдия


Большие домашние хранилища от Synology усыпляют бдительность. Они кажутся надежными и безотказными. Там есть RAID, который защищает от сбойных дисков. Там есть «Time Backup», который отлично сохраняет версии файлов и позволяет их легко восстанавливать. Однако, настоящие параноики, чтущие Нассима Талеба, всегда помнят о редких, но неприятных событиях, которые могут случится с вашими данными, да и самим хранилищем:

  • Пожар или кража. Хранилище пропадает целиком, вместе с вашими оригиналами и их резервными копиями на соседнем разделе;
  • Шифрующие вирусы. Живой пример — вирус SynoLocker, доставивший пользователям много страданий. Он проникал через дыру в DSM (ОС от Synology, под управлением которой работает это сетевое хранилище). Шифровал там все файлы и вымогал деньги. Ну, всё как обычно.
  • Что-то ещё.

Исходя из этого, каждому здравомыслящему параноику понятно, что нужно прятать резервные копии всех важных данных (детские фотографии, например) подальше в облака. Разработчики это тоже понимают. В DSM есть пакет «Cloud Sync», который позволяет копировать ваши данные в удаленные облачные хранилища. К настоящему времени поддерживается много облачных сервисов:

  • Облачное хранилище Amazon, Amazon S3, Облачные сервисы, совместимые с Amazon S3, Baidu Cloud, Box, Dropbox (в том числе Dropbox for Business), Google Cloud Storage, Google Диск (в том числе Google Drive for Work), hicloud S3, HiDrive, hubiC, IBM SoftLayer, Megafon Megadisk, Microsoft OneDrive (в том числе Office 365 и OneDrive for Business), Облачные сервисы, совместимые с OpenStack Swift, Rackspace, Резервное копирование SFR NAS, WebDAV, Яндекс Диск.

Однако, по непонятной мне и многим пользователям причине, не поддерживается облачный сервис специально заточенный под резервное копирование — CrashPlan. Он любим за свою надежность, безлимитность и недорогие тарифы. Поэтому, долгое время сообщество прикручивает этот сервис к Synology скотчем и степлером. Так, Patrick Moore (мой герой!) с 2012 года поддерживал и постоянно допиливал свой пакет CrashPlan, работающий на хранилище. Но, похоже, в 2015 году он окончательно устал.

Шаги по спасению мира и запуску CrashPlan в Docker-контейнере на Synology


Пришлось поднять голову и оглядеться вокруг. К этому времени, на Synology появился Docker (не на всех версиях) и теперь есть возможность запустить CrashPlan в Docker-контейнере, где он будет успешно жить и самостоятельно обновляться. Его установка и настройка не вполне очевидны. Надеюсь, что короткая инструкция ниже поможет вам набить чуть меньше шишек, чем мне. Она скорее для чайников, ибо профессиональные linux-админы уже у себя дома давно всё настроили.

Итак, следующая последовательность действий, позволит вам запустить и управлять своим клиентом CrashPlan в Docker-контейнере, который бежит на Synology:

1. Создаем на своем хранилище новую папку общего доступа. Например: «crashplan-symlink». Именно эту папку будет видеть CrashPlan из контейнера. Она одна должна содержать все данные, которые будет обрабатывать CrashPlan. Можно переложить все важные данные непосредственно в неё, но лучше создать там подпапки «music-symlink», «photo-symlink», «homes-symlink» и определить их как симлинки на реальные папки хранилища. Это тоже работает.



2. Создаем на хранилище новый файл /etc/rc.local и прописываем в него команды для монтирования симлинков с настоящих папок (фото, видео, и пр.) на вложенные папки в нашей новой папке общего доступа. Файл «rc.local» нужно использовать потому, что иначе симлинки не выживают при перезагрузке хранилища. Если есть затруднения, см. ниже «Удобное управление файлами на хранилище». Вот, что у меня сейчас в этом файле:

mount --bind /volume1/bittorrentsync /volume1/crashplan-symlink/bittorrentsync-symlink
mount --bind /volume1/homes /volume1/crashplan-symlink/homes-symlink
mount --bind /volume1/music /volume1/crashplan-symlink/music-symlink
mount --bind /volume1/photo /volume1/crashplan-symlink/photo-symlink
mount --bind /volume1/public /volume1/crashplan-symlink/public-symlink

3. Ставим на Synology пакет «Docker». Далее запускаем его после установки, ищем в реестре образ crashplan («jrcs/crashplan» — hub.docker.com/r/jrcs/crashplan) и также устанавливаем его.



4. При начальном конфигурировании контейнера «jrcs/crashplan» важно запомнить предложенное соответствие портов (если выберем автонастройку) или вручную задать соответствие двух портов необходимых для работы и управления CrashPlan. Например, вот так: порт «4243» назначить на «32774», а «4242» на «32773». Открываем дополнительные настройки контейнера и там прикрепляем нашу созданную на первом шаге папку общего доступа «crashplan-symlink». Ставим ей в соответствие значение "/storage", так она будет доступна из докер-контейнера.


5. Перегружаем хранилище. Убеждаемся, что наши симлинки в папке «crashplan-symlink» выжили и работают. Запускаем в докере пакет «jrcs/crashplan». Если все правильно, то к данному моменту мы имеем запущенный и работающий докер-контейнер внутри которого уже успешно запущен и работает клиент CrashPlan. Однако, сам клиент ещё не настроен. Ему нужно сказать, что и откуда брать и куда копировать, а для этого нужно подключиться к клиенту, через специальное приложение CrashPlan (есть и для Win и для Linux). Однако, просто так подключиться к клиенту приложение не сможет, там все шибко безопасно, поэтому квест продолжается.



6. Для того, чтобы иметь возможность подключиться к клиенту CrashPlan, нужно вытащить из специального файла в докер-контейнере строку содержащую секретный ключ. Для этого, подключаемся к хранилищу через SSH (например, клиентом PuTTY). Находим файл ".ui_info". Он лежит где-то по этому пути "/var/packages/Docker/target/docker/volumes/..../_data/id" (выбрать вместо "...." конкретную папку придётся либо методом подбора, либо ориентируясь на дату создания, там каждая папка — это отдельный ID существующего контейнера). В искомом файле есть текстовая строка с секретом (сначала идёт адрес порта, потом нужный нам секрет, потом ip-адрес). Так в примере ниже, нам нужно взять строку: «05bv99x3-36f8-43e6-92c7-4b8776f2edb2».

4243,05bv99x3-36f8-43e6-92c7-4b8776f2edb2,0.0.0.0

7. На локальном компьютере ставим управляющее ПО от CrashPlan. Затем ищем там файл ".ui_info" (для Windows он лежит в папке «C:\ProgramData\CrashPlan») и редактируем его руководствуясь следующими правилами:
— На первой позиции в строке идёт порт, который в контейнере «jrcs/crashplan» поставлен в соответствие порту «4243». Так, если настройки были указаны как на шаге 4, то пишем «32774».
— Далее идет секретный ключ, который мы вытащили из контейнера на шаге 6.
— Последнее значение ip-адрес нашего хранилища, где запущен и работает клиент CrashPlan, т.е. которым мы хотим управлять. Если на Synology запущен QuickConnect, то в его настройках можно посмотреть внешний ip-адрес хранилища («Панель управления» — «Внешний доступ»).

В результате, строка в локальном файле ".ui_info" должна стать примерно такой:

32774,05bv99x3-36f8-43e6-92c7-4b8776f2edb2,192.168.1.100

8. Если всё сделано верно, то при запуске управляющего ПО от CrashPlan на локальном компьютере, он обращается по заданному ip-адресу на заданных порт хранилища (в нашем примере на 192.168.1.100 на порт 32774). Хранилище переадресует запросы на порт 4243 в контейнер «jrcs/crashplan», где бежит headless-клиент CrashPlan. Если секретный ключ совпадает, то всё ОК и подключение выполняется.

9. В приложении мы должны увидеть папку «storage» внутри которой будут созданные ранее подпапки-симлинки, а в них все наши данные. Вводим нашу лицензию, выбираем необходимые данные и начинаем их резервное копирование в облако CrashPlan. Кстати, у CrashPlan есть хорошие мобильные приложения, которые позволяют следить за этим процессом.



Обновление образа CrashPlan



Иногда JrCs публикует новую версию образа. Это можно найти на странице проекта GitHub и обычно это связано с исправлением ошибок или улучшением образа. Так, при переходе с версии 4.7 до 4.8 автоматическое обновление внутри контейнера не сработало и вышла новая версия образа. В таком случае, последовательность действий следующая:
1. Удаляем и текущий контейнер CrashPlan и загруженный ранее образ «jrcs/crashplan».
2. Устанавливаем всё заново. И образ и контейнер по инструкции выше.
3. При подключении к сервису клиентом CrashPlan необходимо принять предложено «Adopt». В этом случае, после проверки файлов, на сервера CrashPlan будут отправлены только новые и измененные данные. Если же «Adopt» не использовать, то будет заново отправлена вся информация. При большом объеме хранимой информации это может занять кучу времени.

Полезные советы



1. При первоначальной установке и при переустановке клиента CrashPlan на хранилище у него меняется GUID. Если у вас уже есть резервная копия данных на серверах CrashPlan, то для того, чтобы прикрепиться к уже существующему бекапу, нужно использовать функцию «ADOPT» (такое предложение появится в клиентском приложении после успешного подключения). В противном случае, создание резервных копий начнётся заново и при больших объемах это занимает кучу времени.

2. Удобное управление файлами на хранилище. Проще всего управлять файлами на Synology через «Midnight Commander», его можно поставить на хранилище. Для этого необходимо:
— В «Центре пакетов» перейти в «Настройки» и добавить новый источник пакетов. Название: «synocommunity». Местоположение: «packages.synocommunity.com».
— Перейти в «Центре пакетов» в категорию «Сообщество», найти там «Midnight Commander» и установить его.
— Скачать и установить PuTTY.
— Включить SSH на Synology («Панель управления» — «Терминал и SNMP» — «Включить службу SSH»).
— Получить IP-адрес своего хранилища. Если на Synology запущен QuickConnect, то в его настройках можно посмотреть внешний ip-адрес — хранилища («Панель управления» — «Внешний доступ»).
— Выполнить вход на хранилище через PuTTY указав логин 'admin' и текущий пароль. Если требуются права 'root' и расширенный доступ к файловой системе (наш случай), то нужно ввести в терминале команду 'sudo -i' и повторить пароль (инструкция от Synology).
— Поскольку мы ранее установили пакет Midnight Commander, то команда 'mc' в терминале запустит его. В результате получаем доступ ко всем файлам на устройстве.

Полезные ссылки:
Tags:
Hubs:
+7
Comments 5
Comments Comments 5

Articles