Dockerfile для установки yandex-disk на Synology NAS
Образ может быть собран как на базе Альт Линукс (по умолчанию), так и банальной убунты.
Синхронизация выполняется в ${SYNO_TARGET_PATH}
(По умолчанию, ~/YandexDisk
). Конфигурация хранится в volume.
Имейте ввиду, что Linux-версия yandex-disk
уже почти 10-ок лет весьма “ограниченная”, мягко говоря. Яндекс положил болтище на развитие программы. И возможности по выборочной синхронизации ограничены максимум чёрным списком. Потому программа будет синхронизировать всё подряд.
Но мне это даже на руку, т.к. я не хочу ставить этот обрубок на свой Linux Desktop, чтобы он мне на SSD синхронизировал весь терабайт сразу. Я лучше подключу его по сети и буду пользоваться им через свою 2.5 гигабитную сеть. А Synology будет выполнять роль толстого кэша. Ради чего и создавалось всё это.
Использование
Склонировать репозиторий
git clone https://gitflic.ru/project/egzakharovich/synology_yandex-disk_docker
cd synology_yandex-disk_docker
Скопировать .env
файл из шаблона
cp .template.env .env
Определить в .env
файле переменные, которые значений по умолчанию не имеют. Такие как SYNO_UID
и SYNO_USER
.
Чтобы получить их значения, нужно зайти на Synology по ssh и вызвать команды id -u
и id -un
# Предполагается, что у вас настроен хост "synology" до вашего NAS в ~/.ssh/config
ssh synology
id -u
# ^ Скопировать в SYNO_UID
id -un
# ^ Скопировать в SYNO_USER
И скопируйте полученные значения в текстовый файл .env
На рабочей машине определить контекст для docker, который будет указывать на synology.
# Контекст ссылается на хост, определённый в ~/.ssh/config
docker context create synology --docker "host=ssh://synology"
# Переключить контекст
docker context use synology
# Проверить соединение, перечислив выполняемые контейнеры
docker ps
Контекст не нужно определять только в том случае, если вы установили git на synology и клонируете репозиторий непосредственно на NAS, через ssh.
Затем, открыть приложение Docker в веб-интерфейсе DSM (я надеюсь, вы его установили, не так ли?), оно пригодится позже.
Пока оболочка находится (cd, pwd) в склонированном репозитории, вызвать docker compose up -d
. Дождаться завершения “сборки” и запуска.
Перейти в веб-интерфейс DSM, там должен отобразиться новый контейнер yandex-disk-${SYNO_USER}
. Провалитесь в него, затем на вкладку журналы и убедитесь, что там отобразилась строчка, которая просит вас перейти на https://ya.ru/device
и ввести код. Код скопируйте и перейдите в новой вкладке, перед этим убедившись, что в этом браузере вы залогинены под нужным аккаунтом Яндекса.
Введите код на странице, нажмите кнопку и на этом, по идее, всё. Синхронизация должна начаться. В журнале каждую минуту (по умолчанию) будет отображаться статус синхронизации.