明日2021年6月1日から、Googleフォトが高画質設定の写真の保存もGoogleドライブの容量を使用すると規約を変更します。
これでAmazon以外の大手のサービスはすべて有料化することに。
Amazon Photosは有料会員であるPrimeの一環なので簡単には変わらないと思いますので、そちらへ自動保存することにしました。
うちはNASを構築していて、そこに保存しています。
クラウドサービスは災害時などのバックアップ用です。
ところが。
AmazonへのNASの同期はQNAP/Synologyなど多くのメーカーで2020年に廃止になっています。
理由は明らかになっていませんが、契約上のアレコレなのかなんなのか。
そこで、CLI(コマンド)でAmazonPhotosと連携できるodriveというツール(というかサービスですかねコレは)を使ってNASから自動同期できるように設定しました。
他にも同じことを考えている方がいるだろうと思ったらいらっしゃいました(かなでさんに感謝)。
かなでさんはQNAP製のNASを使われていて、QNAP上でUbuntuの仮想OSを稼働させ、そこでodriveを実行するように構築されています。
管理人はSynology製のNASで、仮想OSでもコンテナ(Docker)上でodriveを構築したいと考えました。
コンテナにしたいのは以下の理由です。
・odrive専用なのでリソースを抑えたい
・コンテナはホストOSのプロセスとして稼働するため、ウィルスチェックソフトなどをホスト側で済ませられる(NAS任せにできる)
使用しているNASはds916plusという製品です。
CPUはintelのPentium。メモリは2GBです。
完全にファイルサーバーと化しているので、リソースにも余裕があります。
というわけでGO!
※ちなみに、ですが。管理人はLinuxはド素人で、仕事ではほぼ触りません。そのため、間違ったことを書いているかもしれませんのでご了承ください。
大体の手順は上記のかなでさんのサイトを参照してください。
異なる点を記載していきます。
はじめに、パッケージセンターでDockerをインストールします。
Dockerを起動し、「レジストリ」からDockerイメージを検索します。
レジストリはDockerHubのことです。
検索欄に「odrive」と入力して検索すると、いくつかHITします。
管理人は一番上に表示されている「cszubert」というアカウントのイメージを使用しましたが、cyoteeという方はちょくちょく更新されているようで、こちらでもいいと思います。
ちなみに、odriveは同じ名前でモーター制御基板(?)もあるようなので、そのイメージと間違えないようにしてください。
Dockerイメージを取得したら起動します。
「コンテナ」からイメージをダブルクリックすると起動します。
外部からSSHでアクセス可能にしてもいいのですが、
odriveだけの用途のため、NASの管理画面からだけでいいと考えて、省略しました。
NASから操作する場合は「詳細」をクリックすると別ダイアログが起動し、起動しているコンテナにアクセスできます。
コマンドの入力は「端末」タブから行います。
「作成」ボタンを押下するとbashが起動します。
root権限でログインしていているのでsudo不要です(汗)
※これもどうかとは思いますが・・・
後で適切に設定してくださいね。
プロセスタブを見てみると、odriveが起動していることが確認できます。
さて、odriveの設定をする前に、環境の最新化をしましょう。
なんといってもこのDockerイメージが公開されたのは4年前の2017年。
「概要」タブに書いてあるとおり、Pythonはバージョンは3.6だし、
Debianもすでにサポート終了している8なんです。
まずはDebianから。
更新前にバージョン情報を確認すると以下のようになっています。
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
はじめに/etc/apt/sources.list ファイルを編集し、以下を追加します。
debianのFTPサーバーです。
deb http://ftp.jp.debian.org/debian/ stable main contrib
次に以下を実行します。
apt-get install debian-keyring debian-archive-keyring
apt list upgradable
apt update -y
apt upgrade -y
途中でGnuPG鍵がないというエラーが表示される場合は、鍵を取得してください。どこからでもいいですが、例えば以下はUbuntuのサーバーから取得しています。
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [取得する鍵]
更新後は以下のようになっていました。
[更新後]
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
次にPythonの更新です。
更新前のバージョンは以下のようになっています。
# python -V
Python 3.6.5
以下のPythonのFTPサーバを参照して、更新したいバージョンを確認してください。
管理人の場合は3.9.5が最新版だったので、これにします。
ダウンロードして展開しましょう。以下を実行します。
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
tar xf Python-3.9.5.tar.xz
cd Python-3.9.5
そしてコンパイルとインストール。
スペックにもよりますが、makeコマンドで30分以上かかりました。
./configure
make
make install
apt update -y
apt upgrade -y
apt install build-essential -y
apt install make -y
環境を旧バージョンから入れ替えます。
update-alternatives --install /usr/bin/python python3 /usr/local/bin/python3.9 10
ついでなのでpipも更新しておきましょう。
ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.9/site-packages/lsb_release.py
pip3 install --upgrade pip
実行後にバージョンを確認します。
# python -V
Python 3.9.5
これでPythonの更新も完了です。
ダウンロードと展開したPythonのファイルは不要なので削除してOKです。
さて、odriveの設定を行います。
はじめに紹介した方のサイトを参照して作業すればOKなのですが、
一部異なります。
インストールとサービスの設定は実施済みのため不要です。
エイリアスの設定は未実施のため、設定しておくと便利です。
「Amazonドライブのマウント」はDockerの設定から行いましょう。
Dockerは標準設定では権限がないためホストのファイル/フォルダにアクセスできません。
一度コンテナを停止し、「編集」をクリックします。
「ボリューム」タブをクリックし、アップロードしたいNASのフォルダを選択し、マウントするパスを指定します。
管理人の場合はAmazonPhotosへ一方的にバックアップするだけのため、読み取り専用にチェックを入れました。
双方で同期を取りたい方は書き込み権限もないと、Amazon Photosの変更がNASへ適用できませんよ。
設定後、再度コンテナを起動します。
マウントしたフォルダを参照すると、ファイルが見えていると思います。
なので、「UbuntuにNASをマウントする」の手順も不要です。
あとはodrive backupコマンドでバックアップ設定をするだけです。
設定後にodriveのAmazonのドライブを見てみると、
バックアップできていると思います。
実際にAmazon Photosにアクセスしてバックアップされているか確認してみてください。
全体の手順は人任せなのでなんなのですが、Synology派の方のお役に立てれば