2021年6月、長らくお世話になっていたGoogleフォトの無料プランが終了してしまいました。
代替となる画像管理プラットフォームを探していたところ、PhotoPrismというよさげなOSSを発見したので、紹介したいと思います。
PhotoPrismとは?
PhotoPrismはサーバー向け画像管理アプリケーションです。自宅サーバーやNASに構築することで、自分専用の画像管理サーバーを構築することができ、全世界どこからでも自分の写真にアクセスできるようにすることができます。
ソースコードはGitHubで公開されており、誰でも無料で入手することができます。Dockerに対応しているので、わずか数コマンドで立ち上げることが可能です。
【PhotoPrismのココがすごい①】豊富な検索機能!
PhotoPrismのすごいところは、Google TensorFlowを活用した高度な検索機能にあります。
Google TensorFlowとは、Googleが開発したオープンソースのディープラーニングプラットフォームのこと。PhotoPrismはTenserFlowをベースとした機械学習(AI)を内蔵しています。
Googleフォトと同じように、写真の色合いや彩度・輝度などを分析し、自動でカテゴリー分けしたり、タグ付けしてくれます。
大量に写真を所有している方でも、あとからかんたんに写真を検索できるので、たいへん便利です。
【PhotoPrismのココがすごい②】高いカスタマイズ性・Nextcloudと連携できる
PhotoPrismは、たくさんのカスタマイズ項目を備えています。
例えばテーマ。ユーザーごとに好みの配色を選択できます。
ツールバーから使わないボタンを削除したり、アニメーションの有無や速さも好みに設定できます。
また、標準で日本語表示に対応しています。Languageから日本語を選択すれば、追加プラグインなしで日本語化できます。
バックエンドに関しても、詳細に設定を行うことが可能です。インデックス時のJPEGの圧縮率や解像度など、ブラウザから容易に設定することができます。
コマンドラインからは、さらに細かく設定が可能。利用できるコンフィグについては、次の公式サイトにまとめられています。
さらに、PhotoPrismはNextcloudと連携できます。
NextcloudはOSSのクラウドストレージプラットホーム。自宅サーバーやNASに手軽に構築でき、大量のファイルを効率よく管理できるため、自分も長らく使わせてもらっています。
PhotoPrismなら、Nextcloudにある写真をインデックスすることもできます。
その他、WebDAVに対応したサービスであれば、かんたんに連携できます。
写真ファイル自体はデバイス同期ができるNextcloud、画像閲覧は高機能なPhotoPrismというように組み合わせて使うと便利そうですね。
【PhotoPrismのココがすごい③】軽い!
個人的には、ここがPhotoPrismの最大の強みだと思っています。高機能であるにもかかわらず、PhotoPrismはサクサク動きます。
Googleフォトがよかったのは、スマホでサクサク写真を閲覧できたこと。写真を見たくなったり、誰かに見せたくなったとき、すぐに写真を表示できたのが魅力でした。
現時点では、PhotoPrismのネイティブアプリは提供されていません。しかし、試してみたところ、ブラウザでもGoogleフォトにほぼ遜色ないスピードで閲覧できました。
当方、2008年製のCore 2 Duo+RAM2GBですが、難なく動作しています。似たアプリケーションに「LibrePhotos(旧ownphotos)」がありますが、間違いなくPhotoPrismのほうが速いです。古いサーバーを使用している方にも、胸を張っておすすめできます。
なお、サーバーの性能が極端に非常に低い場合は、TensorFlowを無効に設定することもできます。単に写真を見れればよいという場合は、ディープラーニングを無効にして、リソースの消費を抑えるようにすることも可能です。
PhotoPrismをインストールしよう
前置きはこのくらいにして、早速PhotoPrismをインストールしてみましょう。
まずは、適当にインストール先のディレクトリをつくってください。
$mkdir ~/photoprism
$cd ~/photoprism
次に、作成したディレクトリに移動して、PhotoPrism公式からdocker-compose.ymlをダウンロードしてきます。
$wget https://dl.photoprism.org/docker/docker-compose.yml
ymlファイルのダウンロードリンクはこちらです。
そのままでも動作はしますが、環境に合わせた設定を行うため、ダウンロードしてきたdocker-compose.ymlをエディタで開きます。
$vi docker-compose.yml
まずは、「volumes」のところ。PhotoPrismから画像が保存されているディレクトリにアクセスできるようにします。
volumes:
# Your photo and video files ([local path]:[container path]):
- "~/Pictures:/photoprism/originals"
- "/hogehoge:/photoprism/originals/hogehoge" ←追加!
# Multiple folders can be indexed by mounting them as sub-folders of /photoprism/originals:
# - "/mnt/Family:/photoprism/originals/Family" # [folder_1]:/photoprism/originals/[folder_1]
# - "/mnt/Friends:/photoprism/originals/Friends" # [folder_2]:/photoprism/originals/[folder_2]
# Mounting an import folder is optional (see docs):
# - "~/Import:/photoprism/import"
# Permanent storage for settings, index & sidecar files (DON'T REMOVE):
- "./storage:/photoprism/storage"
ここでは例として、/hogehogeにある画像を認識できるようにしてみました。
上のコードのように、サーバーのディレクトリをマウントするときは、/photoprism/originalsのサブディレクトリとして、マウントさせます。
また、必要に応じて、管理者パスワードも変更しておきましょう。
environment:
PHOTOPRISM_ADMIN_PASSWORD: "insecure" # PLEASE CHANGE: Your initial admin password (min 4 characters)
これで設定は完了です。
PhotoPrismを起動しよう!
あとはコンテナを立ち上げるだけです。かんたんですよね~
次のコマンドを実行してください。
$sudo docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Creating network "photoprism210122_default" with the default driver
Pulling photoprism (photoprism/photoprism:latest)...
latest: Pulling from photoprism/photoprism
a09400eba642: Already exists
fdcab926b54c: Already exists
00c1d05f510d: Already exists
91e2a1c96766: Pull complete
5d3e25408187: Pull complete
///中略///
Status: Downloaded newer image for mariadb:10.5
Creating photoprism210122_photoprism_1 ... done
Creating photoprism210122_mariadb_1 ... done
しばらくすると、構築が完了します。
構築の完了とともに、サービスが起動します。doneと表示されたら、ブラウザからサーバーにアクセスしてみましょう。
デフォルトのアドレスは、http://サーバーのIPアドレス:2342です。ブラウザからアクセスしてみてください。
すると、ログインページが表示されるので、Nameに「admin」、Passwordに設定したパスワード(デフォルトは「insecure」)を入力し、「SIGN IN」をクリックします。
見事、PhotoPrismに入ることができました。
日本語化しよう!
PhotoPrismは標準で日本語に対応しています。
まず、メニューから「Settings」をクリックしてください。
Languageをクリック。
「日本語」を選択します。
これで日本語化終了です。
写真をインデックスしてみよう!
さっそく写真をPhotoPrismに取り込んでみましょう。
PhotoPrismに取り込む場合、大きく分けて、2つの方法があります。
自宅サーバーやNASで実行しているのであれば、すでにあるファイルをインデックスさせるのがベストです。
デフォルトでは、~/Picturesにある画像がインデックスされる。sudoでコンテナを立ち上げているので、/root/Picturesがインデックスされることになります。
インデックス作成はコマンドから行うこともできます。ファイル数が多いと時間がかかるので、最初のインデックスはコマンドラインから行うことをおすすめします。
$docker-compose exec photoprism photoprism index
INFO[2021-02-23T01:32:13Z] indexing photos in /photoprism/originals
INFO[2021-02-23T01:32:13Z] classify: loading nasnet
INFO[2021-02-23T01:32:23Z] classify: loading labels from labels.txt
INFO[2021-02-23T01:32:23Z] index: no .ppignore file found
INFO[2021-02-23T01:32:24Z] index: added folder /
INFO[2021-02-23T01:32:24Z] index: no new or modified files
INFO[2021-02-23T01:32:24Z] purge: searching index for unassigned primary files
INFO[2021-02-23T01:32:24Z] purge: searching index for hidden media files
INFO[2021-02-23T01:32:24Z] indexed 1 files in 11.166996531s
INFO[2021-02-23T01:32:24Z] closed database connection
時間がかかる処理を行う際は、Screenコマンドがおすすめです。仮想シェルを作成し、バックグラウンドで処理を実行することができます。
topコマンドでインデックス中のサーバーの負荷を表示してみました。
Core2Duo E7200+RAM2GBというオンボロサーバーですが、ロードアベレージはそれほど高くならずに済んでいました。CPUが100%を超えているのは、2コア並列処理しているからです。リソースに合わせて、最適な方法で処理を行ってくれるようです。
ちなみにLibrePhotosだとこうは行きません。自分の環境ではロードアベレージが20まで跳ね上がってしまい、慌てて強制終了するハメに。。。LibrePhotosはラズパイもサポートしていなかったりで、まともに動かすなら、かなり高性能なサーバーが必要となります。
取り込んだ写真をみてみよう!
まとめ
いかがでしたか?
Googleフォトのよかった点として、(1)手軽さ(2)豊富な検索機能があげられると思います。とくに過去に撮った大量の写真をサクサク閲覧できたのは大きな魅力でした。
今回紹介したPhotoPrismを使えば、(1)の「手軽さ」については完全無料で実現できてしまいます。今のところアプリはリリースされていないようですが、ブラウザからでもサクサク写真を確認でき、大変使い勝手が良い印象でした。(2)については今後の開発に期待したいところですね。
PhotoPrism、Googleフォトの無料プランが終了してしまい、困っている方におすすめです。
コメント